#ifndef STRUCTURECALCULATIONDATA_H #define STRUCTURECALCULATIONDATA_H #include "../StructureCalculation/ScantlingCalculation.h" #include "../StructureCalculation/StrengthCalculation.h" #include #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 &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 m_DataRows; // CSX中DataRows节点下的所有数据 std::vector m_ModuleNames; QMap m_childModules; // CSX中ChildModules节点下的所有子模块数据 std::vector m_childModuleNames; std::unique_ptr<::strength_set::StrengthSet> m_StrengthSet; // XSD表内存映射,也是总纵强度的计算输入 }; #endif