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