File indexing completed on 2024-06-16 03:42:49
0001 /* 0002 File : ReadStatFilter.h 0003 Project : LabPlot 0004 Description : ReadStat I/O-filter 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2021 Stefan Gerlach <stefan.gerlach@uni.kn> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 #ifndef READSTATFILTER_H 0010 #define READSTATFILTER_H 0011 0012 #include "backend/datasources/filters/AbstractFileFilter.h" 0013 0014 #ifdef HAVE_READSTAT 0015 #include <readstat.h> 0016 #endif 0017 0018 class ReadStatFilterPrivate; 0019 0020 class ReadStatFilter : public AbstractFileFilter { 0021 Q_OBJECT 0022 0023 public: 0024 ReadStatFilter(); 0025 ~ReadStatFilter() override; 0026 0027 #ifdef HAVE_READSTAT 0028 static int getMetaData(readstat_metadata_t*, void*); 0029 #endif 0030 0031 static QString fileInfoString(const QString&); 0032 0033 QVector<QStringList> preview(const QString& fileName, int lines); 0034 void 0035 readDataFromFile(const QString& fileName, AbstractDataSource* = nullptr, AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace) override; 0036 void write(const QString& fileName, AbstractDataSource*) override; 0037 0038 QStringList vectorNames() const; 0039 QVector<AbstractColumn::ColumnMode> columnModes() const; 0040 0041 // TODO: put into base class? 0042 void setStartRow(const int); 0043 int startRow() const; 0044 void setEndRow(const int); 0045 int endRow() const; 0046 void setStartColumn(const int); 0047 int startColumn() const; 0048 void setEndColumn(const int); 0049 int endColumn() const; 0050 0051 void save(QXmlStreamWriter*) const override; 0052 bool load(XmlStreamReader*) override; 0053 0054 private: 0055 std::unique_ptr<ReadStatFilterPrivate> const d; 0056 friend class ReadStatFilterPrivate; 0057 }; 0058 0059 #endif