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 >