diff --git a/Source/Processors/Channel/MetaData.cpp b/Source/Processors/Channel/MetaData.cpp index 6e73d3d0351ce6a2c1876b937ec514b47c8c5b81..7fa9aee1c28ce3966845df0197f0d36efd3110ce 100644 --- a/Source/Processors/Channel/MetaData.cpp +++ b/Source/Processors/Channel/MetaData.cpp @@ -39,6 +39,7 @@ bool checkMetaDataType(MetaDataDescriptor::MetaDataTypes baseType) case MetaDataDescriptor::UINT32: return std::is_same<uint32, T>::value; case MetaDataDescriptor::INT64: return std::is_same<int64, T>::value; case MetaDataDescriptor::UINT64: return std::is_same<uint64, T>::value; + default: return false; } } @@ -300,6 +301,18 @@ const int MetaDataInfoObject::getMetaDataCount() const return m_metaDataDescriptorArray.size(); } +int MetaDataInfoObject::findMetaData(MetaDataDescriptor::MetaDataTypes type, unsigned int length, String descriptor) const +{ + int nMetaData = m_metaDataDescriptorArray.size(); + for (int i = 0; i < nMetaData; i++) + { + MetaDataDescriptorPtr md = m_metaDataDescriptorArray[i]; + if (md->getType() == type && md->getLength() == length && (descriptor.isEmpty() || descriptor.equalsIgnoreCase(md->getDescriptor()))) + return i; + } + return -1; +} + //MetaDataEventObject MetaDataEventObject::MetaDataEventObject() {} @@ -343,6 +356,18 @@ const int MetaDataEventObject::getEventMetaDataCount() const return m_eventMetaDataDescriptorArray.size(); } +int MetaDataEventObject::findEventMetaData(MetaDataDescriptor::MetaDataTypes type, unsigned int length, String descriptor) const +{ + int nMetaData = m_eventMetaDataDescriptorArray.size(); + for (int i = 0; i < nMetaData; i++) + { + MetaDataDescriptorPtr md = m_eventMetaDataDescriptorArray[i]; + if (md->getType() == type && md->getLength() == length && (descriptor.isEmpty() || descriptor.equalsIgnoreCase(md->getDescriptor()))) + return i; + } + return -1; +} + //MetaDataEvent MetaDataEvent::MetaDataEvent() {} diff --git a/Source/Processors/Channel/MetaData.h b/Source/Processors/Channel/MetaData.h index 60801fc3ccfb9fee28003c56fe1e1acf6376f11e..5dd992ba34d9b50efa8cc96831cceadf6aa63c3f 100644 --- a/Source/Processors/Channel/MetaData.h +++ b/Source/Processors/Channel/MetaData.h @@ -175,13 +175,14 @@ public: void addMetaData(const MetaDataDescriptor& desc, const MetaDataValue& val); const MetaDataDescriptor* getMetaDataDescriptor(int index) const; const MetaDataValue* getMetaDataValue(int index) const; + int findMetaData(MetaDataDescriptor::MetaDataTypes type, unsigned int length, String descriptor = String::empty) const; const int getMetaDataCount() const; protected: MetaDataDescriptorArray m_metaDataDescriptorArray; MetaDataValueArray m_metaDataValueArray; }; -class MetaDataEventLock +class PLUGIN_API MetaDataEventLock { //GenericProcessor will set this to true when copying channels in the update method so no other processor but the one which //created the object can call addEventMetaData. This is done this way because since the events themselves are created by the @@ -201,6 +202,7 @@ public: void addEventMetaData(MetaDataDescriptor* desc); void addEventMetaData(const MetaDataDescriptor& desc); const MetaDataDescriptor* getEventMetaDataDescriptor(int index) const; + int findEventMetaData(MetaDataDescriptor::MetaDataTypes type, unsigned int length, String descriptor = String::empty) const; size_t getTotalEventMetaDataSize() const; const int getEventMetaDataCount() const; protected: