LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/vfk - vfkreaderp.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 12 20 60.0 %
Date: 2025-01-18 12:42:00 Functions: 6 10 60.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  VFK Reader
       4             :  * Purpose:  Private Declarations for OGR free VFK Reader code.
       5             :  * Author:   Martin Landa, landa.martin gmail.com
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2012-2018, Martin Landa <landa.martin gmail.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #ifndef GDAL_OGR_VFK_VFKREADERP_H_INCLUDED
      14             : #define GDAL_OGR_VFK_VFKREADERP_H_INCLUDED
      15             : 
      16             : #include <map>
      17             : #include <string>
      18             : 
      19             : #include "vfkreader.h"
      20             : #include "ogr_api.h"
      21             : 
      22             : #include "sqlite3.h"
      23             : 
      24             : class VFKReader;
      25             : 
      26             : /************************************************************************/
      27             : /*                              VFKReader                               */
      28             : /************************************************************************/
      29             : class VFKReader : public IVFKReader
      30             : {
      31             :   private:
      32             :     const char *m_pszEncoding;
      33             : 
      34             :     VSILFILE *m_poFD;
      35             :     char *ReadLine();
      36             : 
      37             :     void AddInfo(const char *) override;
      38             : 
      39             :     CPL_DISALLOW_COPY_ASSIGN(VFKReader)
      40             : 
      41             :   protected:
      42             :     char *m_pszFilename;
      43             :     VSIStatBufL *m_poFStat;
      44             :     bool m_bAmendment;
      45             :     bool m_bFileField;
      46             :     int m_nDataBlockCount;
      47             :     IVFKDataBlock **m_papoDataBlock;
      48             : 
      49             :     IVFKDataBlock *CreateDataBlock(const char *) override;
      50             :     void AddDataBlock(IVFKDataBlock *, const char *) override;
      51             :     virtual OGRErr AddFeature(IVFKDataBlock *, VFKFeature *) override;
      52             :     void ReadEncoding();
      53             : 
      54             :     // Metadata.
      55             :     std::map<CPLString, CPLString> poInfo;
      56             : 
      57             :   public:
      58             :     explicit VFKReader(const GDALOpenInfo *);
      59             :     virtual ~VFKReader();
      60             : 
      61           1 :     const char *GetFilename() const override
      62             :     {
      63           1 :         return m_pszFilename;
      64             :     }
      65             : 
      66        9232 :     const char *GetEncoding() const override
      67             :     {
      68        9232 :         return m_pszEncoding;
      69             :     }
      70             : 
      71           0 :     bool IsSpatial() const override
      72             :     {
      73           0 :         return false;
      74             :     }
      75             : 
      76           0 :     bool IsPreProcessed() const override
      77             :     {
      78           0 :         return false;
      79             :     }
      80             : 
      81           0 :     bool IsValid() const override
      82             :     {
      83           0 :         return true;
      84             :     }
      85             : 
      86        1007 :     bool HasFileField() const override
      87             :     {
      88        1007 :         return m_bFileField;
      89             :     }
      90             : 
      91             :     int ReadDataBlocks(bool = false) override;
      92             :     int64_t ReadDataRecords(IVFKDataBlock * = nullptr) override;
      93             :     int LoadGeometry() override;
      94             : 
      95        5720 :     int GetDataBlockCount() const override
      96             :     {
      97        5720 :         return m_nDataBlockCount;
      98             :     }
      99             : 
     100             :     IVFKDataBlock *GetDataBlock(int) const override;
     101             :     IVFKDataBlock *GetDataBlock(const char *) const override;
     102             : 
     103             :     const char *GetInfo(const char *) override;
     104             : };
     105             : 
     106             : /************************************************************************/
     107             : /*                              VFKReaderSQLite                         */
     108             : /************************************************************************/
     109             : 
     110             : class VFKReaderSQLite : public VFKReader
     111             : {
     112             :   private:
     113             :     char *m_pszDBname;
     114             :     sqlite3 *m_poDB;
     115             :     bool m_bSpatial;
     116             :     bool m_bNewDb;
     117             :     bool m_bDbSource;
     118             : 
     119             :     IVFKDataBlock *CreateDataBlock(const char *) override;
     120             :     void AddDataBlock(IVFKDataBlock *, const char *) override;
     121             :     OGRErr AddFeature(IVFKDataBlock *, VFKFeature *) override;
     122             : 
     123             :     void StoreInfo2DB();
     124             : 
     125             :     void CreateIndex(const char *, const char *, const char *, bool = true);
     126             :     void CreateIndices();
     127             : 
     128             :     friend class VFKFeatureSQLite;
     129             : 
     130             :   public:
     131             :     explicit VFKReaderSQLite(const GDALOpenInfo *);
     132             :     virtual ~VFKReaderSQLite();
     133             : 
     134        1134 :     bool IsSpatial() const override
     135             :     {
     136        1134 :         return m_bSpatial;
     137             :     }
     138             : 
     139           0 :     bool IsPreProcessed() const override
     140             :     {
     141           0 :         return !m_bNewDb;
     142             :     }
     143             : 
     144          17 :     bool IsValid() const override
     145             :     {
     146          17 :         return m_poDB != nullptr;
     147             :     }
     148             : 
     149             :     int ReadDataBlocks(bool = false) override;
     150             :     int64_t ReadDataRecords(IVFKDataBlock * = nullptr) override;
     151             : 
     152             :     sqlite3_stmt *PrepareStatement(const char *);
     153             :     OGRErr ExecuteSQL(const char *, CPLErr = CE_Failure);
     154             :     OGRErr ExecuteSQL(sqlite3_stmt *&);
     155             : };
     156             : 
     157             : #endif  // GDAL_OGR_VFK_VFKREADERP_H_INCLUDED

Generated by: LCOV version 1.14