LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/xls - ogr_xls.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 9 9 100.0 %
Date: 2024-11-21 22:18:42 Functions: 5 5 100.0 %

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

Generated by: LCOV version 1.14