Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: R Format Driver 4 : * Purpose: Read/write R stats package object format. 5 : * Author: Frank Warmerdam, warmerdam@pobox.com 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2009, Frank Warmerdam <warmerdam@pobox.com> 9 : * Copyright (c) 2009-2010, Even Rouault <even dot rouault at spatialys.com> 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #ifndef RDATASET_H_INCLUDED 15 : #define RDATASET_H_INCLUDED 16 : 17 : #include <cstddef> 18 : #include <cstdlib> 19 : #include <cstring> 20 : #include <string> 21 : #if HAVE_FCNTL_H 22 : #include <fcntl.h> 23 : #endif 24 : 25 : #include "cpl_conv.h" 26 : #include "cpl_error.h" 27 : #include "cpl_port.h" 28 : #include "cpl_progress.h" 29 : #include "cpl_string.h" 30 : #include "cpl_vsi.h" 31 : #include "gdal.h" 32 : #include "gdal_frmts.h" 33 : #include "gdal_pam.h" 34 : #include "gdal_priv.h" 35 : #include "rawdataset.h" 36 : 37 : GDALDataset *RCreateCopy(const char *pszFilename, GDALDataset *poSrcDS, 38 : int bStrict, char **papszOptions, 39 : GDALProgressFunc pfnProgress, void *pProgressData); 40 : 41 : /************************************************************************/ 42 : /* ==================================================================== */ 43 : /* RDataset */ 44 : /* ==================================================================== */ 45 : /************************************************************************/ 46 : 47 : class RDataset final : public GDALPamDataset 48 : { 49 : friend class RRasterBand; 50 : VSILFILE *fp; 51 : int bASCII; 52 : CPLString osLastStringRead; 53 : 54 : vsi_l_offset nStartOfData; 55 : 56 : double *padfMatrixValues; 57 : 58 : const char *ASCIIFGets(); 59 : int ReadInteger(); 60 : double ReadFloat(); 61 : const char *ReadString(); 62 : bool ReadPair(CPLString &osItemName, int &nItemType); 63 : 64 : public: 65 : RDataset(); 66 : ~RDataset(); 67 : 68 : static GDALDataset *Open(GDALOpenInfo *); 69 : static int Identify(GDALOpenInfo *); 70 : }; 71 : 72 : /************************************************************************/ 73 : /* ==================================================================== */ 74 : /* RRasterBand */ 75 : /* ==================================================================== */ 76 : /************************************************************************/ 77 : 78 : class RRasterBand final : public GDALPamRasterBand 79 : { 80 : friend class RDataset; 81 : 82 : const double *padfMatrixValues; 83 : 84 : public: 85 : RRasterBand(RDataset *, int, const double *); 86 : 87 14 : virtual ~RRasterBand() 88 7 : { 89 14 : } 90 : 91 : virtual CPLErr IReadBlock(int, int, void *) override; 92 : }; 93 : 94 : #endif /* RDATASET_H_INCLUDED */