* Makefile.am: Build `docs` after `runtime`, so that it can depend
[mono.git] / mono / docscripts / sources / mono-api-utils.html
1 <h2>Utility Methods</h2>
2
3 <h3>Bitsets</h3>
4
5         <p>MonoBitsets are a set of routines used to manipulate sets
6         of bits.
7         
8 <h4><a name="api:mono_bitset_alloc_size">mono_bitset_alloc_size</a></h4>
9 <h4><a name="api:mono_bitset_clear">mono_bitset_clear</a></h4>
10 <h4><a name="api:mono_bitset_clear_all">mono_bitset_clear_all</a></h4>
11 <h4><a name="api:mono_bitset_clone">mono_bitset_clone</a></h4>
12 <h4><a name="api:mono_bitset_copyto">mono_bitset_copyto</a></h4>
13 <h4><a name="api:mono_bitset_count">mono_bitset_count</a></h4>
14 <h4><a name="api:mono_bitset_equal">mono_bitset_equal</a></h4>
15 <h4><a name="api:mono_bitset_find_first">mono_bitset_find_first</a></h4>
16 <h4><a name="api:mono_bitset_find_last">mono_bitset_find_last</a></h4>
17 <h4><a name="api:mono_bitset_find_start">mono_bitset_find_start</a></h4>
18 <h4><a name="api:mono_bitset_foreach">mono_bitset_foreach</a></h4>
19 <h4><a name="api:mono_bitset_free">mono_bitset_free</a></h4>
20 <h4><a name="api:mono_bitset_intersection">mono_bitset_intersection</a></h4>
21 <h4><a name="api:mono_bitset_invert">mono_bitset_invert</a></h4>
22 <h4><a name="api:mono_bitset_mem_new">mono_bitset_mem_new</a></h4>
23 <h4><a name="api:mono_bitset_new">mono_bitset_new</a></h4>
24 <h4><a name="api:mono_bitset_set">mono_bitset_set</a></h4>
25 <h4><a name="api:mono_bitset_set_all">mono_bitset_set_all</a></h4>
26 <h4><a name="api:mono_bitset_size">mono_bitset_size</a></h4>
27 <h4><a name="api:mono_bitset_sub">mono_bitset_sub</a></h4>
28 <h4><a name="api:mono_bitset_test">mono_bitset_test</a></h4>
29 <h4><a name="api:mono_bitset_test_bulk">mono_bitset_test_bulk</a></h4>
30 <h4><a name="api:mono_bitset_union">mono_bitset_union</a></h4>
31 <h4><a name="api:mono_bitset_find_first_unset">mono_bitset_find_first_unset</a></h4>
32 <h4><a name="api:mono_bitset_intersection_2">mono_bitset_intersection_2</a></h4>
33
34 <h3>Hashtables</h3>
35
36         <p><tt>GHashTable</tt> is used when you need to store object
37         references into a hashtable, objects stored in a
38         <tt>MonoGHashTable</tt> are properly tracked by the garbage
39         collector.
40
41         <p>The <tt>MonoGHashTable</tt> data type has the same API as
42         the GLIB.
43         
44 <h4><a name="api:mono_g_hash_table_destroy">mono_g_hash_table_destroy</a></h4>
45 <h4><a name="api:mono_g_hash_table_foreach">mono_g_hash_table_foreach</a></h4>
46 <h4><a name="api:mono_g_hash_table_foreach_remove">mono_g_hash_table_foreach_remove</a></h4>
47 <h4><a name="api:mono_g_hash_table_foreach_steal">mono_g_hash_table_foreach_steal</a></h4>
48 <h4><a name="api:mono_g_hash_table_insert">mono_g_hash_table_insert</a></h4>
49 <h4><a name="api:mono_g_hash_table_lookup">mono_g_hash_table_lookup</a></h4>
50 <h4><a name="api:mono_g_hash_table_lookup_extended">mono_g_hash_table_lookup_extended</a></h4>
51 <h4><a name="api:mono_g_hash_table_new">mono_g_hash_table_new</a></h4>
52 <h4><a name="api:mono_g_hash_table_new_full">mono_g_hash_table_new_full</a></h4>
53 <h4><a name="api:mono_g_hash_table_remap">mono_g_hash_table_remap</a></h4>
54 <h4><a name="api:mono_g_hash_table_remove">mono_g_hash_table_remove</a></h4>
55 <h4><a name="api:mono_g_hash_table_replace">mono_g_hash_table_replace</a></h4>
56 <h4><a name="api:mono_g_hash_table_size">mono_g_hash_table_size</a></h4>
57 <h4><a name="api:mono_g_hash_table_steal">mono_g_hash_table_steal</a></h4>
58
59 <h3>Raw buffer</h3>
60
61         <p>Raw buffers provide an abstraction to load segments of
62         files into memory.  If the operating system supports it, the
63         files are not loaded, but are mapped into the address space of
64         the process (On Unix, this is done using the <tt>mmap(2)</tt>
65         system call).
66         
67 <h4><a name="api:mono_raw_buffer_load">mono_raw_buffer_load</a></h4>
68 <h4><a name="api:mono_raw_buffer_update">mono_raw_buffer_update</a></h4>
69 <h4><a name="api:mono_raw_buffer_free">mono_raw_buffer_free</a></h4>
70
71 <h3>SHA1 Signatures</h3>
72
73 <h4><a name="api:mono_sha1_init">mono_sha1_init</a></h4>
74 <h4><a name="api:mono_sha1_update">mono_sha1_update</a></h4>
75 <h4><a name="api:mono_sha1_get_digest_from_file">mono_sha1_get_digest_from_file</a></h4>
76 <h4><a name="api:mono_sha1_get_digest">mono_sha1_get_digest</a></h4>
77 <h4><a name="api:mono_sha1_final">mono_sha1_final</a></h4>
78
79 <h3>MD5 Signatures</h3>
80
81 <h4><a name="api:mono_md5_init">mono_md5_init</a></h4>
82 <h4><a name="api:mono_md5_update">mono_md5_update</a></h4>
83 <h4><a name="api:mono_md5_get_digest_from_file">mono_md5_get_digest_from_file</a></h4>
84 <h4><a name="api:mono_md5_get_digest">mono_md5_get_digest</a></h4>
85 <h4><a name="api:mono_md5_final">mono_md5_final</a></h4>
86
87 <h4><a name="api:mono_digest_get_public_token">mono_digest_get_public_token</a></h4>
88
89 <h3>Memory Pools</h3>
90
91         <p>Memory pools are a convenient way of tracking memory
92         allocations that are used for one specific task, they are also
93         faster than using the standard memory allocation procedures,
94         as they are designed to be used only by a single thread at a
95         time. 
96
97         <p><tt>MonoMemPool</tt> objects are not thread safe, which
98         means that you should not share the objects across multiple
99         threads without providing proper locking around it (unlike
100         <tt>malloc</tt> and <tt>free</tt> which are thread safe). 
101
102         <p>When a <tt>MonoMemPool</tt> is released with
103         <tt>mono_mempool_destroy</tt> all of the of the memory
104         allocated from that memory pool with
105         <tt>mono_mempool_alloc</tt> and <tt>mono_mempool_alloc0</tt>
106         is released.
107         
108 <h4><a name="api:mono_mempool_new">mono_mempool_new</a></h4>
109 <h4><a name="api:mono_mempool_destroy">mono_mempool_destroy</a></h4>
110 <h4><a name="api:mono_mempool_alloc">mono_mempool_alloc</a></h4>
111 <h4><a name="api:mono_mempool_alloc0">mono_mempool_alloc0</a></h4>
112 <h4><a name="api:mono_mempool_empty">mono_mempool_empty</a></h4>
113 <h4><a name="api:mono_mempool_invalidate">mono_mempool_invalidate</a></h4>
114 <h4><a name="api:mono_mempool_stats">mono_mempool_stats</a></h4>
115 <h4><a name="api:mono_mempool_contains_addr">mono_mempool_contains_addr</a></h4> 
116  
117 <h3>JIT utilities</h3>
118
119 <h4><a name="api:mono_is_power_of_two">mono_is_power_of_two</a></h4>
120 <h4><a name="api:mono_signbit_double">mono_signbit_double</a></h4>
121 <h4><a name="api:mono_signbit_float">mono_signbit_float</a></h4>
122
123 <h3>Disassembling Generated Code</h3>
124
125         <p>Routines used to debug the JIT-produced code.
126         
127 <h4><a name="api:mono_disasm_code">mono_disasm_code</a></h4>
128 <h4><a name="api:mono_disasm_code_one">mono_disasm_code_one</a></h4>
129 <h4><a name="api:mono_disassemble_code">mono_disassemble_code</a></h4>
130
131 <h3>Walking the Stack</h3>
132
133 <h4><a name="api:mono_walk_stack">mono_walk_stack</a></h4> 
134 <h4><a name="api:mono_stack_walk_no_il">mono_stack_walk_no_il</a></h4>
135
136 <h3>Others</h3>
137
138 <h4><a name="api:mono_escape_uri_string">mono_escape_uri_string</a></h4>
139 <h4><a name="api:mono_guid_to_string">mono_guid_to_string</a></h4>
140