00001 /********************************************************************** 00002 * $Id: cpl_string_h-source.html,v 1.10 2002/04/16 13:11:48 warmerda Exp $ 00003 * 00004 * Name: cpl_string.h 00005 * Project: CPL - Common Portability Library 00006 * Purpose: String and StringList functions. 00007 * Author: Daniel Morissette, danmo@videotron.ca 00008 * 00009 ********************************************************************** 00010 * Copyright (c) 1998, Daniel Morissette 00011 * 00012 * Permission is hereby granted, free of charge, to any person obtaining a 00013 * copy of this software and associated documentation files (the "Software"), 00014 * to deal in the Software without restriction, including without limitation 00015 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 00016 * and/or sell copies of the Software, and to permit persons to whom the 00017 * Software is furnished to do so, subject to the following conditions: 00018 * 00019 * The above copyright notice and this permission notice shall be included 00020 * in all copies or substantial portions of the Software. 00021 * 00022 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00023 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00024 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 00025 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00026 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 00027 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 00028 * DEALINGS IN THE SOFTWARE. 00029 ********************************************************************** 00030 * 00031 * $Log: cpl_string_h-source.html,v $ 00031 * Revision 1.10 2002/04/16 13:11:48 warmerda 00031 * updated 00031 * 00032 * Revision 1.9 2002/03/05 14:26:57 warmerda 00033 * expanded tabs 00034 * 00035 * Revision 1.8 2002/01/16 03:59:28 warmerda 00036 * added CPLTokenizeString2 00037 * 00038 * Revision 1.7 2000/10/06 15:19:03 warmerda 00039 * added CPLSetNameValueSeparator 00040 * 00041 * Revision 1.6 2000/04/26 18:25:10 warmerda 00042 * implement CPL_DLL 00043 * 00044 * Revision 1.5 2000/03/30 05:38:48 warmerda 00045 * added CPLParseNameValue 00046 * 00047 * Revision 1.4 1999/06/26 14:05:19 warmerda 00048 * Added CSLFindString(). 00049 * 00050 * Revision 1.3 1999/02/17 01:41:58 warmerda 00051 * Added CSLGetField 00052 * 00053 * Revision 1.2 1998/12/04 21:40:42 danmo 00054 * Added more Name=Value manipulation fuctions 00055 * 00056 * Revision 1.1 1998/12/03 18:26:02 warmerda 00057 * New 00058 * 00059 **********************************************************************/ 00060 00061 #ifndef _CPL_STRING_H_INCLUDED 00062 #define _CPL_STRING_H_INCLUDED 00063 00064 #include "cpl_vsi.h" 00065 #include "cpl_error.h" 00066 #include "cpl_conv.h" 00067 00068 /*===================================================================== 00069 Stringlist functions (strlist.c) 00070 =====================================================================*/ 00071 CPL_C_START 00072 00073 char CPL_DLL **CSLAddString(char **papszStrList, const char *pszNewString); 00074 int CPL_DLL CSLCount(char **papszStrList); 00075 const char CPL_DLL *CSLGetField( char **, int ); 00076 void CPL_DLL CSLDestroy(char **papszStrList); 00077 char CPL_DLL **CSLDuplicate(char **papszStrList); 00078 00079 char CPL_DLL **CSLTokenizeString(const char *pszString ); 00080 char CPL_DLL **CSLTokenizeStringComplex(const char *pszString, 00081 const char *pszDelimiter, 00082 int bHonourStrings, int bAllowEmptyTokens ); 00083 char CPL_DLL **CSLTokenizeString2( const char *pszString, 00084 const char *pszDelimeter, 00085 int nCSLTFlags ); 00086 00087 #define CSLT_HONOURSTRINGS 0x0001 00088 #define CSLT_ALLOWEMPTYTOKENS 0x0002 00089 #define CSLT_PRESERVEQUOTES 0x0004 00090 #define CSLT_PRESERVEESCAPES 0x0008 00091 00092 int CPL_DLL CSLPrint(char **papszStrList, FILE *fpOut); 00093 char CPL_DLL **CSLLoad(const char *pszFname); 00094 int CPL_DLL CSLSave(char **papszStrList, const char *pszFname); 00095 00096 char CPL_DLL **CSLInsertStrings(char **papszStrList, int nInsertAtLineNo, 00097 char **papszNewLines); 00098 char CPL_DLL **CSLInsertString(char **papszStrList, int nInsertAtLineNo, 00099 char *pszNewLine); 00100 char CPL_DLL **CSLRemoveStrings(char **papszStrList, int nFirstLineToDelete, 00101 int nNumToRemove, char ***ppapszRetStrings); 00102 int CPL_DLL CSLFindString( char **, const char * ); 00103 00104 const char CPL_DLL *CPLSPrintf(char *fmt, ...); 00105 char CPL_DLL **CSLAppendPrintf(char **papszStrList, char *fmt, ...); 00106 00107 const char CPL_DLL * 00108 CPLParseNameValue(const char *pszNameValue, char **ppszKey ); 00109 const char CPL_DLL * 00110 CSLFetchNameValue(char **papszStrList, const char *pszName); 00111 char CPL_DLL ** 00112 CSLFetchNameValueMultiple(char **papszStrList, const char *pszName); 00113 char CPL_DLL ** 00114 CSLAddNameValue(char **papszStrList, 00115 const char *pszName, const char *pszValue); 00116 char CPL_DLL ** 00117 CSLSetNameValue(char **papszStrList, 00118 const char *pszName, const char *pszValue); 00119 void CPL_DLL CSLSetNameValueSeparator( char ** papszStrList, 00120 const char *pszSeparator ); 00121 00122 CPL_C_END 00123 00124 #endif /* _CPL_STRING_H_INCLUDED */