Merge pull request #1345 from mattleibow/websocket-continuation-frame-fix
[mono.git] / docs / sources / mono-api-object.html
index da421e45743ee738739a3496862a530b9e15214b..d11226f5232f12efeff438c4e7d4f32b772c9e26 100644 (file)
@@ -16,7 +16,7 @@
        
 <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>
@@ -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>
@@ -141,12 +138,31 @@ result = mono_object_new (mono_domain_get (), version_class);
 
 <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>