- Main Page
- Classes
- Files
- Directories
- Related Pages

- File List
- File Members

# cpl_conv.h

Go to the documentation of this file.

    00001 /******************************************************************************
    00002  * $Id: cpl_conv.h,v 1.43 2006/04/04 15:37:19 fwarmerdam Exp $
    00003  *
    00004  * Project:  CPL - Common Portability Library
    00005  * Purpose:  Convenience functions declarations.
    00006  *           This is intended to remain light weight.
    00007  * Author:   Frank Warmerdam, warmerdam@pobox.com
    00008  *
    00009  ******************************************************************************
    00010  * Copyright (c) 1998, Frank Warmerdam
    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
    00023  * OR 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_conv.h,v $
    00032  * Revision 1.43  2006/04/04 15:37:19  fwarmerdam
    00033  * Removed long double strtod functions.
    00034  *
    00035  * Revision 1.42  2006/03/18 16:36:15  dron
    00036  * Added ASCII to floating point number conversion functions.
    00037  *
    00038  * Revision 1.41  2006/03/04 00:46:43  mloskot
    00039  * [WCE] CPLLocaleC class excluded from compilation for Windows CE
    00040  *
    00041  * Revision 1.40  2006/03/03 19:40:53  fwarmerdam
    00042  * added CPLLocaleC class
    00043  *
    00044  * Revision 1.39  2005/09/11 21:08:21  fwarmerdam
    00045  * added CPLReadLineL
    00046  *
    00047  * Revision 1.38  2005/08/25 18:06:48  fwarmerdam
    00048  * void in empty arg lists.
    00049  *
    00050  * Revision 1.37  2005/06/10 15:00:00  fwarmerdam
    00051  * added cpl_getexecpath.cpp
    00052  *
    00053  * Revision 1.36  2005/04/04 15:23:31  fwarmerdam
    00054  * some functions now CPL_STDCALL
    00055  *
    00056  * Revision 1.35  2004/11/17 22:57:21  fwarmerdam
    00057  * added CPLScanPointer() and CPLPrintPointer()
    00058  *
    00059  * Revision 1.34  2004/08/16 20:24:07  warmerda
    00060  * added CPLUnlinkTree
    00061  *
    00062  * Revision 1.33  2004/08/11 18:41:46  warmerda
    00063  * added CPLExtractRelativePath
    00064  *
    00065  * Revision 1.32  2004/07/31 04:51:36  warmerda
    00066  * added shared file open support
    00067  *
    00068  * Revision 1.31  2004/03/28 16:22:02  warmerda
    00069  * const correctness changes in scan functions
    00070  *
    00071  * Revision 1.30  2004/03/24 09:01:17  dron
    00072  * Added CPLPrintUIntBig().
    00073  *
    00074  * Revision 1.29  2004/02/07 14:03:30  dron
    00075  * CPLDecToPackedDMS() added.
    00076  *
    00077  * Revision 1.28  2004/02/01 08:37:55  dron
    00078  * Added CPLPackedDMSToDec().
    00079  *
    00080  * Revision 1.27  2003/12/28 17:24:43  warmerda
    00081  * added CPLFreeConfig
    00082  *
    00083  * Revision 1.26  2003/10/17 07:06:06  dron
    00084  * Added locale selection option to CPLScanDouble() and CPLPrintDOuble().
    00085  *
    00086  * Revision 1.25  2003/09/28 14:14:16  dron
    00087  * Added CPLScanString().
    00088  *
    00089  * Revision 1.24  2003/09/08 11:09:53  dron
    00090  * Added CPLPrintDouble() and CPLPrintTime().
    00091  *
    00092  * Revision 1.23  2003/09/07 14:38:43  dron
    00093  * Added CPLPrintString(), CPLPrintStringFill(), CPLPrintInt32(), CPLPrintUIntBig().
    00094  *
    00095  * Revision 1.22  2003/08/31 14:48:05  dron
    00096  * Added CPLScanLong() and CPLScanDouble().
    00097  *
    00098  * Revision 1.21  2003/08/25 20:01:58  dron
    00099  * Added CPLFGets() helper function.
    00100  *
    00101  * Revision 1.20  2003/05/08 21:51:14  warmerda
    00102  * added CPL{G,S}etConfigOption() usage
    00103  *
    00104  * Revision 1.19  2003/03/02 04:44:38  warmerda
    00105  * added CPLStringToComplex
    00106  *
    00107  * Revision 1.18  2002/12/13 06:00:54  warmerda
    00108  * added CPLProjectRelativeFilename() and CPLIsFilenameRelative()
    00109  *
    00110  * Revision 1.17  2002/12/09 18:52:51  warmerda
    00111  * added DMS conversion
    00112  *
    00113  * Revision 1.16  2002/12/03 04:42:02  warmerda
    00114  * improved finder cleanup support
    00115  *
    00116  * Revision 1.15  2002/08/15 09:23:24  dron
    00117  * Added CPLGetDirname() function
    00118  *
    00119  * Revision 1.14  2002/02/01 20:39:50  warmerda
    00120  * ensure CPLReadLine() is exported from DLL
    00121  *
    00122  * Revision 1.13  2001/12/12 17:06:57  warmerda
    00123  * added CPLStat
    00124  *
    00125  * Revision 1.12  2001/03/16 22:15:08  warmerda
    00126  * added CPLResetExtension
    00127  *
    00128  * Revision 1.1  1998/10/18 06:15:11  warmerda
    00129  * Initial implementation.
    00130  *
    00131  */
    00132
    00133 #ifndef CPL_CONV_H_INCLUDED
    00134 #define CPL_CONV_H_INCLUDED
    00135
    00136 #include "cpl_port.h"
    00137 #include "cpl_vsi.h"
    00138 #include "cpl_error.h"
    00139
    00147 /* -------------------------------------------------------------------- */
    00148 /*      Runtime check of various configuration items.                   */
    00149 /* -------------------------------------------------------------------- */
    00150 CPL_C_START
    00151
    00152 void CPL_DLL CPLVerifyConfiguration(void);
    00153
    00154 const char CPL_DLL * CPL_STDCALL
    00155 CPLGetConfigOption( const char *, const char * );
    00156 void CPL_DLL CPL_STDCALL CPLSetConfigOption( const char *, const char * );
    00157 void CPL_DLL CPL_STDCALL CPLFreeConfig(void);
    00158
    00159 /* -------------------------------------------------------------------- */
    00160 /*      Safe malloc() API.  Thin cover over VSI functions with fatal    */
    00161 /*      error reporting if memory allocation fails.                     */
    00162 /* -------------------------------------------------------------------- */
    00163 void CPL_DLL *CPLMalloc( size_t );
    00164 void CPL_DLL *CPLCalloc( size_t, size_t );
    00165 void CPL_DLL *CPLRealloc( void *, size_t );
    00166 char CPL_DLL *CPLStrdup( const char * );
    00167
    00168 #define CPLFree VSIFree
    00169
    00170 /* -------------------------------------------------------------------- */
    00171 /*      Read a line from a text file, and strip of CR/LF.               */
    00172 /* -------------------------------------------------------------------- */
    00173 char CPL_DLL *CPLFGets( char *, int, FILE *);
    00174 const char CPL_DLL *CPLReadLine( FILE * );
    00175 const char CPL_DLL *CPLReadLineL( FILE * );
    00176
    00177 /* -------------------------------------------------------------------- */
    00178 /*      Convert ASCII string to floationg point number                  */
    00179 /*      (THESE FUNCTIONS ARE NOT LOCALE AWARE!).                        */
    00180 /* -------------------------------------------------------------------- */
    00181 double CPL_DLL CPLAtof(const char *);
    00182 double CPL_DLL CPLAtofDelim(const char *, char);
    00183 double CPL_DLL CPLStrtod(const char *, char **);
    00184 double CPL_DLL CPLStrtodDelim(const char *, char **, char);
    00185 float CPL_DLL CPLStrtof(const char *, char **);
    00186 float CPL_DLL CPLStrtofDelim(const char *, char **, char);
    00187
    00188 /* -------------------------------------------------------------------- */
    00189 /*      Read a numeric value from an ASCII character string.            */
    00190 /* -------------------------------------------------------------------- */
    00191 char CPL_DLL *CPLScanString( const char *, int, int, int );
    00192 double CPL_DLL CPLScanDouble( const char *, int, char * );
    00193 long CPL_DLL CPLScanLong( const char *, int );
    00194 GUIntBig CPL_DLL CPLScanUIntBig( const char *, int );
    00195 void CPL_DLL *CPLScanPointer( const char *, int );
    00196
    00197 /* -------------------------------------------------------------------- */
    00198 /*      Print a value to an ASCII character string.                     */
    00199 /* -------------------------------------------------------------------- */
    00200 int CPL_DLL CPLPrintString( char *, const char *, int );
    00201 int CPL_DLL CPLPrintStringFill( char *, const char *, int );
    00202 int CPL_DLL CPLPrintInt32( char *, GInt32 , int );
    00203 int CPL_DLL CPLPrintUIntBig( char *, GUIntBig , int );
    00204 int CPL_DLL CPLPrintDouble( char *, const char *, double, char * );
    00205 int CPL_DLL CPLPrintTime( char *, int , const char *, const struct tm *,
    00206                           char * );
    00207 int CPL_DLL CPLPrintPointer( char *, void *, int );
    00208
    00209 /* -------------------------------------------------------------------- */
    00210 /*      Fetch a function from DLL / so.                                 */
    00211 /* -------------------------------------------------------------------- */
    00212
    00213 void CPL_DLL *CPLGetSymbol( const char *, const char * );
    00214
    00215 /* -------------------------------------------------------------------- */
    00216 /*      Read a directory  (cpl_dir.c)                                   */
    00217 /* -------------------------------------------------------------------- */
    00218 char CPL_DLL  **CPLReadDir( const char *pszPath );
    00219
    00220 /* -------------------------------------------------------------------- */
    00221 /*      Fetch executable path.                                          */
    00222 /* -------------------------------------------------------------------- */
    00223 int CPL_DLL CPLGetExecPath( char *pszPathBuf, int nMaxLength );
    00224
    00225 /* -------------------------------------------------------------------- */
    00226 /*      Filename handling functions.                                    */
    00227 /* -------------------------------------------------------------------- */
    00228 const char CPL_DLL *CPLGetPath( const char * );
    00229 const char CPL_DLL *CPLGetDirname( const char * );
    00230 const char CPL_DLL *CPLGetFilename( const char * );
    00231 const char CPL_DLL *CPLGetBasename( const char * );
    00232 const char CPL_DLL *CPLGetExtension( const char * );
    00233 const char CPL_DLL *CPLFormFilename( const char *pszPath,
    00234                                      const char *pszBasename,
    00235                                      const char *pszExtension );
    00236 const char CPL_DLL *CPLFormCIFilename( const char *pszPath,
    00237                                        const char *pszBasename,
    00238                                        const char *pszExtension );
    00239 const char CPL_DLL *CPLResetExtension( const char *, const char * );
    00240 const char CPL_DLL *CPLProjectRelativeFilename( const char *pszProjectDir,
    00241                                             const char *pszSecondaryFilename );
    00242 int CPL_DLL CPLIsFilenameRelative( const char *pszFilename );
    00243 const char CPL_DLL *CPLExtractRelativePath(const char *, const char *, int *);
    00244
    00245 /* -------------------------------------------------------------------- */
    00246 /*      Find File Function                                              */
    00247 /* -------------------------------------------------------------------- */
    00248 typedef const char *(*CPLFileFinder)(const char *, const char *);
    00249
    00250 const char    CPL_DLL *CPLFindFile(const char *pszClass,
    00251                                    const char *pszBasename);
    00252 const char    CPL_DLL *CPLDefaultFindFile(const char *pszClass,
    00253                                           const char *pszBasename);
    00254 void          CPL_DLL CPLPushFileFinder( CPLFileFinder pfnFinder );
    00255 CPLFileFinder CPL_DLL CPLPopFileFinder(void);
    00256 void          CPL_DLL CPLPushFinderLocation( const char * );
    00257 void          CPL_DLL CPLPopFinderLocation(void);
    00258 void          CPL_DLL CPLFinderClean(void);
    00259
    00260 /* -------------------------------------------------------------------- */
    00261 /*      Safe version of stat() that works properly on stuff like "C:".  */
    00262 /* -------------------------------------------------------------------- */
    00263 int CPL_DLL     CPLStat( const char *, VSIStatBuf * );
    00264
    00265 /* -------------------------------------------------------------------- */
    00266 /*      Reference counted file handle manager.  Makes sharing file      */
    00267 /*      handles more practical.                                         */
    00268 /* -------------------------------------------------------------------- */
    00269 typedef struct {
    00270     FILE *fp;
    00271     int   nRefCount;
    00272     int   bLarge;
    00273     char  *pszFilename;
    00274     char  *pszAccess;
    00275 } CPLSharedFileInfo;
    00276
    00277 FILE CPL_DLL    *CPLOpenShared( const char *, const char *, int );
    00278 void CPL_DLL     CPLCloseShared( FILE * );
    00279 CPLSharedFileInfo CPL_DLL *CPLGetSharedList( int * );
    00280 void CPL_DLL     CPLDumpSharedList( FILE * );
    00281
    00282 /* -------------------------------------------------------------------- */
    00283 /*      DMS to Dec to DMS conversion.                                   */
    00284 /* -------------------------------------------------------------------- */
    00285 double CPL_DLL CPLDMSToDec( const char *is );
    00286 const char CPL_DLL *CPLDecToDMS( double dfAngle, const char * pszAxis,
    00287                                  int nPrecision );
    00288 double CPL_DLL CPLPackedDMSToDec( double );
    00289 double CPL_DLL CPLDecToPackedDMS( double dfDec );
    00290
    00291 void CPL_DLL CPLStringToComplex( const char *pszString,
    00292                                  double *pdfReal, double *pdfImag );
    00293
    00294 /* -------------------------------------------------------------------- */
    00295 /*      Misc other functions.                                           */
    00296 /* -------------------------------------------------------------------- */
    00297 int CPL_DLL CPLUnlinkTree( const char * );
    00298 CPL_C_END
    00299
    00300 /* -------------------------------------------------------------------- */
    00301 /*      C++ object for temporariliy forcing a LC_NUMERIC locale to "C". */
    00302 /* -------------------------------------------------------------------- */
    00303 #ifndef WIN32CE
    00304
    00305 #ifdef __cplusplus
    00306
    00307 class CPLLocaleC
    00308 {
    00309   private:
    00310     char *pszOldLocale;
    00311
    00312   public:
    00313     CPLLocaleC();
    00314     ~CPLLocaleC();
    00315 };
    00316
    00317 #endif /* def __cplusplus */
    00318
    00319 #endif /* ndef WIN32CE */
    00320
    00321 #endif /* ndef CPL_CONV_H_INCLUDED */

Generated for GDAL by 1.4.5.