]> granicus.if.org Git - icinga2/commitdiff
Implement Type::GetBaseType().
authorGunnar Beutner <gunnar@beutner.name>
Tue, 5 Nov 2013 07:48:45 +0000 (08:48 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 5 Nov 2013 07:56:35 +0000 (08:56 +0100)
Refs #4996

lib/base/type.h
tools/mkclass/classcompiler.cpp

index 80bf242a70ac13a05ef48283ada488957deef3ba..48e71f73b6eb01af6911ce09868de364ab78588c 100644 (file)
@@ -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;
index 5ed6f5bfbacddc555904eb24abed242c2d18835e..0d651af0bba75c68e993aa7e06ac78cf53c92255 100644 (file)
@@ -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<TypeImpl<" << klass.Parent << "> >::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