+<br>
+<hr width="100%" size="2">
+<h2><a name="Other_functions"></a>Other functions</h2>
+<h3><a name="Manipulating_strings"></a>Manipulating strings<br>
+</h3>
+There are some functions available to retrieve and change strings in the
+Gedcom object model, depending whether you use UTF-8 strings in your application
+or locale-defined strings.<br>
+<br>
+The following functions retrieve and set the string in UTF-8 encoding:<br>
+<blockquote><code>char* <b>gom_get_string</b> (char* data);<br>
+char* <b>gom_set_string</b> (char** data, const char* utf8_str);</code><br>
+</blockquote>
+The first function is in fact superfluous, because it just returns the <code>data</code>, but it is there for symmetry with the functions given below for the locale-defined input and output. <br>
+<br>
+The second function returns the new value if successful, or <code>NULL</code>
+if an error occurred (e.g. failure to allocate memory). It makes a
+copy of the input string to store it in the object model. It also takes
+care of deallocating the old value of the data if needed. Note that
+the set function needs the address of the data variable, to be able to modify
+it.<br>
+<br>
+Examples of use of these strings would be, e.g. for retrieving and setting the system ID in the header:<br>
+<blockquote><code>struct header* head = gom_get_header();</code><code></code><br>
+ <code>char* oldvalue = gom_get_string(head->source.id);<br>
+char* newvalue = "My_Gedcom_Tool";<br>
+ </code><br>
+ <code>if (gom_set_string(&head->source.id, newvalue)) {<br>
+ printf("Modified system id from %s to %s\n", oldvalue, newvalue);<br>
+}</code><br>
+</blockquote>
+<br>
+A second couple of functions retrieve and set the string in the format defined by the current locale:<br>
+<blockquote><code>char* <b>gom_get_string_for_locale</b> (char* data, int* conversion_failures);<br>
+char* <b>gom_set_string_for_locale</b> (char** data, const char* locale_str)</code>;<br>
+</blockquote>
+The use of these functions is the same as the previous ones, but e.g. in
+the "en_US" locale the string will be returned by the first function in the
+ISO-8859-1 encoding and the second function expects the <code>locale_str</code> to be in this encoding. Conversion to and from UTF-8 for the object model is done on the fly.<br>
+<br>
+Since the conversion from UTF-8 to the locale encoding is not always possible,
+the get function has a second parameter that can return the number of conversion
+failures for the result string. Pass a pointer to an integer if you
+want to know this. You can pass <code>NULL</code> if you're not interested.<br>
+<hr width="100%" size="2">