GridLab
Grid Application Toolkit

A simple API for Grid Applications
GAT

Menu



Main Page   Alphabetical List   Compound List   File List   Compound Members   File Members  

GATString.h

Go to the documentation of this file.
00001 /** @file GATString.h
00002  * Header file for the GATString class.
00003  * 
00004  * A GATString represents a string of characters.
00005  * 
00006  * @date $Date: 2004/03/24 19:30:58 $
00007  * 
00008  * @version $Header: /export/cvs-gridlab/wp-1/Codes/GATEngine/C-reference/src/GATString.h,v 1.12 2004/03/24 19:30:58 hartmutkaiser Exp $
00009  *
00010  *  Copyright (C) Kelly Davis
00011  *  This file is part of the GAT Engine.
00012  *  Contributed by Kelly Davis <kdavis@aei.mpg.de>.
00013  *
00014  *  Use, modification and distribution is subject to the Gridlab Software
00015  *  License. (See accompanying file GLlicense.txt or copy at
00016  *  http://www.gridlab.org/GLlicense.txt)
00017  */
00018  
00019   
00020 #ifndef _GATSTRING_H_
00021 #define _GATSTRING_H_ 1
00022 
00023 #include "GATType.h"
00024 #include "GATInternal.h"
00025 
00026 #ifdef __cplusplus
00027 extern "C" 
00028 {
00029 #endif
00030 
00031 /* Declare the converters to/from GATObject */
00032 GATOBJECT_DECLARE_CONVERTERS(GATString);
00033 
00034 /**
00035  * <p>
00036  * This function creates a new #GATString instance. This function constructs a new
00037  * #GATString by decoding the specified array of  bytes, @c byteArray, using the
00038  * specified encoding, @c encoding. The number of charaters in the new #GATString 
00039  * is a function of the encoding, and hence may not be equal to the length of the 
00040  * byte array, @c byteArray.
00041  * </p>
00042  * <p>
00043  * The @c encoding passed to this function is a array of bytes which represents
00044  * the name of the encoding in which the byte array @c byteArray is encoded. The
00045  * encoding itself is encoded using the encoding @c ASCII. The supported encodings
00046  * are as follows:
00047  * </p>
00048  * <p>
00049  * @htmlonly
00050  * <table width="100%" border=0 rules="none" frame="void"
00051  *        cols="2" cellspacing="0" cellpadding="0">
00052  * <tr valign="top" align="left">
00053  * <td width="10%"></td><td width="90%">
00054  * European languages</td></table>
00055  * 
00056  * <table width="100%" border=0 rules="none" frame="void"
00057  *        cols="2" cellspacing="0" cellpadding="0">
00058  * <tr valign="top" align="left">
00059  * <td width="21%"></td><td width="79%">
00060  * ASCII, ISO-8859-{1,2,3,4,5,7,9,10,13,14,15,16}, KOI8-R,
00061  * KOI8-U, KOI8-RU, CP{1250,1251,1252,1253,1254,1257},
00062  * CP{850,866},
00063  * Mac{Roman,CentralEurope,Iceland,Croatian,Romania},
00064  * Mac{Cyrillic,Ukraine,Greek,Turkish}, Macintosh</td></table>
00065  * 
00066  * <table width="100%" border=0 rules="none" frame="void"
00067  *        cols="2" cellspacing="0" cellpadding="0">
00068  * <tr valign="top" align="left">
00069  * <td width="10%"></td><td width="90%">
00070  * Semitic languages</td></table>
00071  * 
00072  * <table width="100%" border=0 rules="none" frame="void"
00073  *        cols="2" cellspacing="0" cellpadding="0">
00074  * <tr valign="top" align="left">
00075  * <td width="21%"></td><td width="79%">
00076  * ISO-8859-{6,8}, CP{1255,1256}, CP862,
00077  * Mac{Hebrew,Arabic}</td></table>
00078  * 
00079  * <table width="100%" border=0 rules="none" frame="void"
00080  *        cols="2" cellspacing="0" cellpadding="0">
00081  * <tr valign="top" align="left">
00082  * <td width="10%"></td><td width="90%">
00083  * Japanese</td></table>
00084  * 
00085  * <table width="100%" border=0 rules="none" frame="void"
00086  *        cols="2" cellspacing="0" cellpadding="0">
00087  * <tr valign="top" align="left">
00088  * <td width="21%"></td><td width="79%">
00089  * EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2,
00090  * ISO-2022-JP-1</td></table>
00091  * 
00092  * <table width="100%" border=0 rules="none" frame="void"
00093  *        cols="2" cellspacing="0" cellpadding="0">
00094  * <tr valign="top" align="left">
00095  * <td width="10%"></td><td width="90%">
00096  * Chinese</td></table>
00097  * 
00098  * <table width="100%" border=0 rules="none" frame="void"
00099  *        cols="2" cellspacing="0" cellpadding="0">
00100  * <tr valign="top" align="left">
00101  * <td width="21%"></td><td width="79%">
00102  * EUC-CN, HZ, GBK, GB18030, EUC-TW, BIG5, CP950, BIG5-HKSCS,
00103  * ISO-2022-CN, ISO-2022-CN-EXT</td></table>
00104  * 
00105  * <table width="100%" border=0 rules="none" frame="void"
00106  *        cols="2" cellspacing="0" cellpadding="0">
00107  * <tr valign="top" align="left">
00108  * <td width="10%"></td><td width="90%">
00109  * Korean</td></table>
00110  * 
00111  * <table width="100%" border=0 rules="none" frame="void"
00112  *        cols="2" cellspacing="0" cellpadding="0">
00113  * <tr valign="top" align="left">
00114  * <td width="21%"></td><td width="79%">
00115  * EUC-KR, CP949, ISO-2022-KR, JOHAB</td></table>
00116  * 
00117  * <table width="100%" border=0 rules="none" frame="void"
00118  *        cols="2" cellspacing="0" cellpadding="0">
00119  * <tr valign="top" align="left">
00120  * <td width="10%"></td><td width="90%">
00121  * Armenian</td></table>
00122  * 
00123  * <table width="100%" border=0 rules="none" frame="void"
00124  *        cols="2" cellspacing="0" cellpadding="0">
00125  * <tr valign="top" align="left">
00126  * <td width="21%"></td><td width="79%">
00127  * ARMSCII-8</td></table>
00128  * 
00129  * <table width="100%" border=0 rules="none" frame="void"
00130  *        cols="2" cellspacing="0" cellpadding="0">
00131  * <tr valign="top" align="left">
00132  * <td width="10%"></td><td width="90%">
00133  * Georgian</td></table>
00134  * 
00135  * <table width="100%" border=0 rules="none" frame="void"
00136  *        cols="2" cellspacing="0" cellpadding="0">
00137  * <tr valign="top" align="left">
00138  * <td width="21%"></td><td width="79%">
00139  * Georgian-Academy, Georgian-PS</td></table>
00140  * 
00141  * <table width="100%" border=0 rules="none" frame="void"
00142  *        cols="2" cellspacing="0" cellpadding="0">
00143  * <tr valign="top" align="left">
00144  * <td width="10%"></td><td width="90%">
00145  * Tajik</td></table>
00146  * 
00147  * <table width="100%" border=0 rules="none" frame="void"
00148  *        cols="2" cellspacing="0" cellpadding="0">
00149  * <tr valign="top" align="left">
00150  * <td width="21%"></td><td width="79%">
00151  * KOI8-T</td></table>
00152  * 
00153  * <table width="100%" border=0 rules="none" frame="void"
00154  *        cols="2" cellspacing="0" cellpadding="0">
00155  * <tr valign="top" align="left">
00156  * <td width="10%"></td><td width="90%">
00157  * Thai</td></table>
00158  * 
00159  * <table width="100%" border=0 rules="none" frame="void"
00160  *        cols="2" cellspacing="0" cellpadding="0">
00161  * <tr valign="top" align="left">
00162  * <td width="21%"></td><td width="79%">
00163  * TIS-620, CP874, MacThai</td></table>
00164  * 
00165  * <table width="100%" border=0 rules="none" frame="void"
00166  *        cols="2" cellspacing="0" cellpadding="0">
00167  * <tr valign="top" align="left">
00168  * <td width="10%"></td><td width="90%">
00169  * Laotian</td></table>
00170  * 
00171  * <table width="100%" border=0 rules="none" frame="void"
00172  *        cols="2" cellspacing="0" cellpadding="0">
00173  * <tr valign="top" align="left">
00174  * <td width="21%"></td><td width="79%">
00175  * MuleLao-1, CP1133</td></table>
00176  * 
00177  * <table width="100%" border=0 rules="none" frame="void"
00178  *        cols="2" cellspacing="0" cellpadding="0">
00179  * <tr valign="top" align="left">
00180  * <td width="10%"></td><td width="90%">
00181  * Vietnamese</td></table>
00182  * 
00183  * <table width="100%" border=0 rules="none" frame="void"
00184  *        cols="2" cellspacing="0" cellpadding="0">
00185  * <tr valign="top" align="left">
00186  * <td width="21%"></td><td width="79%">
00187  * VISCII, TCVN, CP1258</td></table>
00188  * 
00189  * <table width="100%" border=0 rules="none" frame="void"
00190  *        cols="2" cellspacing="0" cellpadding="0">
00191  * <tr valign="top" align="left">
00192  * <td width="10%"></td><td width="90%">
00193  * Platform specifics</td></table>
00194  * 
00195  * <table width="100%" border=0 rules="none" frame="void"
00196  *        cols="2" cellspacing="0" cellpadding="0">
00197  * <tr valign="top" align="left">
00198  * <td width="21%"></td><td width="79%">
00199  * HP-ROMAN8, NEXTSTEP</td></table>
00200  * 
00201  * <table width="100%" border=0 rules="none" frame="void"
00202  *        cols="2" cellspacing="0" cellpadding="0">
00203  * <tr valign="top" align="left">
00204  * <td width="10%"></td><td width="90%">
00205  * Full Unicode</td></table>
00206  * 
00207  * <table width="100%" border=0 rules="none" frame="void"
00208  *        cols="2" cellspacing="0" cellpadding="0">
00209  * <tr valign="top" align="left">
00210  * <td width="21%"></td><td width="79%">
00211  * UTF-8</td></table>
00212  * 
00213  * <table width="100%" border=0 rules="none" frame="void"
00214  *        cols="2" cellspacing="0" cellpadding="0">
00215  * <tr valign="top" align="left">
00216  * <td width="21%"></td><td width="79%">
00217  * UCS-2, UCS-2BE, UCS-2LE</td></table>
00218  * 
00219  * <table width="100%" border=0 rules="none" frame="void"
00220  *        cols="2" cellspacing="0" cellpadding="0">
00221  * <tr valign="top" align="left">
00222  * <td width="21%"></td><td width="79%">
00223  * UCS-4, UCS-4BE, UCS-4LE</td></table>
00224  * 
00225  * <table width="100%" border=0 rules="none" frame="void"
00226  *        cols="2" cellspacing="0" cellpadding="0">
00227  * <tr valign="top" align="left">
00228  * <td width="21%"></td><td width="79%">
00229  * UTF-16, UTF-16BE, UTF-16LE</td></table>
00230  * 
00231  * <table width="100%" border=0 rules="none" frame="void"
00232  *        cols="2" cellspacing="0" cellpadding="0">
00233  * <tr valign="top" align="left">
00234  * <td width="21%"></td><td width="79%">
00235  * UTF-32, UTF-32BE, UTF-32LE</td></table>
00236  * 
00237  * <table width="100%" border=0 rules="none" frame="void"
00238  *        cols="2" cellspacing="0" cellpadding="0">
00239  * <tr valign="top" align="left">
00240  * <td width="21%"></td><td width="79%">
00241  * UTF-7</td></table>
00242  * 
00243  * <table width="100%" border=0 rules="none" frame="void"
00244  *        cols="2" cellspacing="0" cellpadding="0">
00245  * <tr valign="top" align="left">
00246  * <td width="21%"></td><td width="79%">
00247  * C99, JAVA</td></table>
00248  * @endhtmlonly
00249  * </p>
00250  * <p>
00251  * If the passed @c byteArray is not encoded properly in the passed encoding
00252  * or if there is a problem in allocating memory, this function returns the
00253  * value NULL.
00254  * </p>
00255  *
00256  * @param byteArray The array of bytes encoded using @c encoding.
00257  * @param lengthInBytes The number of bytes in the passed array of bytes
00258  * @param encoding The encoding used to encode the passed array of bytes
00259  * @return On success a new #GATString representing the passed data
00260  */
00261 GATString GATString_Create(const char *byteArray, GATuint32 lengthInBytes, const char *encoding); 
00262 
00263 /**
00264  * This fucntion returns the type, a #GATType, of the passed #GATString_const.
00265  * This function will always return #GATType_GATString.
00266  *
00267  * @param string The #GATString_const to query
00268  * @return The #GATType of the passed @c string
00269  */
00270 GATType GATString_GetType(GATString_const string);
00271 
00272 /**
00273  * <p>
00274  * This function determines if the two passed #GATString_const are equivalent.
00275  * Two #GATString_const instances are equivalent if they are both non-null and
00276  * represent the exact same sequence of characters.
00277  * </p>
00278  * <p>
00279  * If the two passed #GATString_const are equal and this function does not
00280  * encouter an error state of some sort, then the #GATBool pointed to by the
00281  * passed @c isequal parameter is set to #GATTrue. Otherwise this #GATBool
00282  * is set of #GATFalse. The completion status of this function is returned
00283  * through its return value.
00284  * </p>
00285  *
00286  * @param this The first #GATString_const to query
00287  * @param that The Second #GATString_const to query
00288  * @param isequal The query result
00289  * @return The completion status of this function
00290  */
00291 GATResult 
00292   GATString_Equals(GATString_const string, GATString_const that, GATBool *isequal);
00293 
00294 /**
00295  * This function returns a "deep clone" of the passed #GATString_const @c string. 
00296  * This "deep clone" is returned in the variable @c stringClone. Furthermore, this 
00297  * function returns its completion status, through its return value.
00298  *
00299  * @param  string The #GATString_const to clone
00300  * @param stringClone The cloned #GATString_const
00301  * @return The completion status of this function
00302  */
00303 GATResult 
00304   GATString_Clone(GATString_const string, GATString *stringClone);
00305 
00306 /**
00307  * Destroys the #GATString instance
00308  *
00309  * @param string The #GATString to destroy.
00310  */
00311 void GATString_Destroy(GATString *string);
00312 
00313 /**
00314  * This function returns the length in bytes of the passed #GATString_const's encoded 
00315  * buffer.
00316  *
00317  * @param string The #GATString_const to query
00318  * @return The length in bytes of #GATString_const's encoded buffer, -1 upon NULL @c string
00319  */
00320 GATuint32 GATString_GetLengthInBytes(GATString_const string);
00321 
00322 /**
00323  * This function returns the passed #GATString_const's encoded buffer.
00324  *
00325  * @param string The #GATString_const to query
00326  * @return The passed #GATString_const's encoded buffer, NULL upon NULL @c string
00327  */
00328 const char * GATString_GetBuffer(GATString_const string);
00329 
00330 /**
00331  * This fucntion return the passed #GATString_const's encoding, itself encoded in ASCII.
00332  *
00333  * @param string The #GATString_const to query
00334  * @return The passed #GATString_const's encoding, itself encoded in ASCII, NULL upon NULL @c string
00335  */
00336 const char * GATString_GetEncoding(GATString_const string);
00337 
00338 /**
00339  * <p> 
00340  * This function translates the passed #GATString_const, @c string, from its 
00341  * encoding to the encoding, @c encoding. The result is returned in @c result. 
00342  * </p>
00343  * <p>
00344  * The supported encoding which may be passed to this function are the same
00345  * set of encodings as specified by the documentation for the function
00346  * #GATString_Create. 
00347  * </p>
00348  * <p>
00349  * If an error occurs during translation, then @c result is set to NULL and
00350  * the error status is returned in this function's return value. Otherwise
00351  * the completion status of this function is returned through its return
00352  * value and @c result s set to point to the translated #GATString.
00353  * </p>
00354  *
00355  * @param string The #GATString_const to translate
00356  * @param newEncoding The target encoding
00357  * @param result The translated #GATString or NULL on failure
00358  * @return The completion status of this function
00359  */
00360 GATResult 
00361   GATString_Translate(GATString_const string, const char *newEncoding, GATString *result);
00362 
00363 /**
00364  * <p> 
00365  * This function compares two strings lexicographically. The comparison is based
00366  * on the UTF-32 value of each character in the strings. The character sequence
00367  * represented by @c this #GATString_const instance is compared lexicographically 
00368  * to the character sequence represented by the argument @c that #GATString_const. 
00369  * The result is a negative integer if @c this #GATString_const lexicographically 
00370  * precedes the argument @c that. The result is a  positive integer if @c this 
00371  * #GATString_const instance lexicographically follows the argument @c that. 
00372  * </p>
00373  * <p>
00374  * This is the definition of lexicographic ordering. If two strings are  different, 
00375  * then either they have different characters at some index that is a valid index 
00376  * for both strings, or their lengths are different, or both. If they have different 
00377  * characters at one or more index positions, let k be the smallest such index; then 
00378  * the string  whose character at position k has the smaller value, as  determined 
00379  * by using the < operator, lexicographically precedes the  other string. In this 
00380  * case, #GATString_CompareTo returns the  difference of the two character values at 
00381  * position k in  the two string.
00382  * </p>
00383  * <p>
00384  * If there is no index position at which they differ, then the shorter string 
00385  * lexicographically precedes the longer string. In this case, #GATString_CompareTo
00386  * returns the difference of number of bytes in the encoded lengths of the strings 
00387  * in the UTF-32 encoding.
00388  * </p>
00389  * <p>
00390  * If any error occurs durring the processing of this function an appropriate
00391  * error code is returned through the return value of this function and the
00392  * value pointed to by @c comparrison is 0.
00393  * </p>
00394  *
00395  * @param this The first #GATString_const to compare
00396  * @param that The second #GATString_const to compare
00397  * @param comparrison The result of the comparrison or 0 on error
00398  * @return The completion status of this function
00399  */
00400 GATResult 
00401   GATString_CompareTo(GATString_const lhs, GATString_const rhs, int *comparrison);
00402 
00403 /**
00404  * <p> 
00405  * This function determines if the passed #GATString_const @c string ends with the
00406  * passed #GATString_const @c query. If it does and no error occurs, then the #GATBool 
00407  * pointed to by @c result is set to #GATTrue. If it does not and no error occurs,
00408  * then the #GATBool pointed to by @c result is set to #GATFalse.
00409  * </p>
00410  * <p>
00411  * If there is an error, then the #GATBool pointed to by @c result is set to GATFalse
00412  * and the error is returned in this function's return value.
00413  * </p>
00414  *
00415  * @param string The #GATString_const to query
00416  * @param query The #GATString_const query string
00417  * @param result The #GATBool result of the query, GATFalse on error
00418  * @return The completion status of this function
00419  */
00420 GATResult 
00421   GATString_EndsWith(GATString_const string, GATString_const query, GATBool *result);
00422 
00423 /**
00424  * <p> 
00425  * This function determines if the passed #GATString_const @c string starts with the
00426  * passed #GATString_const @c query. If it does and no error occurs, then the #GATBool 
00427  * pointed to by @c result is set to #GATTrue. If it does not and no error occurs,
00428  * then the #GATBool pointed to by @c result is set to #GATFalse.
00429  * </p>
00430  * <p>
00431  * If there is an error, then the #GATBool pointed to by @c result is set to GATFalse
00432  * and the error is returned in this function's return value.
00433  * </p>
00434  *
00435  * @param string The #GATString_const to query
00436  * @param query The #GATString_const query string
00437  * @param result The #GATBool result of the query, GATFalse on error
00438  * @return The completion status of this function
00439  */
00440 GATResult 
00441   GATString_StartsWith(GATString_const string, GATString_const query, GATBool *result);
00442 
00443 /**
00444  * <p>
00445  * This function concatenats the passed #GATString_const @c that to the right side
00446  * of the passed #GATString_const @c this and returns the resulting #GATString by
00447  * way of the pointer @c result.
00448  * </p>
00449  * <p>
00450  * If an error occurs durring processings @c result is set to point to NULL and
00451  * the error status is returned through this function's return value.
00452  * </p>
00453  *
00454  * @param this The first #GATString_const to concatenate
00455  * @param that The second #GATString_const to concatenate
00456  * @param result The concatenation of @c this and @c that or NULL on error
00457  * @return The completion status of this function
00458  */
00459 GATResult 
00460   GATString_Concatenate(GATString_const str, GATString_const that, GATString *result);
00461 
00462 /**
00463  * <p>
00464  * This function returns the last index @c index of the passed #GATString_const @c query
00465  * in the passed @GATString_const string. If the passed #GATString_const @c string does
00466  * not contain the passed #GATString_const @c query, then @c index is set to point to a
00467  * value -1.
00468  * </p>
00469  * <p>
00470  * If an error occurs durring processing, then @c index is set to point to (GATuint32)(-1)
00471  * and the error code is returned as the return value of this function.
00472  * </p>
00473  * 
00474  * @param string The #GATString_const to examine
00475  * @param query The #GATString_const to search for
00476  * @param queryIndex The last index of @query in @string or(GATuint32)(-1)
00477  * @return The completion status of this function
00478  */
00479 GATResult 
00480   GATString_LastIndexOf(GATString_const string, GATString_const query, GATuint32 *queryIndex);
00481 
00482 
00483 /**
00484  * <p>
00485  * This function returns the first index @c index of the passed #GATString_const @c query
00486  * in the passed @GATString_const string. If the passed #GATString_const @c string does
00487  * not contain the passed #GATString_const @c query, then @c index is set to point to a
00488  * value -1.
00489  * </p>
00490  * <p>
00491  * If an error occurs durring processing, then @c index is set to point to (GATuint32)(-1)
00492  * and the error code is returned as the return value of this function.
00493  * </p>
00494  * 
00495  * @param string The #GATString_const to examine
00496  * @param query The #GATString_const to search for
00497  * @param index The first queryIndex of @query in @string or (GATuint32)(-1)
00498  * @return The completion status of this function
00499  */
00500 GATResult 
00501   GATString_FirstIndexOf(GATString_const string, GATString_const query, GATuint32 *queryIndex);
00502 
00503 /**
00504  * <p>
00505  * This function creates a new #GATString which is a substring of the passed #GATString_const
00506  * @c string. The first character in this substring is the @c start charcter in @c string. 
00507  * The last charater is the charcter <code>finish - 1</code> in @c string.
00508  * </p>
00509  * <p>
00510  * If an error occurs durring processing, then @substring is set to point not to a new 
00511  * #GATString but to NULL and the appropriate error code is returned through the return
00512  * value of this function.
00513  * </p>
00514  *
00515  * @param string The #GATString_const to query
00516  * @param start The starting index, inclusive
00517  * @param finish The finishing index, exclusive
00518  * @param substring The specified substring
00519  * @return The completion status of this function
00520  */
00521 GATResult 
00522   GATString_GetSubString(GATString_const string, GATuint32 start, GATuint32 end, GATString *substring);
00523 
00524 /** int GATString_GetInterface(GATString_const file, GATInterface iftype, void const **ifp)
00525  *  @brief Get an interface supported by a GATString
00526  *
00527  *  The function GATString_GetInterface allows to get a pointer to an 
00528  *  additional interface supported by this GATString.
00529  *
00530  *  @param object The object to be asked for the new interface.
00531  *  @param iftype The interface the object is to be asked for.
00532  *  @param ifp The pointer, through which the result is to be returned.
00533  *
00534  *  @return An error type.
00535  */
00536 GATResult 
00537   GATString_GetInterface(GATString_const file, GATInterface iftype, void const **ifp);
00538 
00539 /* GATSerialisable API */
00540 #define GATSTRING_VERSION1    0x0100
00541 #define GATSTRING_LASTVERSION GATSTRING_VERSION1
00542 #define GATSTRING_MINOR_MASK  0x00ff
00543 
00544 /** int GATString_Serialise(GATString file, GATObject stream, GATBool clear_dirty)
00545  *  @brief Serialise a GATString object
00546  *
00547  *  The function GATString_Serialise serialises the given GATString object into the
00548  *  given stream. 
00549  *
00550  *  @param string The GATString object to serialise.
00551  *  @param stream The stream interface to use for the serialisation.
00552  *  @param clear_dirty If the clear_dirty parameter is set to GATTrue, the 
00553  *        internal dirty flag of this object is to be reset (no used here)
00554  *
00555  *  @return An error code.
00556  */
00557 GATResult
00558   GATString_Serialise(GATString string, GATObject stream, GATBool clear_dirty);
00559 
00560 /** GATString GATString_DeSerialise(GATContext context, GATObject stream, GATBool clear_dirty)
00561  *  @brief De-serialise a GATString object
00562  *
00563  *  The function GATString_DeSerialise de-serialises a streamed GATString object  
00564  *  from the given stream  It constructs a new instance of the de-serialised 
00565  *  object.
00566  *
00567  *  @param context The GAT context to be used for object construction.
00568  *  @param stream The stream interface to use for the serialisation.
00569  *  @param result The pointer to a variable, which receives the status code of
00570  *        the operation.
00571  *
00572  *  @return The newly constructed GATString object.
00573  */
00574 GATString GATString_DeSerialise(GATContext context, GATObject stream, 
00575   GATResult *result);
00576 
00577 /** GATString_GetIsDirty
00578  *  
00579  *  The function GATString_GetIsDirty retrieves the status of the dirty flag of 
00580  *  this GATString object.
00581  *
00582  *  @param file The GATString object to inspect for its dirty status.
00583  *  @param isdirty The pointer to a variable, which receives the dirty status.
00584  *
00585  *  @return An error code.
00586  */
00587 GATResult 
00588   GATString_GetIsDirty(GATString_const file, GATBool *isdirty);
00589   
00590 #ifdef __cplusplus
00591 }
00592 #endif
00593 
00594 #endif /* _GATSTRING_H_ */