// $Source$ // $Revision$ // $Date$ // $Author$ #ifndef __rf_static_object_ih__ #define __rf_static_object_ih__ #include "rf_static_object.hh" namespace rftype { static inline void init_name(wchar_t** _dest, wchar_t const* _src, size_t _length) { *_dest = static_cast(malloc((_length + 1) * sizeof(wchar_t))); if (!*_dest) FATAL("Out of memory"); wmemcpy((*_dest) + 1, _src, _length); **_dest = L'&'; } template inline StaticObject::StaticObject ( ObjClass const& _obj, wchar_t const* _name, size_t _length ) : ObjClass (_obj), // name (_name), length (_length) { init_name(const_cast(&name), _name, length); } template inline StaticObject::StaticObject ( ObjClass const& _obj, wchar_t const* _name ) : ObjClass (_obj), length (wcslen(_name) + 1) { init_name(const_cast(&name), _name, length); } template inline StaticObject::StaticObject (wchar_t const* _name) : ObjClass (), length (wcslen(_name) + 1) { init_name(const_cast(&name), _name, length); } template inline StaticObject::~StaticObject () { free(const_cast(name)); } template inline void* StaticObject::operator new (size_t _size) { return ObjClass::operator new(_size); } template inline void StaticObject::operator delete (void* _ptr) { ObjClass::operator delete(_ptr); } template inline pxx::WString StaticObject::to_string() const { return pxx::WString(name, length, pxx::const_data); } template inline size_t StaticObject::get_name(wchar_t const** _name) const { *_name = name + 1; return length; } } #endif // __rf_static_object_ih__