本文整理汇总了C++中cJSON_malloc函数的典型用法代码示例。如果您正苦于以下问题:C++ cJSON_malloc函数的具体用法?C++ cJSON_malloc怎么用?C++ cJSON_malloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cJSON_malloc函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sprintf
/* Render the number nicely from the given item into a string. */
static char *print_number(cJSON *item)
{
char *str;
double d = item->valuedouble;
if ( fabs(((double)item->valueint) - d) <= DBL_EPSILON && d >= (1. - DBL_EPSILON) && d < (1LL << 62) )//d <= INT_MAX && d >= INT_MIN )
{
str = (char *)cJSON_malloc(24); /* 2^64+1 can be represented in 21 chars + sign. */
if ( str != 0 )
sprintf(str,"%lld",(long long)item->valueint);
}
else
{
str = (char *)cJSON_malloc(64); /* This is a nice tradeoff. */
if ( str != 0 )
{
if ( fabs(floor(d) - d) <= DBL_EPSILON && fabs(d) < 1.0e60 )
sprintf(str,"%.0f",d);
//else if (fabs(d)<1.0e-6 || fabs(d)>1.0e9) sprintf(str,"%e",d);
else
sprintf(str,"%.8f",d);
}
}
return str;
}
示例2: print_number
/* Render the number nicely from the given item into a string. */
static char *
print_number(cJSON * item)
{
char *str;
double d = item->valuedouble;
if (fabs(((double) item->valueint) - d) <= DBL_EPSILON && d <= INT_MAX
&& d >= INT_MIN) {
str = (char *) cJSON_malloc(21); /* 2^64+1 can be represented in 21 chars. */
if (str)
sprintf(str, "%d", item->valueint);
} else {
str = (char *) cJSON_malloc(64); /* This is a nice tradeoff. */
if (str) {
if (fabs(floor(d) - d) <= DBL_EPSILON)
sprintf(str, "%.0f", d);
else if (fabs(d) < 1.0e-6 || fabs(d) > 1.0e9)
sprintf(str, "%e", d);
else
sprintf(str, "%f", d);
}
}
return str;
}
示例3: ensure
/* Render the number nicely from the given item into a string. */
static char *print_number(cJSON * item, printbuffer * p)
{
char *str = 0;
double d = item->valuedouble;
if (d == 0) {
if (p)
str = ensure(p, 2);
else
str = (char *) cJSON_malloc(2); /* special case for 0. */
if (str)
strcpy(str, "0");
} else if (fabs(((double) item->valueint) - d) <= DBL_EPSILON
&& d <= INT_MAX && d >= INT_MIN) {
if (p)
str = ensure(p, 21);
else
str = (char *) cJSON_malloc(21); /* 2^64+1 can be represented in 21 chars. */
if (str)
sprintf(str, "%d", item->valueint);
} else {
if (p)
str = ensure(p, 64);
else
str = (char *) cJSON_malloc(64); /* This is a nice tradeoff. */
if (str) {
if (fabs(floor(d) - d) <= DBL_EPSILON && fabs(d) < 1.0e60)
sprintf(str, "%.0f", d);
else if (fabs(d) < 1.0e-6 || fabs(d) > 1.0e9)
sprintf(str, "%e", d);
else
sprintf(str, "%f", d);
}
}
return str;
}
示例4: cJSONUtils_strdup
static unsigned char* cJSONUtils_strdup(const unsigned char* const string)
{
size_t length = 0;
unsigned char *copy = NULL;
length = strlen((const char*)string) + sizeof("");
copy = (unsigned char*) cJSON_malloc(length);
if (copy == NULL)
{
return NULL;
}
memcpy(copy, string, length);
return copy;
}
示例5: cJSON_strdup
static char *ICACHE_FLASH_ATTR
cJSON_strdup(const char *str)
{
size_t len;
char *copy;
len = strlen(str) + 1;
if (!(copy = (char *)cJSON_malloc(len))) {
return 0;
}
memcpy(copy, str, len);
return copy;
}
示例6: ensure
static char* ensure(printbuffer *p,int needed)
{
char *newbuffer;int newsize;
if (!p || !p->buffer) return 0;
needed+=p->offset;
if (needed<=p->length) return p->buffer+p->offset;
newsize=pow2gt(needed);
newbuffer=(char*)cJSON_malloc(newsize);
if (!newbuffer) {cJSON_free(p->buffer);p->length=0,p->buffer=0;return 0;}
if (newbuffer) memcpy(newbuffer,p->buffer,p->length);
cJSON_free(p->buffer);
p->length=newsize;
p->buffer=newbuffer;
return newbuffer+p->offset;
}
示例7: while
static const char *parse_string(cJSON *item,const char *str)
{
const char *ptr=str+1;char *ptr2;char *out;int len=0;unsigned uc;
if (*str!='\"') return 0; /* not a string! */
while (*ptr!='\"' && (unsigned char)*ptr>31 && ++len) if (*ptr++ == '\\') ptr++; /* Skip escaped quotes. */
out=(char*)cJSON_malloc(len+1); /* This is how long we need for the string, roughly. */
if (!out) return 0;
ptr=str+1;ptr2=out;
while (*ptr!='\"' && (unsigned char)*ptr>31)
{
if (*ptr!='\\') *ptr2++=*ptr++;
else
{
ptr++;
switch (*ptr)
{
case 'b': *ptr2++='\b'; break;
case 'f': *ptr2++='\f'; break;
case 'n': *ptr2++='\n'; break;
case 'r': *ptr2++='\r'; break;
case 't': *ptr2++='\t'; break;
case 'u': /* transcode utf16 to utf8. DOES NOT SUPPORT SURROGATE PAIRS CORRECTLY. */
sscanf(ptr+1,"%4x",&uc); /* get the unicode char. */
len=3;if (uc<0x80) len=1;else if (uc<0x800) len=2;ptr2+=len;
switch (len) {
case 3: *--ptr2 =((uc | 0x80) & 0xBF); uc >>= 6;
case 2: *--ptr2 =((uc | 0x80) & 0xBF); uc >>= 6;
case 1: *--ptr2 =(uc | firstByteMark[len]);
}
ptr2+=len;ptr+=4;
break;
default: *ptr2++=*ptr; break;
}
ptr++;
}
}
*ptr2=0;
if (*ptr=='\"') ptr++;
item->valuestring=out;
item->type=cJSON_String;
return ptr;
}
示例8: cJSON_New_Pool
/* This will create an allocation pool */
static cJSON_Pool * cJSON_New_Pool()
{
if (CJSON_POOL_ALLOC_SIZE <= 0) {
return 0;
} else {
cJSON_Pool * pool = (cJSON_Pool*)cJSON_malloc(sizeof(cJSON_Pool));
if (!pool) {
return 0;
}
memset(pool, 0, sizeof(cJSON_Pool));
pool->free_items = 0;
pool->blocks = 0;
pool->refcount = 0;
return pool;
}
}
示例9: cJSON_malloc
/* Render the number nicely from the given item into a string. */
static char *print_number( cJSON *item )
{
char *str;
double f, f2;
int64_t i;
str = (char*) cJSON_malloc( 64 );
if ( str ) {
f = item->valuefloat;
i = f;
f2 = i;
if ( f2 == f && item->valueint >= LLONG_MIN && item->valueint <= LLONG_MAX )
sprintf( str, "%lld", (long long) item->valueint );
else
sprintf( str, "%g", item->valuefloat );
}
return str;
}
示例10: if
/* Render the number nicely from the given item into a string. */
static char *print_number_2d(cJSON *item, int sample, ngx_pool_t *pool)
{
char *str;
double d1 = 0,d2 = 0;
if(sample >= item->d2_len)
return NULL;
if(item->d2_val1)
d1 = item->d2_val1[sample];
if(item->d2_val2)
d2 = item->d2_val2[sample];
/* This is a nice tradeoff. */
str=(char*)cJSON_malloc(pool, 64+64);
if (str) {
if(item->d2_val1) {
if (fabs(floor(d1)-d1)<=DBL_EPSILON && fabs(d1)<1.0e60)
sprintf(str,"%.04f",d1);
else if (fabs(d1)<1.0e-2 || fabs(d1)>1.0e9)
sprintf(str,"%.04e",d1);
else
sprintf(str,"%.04f",d1);
}
if(item->d2_val1 && item->d2_val2) {
if (fabs(floor(d2)-d2)<=DBL_EPSILON && fabs(d2)<1.0e60)
sprintf(str,"%s,%.04f",str, d2);
else if (fabs(d2)<1.0e-2 || fabs(d2)>1.0e9)
sprintf(str,"%s,%.04e",str, d2);
else
sprintf(str,"%s,%.04f",str, d2);
} else if(item->d2_val2) {
if (fabs(floor(d2)-d2)<=DBL_EPSILON && fabs(d2)<1.0e60)
sprintf(str,"%.04f",d2);
else if (fabs(d2)<1.0e-2 || fabs(d2)>1.0e9)
sprintf(str,"%.04e",d2);
else
sprintf(str,"%.04f",d2);
}
}
return str;
}
示例11: while
/* Render the cstring provided to an escaped version that can be printed. */
static char *print_string_ptr(const char *str)
{
const char *ptr;char *ptr2,*out;int len=0;unsigned char token;
int quote = 0;
if (!str) return cJSON_strdup("");
ptr=str;
while ((token=*ptr) && ++len) {
if (strchr("\"\\\b\f\n\r\t",token)){
len++; quote = 1;
} else if (token<32){ len+=5; quote = 1; }
ptr++;
}
out=(char*)cJSON_malloc(len+3);
if (!out) return 0;
ptr2=out;ptr=str;
if( quote ) *ptr2++='\"';
while (*ptr)
{
if ((unsigned char)*ptr>31 && *ptr!='\"' && *ptr!='\\') *ptr2++=*ptr++;
else
{
*ptr2++='\\';
switch (token=*ptr++)
{
case '\\': *ptr2++='\\'; break;
case '\"': *ptr2++='\"'; break;
case '\b': *ptr2++='b'; break;
case '\f': *ptr2++='f'; break;
case '\n': *ptr2++='n'; break;
case '\r': *ptr2++='r'; break;
case '\t': *ptr2++='t'; break;
default: sprintf(ptr2,"u%04x",token);ptr2+=5; break; /* escape and print */
}
}
}
if( quote )*ptr2++='\"';
*ptr2++=0;
return out;
}
示例12: sprintf
static char *print_float(cJSON *item)
{
char *str = NULL;
if (item && (item->type == cJSON_Float)) {
double d=item->valuedouble;
str=(char*)cJSON_malloc(64); // This is a nice tradeoff.
if (str) {
if (fabs(floor(d)-d)<=DBL_EPSILON) {
sprintf(str,"%.0f",d);
} else if (fabs(d)<1.0e-6 || fabs(d)>1.0e9) {
sprintf(str,"%e",d);
} else {
sprintf(str,"%f",d);
}
}
}
return str;
}
示例13: ensure
/* realloc printbuffer if necessary to have at least "needed" bytes more */
static char* ensure(printbuffer *p, int needed)
{
char *newbuffer = NULL;
int newsize = 0;
if (!p || !p->buffer)
{
return NULL;
}
needed += p->offset;
if (needed <= p->length)
{
return p->buffer + p->offset;
}
if (p->noalloc) {
return NULL;
}
newsize = pow2gt(needed);
newbuffer = (char*)cJSON_malloc(newsize);
if (!newbuffer)
{
cJSON_free(p->buffer);
p->length = 0;
p->buffer = NULL;
return NULL;
}
if (newbuffer)
{
memcpy(newbuffer, p->buffer, p->length);
}
cJSON_free(p->buffer);
p->length = newsize;
p->buffer = newbuffer;
return newbuffer + p->offset;
}
示例14: parse_string
static const char *ICACHE_FLASH_ATTR
parse_string(cJSON *item, const char *str)
{
const char *ptr = str + 1;
char *ptr2;
char *out;
int len = 0;
unsigned uc, uc2;
if (*str != '\"') {
ep = str; /* not a string! */
return 0;
}
while (*ptr != '\"' && *ptr && ++len) if (*ptr++ == '\\') {
ptr++; /* Skip escaped quotes. */
}
out = (char *)cJSON_malloc(len + 1); /* This is how long we need for the string, roughly. */
if (!out) {
return 0;
}
ptr = str + 1;
ptr2 = out;
while (*ptr != '\"' && *ptr) {
if (*ptr != '\\') {
*ptr2++ = *ptr++;
} else {
ptr++;
switch (*ptr) {
case 'b':
*ptr2++ = '\b';
break;
case 'f':
*ptr2++ = '\f';
break;
case 'n':
*ptr2++ = '\n';
break;
case 'r':
*ptr2++ = '\r';
break;
case 't':
*ptr2++ = '\t';
break;
case 'u': /* transcode utf16 to utf8. */
uc = parse_hex4(ptr + 1);
ptr += 4; /* get the unicode char. */
if ((uc >= 0xDC00 && uc <= 0xDFFF) || uc == 0) {
break; /* check for invalid. */
}
if (uc >= 0xD800 && uc <= 0xDBFF) { /* UTF16 surrogate pairs. */
if (ptr[1] != '\\' || ptr[2] != 'u') {
break; /* missing second-half of surrogate. */
}
uc2 = parse_hex4(ptr + 3);
ptr += 6;
if (uc2 < 0xDC00 || uc2 > 0xDFFF) {
break; /* invalid second-half of surrogate. */
}
uc = 0x10000 + (((uc & 0x3FF) << 10) | (uc2 & 0x3FF));
}
len = 4;
if (uc < 0x80) {
len = 1;
} else if (uc < 0x800) {
len = 2;
} else if (uc < 0x10000) {
len = 3;
}
ptr2 += len;
switch (len) {
case 4:
*--ptr2 = ((uc | 0x80) & 0xBF);
uc >>= 6;
case 3:
*--ptr2 = ((uc | 0x80) & 0xBF);
uc >>= 6;
case 2:
*--ptr2 = ((uc | 0x80) & 0xBF);
//.........这里部分代码省略.........
示例15:
/* Internal constructor. */
static cJSON *cJSON_New_Item()
{
cJSON* node = (cJSON*)cJSON_malloc(sizeof(cJSON));
if (node) memset(node,0,sizeof(cJSON));
return node;
}