Merge pull request #3476 from lambdageek/fix-conc-ht
[mono.git] / docs / sources / mono-api-object.html
index 2878a5844b9d13ea8a45eaf64d1222e654c3faf5..d11226f5232f12efeff438c4e7d4f32b772c9e26 100644 (file)
@@ -2,21 +2,21 @@
 
        <p>The object API deals with all the operations shared by
        <a href="#objects">objects</a>, <a href="#valuetypes">value
-       types</a>, <a href="#arrays">arrays</a> and <a
-       href="#nullable">nullable types</a>.
+       types</a>, <a href="#arrays">arrays</a>.
 
        <p>The object API has methods for accessing <a
        href="#fields">fields</a>, <a
-       href="#properties">properties</a>, <a
+       href="#properties">properties</a>, <a href="mono-api-methods.html">methods</a>, <a
        href="#events">events</a>, <a href="#delegates">delegates</a>.
+       
+
 
        <p>There are some advanced uses that are useful to document
-       here dealing with <a href="#async">AsyncResults</a> and <a
-       href="#remote">remote fields</a>.
+       here dealing with <a href="#remote">remote fields</a>.
        
 <h2>Synopsis</h2>
 
-<div class="header">
+<div class="mapi-header">
 #include &lt;metadata/object.h&gt;
 
 typedef struct MonoVTable MonoVTable;
@@ -45,7 +45,7 @@ typedef struct {
 @API_IDX@
 </div>
 
-       <p>MonoObject is the base definition for all managed objects
+       <p>`MonoObject` is the base definition for all managed objects
        in the Mono runtime, it represents the <a
        href="http://www.mono-project.com/monodoc/T:System.Object">System.Object</a>
        managed type.
@@ -56,12 +56,11 @@ typedef struct {
        following the pattern where the parent class is the first
        field of a structure definition, for example:
 
-       <div class="code">
-       typedef struct {
-               MonoObject parent;
-               int my_new_field;
-       } MyNewObject
-       </div>
+       <div class="mapi-code">
+typedef struct {
+       MonoObject parent;
+       int my_new_field;
+} MyNewObject</div>
 
 <a name="objects"></a>
 <h2>Core Object Methods</h2>
@@ -71,7 +70,7 @@ typedef struct {
        <p>For example, if you wanted to create an object of type
        System.Version, you would use a piece of code like this:
 
-       <div class="code">
+<div class="mapi-code">
 MonoClass *version_class;
 MonoObject *result;
 
@@ -81,7 +80,7 @@ version_class = mono_class_from_name (mono_get_corlib (),
 
 /* Create an object of that class */
 result = mono_object_new (mono_domain_get (), version_class);
-       </div>
+</div>
 
 <h4><a name="api:mono_object_new_alloc_specific">mono_object_new_alloc_specific</a></h4>
 <h4><a name="api:mono_object_new_fast">mono_object_new_fast</a></h4>
@@ -93,11 +92,11 @@ result = mono_object_new (mono_domain_get (), version_class);
 <h4><a name="api:mono_object_get_virtual_method">mono_object_get_virtual_method</a></h4>
 <h4><a name="api:mono_object_isinst_mbyref">mono_object_isinst_mbyref</a></h4>
 <h4><a name="api:mono_object_isinst">mono_object_isinst</a></h4>
-<h4><a name="api:mono_object_register_finalizer">mono_object_register_finalizer</a></h4>
 <h4><a name="api:mono_object_unbox">mono_object_unbox</a></h4>
 <h4><a name="api:mono_object_castclass_mbyref">mono_object_castclass_mbyref</a></h4>
-<h4><a name="api:mono_object_is_alive">mono_object_is_alive</a></h4> 
 <h4><a name="api:mono_object_get_size">mono_object_get_size</a></h4>
+<h4><a name="api:mono_object_hash">mono_object_hash</a></h4>
+<h4><a name="api:mono_object_to_string">mono_object_to_string</a></h4>
 
 <a name="valuetypes"></a>
 <h2>Value Types</h2>
@@ -116,19 +115,17 @@ result = mono_object_new (mono_domain_get (), version_class);
        elements of type <tt>System.Byte</tt>, and sets the values
        0xca and 0xfe on it:
        
-       <pre class="code">
-
-       MonoArray *CreateByteArray (MonoDomain *domain)
-       {
-           MonoArray *data;
+       <pre class="mapi-code">
+MonoArray *CreateByteArray (MonoDomain *domain)
+{
+    MonoArray *data;
 
-           data = mono_array_new (domain, mono_get_byte_class (), 2);
-           mono_array_set (data, guint8, 0, 0xca);
-           mono_array_set (data, guint8, 0, 0xfe);
-
-           return data;
-       }
+    data = mono_array_new (domain, mono_get_byte_class (), 2);
+    mono_array_set (data, guint8, 0, 0xca);
+    mono_array_set (data, guint8, 0, 0xfe);
 
+    return data;
+}
        </pre>
 
 <h3>Creating Arrays</h3>
@@ -137,21 +134,35 @@ result = mono_object_new (mono_domain_get (), version_class);
 <h4><a name="api:mono_array_new_full">mono_array_new_full</a></h4>
 <h4><a name="api:mono_array_new_specific">mono_array_new_specific</a></h4>
 <h4><a name="api:mono_array_class_get">mono_array_class_get</a></h4>
-<h4><a name="api:mono_array_clone_in_domain">mono_array_clone_in_domain</a></h4>
 <h4><a name="api:mono_array_clone">mono_array_clone</a></h4>
-<h4><a name="api:mono_array_full_copy">mono_array_full_copy</a></h4>
-<h4><a name="api:mono_array_to_lparray">mono_array_to_lparray</a></h4>
-<h4><a name="api:mono_array_to_savearray">mono_array_to_savearray</a></h4>
-<h4><a name="api:mono_dup_array_type">mono_dup_array_type</a></h4>
 
 <h3>Using Arrays</h3>
 
+       <p>Arrays are represented by the `MonoArray` data type and are
+       instances of `MonoObject`.   While you can use the `bounds`
+       and `max_length` fields of the type, the actual storage
+       (represented by `vector`) is not very useful.   Instead you
+       should use one of the accesor methods described below to
+       fetch or set the values in the array.
+
+       <p>When setting values in an array, you should
+       use <a href="api:mono_array_set">mono_array_set</a> for
+       setting elements in an array that contains value types, and
+       <a
+       href="api:mono_array_setref">mono_array_setref</a> for arrays
+       that contain reference types. 
+       
+       <p>The <a href="api:mono_array_get">mono_array_get</a>,
+       <a href="api:mono_array_set">mono_array_set</a> and <a
+       href="api:mono_array_setref">mono_array_setref</a> are C
+       macros that wrap the underlying array access.   
+       
+<h4><a name="api:mono_array_get">mono_array_get</a></h4>
+<h4><a name="api:mono_array_length">mono_array_length</a></h4>
 <h4><a name="api:mono_array_set">mono_array_set</a></h4>
 <h4><a name="api:mono_array_setref">mono_array_setref</a></h4>
-<h4><a name="api:mono_array_length">mono_array_length</a></h4>
 <h4><a name="api:mono_array_addr">mono_array_addr</a></h4>
 <h4><a name="api:mono_array_addr_with_size">mono_array_addr_with_size</a></h4>
-<h4><a name="api:mono_array_get">mono_array_get</a></h4>
 <h4><a name="api:mono_array_element_size">mono_array_element_size</a></h4>
 
 <a name="fields"></a>
@@ -167,10 +178,12 @@ result = mono_object_new (mono_domain_get (), version_class);
 <h4><a name="api:mono_field_set_value">mono_field_set_value</a></h4>
 <h4><a name="api:mono_field_static_get_value">mono_field_static_get_value</a></h4>
 <h4><a name="api:mono_field_static_set_value">mono_field_static_set_value</a></h4>
+<h4><a name="api:mono_field_get_object">mono_field_get_object</a></h4>
 
 <a name="properties"></a>
 <h2>Properties</h2>
 
+<h4><a name="api:mono_property_get_object">mono_property_get_object</a></h4>
 <h4><a name="api:mono_property_get_flags">mono_property_get_flags</a></h4>
 <h4><a name="api:mono_property_get_get_method">mono_property_get_get_method</a></h4>
 <h4><a name="api:mono_property_get_name">mono_property_get_name</a></h4>
@@ -182,6 +195,7 @@ result = mono_object_new (mono_domain_get (), version_class);
 <a name="events"></a>
 <h2>Events</h2>
 
+<h4><a name="api:mono_event_get_object">mono_event_get_object</a></h4>
 <h4><a name="api:mono_event_get_add_method">mono_event_get_add_method</a></h4>
 <h4><a name="api:mono_event_get_flags">mono_event_get_flags</a></h4>
 <h4><a name="api:mono_event_get_name">mono_event_get_name</a></h4>
@@ -189,14 +203,6 @@ result = mono_object_new (mono_domain_get (), version_class);
 <h4><a name="api:mono_event_get_raise_method">mono_event_get_raise_method</a></h4>
 <h4><a name="api:mono_event_get_remove_method">mono_event_get_remove_method</a></h4>
 
-<a name="delegates"></a>
-<h2>Delegates</h2>
-<h4><a name="api:mono_delegate_ctor">mono_delegate_ctor</a></h4>
-
-<a name="async"></a>
-<h2>AsyncResults</h2>
-<h4><a name="api:mono_async_result_new">mono_async_result_new</a></h4>
-
 <a name="remote"></a>
 <h2>Remote Fields</h2>
 <h4><a name="api:mono_load_remote_field">mono_load_remote_field</a></h4>
@@ -204,11 +210,7 @@ result = mono_object_new (mono_domain_get (), version_class);
 <h4><a name="api:mono_store_remote_field">mono_store_remote_field</a></h4>
 <h4><a name="api:mono_store_remote_field_new">mono_store_remote_field_new</a></h4>
 
-<a name="nullable"></a>
-<h2>Nullable Objects</h2>
-
-       <p>These methods are used to manipulate objects of type
-       System.Nullable&lt;T&gt;
-       
-<h4><a name="api:mono_nullable_box">mono_nullable_box</a></h4>
-<h4><a name="api:mono_nullable_init">mono_nullable_init</a></h4>
+<a name="delegates"></a>
+<h2>Delegates</h2>
+<h4><a name="api:mono_get_delegate_begin_invoke">mono_get_delegate_begin_invoke</a></h4>
+<h4><a name="api:mono_get_delegate_end_invoke">mono_get_delegate_end_invoke</a></h4>