00001 /********************************************************************** 00002 * $Id: cpl_string_h-source.html,v 1.8 2001/07/05 13:24:08 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.8 2001/07/05 13:24:08 warmerda 00031 * *** empty log message *** 00031 * 00032 * Revision 1.7 2000/10/06 15:19:03 warmerda 00033 * added CPLSetNameValueSeparator 00034 * 00035 * Revision 1.6 2000/04/26 18:25:10 warmerda 00036 * implement CPL_DLL 00037 * 00038 * Revision 1.5 2000/03/30 05:38:48 warmerda 00039 * added CPLParseNameValue 00040 * 00041 * Revision 1.4 1999/06/26 14:05:19 warmerda 00042 * Added CSLFindString(). 00043 * 00044 * Revision 1.3 1999/02/17 01:41:58 warmerda 00045 * Added CSLGetField 00046 * 00047 * Revision 1.2 1998/12/04 21:40:42 danmo 00048 * Added more Name=Value manipulation fuctions 00049 * 00050 * Revision 1.1 1998/12/03 18:26:02 warmerda 00051 * New 00052 * 00053 **********************************************************************/ 00054 00055 #ifndef _CPL_STRING_H_INCLUDED 00056 #define _CPL_STRING_H_INCLUDED 00057 00058 #include "cpl_vsi.h" 00059 #include "cpl_error.h" 00060 #include "cpl_conv.h" 00061 00062 /*===================================================================== 00063 Stringlist functions (strlist.c) 00064 =====================================================================*/ 00065 CPL_C_START 00066 00067 char CPL_DLL **CSLAddString(char **papszStrList, const char *pszNewString); 00068 int CPL_DLL CSLCount(char **papszStrList); 00069 const char CPL_DLL *CSLGetField( char **, int ); 00070 void CPL_DLL CSLDestroy(char **papszStrList); 00071 char CPL_DLL **CSLDuplicate(char **papszStrList); 00072 00073 char CPL_DLL **CSLTokenizeString(const char *pszString ); 00074 char CPL_DLL **CSLTokenizeStringComplex(const char *pszString, 00075 const char *pszDelimiter, 00076 int bHonourStrings, int bAllowEmptyTokens ); 00077 00078 int CPL_DLL CSLPrint(char **papszStrList, FILE *fpOut); 00079 char CPL_DLL **CSLLoad(const char *pszFname); 00080 int CPL_DLL CSLSave(char **papszStrList, const char *pszFname); 00081 00082 char CPL_DLL **CSLInsertStrings(char **papszStrList, int nInsertAtLineNo, 00083 char **papszNewLines); 00084 char CPL_DLL **CSLInsertString(char **papszStrList, int nInsertAtLineNo, 00085 char *pszNewLine); 00086 char CPL_DLL **CSLRemoveStrings(char **papszStrList, int nFirstLineToDelete, 00087 int nNumToRemove, char ***ppapszRetStrings); 00088 int CPL_DLL CSLFindString( char **, const char * ); 00089 00090 const char CPL_DLL *CPLSPrintf(char *fmt, ...); 00091 char CPL_DLL **CSLAppendPrintf(char **papszStrList, char *fmt, ...); 00092 00093 const char CPL_DLL * 00094 CPLParseNameValue(const char *pszNameValue, char **ppszKey ); 00095 const char CPL_DLL * 00096 CSLFetchNameValue(char **papszStrList, const char *pszName); 00097 char CPL_DLL ** 00098 CSLFetchNameValueMultiple(char **papszStrList, const char *pszName); 00099 char CPL_DLL ** 00100 CSLAddNameValue(char **papszStrList, 00101 const char *pszName, const char *pszValue); 00102 char CPL_DLL ** 00103 CSLSetNameValue(char **papszStrList, 00104 const char *pszName, const char *pszValue); 00105 void CPL_DLL CSLSetNameValueSeparator( char ** papszStrList, 00106 const char *pszSeparator ); 00107 00108 CPL_C_END 00109 00110 #endif /* _CPL_STRING_H_INCLUDED */