* Makefile.am: Build `docs` after `runtime`, so that it can depend
[mono.git] / mono / docscripts / sources / mono-api-metadata.html
1 <h3>Metadata Loader Locking</h3>
2
3         <p>The locking functions here are used by code in class.c and
4         metadata.c to lock access to the shared hashtables inside the
5         MonoImage
6         
7 <h4><a name="api:mono_loader_lock">mono_loader_lock</a></h4>
8 <h4><a name="api:mono_loader_unlock">mono_loader_unlock</a></h4>
9
10 <h3>Metadata access API</h3>
11
12         <p>This is the low-level API for accessing the metadata
13         images.
14         
15 <h4><a name="api:mono_cli_rva_image_map">mono_cli_rva_image_map</a></h4>
16 <h4><a name="api:mono_pe_file_open">mono_pe_file_open</a></h4> 
17 <h4><a name="api:mono_meta_table_name">mono_meta_table_name</a></h4>
18 <h4><a name="api:mono_metadata_blob_heap">mono_metadata_blob_heap</a></h4>
19 <h4><a name="api:mono_metadata_compute_size">mono_metadata_compute_size</a></h4>
20 <h4><a name="api:mono_metadata_custom_attrs_from_index">mono_metadata_custom_attrs_from_index</a></h4>
21 <h4><a name="api:mono_metadata_decode_blob_size">mono_metadata_decode_blob_size</a></h4>
22 <h4><a name="api:mono_metadata_decode_row_col">mono_metadata_decode_row_col</a></h4>
23 <h4><a name="api:mono_metadata_decode_row">mono_metadata_decode_row</a></h4>
24 <h4><a name="api:mono_metadata_decode_signed_value">mono_metadata_decode_signed_value</a></h4>
25 <h4><a name="api:mono_metadata_decode_value">mono_metadata_decode_value</a></h4>
26 <h4><a name="api:mono_metadata_encode_value">mono_metadata_encode_value</a></h4>
27 <h4><a name="api:mono_metadata_events_from_typedef">mono_metadata_events_from_typedef</a></h4>
28 <h4><a name="api:mono_metadata_field_info">mono_metadata_field_info</a></h4>
29 <h4><a name="api:mono_metadata_free_array">mono_metadata_free_array</a></h4>
30 <h4><a name="api:mono_metadata_free_marshal_spec">mono_metadata_free_marshal_spec</a></h4>
31 <h4><a name="api:mono_metadata_free_mh">mono_metadata_free_mh</a></h4>
32 <h4><a name="api:mono_metadata_free_type">mono_metadata_free_type</a></h4>
33 <h4><a name="api:mono_metadata_generic_inst_equal">mono_metadata_generic_inst_equal</a></h4>
34 <h4><a name="api:mono_metadata_generic_inst_hash">mono_metadata_generic_inst_hash</a></h4>
35 <h4><a name="api:mono_metadata_generic_inst_is_valuetype">mono_metadata_generic_inst_is_valuetype</a></h4>
36 <h4><a name="api:mono_metadata_generic_method_equal">mono_metadata_generic_method_equal</a></h4>
37 <h4><a name="api:mono_metadata_get_constant_index">mono_metadata_get_constant_index</a></h4>
38 <h4><a name="api:mono_metadata_get_marshal_info">mono_metadata_get_marshal_info</a></h4>
39 <h4><a name="api:mono_metadata_get_table">mono_metadata_get_table</a></h4>
40 <h4><a name="api:mono_metadata_guid_heap">mono_metadata_guid_heap</a></h4>
41 <h4><a name="api:mono_metadata_implmap_from_method">mono_metadata_implmap_from_method</a></h4>
42 <h4><a name="api:mono_metadata_interfaces_from_typedef_full">mono_metadata_interfaces_from_typedef_full</a></h4>
43 <h4><a name="api:mono_metadata_interfaces_from_typedef">mono_metadata_interfaces_from_typedef</a></h4>
44 <h4><a name="api:mono_metadata_load_generic_params">mono_metadata_load_generic_params</a></h4>
45 <h4><a name="api:mono_metadata_locate">mono_metadata_locate</a></h4>
46 <h4><a name="api:mono_metadata_locate_token">mono_metadata_locate_token</a></h4>
47 <h4><a name="api:mono_metadata_methods_from_event">mono_metadata_methods_from_event</a></h4>
48 <h4><a name="api:mono_metadata_methods_from_property">mono_metadata_methods_from_property</a></h4>
49 <h4><a name="api:mono_metadata_nested_in_typedef">mono_metadata_nested_in_typedef</a></h4>
50 <h4><a name="api:mono_metadata_nesting_typedef">mono_metadata_nesting_typedef</a></h4>
51 <h4><a name="api:mono_metadata_packing_from_typedef">mono_metadata_packing_from_typedef</a></h4>
52 <h4><a name="api:mono_metadata_parse_array_full">mono_metadata_parse_array_full</a></h4>
53 <h4><a name="api:mono_metadata_parse_array">mono_metadata_parse_array</a></h4>
54 <h4><a name="api:mono_metadata_parse_custom_mod">mono_metadata_parse_custom_mod</a></h4>
55 <h4><a name="api:mono_metadata_parse_field_type">mono_metadata_parse_field_type</a></h4>
56 <h4><a name="api:mono_metadata_parse_marshal_spec">mono_metadata_parse_marshal_spec</a></h4>
57 <h4><a name="api:mono_metadata_parse_method_signature_full">mono_metadata_parse_method_signature_full</a></h4>
58 <h4><a name="api:mono_metadata_parse_method_signature">mono_metadata_parse_method_signature</a></h4>
59 <h4><a name="api:mono_metadata_parse_mh_full">mono_metadata_parse_mh_full</a></h4>
60 <h4><a name="api:mono_metadata_parse_mh">mono_metadata_parse_mh</a></h4>
61 <h4><a name="api:mono_metadata_parse_param">mono_metadata_parse_param</a></h4>
62 <h4><a name="api:mono_metadata_parse_signature_full">mono_metadata_parse_signature_full</a></h4>
63 <h4><a name="api:mono_metadata_parse_signature">mono_metadata_parse_signature</a></h4>
64 <h4><a name="api:mono_metadata_parse_typedef_or_ref">mono_metadata_parse_typedef_or_ref</a></h4>
65 <h4><a name="api:mono_metadata_parse_type_full">mono_metadata_parse_type_full</a></h4>
66 <h4><a name="api:mono_metadata_parse_type">mono_metadata_parse_type</a></h4>
67 <h4><a name="api:mono_metadata_properties_from_typedef">mono_metadata_properties_from_typedef</a></h4>
68 <h4><a name="api:mono_metadata_string_heap">mono_metadata_string_heap</a></h4>
69 <h4><a name="api:mono_metadata_token_from_dor">mono_metadata_token_from_dor</a></h4>
70 <h4><a name="api:mono_metadata_typedef_from_field">mono_metadata_typedef_from_field</a></h4>
71 <h4><a name="api:mono_metadata_typedef_from_method">mono_metadata_typedef_from_method</a></h4>
72 <h4><a name="api:mono_metadata_type_equal">mono_metadata_type_equal</a></h4>
73 <h4><a name="api:mono_metadata_type_hash">mono_metadata_type_hash</a></h4>
74 <h4><a name="api:mono_metadata_user_string">mono_metadata_user_string</a></h4>
75 <h4><a name="api:mono_metadata_declsec_from_index">mono_metadata_declsec_from_index</a></h4>
76 <h4><a name="api:mono_metadata_free_method_signature">mono_metadata_free_method_signature</a></h4>
77
78 <h3>Generics Support</h3>
79
80 <h4><a name="api:mono_metadata_generic_class_is_valuetype">mono_metadata_generic_class_is_valuetype</a></h4> 
81 <h4><a name="api:mono_metadata_has_generic_params">mono_metadata_has_generic_params</a></h4> 
82 <h4><a name="api:mono_metadata_inflate_generic_inst">mono_metadata_inflate_generic_inst</a></h4> 
83 <h4><a name="api:mono_metadata_parse_generic_inst">mono_metadata_parse_generic_inst</a></h4> 
84
85 <h3>Tokens</h3>
86
87 <h4><a name="api:mono_ldtoken">mono_ldtoken</a></h4>
88 <h4><a name="api:mono_lookup_dynamic_token">mono_lookup_dynamic_token</a></h4>
89 <h4><a name="api:mono_ldstr">mono_ldstr</a></h4>
90 <h4><a name="api:mono_exception_from_token">mono_exception_from_token</a></h4> 
91 <h4><a name="api:mono_create_jit_trampoline_from_token">mono_create_jit_trampoline_from_token</a></h4> 
92
93 <h3>Working with signatures</h3>
94
95 <h4><a name="api:mono_signature_explicit_this">mono_signature_explicit_this</a></h4>
96 <h4><a name="api:mono_signature_get_call_conv">mono_signature_get_call_conv</a></h4>
97 <h4><a name="api:mono_signature_get_desc">mono_signature_get_desc</a></h4>
98 <h4><a name="api:mono_signature_get_param_count">mono_signature_get_param_count</a></h4>
99 <h4><a name="api:mono_signature_get_params">mono_signature_get_params</a></h4>
100 <h4><a name="api:mono_signature_get_return_type">mono_signature_get_return_type</a></h4>
101 <h4><a name="api:mono_signature_hash">mono_signature_hash</a></h4>
102 <h4><a name="api:mono_signature_is_instance">mono_signature_is_instance</a></h4>
103 <h4><a name="api:mono_signature_vararg_start">mono_signature_vararg_start</a></h4>
104
105
106 <h3>OpCodes</h3>
107
108 <h4><a name="api:mono_opcode_name">mono_opcode_name</a></h4>
109 <h4><a name="api:mono_opcode_value">mono_opcode_value</a></h4>
110
111 <h3>Metadata Loading Errors</h3>
112
113         <p>The routines in this section are used to cope with errors
114         during metadata loading.  Errors in metadata handling can
115         happen for many reason, and these include (this is not an
116         exhaustive list).
117
118         <ul>
119                 <li>An assembly referenced is missing.
120                 <li>Fields referenced are missing.
121                 <li>Methods referenced are missing.
122         </ul>
123
124         <p>The <tt>mono_loader_set_*</tt> routines are invoked during
125         metadata loading to flag that an error has happened.  The
126         class loading errros are flagged in a per-thread basis.
127
128         <P>In various spots in the runtime the
129         <tt>mono_loader_get_last_error</tt> routine is called to check
130         if there was a problem, and then errors are propagated upwards
131         on the stack until we reach a point where an exception can be
132         raised and no runtime locks are held.
133
134         <p>The <tt>mono_loader_error_prepare_exception</tt> takes a
135         <tt>MonoLoaderError</tt> structure (the value returned from
136         <tt>mono_loader_get_last_error</tt>), turns that into an
137         exception and clears the error condition from the current
138         thread. 
139         
140 <h4><a name="api:mono_loader_set_error_field_load">mono_loader_set_error_field_load</a></h4>
141 <h4><a name="api:mono_loader_set_error_method_load">mono_loader_set_error_method_load</a></h4>
142 <h4><a name="api:mono_loader_set_error_type_load">mono_loader_set_error_type_load</a></h4>
143
144 <h4><a name="api:mono_loader_get_last_error">mono_loader_get_last_error</a></h4>
145 <h4><a name="api:mono_loader_clear_error">mono_loader_clear_error</a></h4>
146 <h4><a name="api:mono_loader_error_prepare_exception">mono_loader_error_prepare_exception</a></h4>