1 /****************************************************************************** 2 * $Id: cpl_csv.h 7d6fac2a7dd6f5deed06d3ab591ba52f6bde7a70 2019-05-18 15:30:03 -0500 Even Rouault $ 3 * 4 * Project: Common Portability Library 5 * Purpose: Functions for reading and scanning CSV (comma separated, 6 * variable length text files holding tables) files. 7 * Author: Frank Warmerdam, warmerdam@pobox.com 8 * 9 ****************************************************************************** 10 * Copyright (c) 1999, Frank Warmerdam 11 * 12 * Permission is hereby granted, free of charge, to any person obtaining a 13 * copy of this software and associated documentation files (the "Software"), 14 * to deal in the Software without restriction, including without limitation 15 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 16 * and/or sell copies of the Software, and to permit persons to whom the 17 * Software is furnished to do so, subject to the following conditions: 18 * 19 * The above copyright notice and this permission notice shall be included 20 * in all copies or substantial portions of the Software. 21 * 22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 23 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 25 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 27 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 28 * DEALINGS IN THE SOFTWARE. 29 ****************************************************************************/ 30 31 #ifndef CPL_CSV_H_INCLUDED 32 #define CPL_CSV_H_INCLUDED 33 34 #include <stdio.h> 35 36 #include "cpl_conv.h" 37 #include "cpl_string.h" 38 #include "cpl_vsi.h" 39 40 CPL_C_START 41 42 typedef enum { 43 CC_ExactString, 44 CC_ApproxString, 45 CC_Integer 46 } CSVCompareCriteria; 47 48 const char CPL_DLL *CSVFilename( const char * ); 49 50 char CPL_DLL CSVDetectSeperator( const char *pszLine ); 51 52 char CPL_DLL **CSVReadParseLine( FILE *fp); 53 char CPL_DLL **CSVReadParseLine2( FILE *fp, char chDelimiter ); 54 55 char CPL_DLL **CSVReadParseLineL( VSILFILE *fp); 56 char CPL_DLL **CSVReadParseLine2L( VSILFILE *fp, char chDelimiter ); 57 58 char CPL_DLL **CSVScanLines( FILE *, int, const char *, CSVCompareCriteria ); 59 char CPL_DLL **CSVScanLinesL( VSILFILE *, int, const char *, CSVCompareCriteria ); 60 char CPL_DLL **CSVScanFile( const char *, int, const char *, 61 CSVCompareCriteria ); 62 char CPL_DLL **CSVScanFileByName( const char *, const char *, const char *, 63 CSVCompareCriteria ); 64 char CPL_DLL **CSVGetNextLine( const char * ); 65 int CPL_DLL CSVGetFieldId( FILE *, const char * ); 66 int CPL_DLL CSVGetFieldIdL( VSILFILE *, const char * ); 67 int CPL_DLL CSVGetFileFieldId( const char *, const char * ); 68 69 void CPL_DLL CSVDeaccess( const char * ); 70 71 const char CPL_DLL *CSVGetField( const char *, const char *, const char *, 72 CSVCompareCriteria, const char * ); 73 74 #ifndef DOXYGEN_XML 75 void CPL_DLL SetCSVFilenameHook( const char *(*)(const char *) ); 76 #endif 77 78 CPL_C_END 79 80 #endif /* ndef CPL_CSV_H_INCLUDED */ 81