File indexing completed on 2024-06-23 03:46:22
0001 /* 0002 File : NetCDFFilterPrivate.h 0003 Project : LabPlot 0004 Description : Private implementation class for NetCDFFilter. 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2015-2018 Stefan Gerlach <stefan.gerlach@uni.kn> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 #ifndef NETCDFFILTERPRIVATE_H 0011 #define NETCDFFILTERPRIVATE_H 0012 0013 #ifdef HAVE_NETCDF 0014 #include <netcdf.h> 0015 #endif 0016 0017 class AbstractDataSource; 0018 0019 class NetCDFFilterPrivate { 0020 public: 0021 explicit NetCDFFilterPrivate(NetCDFFilter*); 0022 0023 void parse(const QString& fileName, QTreeWidgetItem* rootItem); 0024 QVector<QStringList> 0025 readDataFromFile(const QString& fileName, AbstractDataSource* = nullptr, AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace); 0026 QString readAttribute(const QString& fileName, const QString& name, const QString& varName); 0027 QVector<QStringList> readCurrentVar(const QString& fileName, 0028 AbstractDataSource* = nullptr, 0029 AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace, 0030 int lines = -1); 0031 void write(const QString& fileName, AbstractDataSource*); 0032 #ifdef HAVE_NETCDF 0033 static void handleError(int status, const QString& function); 0034 static QString translateFormat(int format); 0035 static QString translateDataType(nc_type type); 0036 #endif 0037 0038 const NetCDFFilter* q; 0039 0040 QString currentVarName; 0041 int startRow{1}; 0042 int endRow{-1}; 0043 int startColumn{1}; 0044 int endColumn{-1}; 0045 0046 private: 0047 #ifdef HAVE_NETCDF 0048 int m_status; 0049 0050 QString scanAttrs(int ncid, int varid, int attid, QTreeWidgetItem* parentItem = nullptr); 0051 void scanDims(int ncid, int ndims, QTreeWidgetItem* parentItem); 0052 void scanVars(int ncid, int nvars, QTreeWidgetItem* parentItem); 0053 #endif 0054 }; 0055 0056 #endif