17#if __DCL_HAVE_THIS_FILE__
25const Object::ClassInfo Object::__classInfo =
30const Object::ClassInfo* Object::classInfo()
const
37 return String(classInfo()->pszClassName);
40bool Object::isKindOf(
const Object::ClassInfo* pClassInfo)
const
42 const ClassInfo* pChildInfo = classInfo();
45 if (pChildInfo == pClassInfo)
48 pChildInfo = pChildInfo->pBaseClassInfo;
56 return classInfo() == pClassInfo;
132static String __getDemangledTypeName(
const std::type_info& info)
134 const char* demangled =
NULL;
138 const char* _p = strchr(info.name(),
' ');
140 while(*_p ==
' ') _p++;
144 demangled = info.name();
146#elif defined(__GNUC__)
151 demangled = __cxxabiv1::__cxa_demangle(info.name(), buf, &n, &status);
165 return __getDemangledTypeName(
typeInfo());
198void Object::dump(
Writer& out)
const
200 out << L
"\n==========================\n"
202 << L
"\n--------------------------\n";
206#if __DCL_HAVE_ALLOC_DEBUG
209void* Object::operator
new(
219 return DCLDebugMalloc(
222 DCL_ALLOC_NEW_OBJECT,
228void* Object::operator
new[](
238 return DCLDebugMalloc(
241 DCL_ALLOC_NEW_OBJECT_ARRAY,
247void Object::operator
delete(
256 DCL_ALLOC_DELETE_OBJECT,
262void Object::operator
delete[](
271 DCL_ALLOC_DELETE_OBJECT_ARRAY,
278#pragma clang diagnostic push
279#pragma clang diagnostic ignored "-Wnew-returns-null"
282void* Object::operator
new(size_t)
288void* Object::operator
new[](size_t)
295#pragma clang diagnostic pop
298void Object::operator
delete(
void* _ptr)
noexcept
300 Object::operator
delete(_ptr,
true,
NULL, 0);
303void Object::operator
delete[](
void* _ptr)
noexcept
305 Object::operator
delete[](_ptr,
true,
NULL, 0);
#define __countof(array, type)
#define CLASSINFO(class_name)
#define __DCL_ASSERT_EX(expr, msg)
static String decode(const char *_mbs, size_t _mbslen=(size_t) -1)
virtual const std::type_info & typeInfo() const
virtual String toString() const
bool isInstanceOf(const std::type_info &typeinfo) const