本文整理汇总了C++中print_string_ptr函数的典型用法代码示例。如果您正苦于以下问题:C++ print_string_ptr函数的具体用法?C++ print_string_ptr怎么用?C++ print_string_ptr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了print_string_ptr函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
/* Render an object to text. */
static char *print_object(cJSON *item,int depth,int fmt)
{
char **entries=0,**names=0;
char *out=0,*ptr,*ret,*str;int len=7,i=0,j;
cJSON *child=item->child;
int numentries=0,fail=0;
/* Count the number of entries. */
while (child) numentries++,child=child->next;
/* Allocate space for the names and the objects */
entries=(char**)cJSON_malloc(numentries*sizeof(char*));
if (!entries) return 0;
names=(char**)cJSON_malloc(numentries*sizeof(char*));
if (!names) {cJSON_free(entries);return 0;}
memset(entries,0,sizeof(char*)*numentries);
memset(names,0,sizeof(char*)*numentries);
/* Collect all the results into our arrays: */
child=item->child;depth++;if (fmt) len+=depth;
while (child)
{
names[i]=str=print_string_ptr(child->string);
entries[i++]=ret=print_value(child,depth,fmt);
if (str && ret) len+=strlen(ret)+strlen(str)+2+(fmt?2+depth:0); else fail=1;
child=child->next;
}
/* Try to allocate the output string */
if (!fail) out=(char*)cJSON_malloc(len);
if (!out) fail=1;
/* Handle failure */
if (fail)
{
for (i=0;i<numentries;i++) {if (names[i]) cJSON_free(names[i]);if (entries[i]) cJSON_free(entries[i]);}
cJSON_free(names);cJSON_free(entries);
return 0;
}
/* Compose the output: */
*out='{';ptr=out+1;if (fmt)*ptr++='\n';*ptr=0;
for (i=0;i<numentries;i++)
{
if (fmt) for (j=0;j<depth;j++) *ptr++='\t';
strcpy(ptr,names[i]);ptr+=strlen(names[i]);
*ptr++=':';if (fmt) *ptr++='\t';
strcpy(ptr,entries[i]);ptr+=strlen(entries[i]);
if (i!=numentries-1) *ptr++=',';
if (fmt) {
*ptr++='\n';
*ptr=0;
}
cJSON_free(names[i]);
cJSON_free(entries[i]);
}
cJSON_free(names);cJSON_free(entries);
if (fmt) for (i=0;i<depth-1;i++) *ptr++='\t';
*ptr++='}';*ptr++=0;
return out;
}
示例2: print_string_ptr
static char *print_binary(cJSON *item) {
char* b64;
int size=base64_encode_alloc( item->valuedata, item->valuesize, &b64 );
char* out = print_string_ptr( b64 );
free( b64 );
return out;
}
示例3: while
/* Render an object to text. */
static char *print_object(cJSON *item,int depth,int fmt,cJSON_Buf* buf)
{
int j=0;
cJSON *child=item->child;
depth++;
if(!cJSON_Buf_Copy_Char(buf,'{'))return 0;
if(fmt&&!cJSON_Buf_Copy_Char(buf,'\n'))return 0;
while (child)
{
for (j=0;fmt&&j<depth;j++) if(!cJSON_Buf_Copy_Char(buf,'\t'))return 0;
if(!print_string_ptr(child->string,buf))return 0;
if(!cJSON_Buf_Copy_Char(buf,':'))return 0;
if(fmt&&!cJSON_Buf_Copy_Char(buf,'\t'))return 0;
if(!print_value(child,depth,fmt,buf))return 0;
if (child->next && !cJSON_Buf_Copy_Char(buf,','))return 0;
if(fmt&&!cJSON_Buf_Copy_Char(buf,'\n'))return 0;
child=child->next;
}
if(!cJSON_Buf_Copy_Char(buf,'}'))return 0;
return buf->buf;
}
示例4: print_string
/* Invote print_string_ptr (which is useful) on an item. */
static char *ICACHE_FLASH_ATTR
print_string(cJSON *item)
{
return print_string_ptr(item->valuestring);
}
示例5: while
/// Internal: Render an object to text.
static char *print_object(JSON *item, int depth, bool fmt)
{
char **entries = 0, **names = 0;
char *out = 0, *ptr, *ret, *str;
int len=7, i=0;
JSON *child = item->firstchild;
int numentries=0, fail=0;
// Count the number of entries.
while (child) numentries++, child = child->next;
if(!numentries) // Explicitly handle empty object case
{
out=new char[fmt?depth+4:3];
if(!out) return 0;
ptr = out;
*ptr++='{';
if(fmt) { *ptr++='\n'; for (i=0; i<depth-1; i++) *ptr++='\t';}
*ptr++='}'; *ptr++=0;
return out;
}
// Allocate space for the names and the objects
entries = new char *[numentries*sizeof(char*)];
if(!entries) return 0;
names = new char *[numentries*sizeof(char*)];
memset(entries, 0, sizeof(char*)*numentries);
memset(names, 0, sizeof(char*)*numentries);
// Collect all the results into our arrays:
child = item->firstchild;
depth++;
if(fmt) len+=depth;
while (child)
{
names[i] = str = print_string_ptr(child->name);
entries[i++]= ret = print_value(child, depth, fmt);
if(str && ret) len+= strlen(ret) + strlen(str) + 2 + (fmt ? depth+2 : 0);
else fail=1;
child = child->next;
}
// Try to allocate the output string
if(!fail) out = new char[len];
// Handle failure
if(fail)
{
loopi(numentries) { delete[] names[i]; delete[] entries[i];}
delete[] names;
delete[] entries;
return 0;
}
// Compose the output:
*out = '{'; ptr = out+1;
if(fmt) *ptr++ = '\n'; *ptr = 0;
loopi(numentries)
{
if(fmt) loopj(depth) *ptr++ = '\t';
strcpy(ptr, names[i]);
ptr += strlen(names[i]);
*ptr++=':'; if(fmt) *ptr++ = '\t';
strcpy(ptr, entries[i]); ptr += strlen(entries[i]);
if(i != numentries-1) *ptr++ = ',';
if(fmt) *ptr++='\n'; *ptr = 0;
delete[] names[i];
delete[] entries[i];
}
delete[] names;
delete[] entries;
if(fmt) loopi(depth-1) *ptr++='\t';
*ptr++='}';*ptr++=0;
return out;
}
示例6: print_string_ptr
/// Internal: Invote print_string_ptr (which is useful) on an item.
static char *print_string(JSON *item) { return print_string_ptr(item->valuestring); }
示例7: print_string_ptr
/* Invote print_string_ptr (which is useful) on an item. */
static char *print_string(struct json *item)
{
return print_string_ptr(item->valuestring);
}
示例8: while
/* Render an object to text. */
static char *print_object(cJSON *item,int depth,int fmt,printbuffer *p)
{
char **entries=0,**names=0;
char *out=0,*ptr,*ret,*str;int len=7,i=0,j;
cJSON *child=item->child;
int numentries=0,fail=0;
size_t tmplen=0;
/* Count the number of entries. */
while (child) numentries++,child=child->next;
/* Explicitly handle empty object case */
if (!numentries)
{
if (p) out=ensure(p,fmt?depth+4:3);
else out=(char*)cJSON_malloc(fmt?depth+4:3);
if (!out) return 0;
ptr=out;*ptr++='{';
if (fmt) {*ptr++='\n';for (i=0;i<depth-1;i++) *ptr++='\t';}
*ptr++='}';*ptr++=0;
return out;
}
if (p)
{
/* Compose the output: */
i=p->offset;
len=fmt?2:1; ptr=ensure(p,len+1); if (!ptr) return 0;
*ptr++='{'; if (fmt) *ptr++='\n'; *ptr=0; p->offset+=len;
child=item->child;depth++;
while (child)
{
if (fmt)
{
ptr=ensure(p,depth); if (!ptr) return 0;
for (j=0;j<depth;j++) *ptr++='\t';
p->offset+=depth;
}
print_string_ptr(child->string,p);
p->offset=update(p);
len=fmt?2:1;
ptr=ensure(p,len); if (!ptr) return 0;
*ptr++=':';if (fmt) *ptr++='\t';
p->offset+=len;
print_value(child,depth,fmt,p);
p->offset=update(p);
len=(fmt?1:0)+(child->next?1:0);
ptr=ensure(p,len+1); if (!ptr) return 0;
if (child->next) *ptr++=',';
if (fmt) *ptr++='\n';*ptr=0;
p->offset+=len;
child=child->next;
}
ptr=ensure(p,fmt?(depth+1):2); if (!ptr) return 0;
if (fmt) for (i=0;i<depth-1;i++) *ptr++='\t';
*ptr++='}';*ptr=0;
out=(p->buffer)+i;
}
else
{
/* Allocate space for the names and the objects */
entries=(char**)cJSON_malloc(numentries*sizeof(char*));
if (!entries) return 0;
names=(char**)cJSON_malloc(numentries*sizeof(char*));
if (!names) {cJSON_free(entries);return 0;}
memset(entries,0,sizeof(char*)*numentries);
memset(names,0,sizeof(char*)*numentries);
/* Collect all the results into our arrays: */
child=item->child;depth++;if (fmt) len+=depth;
while (child)
{
names[i]=str=print_string_ptr(child->string,0);
entries[i++]=ret=print_value(child,depth,fmt,0);
if (str && ret) len+=strlen(ret)+strlen(str)+2+(fmt?2+depth:0); else fail=1;
child=child->next;
}
/* Try to allocate the output string */
if (!fail) out=(char*)cJSON_malloc(len);
if (!out) fail=1;
/* Handle failure */
if (fail)
{
for (i=0;i<numentries;i++) {if (names[i]) cJSON_free(names[i]);if (entries[i]) cJSON_free(entries[i]);}
cJSON_free(names);cJSON_free(entries);
return 0;
}
/* Compose the output: */
*out='{';ptr=out+1;if (fmt)*ptr++='\n';*ptr=0;
for (i=0;i<numentries;i++)
{
if (fmt) for (j=0;j<depth;j++) *ptr++='\t';
tmplen=strlen(names[i]);memcpy(ptr,names[i],tmplen);ptr+=tmplen;
*ptr++=':';if (fmt) *ptr++='\t';
strcpy(ptr,entries[i]);ptr+=strlen(entries[i]);
if (i!=numentries-1) *ptr++=',';
//.........这里部分代码省略.........
示例9: print_string_ptr
/* Invote print_string_ptr (which is useful) on an item. */
static char *print_string(cJSON *item,printbuffer *p) {return print_string_ptr(item->valuestring,p);}
示例10: while
/* Render an object to text. */
static char *print_object(cJSON *item,int depth,int fmt)
{
char **entries=0,**names=0;
char *out=0,*ptr,*ret,*str;
int len=1024,i=0,j;
int num_size = 0;
cJSON *child=item->child;
int numentries=0,fail=0;
//return 0;
/* Count the number of entries. */
while (child)
{
numentries++;
child=child->next;
}
/* Explicitly handle empty object case */
if (!numentries)
{
out=(char*)cJSON_malloc(fmt?depth+4:3);
if (!out) return 0;
ptr=out;*ptr++='{';
if (fmt)
{
*ptr ++ ='\n';
for (i=0;i<depth-1;i++) *ptr++='\t';
}
*ptr++='}';*ptr++=0;
return out;
}
num_size = numentries*sizeof(char*);
/* Allocate space for the names and the objects */
entries=(char**)cJSON_malloc(num_size);
if (!entries) return 0;
names=(char**)cJSON_malloc(num_size);
if (!names)
{
cJSON_free(entries);
return 0;
}
//debug code
//if(depth >1 )
//{
//_hx_printf("entries=%X,names=%X",entries,names);
//return 0;
//}
//mymemset(entries,0,num_size);
//mymemset(names,0,num_size);
//return 0;
/* Collect all the results into our arrays: */
child = item->child;
depth ++;
if (fmt)
{
len+=depth;
}
while (child)
{
names[i] = str = print_string_ptr(child->string);
//debug code
//_hx_printf("numentries=%d,i=%d,fmt=%d,depth=%d,type=%d",numentries,i,fmt,depth,(child->type)&255);
entries[i] = ret = print_value(child,depth,fmt);
i++;
if (str && ret)
{
len += mystrlen(ret)+mystrlen(str)+2+(fmt?2+depth:0);
}
else
{
fail=1;
}
child=child->next;
}
//return 0;
/* Try to allocate the output string */
if (!fail) out=(char*)cJSON_malloc(len);
if (!out) fail=1;
/* Handle failure */
if (fail)
{
//.........这里部分代码省略.........
示例11: while
/* Render an object to text. */
static char *print_object(const cJSON *item, int depth, cjbool fmt, printbuffer *p)
{
char **entries = NULL;
char **names = NULL;
char *out = NULL;
char *ptr = NULL;
char *ret = NULL;
char *str = NULL;
int len = 7;
int i = 0;
int j = 0;
cJSON *child = item->child;
int numentries = 0;
cjbool fail = false;
size_t tmplen = 0;
/* Count the number of entries. */
while (child)
{
numentries++;
child = child->next;
}
/* Explicitly handle empty object case */
if (!numentries)
{
if (p)
{
out = ensure(p, fmt ? depth + 4 : 3);
}
else
{
out = (char*)cJSON_malloc(fmt ? depth + 4 : 3);
}
if (!out)
{
return NULL;
}
ptr = out;
*ptr++ = '{';
if (fmt) {
*ptr++ = '\n';
for (i = 0; i < depth; i++)
{
*ptr++ = '\t';
}
}
*ptr++ = '}';
*ptr++ = '\0';
return out;
}
if (p)
{
/* Compose the output: */
i = p->offset;
len = fmt ? 2 : 1; /* fmt: {\n */
ptr = ensure(p, len + 1);
if (!ptr)
{
return NULL;
}
*ptr++ = '{';
if (fmt)
{
*ptr++ = '\n';
}
*ptr = '\0';
p->offset += len;
child = item->child;
depth++;
while (child)
{
if (fmt)
{
ptr = ensure(p, depth);
if (!ptr)
{
return NULL;
}
for (j = 0; j < depth; j++)
{
*ptr++ = '\t';
}
p->offset += depth;
}
/* print key */
if (!print_string_ptr(child->string, p))
{
return NULL;
}
p->offset = update(p);
len = fmt ? 2 : 1;
ptr = ensure(p, len);
//.........这里部分代码省略.........
示例12: print_string_ptr
/* Invote print_string_ptr (which is useful) on an item. */
static char *print_string(srjson_doc_t *doc, srjson_t *item) {
return print_string_ptr(doc, item->valuestring);
}
示例13: print_string_ptr
/* Invote print_string_ptr (which is useful) on an item. */
static char *print_string(cJSON *item, ngx_pool_t *pool) {return print_string_ptr(item->valuestring, pool);}
示例14: print_string_ptr
/* Invote print_string_ptr (which is useful) on an item. */
static char *print_string(cJSON *item,cJSON_Buf* buf) {return print_string_ptr(item->valuestring,buf);}
示例15: print_string
/* Invote print_string_ptr (which is useful) on an item. */
static char *
print_string(cJSON *item)
{
return print_string_ptr(item->valuestring, item->type == cJSON_String);
}