Add Mono.Debugger.Soft to MonkeyBuilder.
[mono/afaerber.git] / docs / sources / mono-api-utils.html
blob8b013eb0d565620347cc85f78dfea58e31875cfc
1 <h2>Utility Methods</h2>
3 <h3>Bitsets</h3>
5 <p>MonoBitsets are a set of routines used to manipulate sets
6 of bits.
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>
34 <h3>Hashtables</h3>
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.
41 <p>The <tt>MonoGHashTable</tt> data type has the same API as
42 the GLIB.
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>
59 <h3>Raw buffer</h3>
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).
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>
89 <h3>Memory Pools</h3>
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.
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>
106 is released.
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>
136 <h3>Others</h3>
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>