2017-12-07 18:06:19 -05:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" />
< meta http-equiv = "X-UA-Compatible" content = "IE=9" />
2018-03-05 23:18:59 -05:00
< meta name = "generator" content = "Doxygen 1.8.8" />
2017-12-07 18:06:19 -05:00
< title > json-c: printbuf.h File Reference</ title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" />
< script type = "text/javascript" src = "jquery.js" ></ script >
< script type = "text/javascript" src = "dynsections.js" ></ script >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" />
</ head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr style = "height: 56px;" >
2018-03-05 23:18:59 -05:00
< td style = "padding-left: 0.5em;" >
2017-12-07 18:06:19 -05:00
< div id = "projectname" > json-c
2018-03-05 23:18:59 -05:00
  < span id = "projectnumber" > 0.13.1</ span >
2017-12-07 18:06:19 -05:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
</ div >
<!-- end header part -->
2018-03-05 23:18:59 -05:00
<!-- Generated by Doxygen 1.8.8 -->
< div id = "navrow1" class = "tabs" >
< ul class = "tablist" >
< li >< a href = "index.html" >< span > Main  Page</ span ></ a ></ li >
< li >< a href = "pages.html" >< span > Related  Pages</ span ></ a ></ li >
< li >< a href = "annotated.html" >< span > Data  Structures</ span ></ a ></ li >
< li class = "current" >< a href = "files.html" >< span > Files</ span ></ a ></ li >
</ ul >
</ div >
< div id = "navrow2" class = "tabs2" >
< ul class = "tablist" >
< li >< a href = "files.html" >< span > File  List</ span ></ a ></ li >
< li >< a href = "globals.html" >< span > Globals</ span ></ a ></ li >
</ ul >
</ div >
2017-12-07 18:06:19 -05:00
</ div > <!-- top -->
< div class = "header" >
< div class = "summary" >
< a href = "#nested-classes" > Data Structures</ a > |
< a href = "#define-members" > Macros</ a > |
< a href = "#typedef-members" > Typedefs</ a > |
< a href = "#func-members" > Functions</ a > </ div >
< div class = "headertitle" >
< div class = "title" > printbuf.h File Reference</ div > </ div >
</ div > <!--header-->
< div class = "contents" >
< p > Internal string buffer handing. Unless you're writing a json_object_to_json_string_fn implementation for use with < a class = "el" href = "json__object_8h.html#a889345512a214b8f78f6a73561523c7c" > json_object_set_serializer()</ a > direct use of this is not recommended.
< a href = "#details" > More...</ a ></ p >
< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a name = "nested-classes" ></ a >
Data Structures</ h2 ></ td ></ tr >
< tr class = "memitem:" >< td class = "memItemLeft" align = "right" valign = "top" > struct   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "structprintbuf.html" > printbuf</ a ></ td ></ tr >
< tr class = "separator:" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a name = "define-members" ></ a >
Macros</ h2 ></ td ></ tr >
2018-03-05 23:18:59 -05:00
< tr class = "memitem:a6f3a4dc87fab41c37e3eff42f40dc346" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346" > printbuf_memappend_fast</ a > (p, bufptr, bufsize)</ td ></ tr >
2017-12-07 18:06:19 -05:00
< tr class = "separator:a6f3a4dc87fab41c37e3eff42f40dc346" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:acdd84ad88987c0166b7ba0e3f1f8f1bb" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#acdd84ad88987c0166b7ba0e3f1f8f1bb" > printbuf_length</ a > (p)    ((p)-> bpos)</ td ></ tr >
< tr class = "separator:acdd84ad88987c0166b7ba0e3f1f8f1bb" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ab009973c5e15aae191e610cd70752603" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#ab009973c5e15aae191e610cd70752603" > _printbuf_check_literal</ a > (mystr)    ("" mystr)</ td ></ tr >
< tr class = "separator:ab009973c5e15aae191e610cd70752603" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2018-03-05 23:18:59 -05:00
< tr class = "memitem:a2f30492682f5fbc59a8749b428e0e4ba" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#a2f30492682f5fbc59a8749b428e0e4ba" > printbuf_strappend</ a > (pb, str)    < a class = "el" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend</ a > ((pb), < a class = "el" href = "printbuf_8h.html#ab009973c5e15aae191e610cd70752603" > _printbuf_check_literal</ a > (str), sizeof(str) - 1)</ td ></ tr >
2017-12-07 18:06:19 -05:00
< tr class = "separator:a2f30492682f5fbc59a8749b428e0e4ba" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a name = "typedef-members" ></ a >
Typedefs</ h2 ></ td ></ tr >
< tr class = "memitem:ace274df280df67463ff417b1b3392395" >< td class = "memItemLeft" align = "right" valign = "top" > typedef struct < a class = "el" href = "structprintbuf.html" > printbuf</ a >   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#ace274df280df67463ff417b1b3392395" > printbuf</ a ></ td ></ tr >
< tr class = "separator:ace274df280df67463ff417b1b3392395" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >< table class = "memberdecls" >
< tr class = "heading" >< td colspan = "2" >< h2 class = "groupheader" >< a name = "func-members" ></ a >
Functions</ h2 ></ td ></ tr >
< tr class = "memitem:a3e390ebc7660a18335edd89f640fd415" >< td class = "memItemLeft" align = "right" valign = "top" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#a3e390ebc7660a18335edd89f640fd415" > printbuf_new</ a > (void)</ td ></ tr >
< tr class = "separator:a3e390ebc7660a18335edd89f640fd415" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a22f09779a19db59a83e7cb8c2ce4c75f" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend</ a > (struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *p, const char *buf, int size)</ td ></ tr >
< tr class = "separator:a22f09779a19db59a83e7cb8c2ce4c75f" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ad7fc6ec4c296e85abf404244614cded5" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#ad7fc6ec4c296e85abf404244614cded5" > printbuf_memset</ a > (struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *pb, int offset, int charvalue, int len)</ td ></ tr >
< tr class = "separator:ad7fc6ec4c296e85abf404244614cded5" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:adf6214db6c8ce994c7f7f1180863c8a4" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#adf6214db6c8ce994c7f7f1180863c8a4" > sprintbuf</ a > (struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *p, const char *msg,...)</ td ></ tr >
< tr class = "separator:adf6214db6c8ce994c7f7f1180863c8a4" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a4393ee3dedb376af11c96fe97532292e" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#a4393ee3dedb376af11c96fe97532292e" > printbuf_reset</ a > (struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *p)</ td ></ tr >
< tr class = "separator:a4393ee3dedb376af11c96fe97532292e" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ab525221c767ac65c58ddeea8a655a4e8" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "printbuf_8h.html#ab525221c767ac65c58ddeea8a655a4e8" > printbuf_free</ a > (struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *p)</ td ></ tr >
< tr class = "separator:ab525221c767ac65c58ddeea8a655a4e8" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >
< a name = "details" id = "details" ></ a >< h2 class = "groupheader" > Detailed Description</ h2 >
< div class = "textblock" >< p > Internal string buffer handing. Unless you're writing a json_object_to_json_string_fn implementation for use with < a class = "el" href = "json__object_8h.html#a889345512a214b8f78f6a73561523c7c" > json_object_set_serializer()</ a > direct use of this is not recommended. </ p >
</ div >< h2 class = "groupheader" > Macro Definition Documentation</ h2 >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "ab009973c5e15aae191e610cd70752603" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define _printbuf_check_literal</ td >
< td > (</ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > mystr</ td >< td > )</ td >
< td >     ("" mystr)</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Results in a compile error if the argument is not a string literal. </ p >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "acdd84ad88987c0166b7ba0e3f1f8f1bb" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define printbuf_length</ td >
< td > (</ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > p</ td >< td > )</ td >
< td >     ((p)-> bpos)</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "a6f3a4dc87fab41c37e3eff42f40dc346" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define printbuf_memappend_fast</ td >
< td > (</ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > p, </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > bufptr, </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > bufsize  </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2018-03-05 23:18:59 -05:00
< b > Value:</ b >< div class = "fragment" >< div class = "line" >< span class = "keywordflow" > do</ span > { \</ div >
< div class = "line" > if ((p-> size - p-> bpos) > bufsize) { \</ div >
< div class = "line" > memcpy(p-> buf + p-> bpos, (bufptr), bufsize); \</ div >
< div class = "line" > p-> bpos += bufsize; \</ div >
< div class = "line" > p-> buf[p-> bpos]= < span class = "charliteral" > ' \0' </ span > ; \</ div >
< div class = "line" > } < span class = "keywordflow" > else</ span > { < a class = "code" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend</ a > (p, (bufptr), bufsize); } \</ div >
< div class = "line" > } < span class = "keywordflow" > while</ span > (0)</ div >
< div class = "ttc" id = "printbuf_8h_html_a22f09779a19db59a83e7cb8c2ce4c75f" >< div class = "ttname" >< a href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend</ a ></ div >< div class = "ttdeci" > int printbuf_memappend(struct printbuf *p, const char *buf, int size)</ div ></ div >
2017-12-07 18:06:19 -05:00
</ div > <!-- fragment -->
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "a2f30492682f5fbc59a8749b428e0e4ba" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define printbuf_strappend</ td >
< td > (</ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > pb, </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > str  </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td >     < a class = "el" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend</ a > ((pb), < a class = "el" href = "printbuf_8h.html#ab009973c5e15aae191e610cd70752603" > _printbuf_check_literal</ a > (str), sizeof(str) - 1)</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > This is an optimization wrapper around < a class = "el" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend()</ a > that is useful for appending string literals. Since the size of string constants is known at compile time, using this macro can avoid a costly strlen() call. This is especially helpful when a constant string must be appended many times. If you got here because of a compilation error caused by passing something other than a string literal, use < a class = "el" href = "printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346" > printbuf_memappend_fast()</ a > in conjunction with strlen().</ p >
< p > See also: < a class = "el" href = "printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346" > printbuf_memappend_fast()</ a > < a class = "el" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend()</ a > < a class = "el" href = "printbuf_8h.html#adf6214db6c8ce994c7f7f1180863c8a4" > sprintbuf()</ a > </ p >
</ div >
</ div >
< h2 class = "groupheader" > Typedef Documentation</ h2 >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "ace274df280df67463ff417b1b3392395" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > < a class = "el" href = "structprintbuf.html" > printbuf</ a ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
< h2 class = "groupheader" > Function Documentation</ h2 >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "ab525221c767ac65c58ddeea8a655a4e8" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void printbuf_free </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *  </ td >
< td class = "paramname" >< em > p</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "a22f09779a19db59a83e7cb8c2ce4c75f" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int printbuf_memappend </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *  </ td >
< td class = "paramname" >< em > p</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > buf</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > size</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "ad7fc6ec4c296e85abf404244614cded5" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int printbuf_memset </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *  </ td >
< td class = "paramname" >< em > pb</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > offset</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > charvalue</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > len</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Set len bytes of the buffer to charvalue, starting at offset offset. Similar to calling memset(x, charvalue, len);</ p >
< p > The memory allocated for the buffer is extended as necessary.</ p >
< p > If offset is -1, this starts at the end of the current data in the buffer. </ p >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "a3e390ebc7660a18335edd89f640fd415" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > * printbuf_new </ td >
< td > (</ td >
< td class = "paramtype" > void  </ td >
< td class = "paramname" ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "a4393ee3dedb376af11c96fe97532292e" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void printbuf_reset </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *  </ td >
< td class = "paramname" >< em > p</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
2018-03-05 23:18:59 -05:00
< a class = "anchor" id = "adf6214db6c8ce994c7f7f1180863c8a4" ></ a >
2017-12-07 18:06:19 -05:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int sprintbuf </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structprintbuf.html" > printbuf</ a > *  </ td >
< td class = "paramname" >< em > p</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > msg</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" >< em > ...</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Formatted print to printbuf.</ p >
< p > This function is the most expensive of the available functions for appending string data to a printbuf and should be used only where convenience is more important than speed. Avoid using this function in high performance code or tight loops; in these scenarios, consider using snprintf() with a static buffer in conjunction with one of the printbuf_*append() functions.</ p >
< p > See also: < a class = "el" href = "printbuf_8h.html#a6f3a4dc87fab41c37e3eff42f40dc346" > printbuf_memappend_fast()</ a > < a class = "el" href = "printbuf_8h.html#a22f09779a19db59a83e7cb8c2ce4c75f" > printbuf_memappend()</ a > < a class = "el" href = "printbuf_8h.html#a2f30492682f5fbc59a8749b428e0e4ba" > printbuf_strappend()</ a > </ p >
</ div >
</ div >
</ div > <!-- contents -->
<!-- start footer part -->
< hr class = "footer" />< address class = "footer" >< small >
2018-03-05 23:18:59 -05:00
Generated on Mon Mar 5 2018 23:17:09 for json-c by   < a href = "http://www.doxygen.org/index.html" >
2017-12-07 18:06:19 -05:00
< img class = "footer" src = "doxygen.png" alt = "doxygen" />
2018-03-05 23:18:59 -05:00
</ a > 1.8.8
2017-12-07 18:06:19 -05:00
</ small ></ address >
</ body >
</ html >