Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: STS Translator 4 : * Purpose: Definition of classes finding SDTS support into OGRDriver 5 : * framework. 6 : * Author: Frank Warmerdam, warmerdam@pobox.com 7 : * 8 : ****************************************************************************** 9 : * Copyright (c) 1999, Frank Warmerdam 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #ifndef OGR_SDTS_H_INCLUDED 15 : #define OGR_SDTS_H_INCLUDED 16 : 17 : #include "sdts_al.h" 18 : #include "ogrsf_frmts.h" 19 : 20 : class OGRSDTSDataSource; 21 : 22 : /************************************************************************/ 23 : /* OGRSDTSLayer */ 24 : /************************************************************************/ 25 : 26 : class OGRSDTSLayer final : public OGRLayer 27 : { 28 : OGRFeatureDefn *poFeatureDefn; 29 : 30 : SDTSTransfer *poTransfer; 31 : int iLayer; 32 : SDTSIndexedReader *poReader; 33 : 34 : OGRSDTSDataSource *poDS; 35 : 36 : OGRFeature *GetNextUnfilteredFeature(); 37 : 38 : public: 39 : OGRSDTSLayer(SDTSTransfer *, int, OGRSDTSDataSource *); 40 : ~OGRSDTSLayer(); 41 : 42 : void ResetReading() override; 43 : OGRFeature *GetNextFeature() override; 44 : 45 52 : OGRFeatureDefn *GetLayerDefn() override 46 : { 47 52 : return poFeatureDefn; 48 : } 49 : 50 : int TestCapability(const char *) override; 51 : }; 52 : 53 : /************************************************************************/ 54 : /* OGRSDTSDataSource */ 55 : /************************************************************************/ 56 : 57 : class OGRSDTSDataSource final : public GDALDataset 58 : { 59 : SDTSTransfer *poTransfer; 60 : 61 : int nLayers; 62 : OGRSDTSLayer **papoLayers; 63 : 64 : OGRSpatialReference *poSRS; 65 : 66 : public: 67 : OGRSDTSDataSource(); 68 : ~OGRSDTSDataSource(); 69 : 70 : int Open(const char *pszFilename, int bTestOpen); 71 : 72 44 : int GetLayerCount() override 73 : { 74 44 : return nLayers; 75 : } 76 : 77 : OGRLayer *GetLayer(int) override; 78 : }; 79 : 80 : #endif /* ndef OGR_SDTS_H_INCLUDED */