Reflection of object properties.

This commit is contained in:
Jochem Berndsen
2012-05-04 15:15:12 +00:00
parent c9f9997e67
commit 7732801eb9
5 changed files with 2812 additions and 119 deletions
+19 -4
View File
@@ -33,6 +33,11 @@ typedef IfcAbstractEntity* IfcAbstractEntityPtr;
class IfcEntityList;
typedef SHARED_PTR<IfcEntityList> IfcEntities;
class Argument;
//typedef SHARED_PTR<Argument> ArgumentPtr;
typedef Argument* ArgumentPtr;
template <class F, class T>
inline T* reinterpret_pointer_cast(F* from) {
return (T*)from;
@@ -40,6 +45,12 @@ inline T* reinterpret_pointer_cast(F* from) {
//return std::tr1::static_pointer_cast<T,void>(v);
}
namespace IfcUtil {
enum ArgumentType {
INT, BOOL, DOUBLE, STRING, VECTOR_INT, VECTOR_DOUBLE, VECTOR_STRING, ENTITY, ENTITY_LIST, ENUMERATION, UNKNOWN
};
}
namespace IfcUtil {
class IfcBaseClass {
@@ -49,6 +60,14 @@ public:
virtual Ifc2x3::Type::Enum type() const = 0;
};
class IfcBaseEntity : public IfcBaseClass {
public:
virtual unsigned int getArgumentCount() const = 0;
virtual ArgumentType getArgumentType(unsigned int i) const = 0;
virtual ArgumentPtr getArgument(unsigned int i) const = 0;
virtual const char* getArgumentName(unsigned int i) const = 0;
};
//typedef SHARED_PTR<IfcBaseClass> IfcSchemaEntity;
typedef IfcBaseClass* IfcSchemaEntity;
@@ -81,10 +100,6 @@ public:
inline unsigned int Size() const { return (unsigned int) ls.size(); }
};
class Argument;
//typedef SHARED_PTR<Argument> ArgumentPtr;
typedef Argument* ArgumentPtr;
namespace IfcUtil {
class IfcAbstractSelect : public IfcBaseClass {
public: