Graphite  Version 3
An experimental 3D geometry processing program
OGF::MetaMethod Class Reference

The representation of a method in the Meta repository. More...

#include <OGF/gom/reflection/meta_method.h>

Inheritance diagram for OGF::MetaMethod:
OGF::MetaMember OGF::MetaInformation OGF::Object OGF::CustomAttributes GEO::Counted OGF::MetaConstructor OGF::MetaMethodGetProperty OGF::MetaMethodSetProperty OGF::MetaSignal OGF::MetaSlot OGF::DynamicMetaSlot

Public Member Functions

 MetaMethod (const std::string &name, MetaClass *container, const std::string &return_type)
 MetaMethod constructor. More...
 
 MetaMethod (const std::string &name, MetaClass *container, MetaType *return_type)
 MetaMethod constructor. More...
 
 ~MetaMethod () override
 MetaMethod destructor.
 
void pre_delete () override
 Removes all variables that use the meta type system before deleting. More...
 
std::string get_doc () const override
 Gets the documentation. More...
 
const std::string & ith_arg_name (index_t i) const
 Gets the name of an argument by index. More...
 
const std::string & ith_arg_type_name (index_t i) const
 Gets the type name of an argument by index. More...
 
MetaTypeith_arg_type (index_t i) const
 Gets the type of an argument by index. More...
 
bool ith_arg_has_default_value (index_t i) const
 Tests whether an argument has a default value. More...
 
std::string ith_arg_default_value_as_string (index_t i) const
 Gets the default value of an argument. More...
 
const std::string & return_type_name () const
 Gets the return type name. More...
 
MetaTypereturn_type () const
 Gets the return type. More...
 
bool ith_arg_has_custom_attribute (index_t i, const std::string &name) const
 Tests whether an argument has a custom attribute. More...
 
std::string ith_arg_custom_attribute_value (index_t i, const std::string &name) const
 Gets the value of a custom attribute of an argument. More...
 
size_t ith_arg_nb_custom_attributes (index_t i)
 Gets the number of custom attribute of an argument. More...
 
std::string ith_arg_jth_custom_attribute_name (index_t i, index_t j)
 Gets a custom attribute name of an argument by index. More...
 
std::string ith_arg_jth_custom_attribute_value (index_t i, index_t j)
 Gets a custom attribute value of an argument by index. More...
 
const Anyith_arg_default_value (index_t i) const
 Gets the default value of an argument. More...
 
const MetaArgith_arg (index_t i) const
 Gets a const MetaArg by index. More...
 
MetaArgith_arg (index_t i)
 Gets a MetaArg by index. More...
 
void add_arg (const MetaArg &arg)
 Adds a new argument to the method. More...
 
bool has_arg (const std::string &meta_arg_name)
 Tests whether the method has an argument of a given name. More...
 
const MetaArgfind_arg (const std::string &meta_arg_name) const
 Finds an argument by name. More...
 
MetaArgfind_arg (const std::string &meta_arg_name)
 Finds an argument by name. More...
 
gom_method_adapter method_adapter () const
 Gets the method adapter. More...
 
void set_method_adapter (gom_method_adapter adapter)
 Sets the method adapter. More...
 
virtual bool invoke (Object *target, const ArgList &args, Any &return_value)
 Invokes this method on a target object. More...
 
virtual bool invoke (const std::string &method_name, const ArgList &args, Any &ret_val)
 Implements the dynamic invocation API for the MetaMethod object. More...
 
virtual bool check_args (const ArgList &args)
 Checks whether the specified ArgList contains all the required args. More...
 
virtual index_t nb_used_args (const ArgList &args)
 Counts the number of arguments this method would use when invoked on the specified args. More...
 
virtual index_t nb_default_args (const ArgList &args)
 Counts the number of arguments assigned with their default value when this method is invoked on the specified args. More...
 
virtual void add_default_args (ArgList &args)
 Adds the arguments with default values to an ArgList. More...
 
- Public Member Functions inherited from OGF::MetaMember
 MetaMember (const std::string &name, MetaClass *container)
 MetaMember constructor. More...
 
 ~MetaMember () override
 MetaMember destructor.
 
const std::string & name () const
 Gets the name of this MetaMember. More...
 
- Public Member Functions inherited from OGF::MetaInformation
virtual void search (const std::string &needle, const std::string &path="")
 Displays the names of all objects that contain a substring. More...
 
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 MetaClassmeta_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 Connectionconnect_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...
 
MetaClassget_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__: size_t nb_args() const { return meta_args_.size()
 
- Public Attributes inherited from OGF::MetaMember
 __pad0__: MetaClass* container_meta_class() const { return container_
 
 __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

bool emit_signal (const std::string &signal_name, const ArgList &args, bool called_from_slot=true) override
 Emits a signal from this MetaMethod. More...
 
- Protected Member Functions inherited from GEO::Counted
 Counted ()
 Creates a reference counted object. More...
 
virtual ~Counted ()
 Destroys a reference counted object. More...
 

Static Protected Member Functions

static bool emit_signal (Object *target, const std::string &sig_name, const ArgList &args, bool called_from_slot=true)
 Emits a signal in a target object. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from OGF::Object
static Objectid_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...
 

Detailed Description

The representation of a method in the Meta repository.

Definition at line 72 of file meta_method.h.

Constructor & Destructor Documentation

◆ MetaMethod() [1/2]

OGF::MetaMethod::MetaMethod ( const std::string &  name,
MetaClass container,
const std::string &  return_type 
)

MetaMethod constructor.

Parameters
[in]namename of the method
[in]containerthe MetaClass this method belongs to
[in]return_typeC++ name of the return type

◆ MetaMethod() [2/2]

OGF::MetaMethod::MetaMethod ( const std::string &  name,
MetaClass container,
MetaType return_type 
)

MetaMethod constructor.

Parameters
[in]namename of the method
[in]containerthe MetaClass this method belongs to
[in]return_typepointer to the MetaType that corresponds to the return type

Member Function Documentation

◆ add_arg()

void OGF::MetaMethod::add_arg ( const MetaArg arg)
inline

Adds a new argument to the method.

Parameters
arga const reference to the MetaArg, it is copied and stored in the MetaMethod

Definition at line 282 of file meta_method.h.

◆ add_default_args()

virtual void OGF::MetaMethod::add_default_args ( ArgList args)
virtual

Adds the arguments with default values to an ArgList.

Each time an argument does not exist in ArgList args and has a default value, it is created in args with the default value.

Parameters
[in,out]argsthe ArgList

◆ check_args()

virtual bool OGF::MetaMethod::check_args ( const ArgList args)
virtual

Checks whether the specified ArgList contains all the required args.

The ArgList is compatible with this MetaMethod if it has a named argument for each named parameter that does not have a default value.

Parameters
[in]argsa const reference to the arguments list
Return values
trueif the argument list args is compatible with this MetaMethod
falseotherwise

◆ emit_signal() [1/2]

bool OGF::MetaMethod::emit_signal ( const std::string &  signal_name,
const ArgList args,
bool  called_from_slot = true 
)
inlineoverrideprotectedvirtual

Emits a signal from this MetaMethod.

Implements the Dynamic Invocation API for MetaMethod, this will be used in future versions, that expose the entire Meta system to Graphite Embedded Language.

Reimplemented from OGF::Object.

Definition at line 423 of file meta_method.h.

◆ emit_signal() [2/2]

static bool OGF::MetaMethod::emit_signal ( Object target,
const std::string &  sig_name,
const ArgList args,
bool  called_from_slot = true 
)
staticprotected

Emits a signal in a target object.

Parameters
[in]targeta pointer to the target object
[in]sig_namename of the signal
[in]argsa const reference to the argument list
[in]called_from_slotdistingished between signals generated from the GUI and signals called programatically.

◆ find_arg() [1/2]

MetaArg* OGF::MetaMethod::find_arg ( const std::string &  meta_arg_name)

Finds an argument by name.

Parameters
[in]meta_arg_namename of the argument
Returns
a pointer to the MetaArg or nullptr if there is no such arg.

◆ find_arg() [2/2]

const MetaArg* OGF::MetaMethod::find_arg ( const std::string &  meta_arg_name) const

Finds an argument by name.

Parameters
[in]meta_arg_namename of the argument
Returns
a const pointer to the MetaArg or nullptr if there is no such arg.

◆ get_doc()

std::string OGF::MetaMethod::get_doc ( ) const
overridevirtual

Gets the documentation.

Returns
A string with a human-readable documentation about this object.

Reimplemented from OGF::Object.

◆ has_arg()

bool OGF::MetaMethod::has_arg ( const std::string &  meta_arg_name)

Tests whether the method has an argument of a given name.

Parameters
[in]meta_arg_namename to be tested
Return values
trueif the method has an argument named meta_arg_name
falseotherwise

◆ invoke() [1/2]

virtual bool OGF::MetaMethod::invoke ( const std::string &  method_name,
const ArgList args,
Any ret_val 
)
inlinevirtual

Implements the dynamic invocation API for the MetaMethod object.

Will be used in future versions, where the Meta system is completely visible from Graphite Embedded Language.

Parameters
[in]method_namename of the method
[in]argsa const reference to the arguments list
[out]ret_valthe return value, represented as an Any

Definition at line 352 of file meta_method.h.

◆ invoke() [2/2]

virtual bool OGF::MetaMethod::invoke ( Object target,
const ArgList args,
Any return_value 
)
virtual

Invokes this method on a target object.

The default invokation mechanism uses the method adapter (i.e. a function pointer).

Parameters
[in]targeta pointer to the target object. It needs to be of the same class this method belongs to
[in]argsa const reference to the arguments list
[out]return_valuethe return value, as a string
Precondition
target->meta_class() == meta_class()

Reimplemented in OGF::MetaMethodGetProperty, and OGF::MetaMethodSetProperty.

◆ ith_arg() [1/2]

MetaArg* OGF::MetaMethod::ith_arg ( index_t  i)
inline

Gets a MetaArg by index.

Parameters
iindex of the argument
Returns
a pointer to the MetaArg
Precondition
i < nb_args()

Definition at line 272 of file meta_method.h.

◆ ith_arg() [2/2]

const MetaArg* OGF::MetaMethod::ith_arg ( index_t  i) const
inline

Gets a const MetaArg by index.

Parameters
iindex of the argument
Returns
a const pointer to the MetaArg
Precondition
i < nb_args()

Definition at line 261 of file meta_method.h.

◆ ith_arg_custom_attribute_value()

std::string OGF::MetaMethod::ith_arg_custom_attribute_value ( index_t  i,
const std::string &  name 
) const

Gets the value of a custom attribute of an argument.

Parameters
[in]ithe index of the argument, in 0..nb_args()-1.
[in]namethe name of the custom attribute.
Returns
the value of the custom attribute.
Return values
falseotherwise.
Precondition
i < nb_args() && has_custom_attribute(i,name)

◆ ith_arg_default_value()

const Any& OGF::MetaMethod::ith_arg_default_value ( index_t  i) const
inline

Gets the default value of an argument.

Parameters
[in]iindex of the argument
Returns
the default value of argument i

Definition at line 249 of file meta_method.h.

◆ ith_arg_default_value_as_string()

std::string OGF::MetaMethod::ith_arg_default_value_as_string ( index_t  i) const
inline

Gets the default value of an argument.

Parameters
[in]iindex of the argument
Returns
the default value of argument i

Definition at line 172 of file meta_method.h.

◆ ith_arg_has_custom_attribute()

bool OGF::MetaMethod::ith_arg_has_custom_attribute ( index_t  i,
const std::string &  name 
) const

Tests whether an argument has a custom attribute.

Parameters
[in]ithe index of the argument, in 0..nb_args()-1.
[in]namethe name of the custom attribute.
Return values
trueif the ith arg has the custom attribute.
falseotherwise.
Precondition
i < nb_args()

◆ ith_arg_has_default_value()

bool OGF::MetaMethod::ith_arg_has_default_value ( index_t  i) const
inline

Tests whether an argument has a default value.

Parameters
[in]iindex of the argument
Return values
trueif argument i has a default value
falseotherwise

Definition at line 162 of file meta_method.h.

◆ ith_arg_jth_custom_attribute_name()

std::string OGF::MetaMethod::ith_arg_jth_custom_attribute_name ( index_t  i,
index_t  j 
)

Gets a custom attribute name of an argument by index.

Parameters
[in]ithe index of the argument, in 0..nb_args()-1.
[in]jthe index of the custom attribute, in 0..ith_arg_nb_custom_attributes(i)-1
Returns
the custom attribute
Precondition
i < nb_args() && j < nb_custom_attributes(i)

◆ ith_arg_jth_custom_attribute_value()

std::string OGF::MetaMethod::ith_arg_jth_custom_attribute_value ( index_t  i,
index_t  j 
)

Gets a custom attribute value of an argument by index.

Parameters
[in]ithe index of the argument, in 0..nb_args()-1.
[in]jthe index of the custom attribute, in 0..ith_arg_nb_custom_attributes(i)-1
Returns
the custom attribute
Precondition
i < nb_args() && j < nb_custom_attributes(i)

◆ ith_arg_name()

const std::string& OGF::MetaMethod::ith_arg_name ( index_t  i) const
inline

Gets the name of an argument by index.

Parameters
[in]iindex of the argument
Returns
the name of the i th argument

Definition at line 131 of file meta_method.h.

◆ ith_arg_nb_custom_attributes()

size_t OGF::MetaMethod::ith_arg_nb_custom_attributes ( index_t  i)

Gets the number of custom attribute of an argument.

Parameters
[in]ithe index of the argument, in 0..nb_args()-1.
Returns
the number of custom attributes of the argument.

◆ ith_arg_type()

MetaType* OGF::MetaMethod::ith_arg_type ( index_t  i) const
inline

Gets the type of an argument by index.

Parameters
[in]iindex of the argument
Returns
the type name of the i th argument

Definition at line 151 of file meta_method.h.

◆ ith_arg_type_name()

const std::string& OGF::MetaMethod::ith_arg_type_name ( index_t  i) const
inline

Gets the type name of an argument by index.

Parameters
[in]iindex of the argument
Returns
the type name of the i th argument

Definition at line 141 of file meta_method.h.

◆ method_adapter()

gom_method_adapter OGF::MetaMethod::method_adapter ( ) const
inline

Gets the method adapter.

Returns
the method adapter if available, else nil
See also
gom_method_adapter

Definition at line 316 of file meta_method.h.

◆ nb_default_args()

virtual index_t OGF::MetaMethod::nb_default_args ( const ArgList args)
virtual

Counts the number of arguments assigned with their default value when this method is invoked on the specified args.

The result is unspecified if check_args returns false.

Parameters
[in]argsa const reference to the arguments list
Returns
the number of arguments assigned with their default value when this method is invoked with args

◆ nb_used_args()

virtual index_t OGF::MetaMethod::nb_used_args ( const ArgList args)
virtual

Counts the number of arguments this method would use when invoked on the specified args.

The result is unspecified if check_args returns false.

Parameters
[in]argsa const reference to the arguments list
Returns
the number of arguments that correspond to arguments of this MetaMethod

◆ pre_delete()

void OGF::MetaMethod::pre_delete ( )
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::MetaMember.

◆ return_type()

MetaType* OGF::MetaMethod::return_type ( ) const

Gets the return type.

Returns
a pointer to the MetaType that corresponds to the return type

◆ return_type_name()

const std::string& OGF::MetaMethod::return_type_name ( ) const
inline

Gets the return type name.

Returns
the C++ name of the return type

Definition at line 180 of file meta_method.h.

◆ set_method_adapter()

void OGF::MetaMethod::set_method_adapter ( gom_method_adapter  adapter)
inline

Sets the method adapter.

Parameters
[in]adapterthe method adapter
See also
gom_method_adapter

Definition at line 325 of file meta_method.h.


The documentation for this class was generated from the following file: