From: Gunnar Beutner Date: Tue, 5 Nov 2013 07:48:45 +0000 (+0100) Subject: Implement Type::GetBaseType(). X-Git-Tag: v0.0.4~56^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b5b56e5438e3596174798d50e6166cc520fefee9;p=icinga2 Implement Type::GetBaseType(). Refs #4996 --- 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