merge 99630:99762
[mono.git] / mono / docscripts / sources / mono-api-string.html
index 005956a4786e6cb4c4ef1318f5926bb84f73f931..ce1ff3d4f75cd1592b5c7eae486cfc941ae1872b 100644 (file)
@@ -1,18 +1,46 @@
-
 <h2>Strings</h2>
 
-       <p>
+       <p>Strings representation inside the Mono runtime.
+
+<h3>Synopsis</h3>
+
+       <div class="header">
+#include &lt;metadata/object.h&gt;
+
+typedef struct {
+       MonoObject object;
+       gint32 length;
+       gunichar2 chars [0];
+} MonoString;
+
+@API_IDX@
+       </div>
+
+       <p>All of the operations on strings are done on pointers to
+       MonoString objects, like this:
+
+       <div class="code">
+       MonoString *hello = mono_string_new (mono_domain_get (), "hello, world");
+       </div>
+
+       <p>Strings are bound to a particular application domain, which
+       is why it is necessary to pass a MonoDomain argument as the
+       first parameter to all the constructor functions. 
+
+       <p>Typically, you want to create the strings on the current
+       application domain, so a call to <tt>mono_domain_get()</tt> is
+       sufficient.
+       
+<h3>Constructors</h3>
        
 <h4><a name="api:mono_string_new">mono_string_new</a></h4>
 <h4><a name="api:mono_string_new_len">mono_string_new_len</a></h4>
 <h4><a name="api:mono_string_new_size">mono_string_new_size</a></h4>
 <h4><a name="api:mono_string_new_utf16">mono_string_new_utf16</a></h4>
 <h4><a name="api:mono_string_from_utf16">mono_string_from_utf16</a></h4>
-<h4><a name="api:mono_string_intern">mono_string_intern</a></h4>
-<h4><a name="api:mono_string_is_interned">mono_string_is_interned</a></h4>
-<h4><a name="api:mono_string_new_wrapper">mono_string_new_wrapper</a></h4>
-<h4><a name="api:mono_string_to_ansibstr">mono_string_to_ansibstr</a></h4>
-<h4><a name="api:mono_string_to_bstr">mono_string_to_bstr</a></h4>
+
+<h3>Conversions</h3>
+
 <h4><a name="api:mono_string_to_byvalstr">mono_string_to_byvalstr</a></h4>
 <h4><a name="api:mono_string_to_byvalwstr">mono_string_to_byvalwstr</a></h4>
 <h4><a name="api:mono_string_to_utf16">mono_string_to_utf16</a></h4>
 <h4><a name="api:mono_string_utf16_to_builder">mono_string_utf16_to_builder</a></h4>
 <h4><a name="api:mono_string_utf8_to_builder">mono_string_utf8_to_builder</a></h4>
 
+<h3>Methods</h3>
+
 <h4><a name="api:mono_string_equal">mono_string_equal</a></h4> 
 <h4><a name="api:mono_string_hash">mono_string_hash</a></h4> 
+<h4><a name="api:mono_string_intern">mono_string_intern</a></h4>
+<h4><a name="api:mono_string_is_interned">mono_string_is_interned</a></h4>
+<h4><a name="api:mono_string_new_wrapper">mono_string_new_wrapper</a></h4>
+<h4><a name="api:mono_string_chars">mono_string_chars</a></h4>
+<h4><a name="api:mono_string_length">mono_string_length</a></h4>
+
 
 <h3>String Builders</h3>
 
 <h4><a name="api:mono_string_builder_to_utf16">mono_string_builder_to_utf16</a></h4>
 <h4><a name="api:mono_string_builder_to_utf8">mono_string_builder_to_utf8</a></h4>
 
-<h3>From Metadata</h3>
-
 <h3>Other Encodings</h3>
 
+       <p>These routines are used when coping with strings that come
+       from Mono's environment, and might be encoded in one or more
+       of the external encodings.
+
+       <p>For example, some file systems might historically contain a
+       mix of file names with both old and new encodings, typically
+       UTF8 for new files, and the old files would be encoded in an 8
+       bit character set (ISO-8859-1 for example).
+       
+       <p>These routines try a number of encodings, those specified
+       in the <tt>MONO_ENCODINGS</tt> environment variable and return
+       unicode strings that can be used internally.
+
+       <p>See the mono(1) man page for more details.
+       
 <h4><a name="api:mono_unicode_from_external">mono_unicode_from_external</a></h4>
 <h4><a name="api:mono_unicode_to_external">mono_unicode_to_external</a></h4>
 <h4><a name="api:mono_utf8_from_external">mono_utf8_from_external</a></h4>