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

          Line data    Source code
       1             : /******************************************************************************
       2             :  * $Id$
       3             :  *
       4             :  * Project:  OpenGIS Simple Features Reference Implementation
       5             :  * Purpose:  Private definitions within the OGR GMT driver.
       6             :  * Author:   Frank Warmerdam, warmerdam@pobox.com
       7             :  *
       8             :  ******************************************************************************
       9             :  * Copyright (c) 2007, Frank Warmerdam <warmerdam@pobox.com>
      10             :  *
      11             :  * SPDX-License-Identifier: MIT
      12             :  ****************************************************************************/
      13             : 
      14             : #ifndef OGRGMT_H_INCLUDED
      15             : #define OGRGMT_H_INCLUDED
      16             : 
      17             : #include "ogrsf_frmts.h"
      18             : #include "ogr_api.h"
      19             : #include "cpl_string.h"
      20             : 
      21             : /************************************************************************/
      22             : /*                             OGRGmtLayer                              */
      23             : /************************************************************************/
      24             : 
      25             : class OGRGmtLayer final : public OGRLayer,
      26             :                           public OGRGetNextFeatureThroughRaw<OGRGmtLayer>
      27             : {
      28             :     GDALDataset *m_poDS = nullptr;
      29             :     OGRSpatialReference *m_poSRS = nullptr;
      30             :     OGRFeatureDefn *poFeatureDefn;
      31             : 
      32             :     int iNextFID;
      33             : 
      34             :     bool bUpdate;
      35             :     bool bHeaderComplete;
      36             : 
      37             :     bool bRegionComplete;
      38             :     OGREnvelope sRegion;
      39             :     vsi_l_offset nRegionOffset;
      40             : 
      41             :     VSILFILE *m_fp = nullptr;
      42             : 
      43             :     bool ReadLine();
      44             :     CPLString osLine;
      45             :     char **papszKeyedValues;
      46             : 
      47             :     bool ScanAheadForHole();
      48             :     bool NextIsFeature();
      49             : 
      50             :     OGRFeature *GetNextRawFeature();
      51             : 
      52             :     OGRErr WriteGeometry(OGRGeometryH hGeom, bool bHaveAngle);
      53             :     OGRErr CompleteHeader(OGRGeometry *);
      54             : 
      55             :   public:
      56             :     bool bValidFile;
      57             : 
      58             :     OGRGmtLayer(GDALDataset *poDS, const char *pszFilename, VSILFILE *fp,
      59             :                 const OGRSpatialReference *poSRS, int bUpdate);
      60             :     virtual ~OGRGmtLayer();
      61             : 
      62             :     void ResetReading() override;
      63          50 :     DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(OGRGmtLayer)
      64             : 
      65         352 :     OGRFeatureDefn *GetLayerDefn() override
      66             :     {
      67         352 :         return poFeatureDefn;
      68             :     }
      69             : 
      70             :     OGRErr GetExtent(OGREnvelope *psExtent, int bForce) override;
      71             : 
      72           0 :     virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
      73             :                              int bForce) override
      74             :     {
      75           0 :         return OGRLayer::GetExtent(iGeomField, psExtent, bForce);
      76             :     }
      77             : 
      78             :     OGRErr ICreateFeature(OGRFeature *poFeature) override;
      79             : 
      80             :     virtual OGRErr CreateField(const OGRFieldDefn *poField,
      81             :                                int bApproxOK = TRUE) override;
      82             : 
      83             :     int TestCapability(const char *) override;
      84             : 
      85          17 :     GDALDataset *GetDataset() override
      86             :     {
      87          17 :         return m_poDS;
      88             :     }
      89             : };
      90             : 
      91             : /************************************************************************/
      92             : /*                           OGRGmtDataSource                           */
      93             : /************************************************************************/
      94             : 
      95             : class OGRGmtDataSource final : public GDALDataset
      96             : {
      97             :     OGRGmtLayer **papoLayers;
      98             :     int nLayers;
      99             : 
     100             :     bool bUpdate;
     101             : 
     102             :   public:
     103             :     OGRGmtDataSource();
     104             :     virtual ~OGRGmtDataSource();
     105             : 
     106             :     int Open(const char *pszFilename, VSILFILE *fp,
     107             :              const OGRSpatialReference *poSRS, int bUpdate);
     108             : 
     109           3 :     int GetLayerCount() override
     110             :     {
     111           3 :         return nLayers;
     112             :     }
     113             : 
     114             :     OGRLayer *GetLayer(int) override;
     115             : 
     116             :     OGRLayer *ICreateLayer(const char *pszName,
     117             :                            const OGRGeomFieldDefn *poGeomFieldDefn,
     118             :                            CSLConstList papszOptions) override;
     119             :     int TestCapability(const char *) override;
     120             : };
     121             : 
     122             : #endif /* ndef OGRGMT_H_INCLUDED */

Generated by: LCOV version 1.14