| 11 | |
| 12 | namespace MdfLibrary { |
| 13 | class MdfMetaData { |
| 14 | private: |
| 15 | mdf::IMetaData* metaData; |
| 16 | |
| 17 | public: |
| 18 | MdfMetaData(mdf::IMetaData* metaData) : metaData(metaData) { |
| 19 | if (metaData == nullptr) throw std::runtime_error("MdfMetaData Init failed"); |
| 20 | } |
| 21 | MdfMetaData(const mdf::IMetaData* metaData) |
| 22 | : MdfMetaData(const_cast<mdf::IMetaData*>(metaData)) {} |
| 23 | ~MdfMetaData() { metaData = nullptr; } |
| 24 | std::string GetPropertyAsString(const char* index) { |
| 25 | std::string str(MdfMetaDataGetPropertyAsString(metaData, index, nullptr) + 1, '\0'); |
| 26 | str.resize(MdfMetaDataGetPropertyAsString(metaData, index, str.data())); |
| 27 | return str; |
| 28 | } |
| 29 | void SetPropertyAsString(const char* index, const char* prop) { |
| 30 | MdfMetaDataSetPropertyAsString(metaData, index, prop); |
| 31 | } |
| 32 | double GetPropertyAsFloat(const char* index) { |
| 33 | return MdfMetaDataGetPropertyAsFloat(metaData, index); |
| 34 | } |
| 35 | void SetPropertyAsFloat(const char* index, double prop) { |
| 36 | MdfMetaDataSetPropertyAsFloat(metaData, index, prop); |
| 37 | } |
| 38 | std::vector<MdfETag> GetProperties() const { |
| 39 | size_t count = MdfMetaDataGetProperties(metaData, nullptr); |
| 40 | if (count <= 0) return {}; |
| 41 | auto pTags = new mdf::ETag*[count]; |
| 42 | MdfMetaDataGetProperties(metaData, pTags); |
| 43 | std::vector<MdfETag> tags; |
| 44 | for (size_t i = 0; i < count; i++) tags.push_back(pTags[i]); |
| 45 | delete[] pTags; |
| 46 | return tags; |
| 47 | } |
| 48 | std::vector<MdfETag> GetCommonProperties() const { |
| 49 | size_t count = MdfMetaDataGetCommonProperties(metaData, nullptr); |
| 50 | if (count <= 0) return {}; |
| 51 | auto pTags = new mdf::ETag*[count]; |
| 52 | MdfMetaDataGetCommonProperties(metaData, pTags); |
| 53 | std::vector<MdfETag> tags; |
| 54 | for (size_t i = 0; i < count; i++) tags.push_back(pTags[i]); |
| 55 | delete[] pTags; |
| 56 | return tags; |
| 57 | } |
| 58 | void SetCommonProperties(const std::vector<MdfETag> pProperty, size_t count) { |
| 59 | auto pTags = new const mdf::ETag*[count]; |
| 60 | for (size_t i = 0; i < count; i++) pTags[i] = pProperty[i].GetETag(); |
| 61 | MdfMetaDataSetCommonProperties(metaData, pTags, count); |
| 62 | delete[] pTags; |
| 63 | } |
| 64 | std::string GetXmlSnippet() const { |
| 65 | std::string str(MdfMetaDataGetXmlSnippet(metaData, nullptr) + 1, '\0'); |
| 66 | str.resize(MdfMetaDataGetXmlSnippet(metaData, str.data())); |
| 67 | return str; |
| 68 | } |
| 69 | void SetXmlSnippet(const char* xml) { |
| 70 | MdfMetaDataSetXmlSnippet(metaData, xml); |
no outgoing calls
no test coverage detected