Graphite
Version 3
An experimental 3D geometry processing program
|
The representation of a class in the Meta repository. More...
#include <OGF/gom/reflection/meta_class.h>
Public Member Functions | |
MetaClass (const std::string &class_name, MetaClass *super_class=nullptr, bool is_abstract=false) | |
Constructs a new MetaClass. More... | |
MetaClass (const std::string &class_name, const std::string &super_class_name, bool is_abstract=false) | |
Constructs a new MetaClass. More... | |
~MetaClass () override | |
MetaClass destructor. | |
void | pre_delete () override |
Removes all variables that use the meta type system before deleting. More... | |
const std::string & | super_class_name () const |
Gets the name of the super class. More... | |
bool | is_abstract () const |
Tests if the class is abstract. More... | |
Object * | create (const ArgList &args) |
Creates an object of this class. More... | |
size_t | nb_members (bool super=true) const |
Gets the number of class members. More... | |
MetaMember * | ith_member (index_t i, bool super=true) const |
Gets a MetaMember by index. More... | |
MetaMember * | find_member (const std::string &member_name, bool super=true) const |
Finds a MetaMember by name. More... | |
size_t | nb_signals (bool super=true) const |
Gets the number of signals. More... | |
MetaSignal * | ith_signal (index_t i, bool super=true) const |
Gets a MetaSignal by index. More... | |
size_t | nb_slots (bool super=true) const |
Gets the number of slots. More... | |
MetaSlot * | ith_slot (index_t i, bool super=true) const |
Gets a MetaSlot by index. More... | |
size_t | nb_properties (bool super=true) const |
Gets the number of properties. More... | |
MetaProperty * | ith_property (index_t i, bool super=true) const |
Gets a MetaProperty by index. More... | |
size_t | nb_constructors () const |
Gets the number of constructors. More... | |
MetaConstructor * | ith_constructor (index_t i) const |
Gets a MetaConstructor by index. More... | |
MetaMethod * | find_method (const std::string &method_name, bool super=true) const |
Finds a MetaMethod by name. More... | |
MetaSlot * | find_slot (const std::string &slot_name, bool super=true) const |
Finds a MetaSlot by name. More... | |
MetaSignal * | find_signal (const std::string &signal_name, bool super=true) const |
Finds a MetaSignal by name. More... | |
MetaProperty * | find_property (const std::string &property_name, bool super=true) const |
Finds a MetaProperty by name. More... | |
virtual MetaClass * | create_subclass (const std::string &name, bool is_abstract=false) |
Creates a new subclass dynamically. More... | |
virtual bool | is_subclass_of (const MetaClass *other) const |
Tests whether this MetaClass is a subclass of another MetaClass. More... | |
void | set_abstract (bool b) |
Indicate that the class is abstract. More... | |
void | add_member (MetaMember *member) |
Adds a new MetaMember to this class. More... | |
void | get_members (std::vector< MetaMember * > &result, bool super=true) const |
Gets all the members. More... | |
void | get_methods (std::vector< MetaMethod * > &result, bool super=true) const |
Gets all the methods. More... | |
void | get_signals (std::vector< MetaSignal * > &result, bool super=true) const |
Gets all the signals. More... | |
void | get_slots (std::vector< MetaSlot * > &result, bool super=true) const |
Gets all the slots. More... | |
void | get_properties (std::vector< MetaProperty * > &result, bool super=true) const |
Gets all the properties. More... | |
void | get_constructors (std::vector< MetaConstructor * > &result) const |
Gets all the constructors. More... | |
bool | is_subtype_of (const MetaType *other) const override |
void | get_used_types (std::set< std::string > &used_types, bool super=true) const |
Gets all the types used by this class. More... | |
MetaConstructor * | best_constructor (const ArgList &args) |
Gets the best constructors for the specified arguments. More... | |
Factory * | factory () const |
Gets the factory. More... | |
void | set_factory (Factory *f) |
Sets the factory. More... | |
void | search (const std::string &needle, const std::string &path="") override |
Displays the names of all objects that contain a substring. More... | |
std::string | get_doc () const override |
Gets the documentation. More... | |
Public Member Functions inherited from OGF::MetaType | |
MetaType (const std::string &name) | |
MetaType constructor. More... | |
~MetaType () override | |
MetaType destructor. | |
const std::string & | name () const |
Gets the C++ name of the type. More... | |
void | set_typeid_name (const std::string &typeid_name) |
Sets the typeid name. More... | |
const std::string & | typeid_name () const |
Gets the typeid name. More... | |
LifeCycle * | life_cycle () const |
Gets the LifeCycle associated with the type. More... | |
void | set_life_cycle (LifeCycle *life_cycle) |
Sets the LifeCycle associated with the type. More... | |
Serializer * | serializer () const |
Gets the serializer associated with the type. More... | |
void | set_serializer (Serializer *ser) |
Sets the serializer associated with the type. More... | |
Public Member Functions inherited from OGF::MetaInformation | |
bool | has_custom_attribute (const std::string &name) const |
Tests whether a given custom attribute exists. More... | |
std::string | ith_custom_attribute_name (index_t i) const |
Gets the name of a custom attribute by index. More... | |
std::string | ith_custom_attribute_value (index_t i) const |
Gets the value of a custom attribute by index. More... | |
std::string | custom_attribute_value (const std::string &name) const |
Gets the value of a new custom attribute. More... | |
void | create_custom_attribute (const std::string &name, const std::string &value) |
Creates a new custom attribute. More... | |
void | set_custom_attribute (const std::string &name, const std::string &value) |
Sets the value of a new custom attribute. More... | |
Public Member Functions inherited from OGF::Object | |
Object (bool transient=false) | |
Object constructor. More... | |
virtual | ~Object () |
Object destructor. | |
virtual MetaClass * | meta_class () const |
Gets the meta class. More... | |
virtual void | set_meta_class (MetaClass *mclass) |
Sets the meta class. More... | |
unsigned int | id () const |
Gets the identifier of this object. More... | |
std::string | string_id () const |
Gets the unique string identifier. More... | |
bool | has_method (const std::string &method_name) const |
Tests whether a method is defined. More... | |
virtual bool | invoke_method (const std::string &method_name, const ArgList &args, Any &ret_val) |
Invokes a method by method name and argument list, and gets the return value. More... | |
bool | invoke_method (const std::string &method_name, const ArgList &args) |
Invokes a method by method name and argument list. More... | |
bool | invoke_method (const std::string &method_name) |
Invokes a method by method name. More... | |
bool | has_property (const std::string &prop_name) const |
Tests whether a property is defined. More... | |
virtual bool | get_property (const std::string &prop_name, std::string &prop_value) const |
Gets a property. More... | |
virtual Connection * | connect_signal_to_slot (const std::string &signal_name, Object *to, const std::string &slot_name) |
Connects a signal with a slot of another object. More... | |
virtual void | add_connection (Connection *connection) |
Adds a connection to this object. More... | |
virtual void | remove_connection (Connection *connection) |
Removes a connection to this object. More... | |
virtual void | get_element (index_t i, Any &value) const |
Gets an element by index. More... | |
virtual void | set_element (index_t i, const Any &value) |
Sets an element by index. More... | |
bool | get_signals_enabled () const |
Tests wheter signals are enabled. More... | |
void | set_signals_enabled (bool value) |
Enables or disables signals. More... | |
bool | get_slots_enabled () const |
Tests wheter slots are enabled. More... | |
void | set_slots_enabled (bool value) |
Enables or disables slots. More... | |
MetaClass * | get_meta_class () const |
Gets the meta class. More... | |
std::string | get_string_id () const |
Gets the unique string identifier. More... | |
virtual Sign | compare (const Object *other) const |
Compares this object with another one. More... | |
virtual bool | is_a (const MetaType *type) const |
Tests whether this object inherits a given type. More... | |
void | disconnect () |
Removes all connections from signals of this objects. More... | |
void | enable_signals () |
Enables signals. | |
void | disable_signals () |
Disables signals. | |
void | enable_slots () |
Enables slots. | |
void | disable_slots () |
Disables slots. | |
void | set_properties (const ArgList &args) |
Sets several properties in a single call. More... | |
virtual bool | set_property (const std::string &name, const std::string &value) |
Sets an individual property. More... | |
void | help () const |
Displays some help about this object. More... | |
virtual bool | set_property (const std::string &name, const Any &value) |
Sets an individual property. More... | |
virtual bool | get_property (const std::string &prop_name, Any &prop_value) const |
Gets a property. More... | |
Public Member Functions inherited from GEO::Counted | |
void | ref () const |
Increments the reference count. More... | |
void | unref () const |
Decrements the reference count. More... | |
bool | is_shared () const |
Check if the object is shared. More... | |
int | nb_refs () const |
Gets the number of references that point to this object. More... | |
Public Member Functions inherited from OGF::CustomAttributes | |
size_t | nb_custom_attributes () const |
Gets the number of custom attributes. More... | |
std::string | ith_custom_attribute_name (index_t i) const |
Gets the name of a custom attribute by index. More... | |
std::string | ith_custom_attribute_value (index_t i) const |
Gets the value of a custom attribute by index. More... | |
bool | has_custom_attribute (const std::string &name) const |
Tests whether a given custom attribute exists. More... | |
void | create_custom_attribute (const std::string &name, const std::string &value) |
Creates a new custom attribute. More... | |
void | set_custom_attribute (const std::string &name, const std::string &value) |
Sets the value of a new custom attribute. More... | |
std::string | custom_attribute_value (const std::string &name) const |
Gets the value of a new custom attribute. More... | |
void | clear_custom_attributes () |
Clears the custom attributes. | |
Public Attributes | |
__pad0__: MetaClass* super_class() const | |
Public Attributes inherited from OGF::MetaType | |
__pad0__: virtual bool is_subtype_of(const MetaType* other) const | |
__pad1__: const std::string& get_name() const { return name() | |
Public Attributes inherited from OGF::MetaInformation | |
__pad0__: size_t nb_custom_attributes() const | |
Public Attributes inherited from OGF::Object | |
__pad0__: virtual index_t get_nb_elements() const | |
__pad1__: bool equals(const Object* other) const | |
Protected Member Functions | |
std::string | new_constructor_name () const |
Generates a dummy name for a constructor. More... | |
void | append_members (std::vector< MetaMember * > &result, bool super=true) const |
Gets all the members and appends them to a vector. More... | |
void | append_methods (std::vector< MetaMethod * > &result, bool super=true) const |
Gets all the methods and appends them to a vector. More... | |
void | append_signals (std::vector< MetaSignal * > &result, bool super=true) const |
Gets all the signals and appends them to a vector. More... | |
void | append_slots (std::vector< MetaSlot * > &result, bool super=true) const |
Gets all the slots and appends them to a vector. More... | |
void | append_properties (std::vector< MetaProperty * > &result, bool super=true) const |
Gets all the properties. More... | |
Protected Member Functions inherited from OGF::Object | |
virtual bool | emit_signal (const std::string &signal_name, const ArgList &args, bool called_from_slot=false) |
Emits a signal and calls the slots it is connected to. More... | |
Protected Member Functions inherited from GEO::Counted | |
Counted () | |
Creates a reference counted object. More... | |
virtual | ~Counted () |
Destroys a reference counted object. More... | |
Friends | |
class | ::OGF::MetaConstructor |
Additional Inherited Members | |
Static Public Member Functions inherited from OGF::Object | |
static Object * | id_to_object (unsigned int id) |
Gets an object from a unique object id. More... | |
Static Public Member Functions inherited from GEO::Counted | |
static void | ref (const Counted *counted) |
Increments the reference count. More... | |
static void | unref (const Counted *counted) |
Decrements the reference count. More... | |
The representation of a class in the Meta repository.
Definition at line 64 of file meta_class.h.
|
explicit |
Constructs a new MetaClass.
[in] | class_name | the C++ class name |
[in] | super_class | a pointer to the super class, or nullptr if there is no super class |
[in] | is_abstract | indicates whether the class is abstract (e.g. with pure virtual methods) or not. Abstract classes cannot be constructed. |
|
explicit |
Constructs a new MetaClass.
[in] | class_name | the C++ class name |
[in] | super_class_name | the C++ name of the super class |
[in] | is_abstract | indicates whether the class is abstract (e.g. with pure virtual methods) or not. Abstract classes cannot be constructed. |
|
inline |
Adds a new MetaMember to this class.
[in] | member | a pointer to the MetaMember to be added. Ownership is transfered to this MetaClass. |
Definition at line 320 of file meta_class.h.
|
protected |
Gets all the members and appends them to a vector.
[in,out] | result | a vector of MetaMember pointers |
[in] | super | if true, gets also the MetaMembers inherited from super classes |
|
protected |
Gets all the methods and appends them to a vector.
Both signals, slots and constructors are methods.
[in,out] | result | a vector of MetaMethod pointers |
[in] | super | if true, gets also the MetaMethods inherited from super classes |
|
protected |
Gets all the properties.
[in,out] | result | a vector of MetaProperty pointers |
[in] | super | if true, gets also the MetaProperties inherited from super classes |
|
protected |
Gets all the signals and appends them to a vector.
[in,out] | result | a vector of MetaSignal pointers |
[in] | super | if true, gets also the MetaSignals inherited from super classes |
|
protected |
Gets all the slots and appends them to a vector.
[in,out] | result | a vector of MetaSlot pointers |
[in] | super | if true, gets also the MetaSlots inherited from super classes |
MetaConstructor* OGF::MetaClass::best_constructor | ( | const ArgList & | args | ) |
Gets the best constructors for the specified arguments.
The best constructor is the one that uses the largest number of arguments.
[in] | args | the arguments, as name-value pairs |
Creates an object of this class.
args | the parameters to be passed to the constructor. The constructor that best matches the parameters list is selected. |
|
virtual |
Creates a new subclass dynamically.
[in] | name | the name of the subclass to be created |
[in] | is_abstract | true if the class is abstract, that is, if no object of this class can be created |
To be used in scripts that create new classes dynamically
|
inline |
Gets the factory.
Definition at line 433 of file meta_class.h.
MetaMember* OGF::MetaClass::find_member | ( | const std::string & | member_name, |
bool | super = true |
||
) | const |
Finds a MetaMember by name.
[in] | member_name | name of the member |
[in] | super | if true, search also in members inherited from super class |
MetaMethod* OGF::MetaClass::find_method | ( | const std::string & | method_name, |
bool | super = true |
||
) | const |
Finds a MetaMethod by name.
Both signals, slots and constructors are methods.
[in] | method_name | name of the method |
[in] | super | if true, search also in members inherited from super class |
MetaProperty* OGF::MetaClass::find_property | ( | const std::string & | property_name, |
bool | super = true |
||
) | const |
Finds a MetaProperty by name.
[in] | property_name | name of the property |
[in] | super | if true, search also in members inherited from super class |
MetaSignal* OGF::MetaClass::find_signal | ( | const std::string & | signal_name, |
bool | super = true |
||
) | const |
Finds a MetaSignal by name.
[in] | signal_name | name of the signal |
[in] | super | if true, search also in members inherited from super class |
MetaSlot* OGF::MetaClass::find_slot | ( | const std::string & | slot_name, |
bool | super = true |
||
) | const |
Finds a MetaSlot by name.
[in] | slot_name | name of the slot |
[in] | super | if true, search also in members inherited from super class |
void OGF::MetaClass::get_constructors | ( | std::vector< MetaConstructor * > & | result | ) | const |
Gets all the constructors.
[out] | result | a vector of MetaConstructor pointers |
|
overridevirtual |
Gets the documentation.
Reimplemented from OGF::Object.
|
inline |
Gets all the members.
[out] | result | a vector of MetaMember pointers |
[in] | super | if true, gets also the MetaMembers inherited from super classes |
Definition at line 330 of file meta_class.h.
|
inline |
Gets all the methods.
Both signals, slots and constructors are methods.
[out] | result | a vector of MetaMethod pointers |
[in] | super | if true, gets also the MetaMethods inherited from super classes |
Definition at line 345 of file meta_class.h.
|
inline |
Gets all the properties.
[out] | result | a vector of MetaProperty pointers |
[in] | super | if true, gets also the MetaProperties inherited from super classes |
Definition at line 384 of file meta_class.h.
|
inline |
Gets all the signals.
[out] | result | a vector of MetaSignal pointers |
[in] | super | if true, gets also the MetaSignals inherited from super classes |
Definition at line 358 of file meta_class.h.
|
inline |
Gets all the slots.
[out] | result | a vector of MetaSlot pointers |
[in] | super | if true, gets also the MetaSlots inherited from super classes |
Definition at line 371 of file meta_class.h.
void OGF::MetaClass::get_used_types | ( | std::set< std::string > & | used_types, |
bool | super = true |
||
) | const |
Gets all the types used by this class.
A type is used by this class if it appears as an argument of a method or if the class has a property of this type.
[out] | used_types | a set of strings with the C++ type names of the used types |
[in] | super | if true, gets also the types used by super classes |
|
inline |
Tests if the class is abstract.
true | if the class is abstract |
false | otherwise |
Definition at line 127 of file meta_class.h.
|
virtual |
|
override |
MetaConstructor* OGF::MetaClass::ith_constructor | ( | index_t | i | ) | const |
Gets a MetaConstructor by index.
[in] | i | index of the property |
MetaMember* OGF::MetaClass::ith_member | ( | index_t | i, |
bool | super = true |
||
) | const |
Gets a MetaMember by index.
[in] | i | index of the MetaMember |
[in] | super | if true, lookup also in superclasses |
MetaProperty* OGF::MetaClass::ith_property | ( | index_t | i, |
bool | super = true |
||
) | const |
Gets a MetaProperty by index.
[in] | i | index of the property |
[in] | super | if true, lookup also in superclasses |
MetaSignal* OGF::MetaClass::ith_signal | ( | index_t | i, |
bool | super = true |
||
) | const |
Gets a MetaSignal by index.
[in] | i | index of the signal |
[in] | super | if true, lookup also in superclasses |
Gets a MetaSlot by index.
[in] | i | index of the slot |
[in] | super | if true, lookup also in superclasses |
size_t OGF::MetaClass::nb_constructors | ( | ) | const |
Gets the number of constructors.
size_t OGF::MetaClass::nb_members | ( | bool | super = true | ) | const |
Gets the number of class members.
Class members are constructors, signals, slots or properties.
[in] | super | if true, counts also the inherited members, else only the members declared in this class |
size_t OGF::MetaClass::nb_properties | ( | bool | super = true | ) | const |
Gets the number of properties.
[in] | super | if true, counts also the inherited properties, else only the slots declared in this class |
size_t OGF::MetaClass::nb_signals | ( | bool | super = true | ) | const |
Gets the number of signals.
[in] | super | if true, counts also the inherited signals, else only the signals declared in this class |
size_t OGF::MetaClass::nb_slots | ( | bool | super = true | ) | const |
Gets the number of slots.
[in] | super | if true, counts also the inherited slots, else only the slots declared in this class |
|
protected |
Generates a dummy name for a constructor.
Each MetaMember is supposed to have a name, this function generates a unique name for each constructor ("constructor_nnn").
|
overridevirtual |
Removes all variables that use the meta type system before deleting.
If we do not do that, when deleting the meta type system, we can delete the meta information in the wrong order, and delete first meta classes that we needed to delete other ones.
Reimplemented from OGF::MetaType.
|
overridevirtual |
Displays the names of all objects that contain a substring.
[in] | needle | the substring |
[in] | path | the path to be prepended to the names |
Reimplemented from OGF::MetaInformation.
|
inline |
Indicate that the class is abstract.
[in] | b | true if the class is abstract, false otherwise |
Definition at line 309 of file meta_class.h.
|
inline |
Sets the factory.
[in] | f | a pointer to the factory to be associated with this class. |
Definition at line 442 of file meta_class.h.
|
inline |
Gets the name of the super class.
Definition at line 118 of file meta_class.h.