cimforreduceloss/testHasttable/cimexporter.h

50 lines
1.1 KiB
C++

#ifndef CIMEXPORTER_H
#define CIMEXPORTER_H
#include <QList>
#include "element/line.h"
#include "element/switch.h"
#include "element/transformer.h"
#include <QPair>
#include <QHash>
class CIMExporter
{
struct BranchStruc
{
QString fromID;
QString toID;
int fromNum;
int toNum;
};
struct LineStru:public BranchStruc
{
Line *line;
};
struct SwitchStru:public BranchStruc
{
Switch *sw;
};
struct TransformerStru:public BranchStruc
{
Transformer *tf;
};
public:
CIMExporter();
void add(const QPair<QString,QString>& fromTo,Line* line);
void add(const QPair<QString,QString>& fromTo,Switch* sw);
void add(const QPair<QString,QString>& fromTo,Transformer* tf);
void exportTo(const QString& path);
private:
QList<LineStru> line;
QList<SwitchStru> sw;
QList<TransformerStru> tf;
QHash<QString,int> number;
int numberIt(const QString &id);//编号
template<typename T>
void idToNumber(QList<T> &s);//把所有元件的标识进行编号
};
#endif // CIMEXPORTER_H