#pragma once #include "import/fillings/filler.hpp" template class IdFiller : public Filler { public: IdFiller() : key(make_option< typename PropertyFamily::PropertyType::PropertyFamilyKey>()) { } IdFiller( Option::PropertyType::PropertyFamilyKey> key) : key(key) { assert(!key.is_present() || key.get().prop_type() == Type(Flags::Int64)); } // Fills skeleton with data from str. Returns error description if // error occurs. Option fill(ElementSkeleton &data, char *str) final { if (str[0] != '\0') { data.set_element_id(atol(str)); if (key.is_present()) { data.add_property(key.get(), std::make_shared(to_int64(str))); } } return make_option(); } private: Option::PropertyType::PropertyFamilyKey> key; };