Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: OpenGIS Simple Features Reference Implementation 4 : * Purpose: Private definitions for OGR/GPSBabel driver. 5 : * Author: Even Rouault, <even dot rouault at spatialys.com> 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2010, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #ifndef OGR_GPSBABEL_H_INCLUDED 14 : #define OGR_GPSBABEL_H_INCLUDED 15 : 16 : #include "ogrsf_frmts.h" 17 : #include "cpl_string.h" 18 : #include <array> 19 : 20 : /************************************************************************/ 21 : /* OGRGPSBabelDataSource */ 22 : /************************************************************************/ 23 : 24 : class OGRGPSBabelDataSource final : public GDALDataset 25 : { 26 : int nLayers = 0; 27 : std::array<OGRLayer *, 5> apoLayers{ 28 : {nullptr, nullptr, nullptr, nullptr, nullptr}}; 29 : char *pszGPSBabelDriverName = nullptr; 30 : char *pszFilename = nullptr; 31 : CPLString osTmpFileName{}; 32 : GDALDataset *poGPXDS = nullptr; 33 : 34 : CPL_DISALLOW_COPY_ASSIGN(OGRGPSBabelDataSource) 35 : 36 : public: 37 : OGRGPSBabelDataSource(); 38 : virtual ~OGRGPSBabelDataSource(); 39 : 40 : virtual int CloseDependentDatasets() override; 41 : 42 5 : virtual int GetLayerCount() override 43 : { 44 5 : return nLayers; 45 : } 46 : 47 : virtual OGRLayer *GetLayer(int) override; 48 : 49 : int Open(const char *pszFilename, const char *pszGPSBabelDriverNameIn, 50 : char **papszOpenOptions); 51 : 52 : static bool IsSpecialFile(const char *pszFilename); 53 : static bool IsValidDriverName(const char *pszGPSBabelDriverName); 54 : }; 55 : 56 : /************************************************************************/ 57 : /* OGRGPSBabelWriteDataSource */ 58 : /************************************************************************/ 59 : 60 1 : class OGRGPSBabelWriteDataSource final : public GDALDataset 61 : { 62 : char *pszGPSBabelDriverName{}; 63 : char *pszFilename{}; 64 : CPLString osTmpFileName{}; 65 : GDALDataset *poGPXDS{}; 66 : 67 : bool Convert(); 68 : 69 : CPL_DISALLOW_COPY_ASSIGN(OGRGPSBabelWriteDataSource) 70 : 71 : public: 72 : OGRGPSBabelWriteDataSource(); 73 : virtual ~OGRGPSBabelWriteDataSource(); 74 : 75 : virtual int GetLayerCount() override; 76 : virtual OGRLayer *GetLayer(int) override; 77 : 78 : virtual int TestCapability(const char *) override; 79 : 80 : OGRLayer *ICreateLayer(const char *pszName, 81 : const OGRGeomFieldDefn *poGeomFieldDefn, 82 : CSLConstList papszOptions) override; 83 : 84 : int Create(const char *pszFilename, char **papszOptions); 85 : }; 86 : 87 : #endif /* ndef OGR_GPSBABEL_H_INCLUDED */