File indexing completed on 2024-06-16 03:42:51
0001 /* 0002 File : SpiceFilter.h 0003 Project : LabPlot 0004 Description : Filters for reading spice files 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2022 Martin Marmsoler <martin.marmsoler@gmail.com> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 #ifndef SPICEFILTER_H 0010 #define SPICEFILTER_H 0011 0012 #include "backend/core/AbstractColumn.h" 0013 #include "backend/datasources/filters/AbstractFileFilter.h" 0014 0015 class SpiceFilterPrivate; 0016 0017 // NgSpice/LtSpice Filter 0018 class SpiceFilter : public AbstractFileFilter { 0019 Q_OBJECT 0020 0021 public: 0022 SpiceFilter(); 0023 ~SpiceFilter() override; 0024 0025 static bool isSpiceFile(const QString& fileName, bool* binary = nullptr); 0026 static QString fileInfoString(const QString&); 0027 0028 QVector<QStringList> preview(const QString& fileName, int lines); 0029 void 0030 readDataFromFile(const QString& fileName, AbstractDataSource* = nullptr, AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace) override; 0031 void write(const QString& fileName, AbstractDataSource*) override; 0032 0033 QStringList vectorNames() const; 0034 QVector<AbstractColumn::ColumnMode> columnModes(); 0035 0036 void setStartRow(const int); 0037 int startRow() const; 0038 void setEndRow(const int); 0039 int endRow() const; 0040 0041 #ifdef SPICEFILTERTEST_EN 0042 void setReaderBulkLineCount(int count) { 0043 mBulkLineCount = count; 0044 } 0045 int mBulkLineCount{100000}; 0046 #endif 0047 0048 void save(QXmlStreamWriter*) const override; 0049 bool load(XmlStreamReader*) override; 0050 0051 static const QString xmlElementName; 0052 0053 protected: 0054 std::unique_ptr<SpiceFilterPrivate> const d; 0055 }; 0056 0057 #endif // SPICEFILTER_H