void loadDataMap( dataFileIO& file , dataMap_t& dataMap , void* ptr ) { if ( dataMap.baseDataMap ) loadDataMap( file , *dataMap.baseDataMap , ptr ); for ( int i = 0 ; i < dataMap.numDataField ; ++i ) { dataFieldBase* df = dataMap.dataFieldArray[i]; df->load( file , ptr ); } }
MapFile::MapFile(QString filename, QObject *parent) : QObject(parent), _filename(filename) { Q_ASSERT(!filename.isEmpty()); QFile load_file(_filename); try { if (load_file.exists()){ if (load_file.open(QIODevice::ReadOnly)){ loadDataMap(load_file); } } else { if (load_file.open(QIODevice::ReadWrite)) { QJsonDocument data_doc = QJsonDocument(QJsonObject::fromVariantMap(QVariantMap())); load_file.write(data_doc.toJson()); loadDataMap(load_file); } } } catch (QException e) { //TODO: handle catch } }