40 lines
921 B
C++
40 lines
921 B
C++
/*
|
||
* ObjectAddress.hh
|
||
*
|
||
* Created on: 15 апр. 2022 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#ifndef UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_
|
||
#define UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_
|
||
|
||
#include <typeinfo>
|
||
|
||
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<typename Object>
|
||
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_ */
|