From b5b56e5438e3596174798d50e6166cc520fefee9 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 5 Nov 2013 08:48:45 +0100 Subject: [PATCH] Implement Type::GetBaseType(). Refs #4996 --- lib/base/type.h | 1 + tools/mkclass/classcompiler.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/base/type.h b/lib/base/type.h index 80bf242a7..48e71f73b 100644 --- a/lib/base/type.h +++ b/lib/base/type.h @@ -46,6 +46,7 @@ struct Field class I2_BASE_API Type { public: + virtual Type *GetBaseType(void) const = 0; virtual int GetFieldId(const String& name) const = 0; virtual Field GetFieldInfo(int id) const = 0; virtual int GetFieldCount(void) const = 0; diff --git a/tools/mkclass/classcompiler.cpp b/tools/mkclass/classcompiler.cpp index 5ed6f5bfb..0d651af0b 100644 --- a/tools/mkclass/classcompiler.cpp +++ b/tools/mkclass/classcompiler.cpp @@ -92,6 +92,20 @@ void ClassCompiler::HandleClass(const Klass& klass, const ClassDebugInfo& locp) << "{" << std::endl << "public:" << std::endl; + /* GetBaseType */ + std::cout << "\t" << "virtual Type *GetBaseType(void) const" << std::endl + << "\t" << "{" << std::endl; + + std::cout << "\t\t" << "return "; + + if (!klass.Parent.empty()) + std::cout << "Singleton >::GetInstance()"; + else + std::cout << "NULL"; + + std::cout << ";" << std::endl + << "\t" << "}" << std::endl << std::endl; + /* GetFieldId */ std::cout << "\t" << "virtual int GetFieldId(const String& name) const" << std::endl << "\t" << "{" << std::endl -- 2.40.0