1 <h2>Utility Methods</h2>
5 <p>MonoBitsets are a set of routines used to manipulate sets
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>
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
41 <p>The <tt>MonoGHashTable</tt> data type has the same API as
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>
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>
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>
71 <h3>SHA1 Signatures</h3>
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>
79 <h3>MD5 Signatures</h3>
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>
87 <h4><a name="api:mono_digest_get_public_token">mono_digest_get_public_token</a></h4>
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
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).
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>
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>
117 <h3>JIT utilities</h3>
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>
123 <h3>Disassembling Generated Code</h3>
125 <p>Routines used to debug the JIT-produced code.
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>
131 <h3>Walking the Stack</h3>
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>
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>