<!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"/> <title>pcsc-lite: simclist.h Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">pcsc-lite <span id="projectnumber">1.7.2</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</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> <li><a href="dirs.html"><span>Directories</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 id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_7a4553ee0c3b13d0e595a5d1659110a6.html">src</a> </li> </ul> </div> </div> <div class="header"> <div class="headertitle"> <div class="title">simclist.h</div> </div> </div> <div class="contents"> <div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span> <a name="l00002"></a>00002 <span class="comment"> * Copyright (c) 2007,2008 Mij <mij@bitchx.it></span> <a name="l00003"></a>00003 <span class="comment"> *</span> <a name="l00004"></a>00004 <span class="comment"> * Permission to use, copy, modify, and distribute this software for any</span> <a name="l00005"></a>00005 <span class="comment"> * purpose with or without fee is hereby granted, provided that the above</span> <a name="l00006"></a>00006 <span class="comment"> * copyright notice and this permission notice appear in all copies.</span> <a name="l00007"></a>00007 <span class="comment"> *</span> <a name="l00008"></a>00008 <span class="comment"> * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES</span> <a name="l00009"></a>00009 <span class="comment"> * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF</span> <a name="l00010"></a>00010 <span class="comment"> * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR</span> <a name="l00011"></a>00011 <span class="comment"> * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES</span> <a name="l00012"></a>00012 <span class="comment"> * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN</span> <a name="l00013"></a>00013 <span class="comment"> * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF</span> <a name="l00014"></a>00014 <span class="comment"> * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</span> <a name="l00015"></a>00015 <span class="comment"> */</span> <a name="l00016"></a>00016 <a name="l00017"></a>00017 <a name="l00018"></a>00018 <span class="comment">/*</span> <a name="l00019"></a>00019 <span class="comment"> * SimCList library. See http://mij.oltrelinux.com/devel/simclist</span> <a name="l00020"></a>00020 <span class="comment"> */</span> <a name="l00021"></a>00021 <a name="l00022"></a>00022 <a name="l00023"></a>00023 <span class="preprocessor">#ifndef SIMCLIST_H</span> <a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#define SIMCLIST_H</span> <a name="l00025"></a>00025 <span class="preprocessor"></span> <a name="l00026"></a>00026 <span class="preprocessor">#ifdef __cplusplus</span> <a name="l00027"></a>00027 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> { <a name="l00028"></a>00028 <span class="preprocessor">#endif</span> <a name="l00029"></a>00029 <span class="preprocessor"></span> <a name="l00030"></a>00030 <span class="preprocessor">#include <inttypes.h></span> <a name="l00031"></a>00031 <span class="preprocessor">#include <errno.h></span> <a name="l00032"></a>00032 <span class="preprocessor">#include <sys/types.h></span> <a name="l00033"></a>00033 <a name="l00034"></a>00034 <span class="comment">/* Be friend of both C90 and C99 compilers */</span> <a name="l00035"></a>00035 <span class="preprocessor">#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L</span> <a name="l00036"></a>00036 <span class="preprocessor"></span> <span class="comment">/* "inline" and "restrict" are keywords */</span> <a name="l00037"></a>00037 <span class="preprocessor">#else</span> <a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor"># define inline </span><span class="comment">/* inline */</span> <a name="l00039"></a>00039 <span class="preprocessor"># define restrict </span><span class="comment">/* restrict */</span> <a name="l00040"></a>00040 <span class="preprocessor">#endif</span> <a name="l00041"></a>00041 <span class="preprocessor"></span> <a name="l00042"></a>00042 <a name="l00048"></a>00048 <span class="keyword">typedef</span> int32_t list_hash_t; <a name="l00049"></a>00049 <a name="l00050"></a>00050 <span class="preprocessor">#ifndef SIMCLIST_NO_DUMPRESTORE</span> <a name="l00051"></a><a class="code" href="structlist__dump__info__t.html">00051</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{ <a name="l00052"></a>00052 uint16_t version; <span class="comment">/* dump version */</span> <a name="l00053"></a>00053 int64_t timestamp; <span class="comment">/* when the list has been dumped, microseconds from UNIX epoch */</span> <a name="l00054"></a>00054 uint32_t list_size; <a name="l00055"></a>00055 uint32_t list_numels; <a name="l00056"></a>00056 list_hash_t list_hash; <span class="comment">/* hash of the list when dumped, or 0 if invalid */</span> <a name="l00057"></a>00057 uint32_t dumpsize; <a name="l00058"></a>00058 <span class="keywordtype">int</span> consistent; <span class="comment">/* 1 if the dump is verified complete/consistent; 0 otherwise */</span> <a name="l00059"></a>00059 } <a class="code" href="structlist__dump__info__t.html">list_dump_info_t</a>; <a name="l00060"></a>00060 <span class="preprocessor">#endif</span> <a name="l00061"></a>00061 <span class="preprocessor"></span> <a name="l00071"></a>00071 <span class="keyword">typedef</span> int (*element_comparator)(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00072"></a>00072 <a name="l00084"></a>00084 <span class="keyword">typedef</span> int (*element_seeker)(<span class="keyword">const</span> <span class="keywordtype">void</span> *el, <span class="keyword">const</span> <span class="keywordtype">void</span> *indicator); <a name="l00085"></a>00085 <a name="l00095"></a>00095 <span class="keyword">typedef</span> size_t (*element_meter)(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00096"></a>00096 <a name="l00106"></a>00106 <span class="keyword">typedef</span> list_hash_t (*element_hash_computer)(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00107"></a>00107 <a name="l00126"></a>00126 <span class="keyword">typedef</span> <span class="keywordtype">void</span> *(*element_serializer)(<span class="keyword">const</span> <span class="keywordtype">void</span> *restrict el, uint32_t *restrict serializ_len); <a name="l00127"></a>00127 <a name="l00143"></a>00143 <span class="keyword">typedef</span> <span class="keywordtype">void</span> *(*element_unserializer)(<span class="keyword">const</span> <span class="keywordtype">void</span> *restrict data, uint32_t *restrict data_len); <a name="l00144"></a>00144 <a name="l00145"></a>00145 <span class="comment">/* [private-use] list entry -- olds actual user datum */</span> <a name="l00146"></a><a class="code" href="structlist__entry__s.html">00146</a> <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> { <a name="l00147"></a>00147 <span class="keywordtype">void</span> *data; <a name="l00148"></a>00148 <a name="l00149"></a>00149 <span class="comment">/* doubly-linked list service references */</span> <a name="l00150"></a>00150 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> *next; <a name="l00151"></a>00151 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> *prev; <a name="l00152"></a>00152 }; <a name="l00153"></a>00153 <a name="l00154"></a>00154 <span class="comment">/* [private-use] list attributes */</span> <a name="l00155"></a><a class="code" href="structlist__attributes__s.html">00155</a> <span class="keyword">struct </span><a class="code" href="structlist__attributes__s.html">list_attributes_s</a> { <a name="l00156"></a>00156 <span class="comment">/* user-set routine for comparing list elements */</span> <a name="l00157"></a>00157 element_comparator comparator; <a name="l00158"></a>00158 <span class="comment">/* user-set routing for seeking elements */</span> <a name="l00159"></a>00159 element_seeker seeker; <a name="l00160"></a>00160 <span class="comment">/* user-set routine for determining the length of an element */</span> <a name="l00161"></a>00161 element_meter meter; <a name="l00162"></a>00162 <span class="keywordtype">int</span> copy_data; <a name="l00163"></a>00163 <span class="comment">/* user-set routine for computing the hash of an element */</span> <a name="l00164"></a>00164 element_hash_computer hasher; <a name="l00165"></a>00165 <span class="comment">/* user-set routine for serializing an element */</span> <a name="l00166"></a>00166 element_serializer serializer; <a name="l00167"></a>00167 <span class="comment">/* user-set routine for unserializing an element */</span> <a name="l00168"></a>00168 element_unserializer unserializer; <a name="l00169"></a>00169 }; <a name="l00170"></a>00170 <a name="l00172"></a><a class="code" href="structlist__t.html">00172</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{ <a name="l00173"></a>00173 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> *head_sentinel; <a name="l00174"></a>00174 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> *tail_sentinel; <a name="l00175"></a>00175 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> *mid; <a name="l00176"></a>00176 <a name="l00177"></a>00177 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numels; <a name="l00178"></a>00178 <a name="l00179"></a>00179 <span class="comment">/* array of spare elements */</span> <a name="l00180"></a>00180 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> **spareels; <a name="l00181"></a>00181 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> spareelsnum; <a name="l00182"></a>00182 <a name="l00183"></a>00183 <span class="preprocessor">#ifdef SIMCLIST_WITH_THREADS</span> <a name="l00184"></a>00184 <span class="preprocessor"></span> <span class="comment">/* how many threads are currently running */</span> <a name="l00185"></a>00185 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> threadcount; <a name="l00186"></a>00186 <span class="preprocessor">#endif</span> <a name="l00187"></a>00187 <span class="preprocessor"></span> <a name="l00188"></a>00188 <span class="comment">/* service variables for list iteration */</span> <a name="l00189"></a>00189 <span class="keywordtype">int</span> iter_active; <a name="l00190"></a>00190 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter_pos; <a name="l00191"></a>00191 <span class="keyword">struct </span><a class="code" href="structlist__entry__s.html">list_entry_s</a> *iter_curentry; <a name="l00192"></a>00192 <a name="l00193"></a>00193 <span class="comment">/* list attributes */</span> <a name="l00194"></a>00194 <span class="keyword">struct </span><a class="code" href="structlist__attributes__s.html">list_attributes_s</a> attrs; <a name="l00195"></a>00195 } <a class="code" href="structlist__t.html" title="list object">list_t</a>; <a name="l00196"></a>00196 <a name="l00203"></a>00203 <span class="keywordtype">int</span> list_init(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00204"></a>00204 <a name="l00214"></a>00214 <span class="keywordtype">void</span> list_destroy(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00215"></a>00215 <a name="l00228"></a>00228 <span class="keywordtype">int</span> list_attributes_comparator(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, element_comparator comparator_fun); <a name="l00229"></a>00229 <a name="l00242"></a>00242 <span class="keywordtype">int</span> list_attributes_seeker(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, element_seeker seeker_fun); <a name="l00243"></a>00243 <a name="l00274"></a>00274 <span class="keywordtype">int</span> list_attributes_copy(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, element_meter metric_fun, <span class="keywordtype">int</span> copy_data); <a name="l00275"></a>00275 <a name="l00294"></a>00294 <span class="keywordtype">int</span> list_attributes_hash_computer(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, element_hash_computer hash_computer_fun); <a name="l00295"></a>00295 <a name="l00315"></a>00315 <span class="keywordtype">int</span> list_attributes_serializer(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, element_serializer serializer_fun); <a name="l00316"></a>00316 <a name="l00337"></a>00337 <span class="keywordtype">int</span> list_attributes_unserializer(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, element_unserializer unserializer_fun); <a name="l00338"></a>00338 <a name="l00349"></a>00349 <span class="keywordtype">int</span> list_append(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *data); <a name="l00350"></a>00350 <a name="l00361"></a>00361 <span class="keywordtype">int</span> list_prepend(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *restrict data); <a name="l00362"></a>00362 <a name="l00371"></a>00371 <span class="keywordtype">void</span> *list_fetch(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00372"></a>00372 <a name="l00380"></a>00380 <span class="keywordtype">void</span> *list_get_at(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos); <a name="l00381"></a>00381 <a name="l00394"></a>00394 <span class="keywordtype">void</span> *list_get_max(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00395"></a>00395 <a name="l00408"></a>00408 <span class="keywordtype">void</span> *list_get_min(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00409"></a>00409 <a name="l00417"></a>00417 <span class="keywordtype">void</span> *list_extract_at(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos); <a name="l00418"></a>00418 <a name="l00427"></a>00427 <span class="keywordtype">int</span> list_insert_at(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos); <a name="l00428"></a>00428 <a name="l00444"></a>00444 <span class="keywordtype">int</span> list_delete(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *data); <a name="l00445"></a>00445 <a name="l00453"></a>00453 <span class="keywordtype">int</span> list_delete_at(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos); <a name="l00454"></a>00454 <a name="l00463"></a>00463 <span class="keywordtype">int</span> list_delete_range(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> posstart, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> posend); <a name="l00464"></a>00464 <a name="l00476"></a>00476 <span class="keywordtype">int</span> list_clear(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00477"></a>00477 <a name="l00484"></a>00484 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> list_size(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00485"></a>00485 <a name="l00494"></a>00494 <span class="keywordtype">int</span> list_empty(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00495"></a>00495 <a name="l00513"></a>00513 <span class="keywordtype">int</span> list_locate(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *data); <a name="l00514"></a>00514 <a name="l00528"></a>00528 <span class="keywordtype">void</span> *list_seek(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *indicator); <a name="l00529"></a>00529 <a name="l00549"></a>00549 <span class="keywordtype">int</span> list_contains(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">void</span> *data); <a name="l00550"></a>00550 <a name="l00568"></a>00568 <span class="keywordtype">int</span> list_concat(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *l1, <span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *l2, <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict dest); <a name="l00569"></a>00569 <a name="l00585"></a>00585 <span class="keywordtype">int</span> list_sort(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">int</span> versus); <a name="l00586"></a>00586 <a name="l00597"></a>00597 <span class="keywordtype">int</span> list_iterator_start(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00598"></a>00598 <a name="l00605"></a>00605 <span class="keywordtype">void</span> *list_iterator_next(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00606"></a>00606 <a name="l00613"></a>00613 <span class="keywordtype">int</span> list_iterator_hasnext(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00614"></a>00614 <a name="l00621"></a>00621 <span class="keywordtype">int</span> list_iterator_stop(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l); <a name="l00622"></a>00622 <a name="l00631"></a>00631 <span class="keywordtype">int</span> list_hash(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, list_hash_t *restrict hash); <a name="l00632"></a>00632 <a name="l00633"></a>00633 <span class="preprocessor">#ifndef SIMCLIST_NO_DUMPRESTORE</span> <a name="l00634"></a>00634 <span class="preprocessor"></span> <a name="l00649"></a>00649 <span class="keywordtype">int</span> list_dump_getinfo_filedescriptor(<span class="keywordtype">int</span> fd, <a class="code" href="structlist__dump__info__t.html">list_dump_info_t</a> *restrict info); <a name="l00650"></a>00650 <a name="l00664"></a>00664 <span class="keywordtype">int</span> list_dump_getinfo_file(<span class="keyword">const</span> <span class="keywordtype">char</span> *restrict filename, <a class="code" href="structlist__dump__info__t.html">list_dump_info_t</a> *restrict info); <a name="l00665"></a>00665 <a name="l00700"></a>00700 <span class="keywordtype">int</span> list_dump_filedescriptor(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">int</span> fd, <span class="keywordtype">size_t</span> *restrict len); <a name="l00701"></a>00701 <a name="l00723"></a>00723 <span class="keywordtype">int</span> list_dump_file(<span class="keyword">const</span> <a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">char</span> *restrict filename, <span class="keywordtype">size_t</span> *restrict len); <a name="l00724"></a>00724 <a name="l00743"></a>00743 <span class="keywordtype">int</span> list_restore_filedescriptor(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keywordtype">int</span> fd, <span class="keywordtype">size_t</span> *restrict len); <a name="l00744"></a>00744 <a name="l00761"></a>00761 <span class="keywordtype">int</span> list_restore_file(<a class="code" href="structlist__t.html" title="list object">list_t</a> *restrict l, <span class="keyword">const</span> <span class="keywordtype">char</span> *restrict filename, <span class="keywordtype">size_t</span> *len); <a name="l00762"></a>00762 <span class="preprocessor">#endif</span> <a name="l00763"></a>00763 <span class="preprocessor"></span> <a name="l00764"></a>00764 <span class="comment">/* ready-made comparators, meters and hash computers */</span> <a name="l00765"></a>00765 <span class="comment">/* comparator functions */</span> <a name="l00770"></a>00770 <span class="keywordtype">int</span> list_comparator_int8_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00771"></a>00771 <a name="l00776"></a>00776 <span class="keywordtype">int</span> list_comparator_int16_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00777"></a>00777 <a name="l00782"></a>00782 <span class="keywordtype">int</span> list_comparator_int32_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00783"></a>00783 <a name="l00788"></a>00788 <span class="keywordtype">int</span> list_comparator_int64_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00789"></a>00789 <a name="l00794"></a>00794 <span class="keywordtype">int</span> list_comparator_uint8_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00795"></a>00795 <a name="l00800"></a>00800 <span class="keywordtype">int</span> list_comparator_uint16_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00801"></a>00801 <a name="l00806"></a>00806 <span class="keywordtype">int</span> list_comparator_uint32_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00807"></a>00807 <a name="l00812"></a>00812 <span class="keywordtype">int</span> list_comparator_uint64_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00813"></a>00813 <a name="l00818"></a>00818 <span class="keywordtype">int</span> list_comparator_float(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00819"></a>00819 <a name="l00824"></a>00824 <span class="keywordtype">int</span> list_comparator_double(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00825"></a>00825 <a name="l00830"></a>00830 <span class="keywordtype">int</span> list_comparator_string(<span class="keyword">const</span> <span class="keywordtype">void</span> *a, <span class="keyword">const</span> <span class="keywordtype">void</span> *b); <a name="l00831"></a>00831 <a name="l00832"></a>00832 <span class="comment">/* metric functions */</span> <a name="l00837"></a>00837 <span class="keywordtype">size_t</span> list_meter_int8_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00838"></a>00838 <a name="l00843"></a>00843 <span class="keywordtype">size_t</span> list_meter_int16_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00844"></a>00844 <a name="l00849"></a>00849 <span class="keywordtype">size_t</span> list_meter_int32_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00850"></a>00850 <a name="l00855"></a>00855 <span class="keywordtype">size_t</span> list_meter_int64_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00856"></a>00856 <a name="l00861"></a>00861 <span class="keywordtype">size_t</span> list_meter_uint8_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00862"></a>00862 <a name="l00867"></a>00867 <span class="keywordtype">size_t</span> list_meter_uint16_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00868"></a>00868 <a name="l00873"></a>00873 <span class="keywordtype">size_t</span> list_meter_uint32_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00874"></a>00874 <a name="l00879"></a>00879 <span class="keywordtype">size_t</span> list_meter_uint64_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00880"></a>00880 <a name="l00885"></a>00885 <span class="keywordtype">size_t</span> list_meter_float(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00886"></a>00886 <a name="l00891"></a>00891 <span class="keywordtype">size_t</span> list_meter_double(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00892"></a>00892 <a name="l00897"></a>00897 <span class="keywordtype">size_t</span> list_meter_string(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00898"></a>00898 <a name="l00899"></a>00899 <span class="comment">/* hash functions */</span> <a name="l00904"></a>00904 list_hash_t list_hashcomputer_int8_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00905"></a>00905 <a name="l00910"></a>00910 list_hash_t list_hashcomputer_int16_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00911"></a>00911 <a name="l00916"></a>00916 list_hash_t list_hashcomputer_int32_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00917"></a>00917 <a name="l00922"></a>00922 list_hash_t list_hashcomputer_int64_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00923"></a>00923 <a name="l00928"></a>00928 list_hash_t list_hashcomputer_uint8_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00929"></a>00929 <a name="l00934"></a>00934 list_hash_t list_hashcomputer_uint16_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00935"></a>00935 <a name="l00940"></a>00940 list_hash_t list_hashcomputer_uint32_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00941"></a>00941 <a name="l00946"></a>00946 list_hash_t list_hashcomputer_uint64_t(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00947"></a>00947 <a name="l00952"></a>00952 list_hash_t list_hashcomputer_float(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00953"></a>00953 <a name="l00958"></a>00958 list_hash_t list_hashcomputer_double(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00959"></a>00959 <a name="l00964"></a>00964 list_hash_t list_hashcomputer_string(<span class="keyword">const</span> <span class="keywordtype">void</span> *el); <a name="l00965"></a>00965 <a name="l00966"></a>00966 <span class="preprocessor">#ifdef __cplusplus</span> <a name="l00967"></a>00967 <span class="preprocessor"></span>} <a name="l00968"></a>00968 <span class="preprocessor">#endif</span> <a name="l00969"></a>00969 <span class="preprocessor"></span> <a name="l00970"></a>00970 <span class="preprocessor">#endif</span> <a name="l00971"></a>00971 <span class="preprocessor"></span> </pre></div></div> </div> <hr class="footer"/><address class="footer"><small>Generated on Thu Sep 15 2011 for pcsc-lite by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>