/* * ObjectAddress.hh * * Created on: 15 апр. 2022 г. * Author: titov */ #ifndef UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_ #define UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_ #include namespace systemic { //!Интерфейс передачи адреса POD данных. struct Addressable { virtual const void * address() const = 0; virtual std::size_t size() const = 0; virtual std::size_t type_hash() const = 0; }; //!Класс доступа адреса объекта. template class ObjectAddress : public Addressable { const Object * object = nullptr; public: ObjectAddress( const Object * object ) : object(object) {} const void * address() const { return object; } std::size_t size() const { return sizeof(Object); } std::size_t type_hash() const { return sizeof(Object); } }; } #endif /* UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_ */