COMPASSi/trunk/code/inc/DataManager/Infrastructure.Data/DataContainer/StructureCalculationData.h

62 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef STRUCTURECALCULATIONDATA_H
#define STRUCTURECALCULATIONDATA_H
#include "../StructureCalculation/ScantlingCalculation.h"
#include "../StructureCalculation/StrengthCalculation.h"
#include <QMap>
#include "Serialization.h"
#include "DataBlock.h"
// 该类是结构计算的数据容器类继承自Serialization
// 用于存储结构计算相关的数据包括CXS中结构计算数据块以及XSD表的内存映射
class StructureCalculationData : public Serialization
{
public:
StructureCalculationData()
{
}
~StructureCalculationData()
{
for (auto it = m_DataRows.begin(); it != m_DataRows.end(); ++it)
{
delete it.value();
}
m_DataRows.clear();
for (auto it = m_childModules.begin(); it != m_childModules.end(); ++it)
{
delete it.value();
}
m_childModules.clear();
}
int fromXml(const pugi::xml_node node);
int toXml(pugi::xml_node node);
void saveStructureCalcData(QString path);
// void updateData()
// {
// m_CalcBaseData.updateData();
// }
std::vector<std::string> &getAnalyseNameList();
private:
QString getDataRowValue(const QString &key);
void addOrUpdateDataRow(const QString &key, QString value = "", QString caption = "", QString remark = "");
bool createDataRow(const QString &key, QString value = "", QString caption = "", QString remark = "");
bool isEmpty();
bool CreateChildModulus(const QString &key, QString caption = "", QString remark = "");
private:
StructureCalDataBlock m_StructureCal; // 存储结构计算csx中xml节点值和相关子模块
QMap<QString, DataRowInf *> m_DataRows; // CSX中DataRows节点下的所有数据
std::vector<std::string> m_ModuleNames;
QMap<QString, DataRowInf *> m_childModules; // CSX中ChildModules节点下的所有子模块数据
std::vector<std::string> m_childModuleNames;
std::unique_ptr<::strength_set::StrengthSet> m_StrengthSet; // XSD表内存映射也是总纵强度的计算输入
};
#endif