Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <vector>
00019
00020 #include <OpenKarto/MetaClass.h>
00021
00022 namespace karto
00023 {
00024
00028
00029 struct MetaArgsPrivate
00030 {
00031 std::vector<Any> m_Arguments;
00032 };
00033
00034 MetaArguments::MetaArguments()
00035 : m_pPrivate(new MetaArgsPrivate)
00036 {
00037 }
00038
00039 MetaArguments::MetaArguments(const Any& a0)
00040 : m_pPrivate(new MetaArgsPrivate)
00041 {
00042 m_pPrivate->m_Arguments.push_back(a0);
00043 }
00044
00045 MetaArguments::MetaArguments(const Any& a0, const Any& a1)
00046 : m_pPrivate(new MetaArgsPrivate)
00047 {
00048 m_pPrivate->m_Arguments.push_back(a0);
00049 m_pPrivate->m_Arguments.push_back(a1);
00050 }
00051
00052 MetaArguments::MetaArguments(const Any& a0, const Any& a1, const Any& a2)
00053 : m_pPrivate(new MetaArgsPrivate)
00054 {
00055 m_pPrivate->m_Arguments.push_back(a0);
00056 m_pPrivate->m_Arguments.push_back(a1);
00057 m_pPrivate->m_Arguments.push_back(a2);
00058 }
00059
00060 MetaArguments::MetaArguments(const Any& a0, const Any& a1, const Any& a2, const Any& a3)
00061 : m_pPrivate(new MetaArgsPrivate)
00062 {
00063 m_pPrivate->m_Arguments.push_back(a0);
00064 m_pPrivate->m_Arguments.push_back(a1);
00065 m_pPrivate->m_Arguments.push_back(a2);
00066 m_pPrivate->m_Arguments.push_back(a3);
00067 }
00068
00069 MetaArguments::MetaArguments(const Any& a0, const Any& a1, const Any& a2, const Any& a3, const Any& a4)
00070 : m_pPrivate(new MetaArgsPrivate)
00071 {
00072 m_pPrivate->m_Arguments.push_back(a0);
00073 m_pPrivate->m_Arguments.push_back(a1);
00074 m_pPrivate->m_Arguments.push_back(a2);
00075 m_pPrivate->m_Arguments.push_back(a3);
00076 m_pPrivate->m_Arguments.push_back(a4);
00077 }
00078
00079 MetaArguments::~MetaArguments()
00080 {
00081 delete m_pPrivate;
00082 }
00083
00084 kt_size_t MetaArguments::GetCount() const
00085 {
00086 return m_pPrivate->m_Arguments.size();
00087 }
00088
00089 const Any& MetaArguments::operator[](kt_size_t index) const
00090 {
00091 assert(index >= 0 && index < GetCount());
00092 return m_pPrivate->m_Arguments[index];
00093 }
00094
00098
00099 MetaClass::MetaClass(const karto::String& rName)
00100 : m_Name(rName)
00101 {
00102 }
00103
00104 MetaClass::~MetaClass()
00105 {
00106 }
00107
00108 const karto::String& MetaClass::GetName() const
00109 {
00110 return m_Name;
00111 }
00112
00113 kt_size_t MetaClass::GetBaseSize() const
00114 {
00115 return m_BaseClasses.Size();
00116 }
00117
00118 const MetaClass& MetaClass::GetBase(kt_size_t index) const
00119 {
00120 if (index >= m_BaseClasses.Size())
00121 {
00122 assert(false);
00123 throw karto::Exception("MetaClass::GetBase() - Index out of range");
00124 }
00125
00126 return *m_BaseClasses[index];
00127 }
00128
00129 bool MetaClass::operator==(const MetaClass& rOther) const
00130 {
00131 return m_Name == rOther.m_Name;
00132 }
00133
00134 bool MetaClass::operator!=(const MetaClass& rOther) const
00135 {
00136 return m_Name != rOther.m_Name;
00137 }
00138
00142
00143 }