property - first attempt
This commit is contained in:
@@ -35,6 +35,9 @@
|
||||
#include "boost/archive/polymorphic_xml_iarchive.hpp"
|
||||
#include "boost/archive/polymorphic_xml_oarchive.hpp"
|
||||
|
||||
#include <vector>
|
||||
#include "Property.h"
|
||||
|
||||
namespace uLib {
|
||||
|
||||
const char *Version::PackageName = PACKAGE_NAME;
|
||||
@@ -60,8 +63,43 @@ public:
|
||||
std::string m_InstanceName;
|
||||
Vector<Signal> sigv;
|
||||
Vector<Slot> slov;
|
||||
std::vector<PropertyBase*> m_Properties;
|
||||
};
|
||||
|
||||
// Implementations of Property methods
|
||||
void Object::RegisterProperty(PropertyBase* prop) {
|
||||
if (prop) d->m_Properties.push_back(prop);
|
||||
}
|
||||
|
||||
const std::vector<PropertyBase*>& Object::GetProperties() const {
|
||||
return d->m_Properties;
|
||||
}
|
||||
|
||||
// In Object.h, the template serialize needs to be updated to call property serialization.
|
||||
// However, since Object::serialize is a template in the header, we might need a helper here.
|
||||
|
||||
template <class ArchiveT>
|
||||
void Object::serialize(ArchiveT &ar, const unsigned int version) {
|
||||
ar & boost::serialization::make_nvp("InstanceName", d->m_InstanceName);
|
||||
for (auto* prop : d->m_Properties) {
|
||||
prop->serialize(ar, version);
|
||||
}
|
||||
}
|
||||
|
||||
void Object::Updated() { ULIB_SIGNAL_EMIT(Object::Updated); }
|
||||
|
||||
template <class ArchiveT>
|
||||
void Object::save_override(ArchiveT &ar, const unsigned int version) {}
|
||||
|
||||
// Explicitly instantiate for all uLib archives
|
||||
template void Object::serialize(Archive::xml_oarchive &, const unsigned int);
|
||||
template void Object::serialize(Archive::xml_iarchive &, const unsigned int);
|
||||
template void Object::serialize(Archive::text_oarchive &, const unsigned int);
|
||||
template void Object::serialize(Archive::text_iarchive &, const unsigned int);
|
||||
template void Object::serialize(Archive::hrt_oarchive &, const unsigned int);
|
||||
template void Object::serialize(Archive::hrt_iarchive &, const unsigned int);
|
||||
template void Object::serialize(Archive::log_archive &, const unsigned int);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -146,8 +184,6 @@ GenericMFPtr *Object::findSlotImpl(const char *name) const {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Object::Updated() { ULIB_SIGNAL_EMIT(Object::Updated); }
|
||||
|
||||
const std::string& Object::GetInstanceName() const {
|
||||
return d->m_InstanceName;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user