cpl_conv.h

Go to the documentation of this file.
00001 /******************************************************************************
00002  * $Id: cpl_conv.h 12407 2007-10-13 17:33:44Z rouault $
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 #ifndef CPL_CONV_H_INCLUDED
00032 #define CPL_CONV_H_INCLUDED
00033 
00034 #include "cpl_port.h"
00035 #include "cpl_vsi.h"
00036 #include "cpl_error.h"
00037 
00045 /* -------------------------------------------------------------------- */
00046 /*      Runtime check of various configuration items.                   */
00047 /* -------------------------------------------------------------------- */
00048 CPL_C_START
00049 
00050 void CPL_DLL CPLVerifyConfiguration(void);
00051 
00052 const char CPL_DLL * CPL_STDCALL
00053 CPLGetConfigOption( const char *, const char * );
00054 void CPL_DLL CPL_STDCALL CPLSetConfigOption( const char *, const char * );
00055 void CPL_DLL CPL_STDCALL CPLFreeConfig(void);
00056 
00057 /* -------------------------------------------------------------------- */
00058 /*      Safe malloc() API.  Thin cover over VSI functions with fatal    */
00059 /*      error reporting if memory allocation fails.                     */
00060 /* -------------------------------------------------------------------- */
00061 void CPL_DLL *CPLMalloc( size_t );
00062 void CPL_DLL *CPLCalloc( size_t, size_t );
00063 void CPL_DLL *CPLRealloc( void *, size_t );
00064 char CPL_DLL *CPLStrdup( const char * );
00065 char CPL_DLL *CPLStrlwr( char *);
00066 
00067 #define CPLFree VSIFree
00068 
00069 /* -------------------------------------------------------------------- */
00070 /*      Read a line from a text file, and strip of CR/LF.               */
00071 /* -------------------------------------------------------------------- */
00072 char CPL_DLL *CPLFGets( char *, int, FILE *);
00073 const char CPL_DLL *CPLReadLine( FILE * );
00074 const char CPL_DLL *CPLReadLineL( FILE * );
00075 
00076 /* -------------------------------------------------------------------- */
00077 /*      Convert ASCII string to floationg point number                  */
00078 /*      (THESE FUNCTIONS ARE NOT LOCALE AWARE!).                        */
00079 /* -------------------------------------------------------------------- */
00080 double CPL_DLL CPLAtof(const char *);
00081 double CPL_DLL CPLAtofDelim(const char *, char);
00082 double CPL_DLL CPLStrtod(const char *, char **);
00083 double CPL_DLL CPLStrtodDelim(const char *, char **, char);
00084 float CPL_DLL CPLStrtof(const char *, char **);
00085 float CPL_DLL CPLStrtofDelim(const char *, char **, char);
00086 
00087 /* -------------------------------------------------------------------- */
00088 /*      Convert number to string.  This function is locale agnostic     */
00089 /*      (ie. it will support "," or "." regardless of current locale)   */
00090 /* -------------------------------------------------------------------- */
00091 double CPL_DLL CPLAtofM(const char *);
00092 
00093 /* -------------------------------------------------------------------- */
00094 /*      Read a numeric value from an ASCII character string.            */
00095 /* -------------------------------------------------------------------- */
00096 char CPL_DLL *CPLScanString( const char *, int, int, int );
00097 double CPL_DLL CPLScanDouble( const char *, int, char * );
00098 long CPL_DLL CPLScanLong( const char *, int );
00099 unsigned long CPL_DLL CPLScanULong( const char *, int );
00100 GUIntBig CPL_DLL CPLScanUIntBig( const char *, int );
00101 void CPL_DLL *CPLScanPointer( const char *, int );
00102 
00103 /* -------------------------------------------------------------------- */
00104 /*      Print a value to an ASCII character string.                     */
00105 /* -------------------------------------------------------------------- */
00106 int CPL_DLL CPLPrintString( char *, const char *, int );
00107 int CPL_DLL CPLPrintStringFill( char *, const char *, int );
00108 int CPL_DLL CPLPrintInt32( char *, GInt32 , int );
00109 int CPL_DLL CPLPrintUIntBig( char *, GUIntBig , int );
00110 int CPL_DLL CPLPrintDouble( char *, const char *, double, char * );
00111 int CPL_DLL CPLPrintTime( char *, int , const char *, const struct tm *,
00112                           char * );
00113 int CPL_DLL CPLPrintPointer( char *, void *, int );
00114 
00115 /* -------------------------------------------------------------------- */
00116 /*      Fetch a function from DLL / so.                                 */
00117 /* -------------------------------------------------------------------- */
00118 
00119 void CPL_DLL *CPLGetSymbol( const char *, const char * );
00120 
00121 /* -------------------------------------------------------------------- */
00122 /*      Read a directory  (cpl_dir.c)                                   */
00123 /* -------------------------------------------------------------------- */
00124 char CPL_DLL  **CPLReadDir( const char *pszPath );
00125 
00126 /* -------------------------------------------------------------------- */
00127 /*      Fetch executable path.                                          */
00128 /* -------------------------------------------------------------------- */
00129 int CPL_DLL CPLGetExecPath( char *pszPathBuf, int nMaxLength );
00130 
00131 /* -------------------------------------------------------------------- */
00132 /*      Filename handling functions.                                    */
00133 /* -------------------------------------------------------------------- */
00134 const char CPL_DLL *CPLGetPath( const char * );
00135 const char CPL_DLL *CPLGetDirname( const char * );
00136 const char CPL_DLL *CPLGetFilename( const char * );
00137 const char CPL_DLL *CPLGetBasename( const char * );
00138 const char CPL_DLL *CPLGetExtension( const char * );
00139 char       CPL_DLL *CPLGetCurrentDir(void);
00140 const char CPL_DLL *CPLFormFilename( const char *pszPath,
00141                                      const char *pszBasename,
00142                                      const char *pszExtension );
00143 const char CPL_DLL *CPLFormCIFilename( const char *pszPath,
00144                                        const char *pszBasename,
00145                                        const char *pszExtension );
00146 const char CPL_DLL *CPLResetExtension( const char *, const char * );
00147 const char CPL_DLL *CPLProjectRelativeFilename( const char *pszProjectDir, 
00148                                             const char *pszSecondaryFilename );
00149 int CPL_DLL CPLIsFilenameRelative( const char *pszFilename );
00150 const char CPL_DLL *CPLExtractRelativePath(const char *, const char *, int *);
00151 const char CPL_DLL *CPLCleanTrailingSlash( const char * );
00152 
00153 /* -------------------------------------------------------------------- */
00154 /*      Find File Function                                              */
00155 /* -------------------------------------------------------------------- */
00156 typedef const char *(*CPLFileFinder)(const char *, const char *);
00157 
00158 const char    CPL_DLL *CPLFindFile(const char *pszClass, 
00159                                    const char *pszBasename);
00160 const char    CPL_DLL *CPLDefaultFindFile(const char *pszClass, 
00161                                           const char *pszBasename);
00162 void          CPL_DLL CPLPushFileFinder( CPLFileFinder pfnFinder );
00163 CPLFileFinder CPL_DLL CPLPopFileFinder(void);
00164 void          CPL_DLL CPLPushFinderLocation( const char * );
00165 void          CPL_DLL CPLPopFinderLocation(void);
00166 void          CPL_DLL CPLFinderClean(void);
00167 
00168 /* -------------------------------------------------------------------- */
00169 /*      Safe version of stat() that works properly on stuff like "C:".  */
00170 /* -------------------------------------------------------------------- */
00171 int CPL_DLL     CPLStat( const char *, VSIStatBuf * );
00172 
00173 /* -------------------------------------------------------------------- */
00174 /*      Reference counted file handle manager.  Makes sharing file      */
00175 /*      handles more practical.                                         */
00176 /* -------------------------------------------------------------------- */
00177 typedef struct {
00178     FILE *fp;
00179     int   nRefCount;
00180     int   bLarge;
00181     char  *pszFilename;
00182     char  *pszAccess;
00183 } CPLSharedFileInfo;
00184 
00185 FILE CPL_DLL    *CPLOpenShared( const char *, const char *, int );
00186 void CPL_DLL     CPLCloseShared( FILE * );
00187 CPLSharedFileInfo CPL_DLL *CPLGetSharedList( int * );
00188 void CPL_DLL     CPLDumpSharedList( FILE * );
00189 
00190 /* -------------------------------------------------------------------- */
00191 /*      DMS to Dec to DMS conversion.                                   */
00192 /* -------------------------------------------------------------------- */
00193 double CPL_DLL CPLDMSToDec( const char *is );
00194 const char CPL_DLL *CPLDecToDMS( double dfAngle, const char * pszAxis,
00195                                  int nPrecision );
00196 double CPL_DLL CPLPackedDMSToDec( double );
00197 double CPL_DLL CPLDecToPackedDMS( double dfDec );
00198 
00199 void CPL_DLL CPLStringToComplex( const char *pszString, 
00200                                  double *pdfReal, double *pdfImag );
00201 
00202 /* -------------------------------------------------------------------- */
00203 /*      Misc other functions.                                           */
00204 /* -------------------------------------------------------------------- */
00205 int CPL_DLL CPLUnlinkTree( const char * );
00206 int CPL_DLL CPLCopyFile( const char *pszNewPath, const char *pszOldPath );
00207 
00208 CPL_C_END
00209 
00210 /* -------------------------------------------------------------------- */
00211 /*      C++ object for temporariliy forcing a LC_NUMERIC locale to "C". */
00212 /* -------------------------------------------------------------------- */
00213 
00214 #ifdef __cplusplus
00215 
00216 class CPLLocaleC
00217 {
00218   private:
00219     char *pszOldLocale;
00220 
00221   public:
00222     CPLLocaleC();
00223     ~CPLLocaleC();
00224 };
00225 
00226 #endif /* def __cplusplus */
00227 
00228 
00229 #endif /* ndef CPL_CONV_H_INCLUDED */

Generated for GDAL by doxygen 1.5.5.