00001 00034 #include "linden_common.h" 00035 00036 #include "metaclass.h" 00037 00038 #include "metaproperty.h" 00039 #include "reflective.h" 00040 00041 LLMetaClass::LLMetaClass() 00042 { 00043 } 00044 00045 //virtual 00046 LLMetaClass::~LLMetaClass() 00047 { 00048 } 00049 00050 const LLMetaProperty* LLMetaClass::findProperty(const std::string& name) const 00051 { 00052 PropertyIterator iter = mProperties.find(name); 00053 if(iter == mProperties.end()) 00054 { 00055 return NULL; 00056 } 00057 return (*iter).second; 00058 } 00059 00060 void LLMetaClass::addProperty(const LLMetaProperty* property) 00061 { 00062 mProperties.insert(std::make_pair(property->getName(), property)); 00063 } 00064 00065 U32 LLMetaClass::getPropertyCount() const 00066 { 00067 return mProperties.size(); 00068 } 00069 00070 LLMetaClass::PropertyIterator LLMetaClass::beginProperties() const 00071 { 00072 return mProperties.begin(); 00073 } 00074 00075 LLMetaClass::PropertyIterator LLMetaClass::endProperties() const 00076 { 00077 return mProperties.end(); 00078 } 00079 00080 bool LLMetaClass::isInstance(const LLReflective* object) const 00081 { 00082 // TODO: Babbage: Search through super classes of objects MetaClass. 00083 const LLMetaClass* object_meta_class = &(object->getMetaClass()); 00084 return (object_meta_class == this); 00085 } 00086