<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="previous" href="Netshm_data.html"> <link rel="next" href="Netshm_array.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class attributes" rel=Appendix href="index_attributes.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of class types" rel=Appendix href="index_class_types.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html"> <link title="Equeue" rel="Chapter" href="Equeue.html"> <link title="Unixqueue" rel="Chapter" href="Unixqueue.html"> <link title="Uq_engines" rel="Chapter" href="Uq_engines.html"> <link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html"> <link title="Unixqueue_mt" rel="Chapter" href="Unixqueue_mt.html"> <link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html"> <link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html"> <link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html"> <link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html"> <link title="Netcgi" rel="Chapter" href="Netcgi.html"> <link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html"> <link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html"> <link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html"> <link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html"> <link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html"> <link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html"> <link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html"> <link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html"> <link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html"> <link title="Http_client" rel="Chapter" href="Http_client.html"> <link title="Telnet_client" rel="Chapter" href="Telnet_client.html"> <link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html"> <link title="Ftp_client" rel="Chapter" href="Ftp_client.html"> <link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html"> <link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html"> <link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html"> <link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html"> <link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html"> <link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html"> <link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html"> <link title="Netplex_types" rel="Chapter" href="Netplex_types.html"> <link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html"> <link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html"> <link title="Netplex_log" rel="Chapter" href="Netplex_log.html"> <link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html"> <link title="Netplex_container" rel="Chapter" href="Netplex_container.html"> <link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html"> <link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html"> <link title="Netplex_main" rel="Chapter" href="Netplex_main.html"> <link title="Netplex_config" rel="Chapter" href="Netplex_config.html"> <link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html"> <link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html"> <link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html"> <link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html"> <link title="Netshm" rel="Chapter" href="Netshm.html"> <link title="Netshm_data" rel="Chapter" href="Netshm_data.html"> <link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html"> <link title="Netshm_array" rel="Chapter" href="Netshm_array.html"> <link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html"> <link title="Netconversion" rel="Chapter" href="Netconversion.html"> <link title="Netchannels" rel="Chapter" href="Netchannels.html"> <link title="Netstream" rel="Chapter" href="Netstream.html"> <link title="Mimestring" rel="Chapter" href="Mimestring.html"> <link title="Netmime" rel="Chapter" href="Netmime.html"> <link title="Netsendmail" rel="Chapter" href="Netsendmail.html"> <link title="Neturl" rel="Chapter" href="Neturl.html"> <link title="Netaddress" rel="Chapter" href="Netaddress.html"> <link title="Netbuffer" rel="Chapter" href="Netbuffer.html"> <link title="Netdate" rel="Chapter" href="Netdate.html"> <link title="Netencoding" rel="Chapter" href="Netencoding.html"> <link title="Netulex" rel="Chapter" href="Netulex.html"> <link title="Netaccel" rel="Chapter" href="Netaccel.html"> <link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html"> <link title="Nethtml" rel="Chapter" href="Nethtml.html"> <link title="Netstring_str" rel="Chapter" href="Netstring_str.html"> <link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html"> <link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html"> <link title="Netmappings" rel="Chapter" href="Netmappings.html"> <link title="Netaux" rel="Chapter" href="Netaux.html"> <link title="Nethttp" rel="Chapter" href="Nethttp.html"> <link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html"> <link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html"> <link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html"> <link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html"> <link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html"> <link title="Netsys" rel="Chapter" href="Netsys.html"> <link title="Netpop" rel="Chapter" href="Netpop.html"> <link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html"> <link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html"> <link title="Rpc_time" rel="Chapter" href="Rpc_time.html"> <link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html"> <link title="Rtypes" rel="Chapter" href="Rtypes.html"> <link title="Xdr" rel="Chapter" href="Xdr.html"> <link title="Rpc" rel="Chapter" href="Rpc.html"> <link title="Rpc_program" rel="Chapter" href="Rpc_program.html"> <link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html"> <link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html"> <link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html"> <link title="Rpc_client" rel="Chapter" href="Rpc_client.html"> <link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html"> <link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html"> <link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html"> <link title="Rpc_server" rel="Chapter" href="Rpc_server.html"> <link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html"> <link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html"> <link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html"> <link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html"> <link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html"> <link title="Shell_sys" rel="Chapter" href="Shell_sys.html"> <link title="Shell" rel="Chapter" href="Shell.html"> <link title="Shell_uq" rel="Chapter" href="Shell_uq.html"> <link title="Shell_mt" rel="Chapter" href="Shell_mt.html"> <link title="Shell_intro" rel="Chapter" href="Shell_intro.html"> <link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><title>Ocamlnet 2 Reference Manual : Netshm_hashtbl</title> </head> <body> <div class="navbar"><a href="Netshm_data.html">Previous</a> <a href="index.html">Up</a> <a href="Netshm_array.html">Next</a> </div> <center><h1>Module <a href="type_Netshm_hashtbl.html">Netshm_hashtbl</a></h1></center> <br> <pre><span class="keyword">module</span> Netshm_hashtbl: <code class="code">sig</code> <a href="Netshm_hashtbl.html">..</a> <code class="code">end</code></pre>Hash tables in shared memory<br> <hr width="100%"> <pre><span class="keyword">type</span> <a name="TYPEt"></a><code class="type">('a, 'b)</code> t </pre> <pre><span class="keyword">val</span> <a name="VALmanage"></a>manage : <code class="type">?pagesize:int -><br> ?init:int -><br> 'a <a href="Netshm_data.html#TYPEdata_manager">Netshm_data.data_manager</a> -><br> 'b <a href="Netshm_data.html#TYPEdata_manager">Netshm_data.data_manager</a> -><br> <a href="Netshm.html#TYPElocking_method">Netshm.locking_method</a> -> <a href="Netshm.html#TYPEshm_descr">Netshm.shm_descr</a> -> ('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a></code></pre><div class="info"> Manages a shared memory object as a hash table like <code class="code">Netshm.manage</code>, and additionally represent arbitrary O'Caml values. <p> It is essential that the same data managers are passed as at the time when the hash table was initialized. <p> For example, to get a hash table from <code class="code">int</code> to <code class="code">string</code>, use <pre><code class="code"> manage Netshm_data.int_manager Netshm_data.string_manager lm sd </code></pre><br> </div> <pre><span class="keyword">val</span> <a name="VALadd"></a>add : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'a -> 'b -> unit</code></pre><div class="info"> <code class="code">add tbl key value</code>: Adds the binding of <code class="code">key</code> to <code class="code">value</code> to the table. Previous bindings are not removed, but simply hidden.<br> </div> <pre><span class="keyword">val</span> <a name="VALfind"></a>find : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'a -> 'b</code></pre><div class="info"> <code class="code">find tbl key</code>: Finds the current binding of <code class="code">key</code> in <code class="code">tbl</code> or raises <code class="code">Not_found</code> if no such binding exists.<br> </div> <pre><span class="keyword">val</span> <a name="VALfind_all"></a>find_all : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'a -> 'b list</code></pre><div class="info"> <code class="code">find_all tbl key</code> returns the list of all data associated with <code class="code">key</code> in <code class="code">tbl</code>. The current binding is returned first, then the previous bindings, in reverse order of introduction in the table.<br> </div> <pre><span class="keyword">val</span> <a name="VALmem"></a>mem : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'a -> bool</code></pre><div class="info"> <code class="code">mem tbl key</code> checks if <code class="code">key</code> is bound in <code class="code">tbl</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALremove"></a>remove : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'a -> unit</code></pre><div class="info"> <code class="code">remove tbl key</code> removes the current binding of <code class="code">key</code> in <code class="code">tbl</code>, restoring the previous binding if it exists. It does nothing if <code class="code">key</code> is not bound in <code class="code">tbl</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALreplace"></a>replace : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'a -> 'b -> unit</code></pre><div class="info"> <code class="code">replace tbl key value</code> replaces the current binding of <code class="code">key</code> in <code class="code">tbl</code> by a binding of <code class="code">key</code> to <code class="code">value</code>. If <code class="code">key</code> is unbound in <code class="code">tbl</code>, a binding of <code class="code">key</code> to <code class="code">value</code> is added to <code class="code">tbl</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALiter"></a>iter : <code class="type">('a -> 'b -> unit) -> ('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> unit</code></pre><div class="info"> <code class="code">iter f tbl</code> applies <code class="code">f</code> to all bindings in table <code class="code">tbl</code>. <code class="code">f</code> receives the key as first argument, and the associated value as second argument. Each binding is presented exactly once to <code class="code">f</code>. The order in which the bindings are passed to <code class="code">f</code> is unspecified. However, if the table contains several bindings for the same key, they are passed to <code class="code">f</code> in reverse order of introduction, that is, the most recent binding is passed first. <p> While the iteration is in progress, the table is locked. That means you cannot modify it during the iteration.<br> </div> <pre><span class="keyword">val</span> <a name="VALiter_keys"></a>iter_keys : <code class="type">('a -> unit) -> ('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> unit</code></pre><div class="info"> <code class="code">iter_keys f tbl</code> applies <code class="code">f</code> to all keys in table <code class="code">tbl</code>. If there are several bindings for a key, <code class="code">f</code> is only called once. <p> While the iteration is in progress, the table is locked. That means you cannot modify it during the iteration.<br> </div> <pre><span class="keyword">val</span> <a name="VALfold"></a>fold : <code class="type">('a -> 'b -> 'c -> 'c) -> ('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> 'c -> 'c</code></pre><div class="info"> <code class="code">fold f tbl init</code> computes <code class="code">(f kN dN ... (f k1 d1 init)...)</code>, where <code class="code">k1 ... kN</code> are the keys of all bindings in <code class="code">tbl</code>, and <code class="code">d1 ... dN</code> are the associated values. Each binding is presented exactly once to <code class="code">f</code>. The order in which the bindings are passed to <code class="code">f</code> is unspecified. However, if the table contains several bindings for the same key, they are passed to <code class="code">f</code> in reverse order of introduction, that is, the most recent binding is passed first. <p> While the iteration is in progress, the table is locked. That means you cannot modify it during the iteration.<br> </div> <pre><span class="keyword">val</span> <a name="VALlength"></a>length : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> int</code></pre><div class="info"> <code class="code">length tbl</code> returns the number of bindings in <code class="code">tbl</code>. Multiple bindings are counted multiply, so <code class="code">length</code> gives the number of times <code class="code">iter</code> calls its first argument.<br> </div> <pre><span class="keyword">val</span> <a name="VALshm_table"></a>shm_table : <code class="type">('a, 'b) <a href="Netshm_hashtbl.html#TYPEt">t</a> -> <a href="Netshm.html#TYPEshm_table">Netshm.shm_table</a></code></pre><div class="info"> Returns the underlying shared memory table used to implement hash tables.<br> </div> </body></html>