Line data Source code
1 : /******************************************************************************* 2 : * Project: libopencad 3 : * Purpose: OpenSource CAD formats support library 4 : * Author: Alexandr Borzykh, mush3d at gmail.com 5 : * Author: Dmitry Baryshnikov, bishop.dev@gmail.com 6 : * Language: C++ 7 : ******************************************************************************* 8 : * The MIT License (MIT) 9 : * 10 : * Copyright (c) 2016 Alexandr Borzykh 11 : * Copyright (c) 2016 NextGIS, <info@nextgis.com> 12 : * 13 : * SPDX-License-Identifier: MIT 14 : *******************************************************************************/ 15 : 16 : #include "caddictionary.h" 17 : 18 : using namespace std; 19 : // 20 : // CADDictionaryRecord 21 : // 22 : 23 32 : CADDictionaryRecord::CADDictionaryRecord() : 24 32 : objType(CADObject::UNUSED) 25 : { 26 32 : } 27 : 28 0 : CADObject::ObjectType CADDictionaryRecord::getType() const 29 : { 30 0 : return objType; 31 : } 32 : 33 : // 34 : // CADXRecord 35 : // 36 : 37 24 : CADXRecord::CADXRecord() 38 : { 39 24 : objType = CADObject::XRECORD; 40 24 : } 41 : 42 0 : const string CADXRecord::getRecordData() const 43 : { 44 0 : return sRecordData; 45 : } 46 : 47 24 : void CADXRecord::setRecordData( const string& data ) 48 : { 49 24 : sRecordData = data; 50 24 : } 51 : 52 : // 53 : // CADDictionary 54 : // 55 : 56 8 : CADDictionary::CADDictionary() 57 : { 58 8 : objType = CADObject::DICTIONARY; 59 8 : } 60 : 61 8 : CADDictionary::~CADDictionary() 62 : { 63 8 : } 64 : 65 0 : size_t CADDictionary::getRecordsCount() 66 : { 67 0 : return astXRecords.size(); 68 : } 69 : 70 0 : CADDictionaryItem CADDictionary::getRecord( size_t index ) 71 : { 72 0 : return astXRecords[index]; 73 : } 74 : 75 24 : void CADDictionary::addRecord( CADDictionaryItem record ) 76 : { 77 24 : astXRecords.emplace_back( record ); 78 24 : } 79 : 80 8 : string CADDictionary::getRecordByName(const string& name) const 81 : { 82 32 : for( size_t i = 0; i < astXRecords.size(); ++i ) 83 : { 84 24 : if( astXRecords[i].first.compare(name) == 0 ) 85 : { 86 0 : std::shared_ptr<CADDictionaryRecord> XRecordPtr = astXRecords[i].second; 87 0 : if(XRecordPtr == nullptr || 88 0 : XRecordPtr->getType() != CADObject::XRECORD) 89 0 : continue; 90 0 : CADXRecord * poXRecord = static_cast<CADXRecord*>(XRecordPtr.get() ); 91 0 : return poXRecord->getRecordData(); 92 : } 93 : } 94 8 : return ""; 95 : }