MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/systemic/ObjectAddress.hh

40 lines
863 B
C++
Raw Normal View History

/*
* ObjectAddress.hh
*
* Created on: 15 <EFBFBD><EFBFBD><EFBFBD>. 2022 <EFBFBD>.
* Author: titov
*/
#ifndef UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_
#define UMLIBRARY_SCHEMATIC_OBJECTADDRESS_HH_
#include <typeinfo>
namespace systemic {
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> POD <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
struct Addressable {
virtual const void * address() const = 0;
virtual std::size_t size() const = 0;
virtual std::size_t type_hash() const = 0;
};
//!<21><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
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_ */