Web Analytics Made Easy - Statcounter
Skip to content

Class SBCClassInterface#

ClassList > SBCClassInterface

This class describes a class interface in a class proxy. More...

  • #include <SBCClassInterface.hpp>

Public Functions#

Type Name
SBCClassInterface ()
Constructs a class interface.
void addAttribute (SBCClassAttribute * attribute)
Adds a function to the interface.
void addFunction (SBCClassFunction * function)
Adds a function to the interface.
SBCClassAttribute * getAttribute (const std::string & attributeName) const
Returns the attribute with name attributeName .
SBHashMap< std::string, SBCClassAttribute * > const & getAttributeMap () const
Returns the attribute map.
SBCClassFunction * getConstFunction (const std::string & functionName, const SBValue & t0=SBValue(), const SBValue & t1=SBValue(), const SBValue & t2=SBValue(), const SBValue & t3=SBValue(), const SBValue & t4=SBValue(), const SBValue & t5=SBValue(), const SBValue & t6=SBValue(), const SBValue & t7=SBValue(), const SBValue & t8=SBValue(), const SBValue & t9=SBValue(), const SBValue & t10=SBValue(), const SBValue & t11=SBValue(), const SBValue & t12=SBValue(), const SBValue & t13=SBValue(), const SBValue & t14=SBValue(), const SBValue & t15=SBValue()) const
Returns the const function with name functionName and argumentst0 ,t1 , ...,t15 .
SBCClassFunction * getFunction (const std::string & functionName, const SBValue & t0=SBValue(), const SBValue & t1=SBValue(), const SBValue & t2=SBValue(), const SBValue & t3=SBValue(), const SBValue & t4=SBValue(), const SBValue & t5=SBValue(), const SBValue & t6=SBValue(), const SBValue & t7=SBValue(), const SBValue & t8=SBValue(), const SBValue & t9=SBValue(), const SBValue & t10=SBValue(), const SBValue & t11=SBValue(), const SBValue & t12=SBValue(), const SBValue & t13=SBValue(), const SBValue & t14=SBValue(), const SBValue & t15=SBValue()) const
Returns the function with name functionName and argumentst0 ,t1 , ...,t15 .
SBHashMap< std::string, SBCClassFunction * > const & getFunctionMap () const
Returns the function map.
unsigned int getNumberOfAttributes () noexcept const
Returns the number of registered attributes.
unsigned int getNumberOfFunctions () noexcept const
Returns the number of registered functions.
void print (unsigned int offset=0) const
Prints the interface.
virtual ~SBCClassInterface ()
Destructs the interface.

Detailed Description#

A class interface is a collection of class functions exposed through a class descriptor (see Introspection).

Assume for example a SAMSON Extension contains the following class:

class A {

SB_CLASS

public:

    A() {}
    virtual ~A() {}

    int multiplyByTwo(int i) {

        return 2 * i;

    }

};

SB_REGISTER_TYPE(A, "A", "BF99103E-06FE-C4C1-D929-4C6E833B101C");
as well as the following class descriptor:
SB_CLASS_BEGIN(A);

    SB_CLASS_TYPE(SBCClass::App);
    SB_CLASS_DESCRIPTION("Integer multiplier");

    SB_FACTORY_BEGIN;

        SB_CONSTRUCTOR_0();

    SB_FACTORY_END;

    SB_INTERFACE_BEGIN;

        SB_FUNCTION_1(int, multiplyByTwo, int);

    SB_INTERFACE_END;

SB_CLASS_END(A);

In this example, the function multiplyByTwo is accessible to other SAMSON Extensions through the Introspection, even when the definition of class A is not available. Precisely, even though other developers might not have access to the definition of class A (i.e. they do not have the appropriate header file), they may still access its interface from the class proxy:

SBProxy* classProxy = SAMSON::getProxy("A");
SBInterface* classInterface = classProxy->getInterface();
They may then obtain function objects from the interface:
SBFunction* classFunction =
    classInterface->getFunction("multiplyByTwo", SB_VALUE<int>(0));

Since, in this example, the function is not static, we need an object of type A:

SBValue classInstance = classProxy->createInstance();

We may then use the exposed function by wrapping arguments and unwrapping results:

SBValue argument = SB_VALUE<int>(17);
SBValue resultHolder = classFunction->call(classInstance, argument);

int result = SB_CAST<int>(resultHolder);

Note that the class proxy also makes it possible to directly call a function provided by an exposed class without having first to obtain the SBCClassFunction object:

SBValue argument = SB_VALUE<int>(17);
SBValue resultHolder =
    classProxy->call(classInstance, "multiplyByTwo", argument);

int result = SB_CAST<int>(resultHolder);
However, when multiple calls are performed, it is more efficient to store a pointer to a SBCClassFunction object and reuse it.

Note that a class interface should never be deleted.

Please refer to the chapter about Introspection for more information.

Short name: SBInterface

See also: Introspection

See also: SBCClassProxy, SBCClassFunction

Public Functions Documentation#

function SBCClassInterface#

Constructs a class interface.

SBCClassInterface::SBCClassInterface () 

Initializes the internal maps used to store functions and attributes.


function addAttribute#

Adds a function to the interface.

void SBCClassInterface::addAttribute (
    SBCClassAttribute * attribute
) 

Adds an attribute to the interface.

Registers the given attribute so it can be accessed through the interface.

Parameters:

  • attribute Pointer to the attribute to be added. Must not be nullptr.

function addFunction#

Adds a function to the interface.

void SBCClassInterface::addFunction (
    SBCClassFunction * function
) 

Registers the given function so it can be accessed through the interface.

Parameters:

  • function Pointer to the function to be added. Must not be nullptr.

function getAttribute#

Returns the attribute with name attributeName .

SBCClassAttribute * SBCClassInterface::getAttribute (
    const std::string & attributeName
) const

Returns the attribute with the given name.

Retrieves a previously registered attribute from the interface.

Parameters:

  • attributeName Name of the attribute to retrieve.

Returns:

Pointer to the attribute, or nullptr if it does not exist.


function getAttributeMap#

Returns the attribute map.

SBHashMap< std::string, SBCClassAttribute * > const & SBCClassInterface::getAttributeMap () const

Returns a constant reference to the map of registered attributes.

The returned map maps attribute names to attribute objects.

Returns:

Reference to the internal attribute map.


function getConstFunction#

Returns the const function with name functionName and argumentst0 ,t1 , ...,t15 .

SBCClassFunction * SBCClassInterface::getConstFunction (
    const std::string & functionName,
    const SBValue & t0=SBValue (),
    const SBValue & t1=SBValue (),
    const SBValue & t2=SBValue (),
    const SBValue & t3=SBValue (),
    const SBValue & t4=SBValue (),
    const SBValue & t5=SBValue (),
    const SBValue & t6=SBValue (),
    const SBValue & t7=SBValue (),
    const SBValue & t8=SBValue (),
    const SBValue & t9=SBValue (),
    const SBValue & t10=SBValue (),
    const SBValue & t11=SBValue (),
    const SBValue & t12=SBValue (),
    const SBValue & t13=SBValue (),
    const SBValue & t14=SBValue (),
    const SBValue & t15=SBValue ()
) const

Returns a const function matching the given name and arguments.

Searches the registered functions for a const overload with the specified name that can be called with the provided arguments.

Parameters:

  • functionName Name of the function to retrieve.
  • t0 First argument value (optional, default constructed).
  • t1 Second argument value (optional, default constructed).
  • t2 Third argument value (optional, default constructed).
  • t3 Fourth argument value (optional, default constructed).
  • t4 Fifth argument value (optional, default constructed).
  • t5 Sixth argument value (optional, default constructed).
  • t6 Seventh argument value (optional, default constructed).
  • t7 Eighth argument value (optional, default constructed).
  • t8 Ninth argument value (optional, default constructed).
  • t9 Tenth argument value (optional, default constructed).
  • t10 Eleventh argument value (optional, default constructed).
  • t11 Twelfth argument value (optional, default constructed).
  • t12 Thirteenth argument value (optional, default constructed).
  • t13 Fourteenth argument value (optional, default constructed).
  • t14 Fifteenth argument value (optional, default constructed).
  • t15 Sixteenth argument value (optional, default constructed).

Returns:

Pointer to a matching const function, or nullptr if none is found.


function getFunction#

Returns the function with name functionName and argumentst0 ,t1 , ...,t15 .

SBCClassFunction * SBCClassInterface::getFunction (
    const std::string & functionName,
    const SBValue & t0=SBValue (),
    const SBValue & t1=SBValue (),
    const SBValue & t2=SBValue (),
    const SBValue & t3=SBValue (),
    const SBValue & t4=SBValue (),
    const SBValue & t5=SBValue (),
    const SBValue & t6=SBValue (),
    const SBValue & t7=SBValue (),
    const SBValue & t8=SBValue (),
    const SBValue & t9=SBValue (),
    const SBValue & t10=SBValue (),
    const SBValue & t11=SBValue (),
    const SBValue & t12=SBValue (),
    const SBValue & t13=SBValue (),
    const SBValue & t14=SBValue (),
    const SBValue & t15=SBValue ()
) const

Returns a non-const function matching the given name and arguments.

Searches the registered functions for one with the specified name that can be called with the provided arguments.

Parameters:

  • functionName Name of the function to retrieve.
  • t0 First argument value (optional, default constructed).
  • t1 Second argument value (optional, default constructed).
  • t2 Third argument value (optional, default constructed).
  • t3 Fourth argument value (optional, default constructed).
  • t4 Fifth argument value (optional, default constructed).
  • t5 Sixth argument value (optional, default constructed).
  • t6 Seventh argument value (optional, default constructed).
  • t7 Eighth argument value (optional, default constructed).
  • t8 Ninth argument value (optional, default constructed).
  • t9 Tenth argument value (optional, default constructed).
  • t10 Eleventh argument value (optional, default constructed).
  • t11 Twelfth argument value (optional, default constructed).
  • t12 Thirteenth argument value (optional, default constructed).
  • t13 Fourteenth argument value (optional, default constructed).
  • t14 Fifteenth argument value (optional, default constructed).
  • t15 Sixteenth argument value (optional, default constructed).

Returns:

Pointer to a matching function, or nullptr if none is found.


function getFunctionMap#

Returns the function map.

SBHashMap< std::string, SBCClassFunction * > const & SBCClassInterface::getFunctionMap () const

Returns a constant reference to the map of registered functions.

The returned map maps function signatures to function objects.

Returns:

Reference to the internal function map.


function getNumberOfAttributes#

Returns the number of registered attributes.

unsigned int SBCClassInterface::getNumberOfAttributes () noexcept const

Returns:

The count of attributes stored in the interface.


function getNumberOfFunctions#

Returns the number of registered functions.

unsigned int SBCClassInterface::getNumberOfFunctions () noexcept const

Returns:

The count of functions stored in the interface.


function print#

Prints the interface.

void SBCClassInterface::print (
    unsigned int offset=0
) const

Prints the interface description to standard output.

The output includes the list of functions and attributes, indented by the specified offset.

Parameters:

  • offset Number of tab characters to indent the output.

function ~SBCClassInterface#

Destructs the interface.

virtual SBCClassInterface::~SBCClassInterface () 

Releases the internal maps storing functions and attributes.