You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.3 KiB
C++
80 lines
3.3 KiB
C++
#include "CFDStructDataManagerBase.h"
|
|
|
|
CFDStructDataManagerBase::CFDStructDataManagerBase(QObject *parent) : QObject(parent)
|
|
{
|
|
m_cuiSigsCenter = CUISigsCenter::getInstance();
|
|
}
|
|
|
|
CFDStructDataManagerBase::~CFDStructDataManagerBase()
|
|
{
|
|
if (m_uiConfig != nullptr) {
|
|
delete m_uiConfig;
|
|
m_uiConfig = nullptr;
|
|
}
|
|
}
|
|
|
|
CUIConfig *CFDStructDataManagerBase::getParamUIConfig()
|
|
{
|
|
return nullptr;
|
|
}
|
|
|
|
// 写入json
|
|
void jsonAdd(rapidjson::Document& document, QVariant value, QVector<QVariant> path) {
|
|
using namespace rapidjson;
|
|
|
|
// 获取分配器
|
|
Document::AllocatorType& allocator = document.GetAllocator();
|
|
|
|
// 递归地创建路径中的对象
|
|
Value* current = &document;
|
|
for (int i = 0; i < path.size(); ++i) {
|
|
// const std::string& key = path[i];
|
|
QVariant key = path.at(i);
|
|
|
|
// 如果到了最后一层路径,设置值
|
|
if (i == path.size() - 1) {
|
|
|
|
if(key.type() == QVariant::String)
|
|
{
|
|
//如果是路径
|
|
// 检查路径末尾是否存在
|
|
if (current->HasMember(key.toString().toStdString().c_str())) {
|
|
if(value.type() == QVariant::Int)
|
|
(*current)[key.toString().toStdString().c_str()].SetInt(value.toInt()); // 如果存在则替换
|
|
if(value.type() == QVariant::Double)
|
|
(*current)[key.toString().toStdString().c_str()].SetDouble(value.toDouble()); // 如果存在则替换
|
|
if(value.type() == QVariant::String)
|
|
(*current)[key.toString().toStdString().c_str()].SetString(value.toString().toStdString().c_str(),allocator); // 如果存在则替换
|
|
} else {
|
|
|
|
if(value.type() == QVariant::Int)
|
|
current->AddMember(Value().SetString(key.toString().toStdString().c_str(), allocator), Value().SetInt(value.toInt()), allocator); // 不存在则添加
|
|
if(value.type() == QVariant::Double)
|
|
current->AddMember(Value().SetString(key.toString().toStdString().c_str(), allocator), Value().SetDouble(value.toDouble()), allocator); // 不存在则添加
|
|
if(value.type() == QVariant::String)
|
|
current->AddMember(Value().SetString(key.toString().toStdString().c_str(), allocator), Value().SetString(value.toString().toStdString().c_str(),allocator), allocator); // 不存在则添加
|
|
}
|
|
}else if(key.type() == QVariant::Int){
|
|
//如果是数组idx
|
|
|
|
}
|
|
} else {
|
|
if(key.type() == QVariant::String)
|
|
{
|
|
//如果是路径
|
|
|
|
// 检查是否存在该路径,不存在则创建
|
|
if (!current->HasMember(key.toString().toStdString().c_str())) {
|
|
Value newObject(kObjectType); // 创建一个新的对象
|
|
current->AddMember(Value().SetString(key.toString().toStdString().c_str(), allocator), newObject, allocator);
|
|
}
|
|
// 将 current 指向下一级
|
|
current = &(*current)[key.toString().toStdString().c_str()];
|
|
}else if(key.type() == QVariant::Int){
|
|
//如果是数组idx
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|