Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: XLS Translator 4 : * Purpose: Definition of classes for OGR .xls driver. 5 : * Author: Even Rouault, even dot rouault at spatialys.com 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2011-2012, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #ifndef OGR_XLS_H_INCLUDED 14 : #define OGR_XLS_H_INCLUDED 15 : 16 : #include "ogrsf_frmts.h" 17 : 18 : /************************************************************************/ 19 : /* OGRXLSLayer */ 20 : /************************************************************************/ 21 : 22 : class OGRXLSDataSource; 23 : 24 : class OGRXLSLayer final : public OGRLayer, 25 : public OGRGetNextFeatureThroughRaw<OGRXLSLayer> 26 : { 27 : OGRXLSDataSource *poDS; 28 : OGRFeatureDefn *poFeatureDefn; 29 : 30 : char *pszName; 31 : int iSheet; 32 : bool bFirstLineIsHeaders; 33 : int nRows; 34 : unsigned short nCols; 35 : 36 : int nNextFID; 37 : 38 : OGRFeature *GetNextRawFeature(); 39 : 40 : void DetectHeaderLine(const void *xlshandle); 41 : void DetectColumnTypes(const void *xlshandle, int *paeFieldTypes); 42 : 43 : public: 44 : OGRXLSLayer(OGRXLSDataSource *poDSIn, const char *pszSheetname, 45 : int iSheetIn, int nRowsIn, unsigned short nColsIn); 46 : virtual ~OGRXLSLayer(); 47 : 48 : virtual void ResetReading() override; 49 61 : DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(OGRXLSLayer) 50 : 51 : virtual OGRFeatureDefn *GetLayerDefn() override; 52 : virtual GIntBig GetFeatureCount(int bForce = TRUE) override; 53 : 54 30 : virtual const char *GetName() override 55 : { 56 30 : return pszName; 57 : } 58 : 59 2 : virtual OGRwkbGeometryType GetGeomType() override 60 : { 61 2 : return wkbNone; 62 : } 63 : 64 : virtual int TestCapability(const char *) override; 65 : 66 1 : virtual OGRSpatialReference *GetSpatialRef() override 67 : { 68 1 : return nullptr; 69 : } 70 : 71 : GDALDataset *GetDataset() override; 72 : }; 73 : 74 : /************************************************************************/ 75 : /* OGRXLSDataSource */ 76 : /************************************************************************/ 77 : 78 : class OGRXLSDataSource final : public GDALDataset 79 : { 80 : OGRLayer **papoLayers; 81 : int nLayers; 82 : 83 : const void *xlshandle; 84 : 85 : CPLString m_osANSIFilename; 86 : #ifdef _WIN32 87 : CPLString m_osTempFilename; 88 : #endif 89 : public: 90 : OGRXLSDataSource(); 91 : virtual ~OGRXLSDataSource(); 92 : 93 : int Open(const char *pszFilename, int bUpdate); 94 : 95 29 : virtual int GetLayerCount() override 96 : { 97 29 : return nLayers; 98 : } 99 : 100 : virtual OGRLayer *GetLayer(int) override; 101 : 102 : const void *GetXLSHandle(); 103 : }; 104 : 105 : #endif /* ndef OGR_XLS_H_INCLUDED */