Change base type for 'Type' to 'Object'

refs #9076
This commit is contained in:
Gunnar Beutner 2015-08-26 10:58:03 +02:00
parent 2109944580
commit ae214db0fc
1 changed files with 9 additions and 5 deletions

View File

@ -138,7 +138,7 @@ String TypeType::GetName(void) const
Type::Ptr TypeType::GetBaseType(void) const Type::Ptr TypeType::GetBaseType(void) const
{ {
return Type::Ptr(); return Object::TypeInstance;
} }
int TypeType::GetAttributes(void) const int TypeType::GetAttributes(void) const
@ -149,15 +149,19 @@ int TypeType::GetAttributes(void) const
int TypeType::GetFieldId(const String& name) const int TypeType::GetFieldId(const String& name) const
{ {
if (name == "prototype") if (name == "prototype")
return 0; return GetBaseType()->GetFieldCount() + 0;
else if (name == "base") else if (name == "base")
return 1; return GetBaseType()->GetFieldCount() + 1;
return -1; return GetBaseType()->GetFieldId(name);
} }
Field TypeType::GetFieldInfo(int id) const Field TypeType::GetFieldInfo(int id) const
{ {
int real_id = id - GetBaseType()->GetFieldCount();
if (real_id < 0)
return GetBaseType()->GetFieldInfo(id);
if (id == 0) if (id == 0)
return Field(0, "Object", "prototype", NULL, 0, 0); return Field(0, "Object", "prototype", NULL, 0, 0);
else if (id == 1) else if (id == 1)
@ -168,7 +172,7 @@ Field TypeType::GetFieldInfo(int id) const
int TypeType::GetFieldCount(void) const int TypeType::GetFieldCount(void) const
{ {
return 2; return GetBaseType()->GetFieldCount() + 2;
} }
ObjectFactory TypeType::GetFactory(void) const ObjectFactory TypeType::GetFactory(void) const