2014-04-10 22:35:45 -04: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" />
2016-06-07 04:05:03 +00:00
< meta name = "generator" content = "Doxygen 1.8.9.1" />
2014-04-10 22:35:45 -04:00
< title > json-c: linkhash.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;" >
< td style = "padding-left: 0.5em;" >
< div id = "projectname" > json-c
2016-06-07 04:05:03 +00:00
  < span id = "projectnumber" > 0.12.1</ span >
2014-04-10 22:35:45 -04:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
</ div >
<!-- end header part -->
2016-06-07 04:05:03 +00:00
<!-- Generated by Doxygen 1.8.9.1 -->
2014-04-10 22:35:45 -04:00
< 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 >
</ 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" > linkhash.h File Reference</ div > </ div >
</ div > <!--header-->
< div class = "contents" >
< 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 = "structlh__entry.html" > lh_entry</ a ></ td ></ tr >
< tr class = "separator:" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:" >< td class = "memItemLeft" align = "right" valign = "top" > struct   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "structlh__table.html" > lh_table</ 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 >
< tr class = "memitem:a032f1bd115df254dda325437203ce5fb" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a032f1bd115df254dda325437203ce5fb" > LH_PRIME</ a >     0x9e370001UL</ td ></ tr >
< tr class = "separator:a032f1bd115df254dda325437203ce5fb" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a66b61772c29d85eb52b697e0b0dc0aaf" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a66b61772c29d85eb52b697e0b0dc0aaf" > LH_LOAD_FACTOR</ a >     0.66</ td ></ tr >
< tr class = "separator:a66b61772c29d85eb52b697e0b0dc0aaf" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a93fad7f8ae44575dc89c9567859972d2" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a93fad7f8ae44575dc89c9567859972d2" > LH_EMPTY</ a >     (void*)-1</ td ></ tr >
< tr class = "separator:a93fad7f8ae44575dc89c9567859972d2" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ac69428f2de0a6fb080b6fb373d506aa7" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ac69428f2de0a6fb080b6fb373d506aa7" > LH_FREED</ a >     (void*)-2</ td ></ tr >
< tr class = "separator:ac69428f2de0a6fb080b6fb373d506aa7" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2016-06-07 04:05:03 +00:00
< tr class = "memitem:ad7dd67da915065dce2c6f44cb03e2d82" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ad7dd67da915065dce2c6f44cb03e2d82" > lh_foreach</ a > (table, entry)    for(entry = table-> head; entry; entry = entry-> next)</ td ></ tr >
2014-04-10 22:35:45 -04:00
< tr class = "separator:ad7dd67da915065dce2c6f44cb03e2d82" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2016-06-07 04:05:03 +00:00
< tr class = "memitem:abcbb0df08b4976d0649b826b6bacfca1" >< td class = "memItemLeft" align = "right" valign = "top" > #define  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#abcbb0df08b4976d0649b826b6bacfca1" > lh_foreach_safe</ a > (table, entry, tmp)    for(entry = table-> head; entry && ((tmp = entry-> next) || 1); entry = tmp)</ td ></ tr >
2014-04-10 22:35:45 -04:00
< tr class = "separator:abcbb0df08b4976d0649b826b6bacfca1" >< 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 >
2016-06-07 04:05:03 +00:00
< tr class = "memitem:a0c6811f660b93857aafdbfdf80d9696b" >< td class = "memItemLeft" align = "right" valign = "top" > typedef void(  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > ) (struct < a class = "el" href = "structlh__entry.html" > lh_entry</ a > *e)</ td ></ tr >
< tr class = "separator:a0c6811f660b93857aafdbfdf80d9696b" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a1780449146b716ad5e6ed0a0207d0417" >< td class = "memItemLeft" align = "right" valign = "top" > typedef unsigned long(  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a1780449146b716ad5e6ed0a0207d0417" > lh_hash_fn</ a > ) (const void *k)</ td ></ tr >
< tr class = "separator:a1780449146b716ad5e6ed0a0207d0417" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:abcbf0e4849fb0c6279827ac3b66d15c3" >< td class = "memItemLeft" align = "right" valign = "top" > typedef int(  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#abcbf0e4849fb0c6279827ac3b66d15c3" > lh_equal_fn</ a > ) (const void *k1, const void *k2)</ td ></ tr >
< tr class = "separator:abcbf0e4849fb0c6279827ac3b66d15c3" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2014-04-10 22:35:45 -04:00
</ 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:a2e560f0d3e5a20f6b0bfa4049737db23" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned long  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a2e560f0d3e5a20f6b0bfa4049737db23" > lh_ptr_hash</ a > (const void *k)</ td ></ tr >
< tr class = "separator:a2e560f0d3e5a20f6b0bfa4049737db23" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a6ce3cb97560072c40f5caeaba85f756a" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a6ce3cb97560072c40f5caeaba85f756a" > lh_ptr_equal</ a > (const void *k1, const void *k2)</ td ></ tr >
< tr class = "separator:a6ce3cb97560072c40f5caeaba85f756a" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a1fcf495b9c4ce169630cb31f638b8435" >< td class = "memItemLeft" align = "right" valign = "top" > unsigned long  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a1fcf495b9c4ce169630cb31f638b8435" > lh_char_hash</ a > (const void *k)</ td ></ tr >
< tr class = "separator:a1fcf495b9c4ce169630cb31f638b8435" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ae4e9f21fb1a556c7a50c6b7ea61f2079" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ae4e9f21fb1a556c7a50c6b7ea61f2079" > lh_char_equal</ a > (const void *k1, const void *k2)</ td ></ tr >
< tr class = "separator:ae4e9f21fb1a556c7a50c6b7ea61f2079" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2016-06-07 04:05:03 +00:00
< tr class = "memitem:ac3ba464ac43c083397b1f1d34f2ddf55" >< td class = "memItemLeft" align = "right" valign = "top" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ac3ba464ac43c083397b1f1d34f2ddf55" > lh_table_new</ a > (int size, const char *name, < a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > *free_fn, < a class = "el" href = "linkhash_8h.html#a1780449146b716ad5e6ed0a0207d0417" > lh_hash_fn</ a > *hash_fn, < a class = "el" href = "linkhash_8h.html#abcbf0e4849fb0c6279827ac3b66d15c3" > lh_equal_fn</ a > *equal_fn)</ td ></ tr >
2014-04-10 22:35:45 -04:00
< tr class = "separator:ac3ba464ac43c083397b1f1d34f2ddf55" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2016-06-07 04:05:03 +00:00
< tr class = "memitem:a0aaf11e11ee5b0925279a52eab04bc38" >< td class = "memItemLeft" align = "right" valign = "top" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a0aaf11e11ee5b0925279a52eab04bc38" > lh_kchar_table_new</ a > (int size, const char *name, < a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > *free_fn)</ td ></ tr >
2014-04-10 22:35:45 -04:00
< tr class = "separator:a0aaf11e11ee5b0925279a52eab04bc38" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
2016-06-07 04:05:03 +00:00
< tr class = "memitem:a705513954267a16cc1d40a284a7c441e" >< td class = "memItemLeft" align = "right" valign = "top" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a705513954267a16cc1d40a284a7c441e" > lh_kptr_table_new</ a > (int size, const char *name, < a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > *free_fn)</ td ></ tr >
2014-04-10 22:35:45 -04:00
< tr class = "separator:a705513954267a16cc1d40a284a7c441e" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a81653acf740cf8c9fe672e6cd16df0cf" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a81653acf740cf8c9fe672e6cd16df0cf" > lh_table_free</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t)</ td ></ tr >
< tr class = "separator:a81653acf740cf8c9fe672e6cd16df0cf" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a22b897763cc34a98c21c7fe82d151004" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a22b897763cc34a98c21c7fe82d151004" > lh_table_insert</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, void *k, const void *v)</ td ></ tr >
< tr class = "separator:a22b897763cc34a98c21c7fe82d151004" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ad3b6ca2d967a6c3021ee6c39e014a918" >< td class = "memItemLeft" align = "right" valign = "top" > struct < a class = "el" href = "structlh__entry.html" > lh_entry</ a > *  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ad3b6ca2d967a6c3021ee6c39e014a918" > lh_table_lookup_entry</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, const void *k)</ td ></ tr >
< tr class = "separator:ad3b6ca2d967a6c3021ee6c39e014a918" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a849aa0ce9fe550c16ce81a215b1765ad" >< td class = "memItemLeft" align = "right" valign = "top" >   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a849aa0ce9fe550c16ce81a215b1765ad" > THIS_FUNCTION_IS_DEPRECATED</ a > (extern const void *lh_table_lookup(struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, const void *k))</ td ></ tr >
< tr class = "separator:a849aa0ce9fe550c16ce81a215b1765ad" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a81c270bb0dd9d5c8a3e7ae20bc4d67f3" >< td class = "memItemLeft" align = "right" valign = "top" >< a class = "el" href = "json__object_8h.html#a81f02022906fafc71eb9197049f07f73" > json_bool</ a >   </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a81c270bb0dd9d5c8a3e7ae20bc4d67f3" > lh_table_lookup_ex</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, const void *k, void **v)</ td ></ tr >
< tr class = "separator:a81c270bb0dd9d5c8a3e7ae20bc4d67f3" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ae5885a71c3457190fb1dc2d6e20dde3b" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ae5885a71c3457190fb1dc2d6e20dde3b" > lh_table_delete_entry</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, struct < a class = "el" href = "structlh__entry.html" > lh_entry</ a > *e)</ td ></ tr >
< tr class = "separator:ae5885a71c3457190fb1dc2d6e20dde3b" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a2fed2c78f70d229edb2d00775ffe593c" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a2fed2c78f70d229edb2d00775ffe593c" > lh_table_delete</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, const void *k)</ td ></ tr >
< tr class = "separator:a2fed2c78f70d229edb2d00775ffe593c" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:ac9ba631c91fe80fb905f04c7cd526f2b" >< td class = "memItemLeft" align = "right" valign = "top" > int  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#ac9ba631c91fe80fb905f04c7cd526f2b" > lh_table_length</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t)</ td ></ tr >
< tr class = "separator:ac9ba631c91fe80fb905f04c7cd526f2b" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a1294160fa0e80cee04cd745a401f43a4" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a1294160fa0e80cee04cd745a401f43a4" > lh_abort</ a > (const char *msg,...)</ td ></ tr >
< tr class = "separator:a1294160fa0e80cee04cd745a401f43a4" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
< tr class = "memitem:a5322eccf3394af7dc1ebb22af8f8c562" >< td class = "memItemLeft" align = "right" valign = "top" > void  </ td >< td class = "memItemRight" valign = "bottom" >< a class = "el" href = "linkhash_8h.html#a5322eccf3394af7dc1ebb22af8f8c562" > lh_table_resize</ a > (struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *t, int new_size)</ td ></ tr >
< tr class = "separator:a5322eccf3394af7dc1ebb22af8f8c562" >< td class = "memSeparator" colspan = "2" >   </ td ></ tr >
</ table >
< h2 class = "groupheader" > Macro Definition Documentation</ h2 >
< a class = "anchor" id = "a93fad7f8ae44575dc89c9567859972d2" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define LH_EMPTY    (void*)-1</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > sentinel pointer value for empty slots </ p >
</ div >
</ div >
< a class = "anchor" id = "ad7dd67da915065dce2c6f44cb03e2d82" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define lh_foreach</ td >
< td > (</ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > table, </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > entry  </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td >     for(entry = table-> head; entry; entry = entry-> next)</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Convenience list iterator. </ p >
</ div >
</ div >
< a class = "anchor" id = "abcbb0df08b4976d0649b826b6bacfca1" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define lh_foreach_safe</ td >
< td > (</ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > table, </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > entry, </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" >   </ td >
< td class = "paramname" > tmp  </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td >     for(entry = table-> head; entry && ((tmp = entry-> next) || 1); entry = tmp)</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > lh_foreach_safe allows calling of deletion routine while iterating. </ p >
</ div >
</ div >
< a class = "anchor" id = "ac69428f2de0a6fb080b6fb373d506aa7" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define LH_FREED    (void*)-2</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > sentinel pointer value for freed slots </ p >
</ div >
</ div >
< a class = "anchor" id = "a66b61772c29d85eb52b697e0b0dc0aaf" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define LH_LOAD_FACTOR    0.66</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > The fraction of filled hash buckets until an insert will cause the table to be resized. This can range from just above 0 up to 1.0. </ p >
</ div >
</ div >
< a class = "anchor" id = "a032f1bd115df254dda325437203ce5fb" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > #define LH_PRIME    0x9e370001UL</ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > golden prime used in hash functions </ p >
</ div >
</ div >
< h2 class = "groupheader" > Typedef Documentation</ h2 >
2016-06-07 04:05:03 +00:00
< a class = "anchor" id = "a0c6811f660b93857aafdbfdf80d9696b" ></ a >
2014-04-10 22:35:45 -04:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
2016-06-07 04:05:03 +00:00
< td class = "memname" > typedef void( lh_entry_free_fn) (struct < a class = "el" href = "structlh__entry.html" > lh_entry</ a > *e)</ td >
2014-04-10 22:35:45 -04:00
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > callback function prototypes </ p >
</ div >
</ div >
2016-06-07 04:05:03 +00:00
< a class = "anchor" id = "abcbf0e4849fb0c6279827ac3b66d15c3" ></ a >
2014-04-10 22:35:45 -04:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
2016-06-07 04:05:03 +00:00
< td class = "memname" > typedef int( lh_equal_fn) (const void *k1, const void *k2)</ td >
2014-04-10 22:35:45 -04:00
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > callback function prototypes </ p >
</ div >
</ div >
2016-06-07 04:05:03 +00:00
< a class = "anchor" id = "a1780449146b716ad5e6ed0a0207d0417" ></ a >
2014-04-10 22:35:45 -04:00
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
2016-06-07 04:05:03 +00:00
< td class = "memname" > typedef unsigned long( lh_hash_fn) (const void *k)</ td >
2014-04-10 22:35:45 -04:00
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > callback function prototypes </ p >
</ div >
</ div >
< h2 class = "groupheader" > Function Documentation</ h2 >
< a class = "anchor" id = "a1294160fa0e80cee04cd745a401f43a4" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void lh_abort </ 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" >
</ div >
</ div >
< a class = "anchor" id = "ae4e9f21fb1a556c7a50c6b7ea61f2079" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int lh_char_equal </ td >
< td > (</ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k1</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k2</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
< a class = "anchor" id = "a1fcf495b9c4ce169630cb31f638b8435" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned long lh_char_hash </ td >
< td > (</ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
< a class = "anchor" id = "a0aaf11e11ee5b0925279a52eab04bc38" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > * lh_kchar_table_new </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > size</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > name</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
2016-06-07 04:05:03 +00:00
< td class = "paramtype" >< a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > *  </ td >
2014-04-10 22:35:45 -04:00
< td class = "paramname" >< em > free_fn</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Convenience function to create a new linkhash table with char keys. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > size</ td >< td > initial table size. </ td ></ tr >
< tr >< td class = "paramname" > name</ td >< td > table name. </ td ></ tr >
< tr >< td class = "paramname" > free_fn</ td >< td > callback function used to free memory for entries. </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > a pointer onto the linkhash table. </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "a705513954267a16cc1d40a284a7c441e" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > * lh_kptr_table_new </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > size</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > name</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
2016-06-07 04:05:03 +00:00
< td class = "paramtype" >< a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > *  </ td >
2014-04-10 22:35:45 -04:00
< td class = "paramname" >< em > free_fn</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Convenience function to create a new linkhash table with ptr keys. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > size</ td >< td > initial table size. </ td ></ tr >
< tr >< td class = "paramname" > name</ td >< td > table name. </ td ></ tr >
< tr >< td class = "paramname" > free_fn</ td >< td > callback function used to free memory for entries. </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > a pointer onto the linkhash table. </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "a6ce3cb97560072c40f5caeaba85f756a" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int lh_ptr_equal </ td >
< td > (</ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k1</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k2</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
< a class = "anchor" id = "a2e560f0d3e5a20f6b0bfa4049737db23" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > unsigned long lh_ptr_hash </ td >
< td > (</ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
< p > Pre-defined hash and equality functions </ p >
</ div >
</ div >
< a class = "anchor" id = "a2fed2c78f70d229edb2d00775ffe593c" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int lh_table_delete </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > the table to delete from. </ td ></ tr >
< tr >< td class = "paramname" > k</ td >< td > a pointer to the key to delete. </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > 0 if the item was deleted. </ dd >
< dd >
-1 if it was not found. </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "ae5885a71c3457190fb1dc2d6e20dde3b" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int lh_table_delete_entry </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__entry.html" > lh_entry</ a > *  </ td >
< td class = "paramname" >< em > e</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Delete a record from the table. If a callback free function is provided then it is called for the for the item being deleted. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > the table to delete from. </ td ></ tr >
< tr >< td class = "paramname" > e</ td >< td > a pointer to the entry to delete. </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > 0 if the item was deleted. </ dd >
< dd >
-1 if it was not found. </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "a81653acf740cf8c9fe672e6cd16df0cf" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void lh_table_free </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Free a linkhash table. If a callback free function is provided then it is called for all entries in the table. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > table to free. </ td ></ tr >
</ table >
</ dd >
</ dl >
</ div >
</ div >
< a class = "anchor" id = "a22b897763cc34a98c21c7fe82d151004" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int lh_table_insert </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > void *  </ td >
< td class = "paramname" >< em > k</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > v</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Insert a record into the table. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > the table to insert into. </ td ></ tr >
< tr >< td class = "paramname" > k</ td >< td > a pointer to the key to insert. </ td ></ tr >
< tr >< td class = "paramname" > v</ td >< td > a pointer to the value to insert. </ td ></ tr >
</ table >
</ dd >
</ dl >
</ div >
</ div >
< a class = "anchor" id = "ac9ba631c91fe80fb905f04c7cd526f2b" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > int lh_table_length </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em ></ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
< a class = "anchor" id = "ad3b6ca2d967a6c3021ee6c39e014a918" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > struct < a class = "el" href = "structlh__entry.html" > lh_entry</ a > * lh_table_lookup_entry </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Lookup a record into the table. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > the table to lookup </ td ></ tr >
< tr >< td class = "paramname" > k</ td >< td > a pointer to the key to lookup </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > a pointer to the record structure of the value or NULL if it does not exist. </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "a81c270bb0dd9d5c8a3e7ae20bc4d67f3" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" >< a class = "el" href = "json__object_8h.html#a81f02022906fafc71eb9197049f07f73" > json_bool</ a > lh_table_lookup_ex </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const void *  </ td >
< td class = "paramname" >< em > k</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > void **  </ td >
< td class = "paramname" >< em > v</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Lookup a record in the table </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > the table to lookup </ td ></ tr >
< tr >< td class = "paramname" > k</ td >< td > a pointer to the key to lookup </ td ></ tr >
< tr >< td class = "paramname" > v</ td >< td > a pointer to a where to store the found value (set to NULL if it doesn't exist). </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > whether or not the key was found </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "ac3ba464ac43c083397b1f1d34f2ddf55" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > * lh_table_new </ td >
< td > (</ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > size</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > const char *  </ td >
< td class = "paramname" >< em > name</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
2016-06-07 04:05:03 +00:00
< td class = "paramtype" >< a class = "el" href = "linkhash_8h.html#a0c6811f660b93857aafdbfdf80d9696b" > lh_entry_free_fn</ a > *  </ td >
2014-04-10 22:35:45 -04:00
< td class = "paramname" >< em > free_fn</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
2016-06-07 04:05:03 +00:00
< td class = "paramtype" >< a class = "el" href = "linkhash_8h.html#a1780449146b716ad5e6ed0a0207d0417" > lh_hash_fn</ a > *  </ td >
2014-04-10 22:35:45 -04:00
< td class = "paramname" >< em > hash_fn</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
2016-06-07 04:05:03 +00:00
< td class = "paramtype" >< a class = "el" href = "linkhash_8h.html#abcbf0e4849fb0c6279827ac3b66d15c3" > lh_equal_fn</ a > *  </ td >
2014-04-10 22:35:45 -04:00
< td class = "paramname" >< em > equal_fn</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Create a new linkhash table. </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > size</ td >< td > initial table size. The table is automatically resized although this incurs a performance penalty. </ td ></ tr >
< tr >< td class = "paramname" > name</ td >< td > the table name. </ td ></ tr >
< tr >< td class = "paramname" > free_fn</ td >< td > callback function used to free memory for entries when lh_table_free or lh_table_delete is called. If NULL is provided, then memory for keys and values must be freed by the caller. </ td ></ tr >
< tr >< td class = "paramname" > hash_fn</ td >< td > function used to hash keys. 2 standard ones are defined: lh_ptr_hash and lh_char_hash for hashing pointer values and C strings respectively. </ td ></ tr >
< tr >< td class = "paramname" > equal_fn</ td >< td > comparison function to compare keys. 2 standard ones defined: lh_ptr_hash and lh_char_hash for comparing pointer values and C strings respectively. </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > a pointer onto the linkhash table. </ dd ></ dl >
</ div >
</ div >
< a class = "anchor" id = "a5322eccf3394af7dc1ebb22af8f8c562" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > void lh_table_resize </ td >
< td > (</ td >
< td class = "paramtype" > struct < a class = "el" href = "structlh__table.html" > lh_table</ a > *  </ td >
< td class = "paramname" >< em > t</ em > , </ td >
</ tr >
< tr >
< td class = "paramkey" ></ td >
< td ></ td >
< td class = "paramtype" > int  </ td >
< td class = "paramname" >< em > new_size</ em >   </ td >
</ tr >
< tr >
< td ></ td >
< td > )</ td >
< td ></ td >< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
</ div >
</ div >
< a class = "anchor" id = "a849aa0ce9fe550c16ce81a215b1765ad" ></ a >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > THIS_FUNCTION_IS_DEPRECATED </ td >
< td > (</ td >
< td class = "paramtype" > extern const void *  </ td >
< td class = "paramname" >< em > lh_table_lookup</ em > struct lh_table *t, const void *k</ td >< td > )</ td >
< td ></ td >
</ tr >
</ table >
</ div >< div class = "memdoc" >
2016-06-07 04:05:03 +00:00
< p > Lookup a record into the table </ p >< dl class = "params" >< dt > Parameters</ dt >< dd >
2014-04-10 22:35:45 -04:00
< table class = "params" >
< tr >< td class = "paramname" > t</ td >< td > the table to lookup </ td ></ tr >
< tr >< td class = "paramname" > k</ td >< td > a pointer to the key to lookup </ td ></ tr >
</ table >
</ dd >
</ dl >
< dl class = "section return" >< dt > Returns</ dt >< dd > a pointer to the found value or NULL if it does not exist. </ dd ></ dl >
< dl class = "deprecated" >< dt >< b >< a class = "el" href = "deprecated.html#_deprecated000002" > Deprecated:</ a ></ b ></ dt >< dd > Use lh_table_lookup_ex instead. </ dd ></ dl >
</ div >
</ div >
</ div > <!-- contents -->
<!-- start footer part -->
< hr class = "footer" />< address class = "footer" >< small >
2016-06-07 04:05:03 +00:00
Generated on Tue Jun 7 2016 17:51:50 for json-c by   < a href = "http://www.doxygen.org/index.html" >
2014-04-10 22:35:45 -04:00
< img class = "footer" src = "doxygen.png" alt = "doxygen" />
2016-06-07 04:05:03 +00:00
</ a > 1.8.9.1
2014-04-10 22:35:45 -04:00
</ small ></ address >
</ body >
</ html >