faudes::Signature Class Reference

Signature of a Function. More...

#include <cfl_functions.h>

List of all members.

Public Member Functions

 Signature (void)
 Constructor.
 Signature (const Signature &rSrc)
 Copy constructor.
 ~Signature (void)
 Destructor.
const std::string & Name (void) const
 Return signature name.
void Name (const std::string &rName)
 Set signature name.
void Clear (void)
 Clear signature.
int Size (void) const
 Return number of parameters.
const ParameterAt (int n) const
 Get parameter type by position.
void At (int n, const Parameter &rParam)
 Set parameter type by position.
void Append (const Parameter &rParam)
 Append positional parameter.

Protected Member Functions

virtual void DoAssign (const Signature &rSrc)
 Std faudes type interface: assignment.
virtual bool DoEqual (const Signature &rOther) const
 Std faudes type interface: test equality.
virtual void DoRead (TokenReader &rTr, const std::string &rLabel="", const Type *pContext=0)
 Read signature from from TokenReader.
virtual void DoWrite (TokenWriter &rTw, const std::string &rLabel="", const Type *pContext=0) const
 Write configuration data of this object to TokenWriter.

Protected Attributes

std::string mName
 Variable to store name.
std::vector< ParametermParameters
 Vector of Parameter-objects.

Detailed Description

Signature of a Function.

A Signature describes the faudes types of the positional parameters. Tecnically, a Signature is a vector of Parameters. Each Function may execute serveral variants indicated by setting a particular Signature. A list of valid Signatures is maintained in the coresponding FunctionDefinition.

Core members are

  • mName: string to identify ths signature
  • mParameters: vector of Paramters.

The Signature is formally derived from Type to inherit the std token io interface. It is not meant to be registered as a faudes type. The token io format is demonstrated by the following example:

  <Signature name="Sum of two integers">
  <Parameter name="arg1" ftype="Integer"   access="InOut"/>
  <Parameter name="arg2" ftype="Integer"   access="In"/>
  <Parameter name="res"  ftype="String"    access="Out" creturn="true"/>
  </Signature>

Technical note: the variable parameter feature offered by FunctionDefinition is a purely cosmetic hack implemented in FunctionDefinition:MergeDocumentation. It is superseeded by vector parameters and will hence disappear in a future implementation.

Definition at line 220 of file cfl_functions.h.


Constructor & Destructor Documentation

faudes::Signature::Signature ( void   ) 

Constructor.

Definition at line 151 of file cfl_functions.cpp.

faudes::Signature::Signature ( const Signature rSrc  ) 

Copy constructor.

Definition at line 154 of file cfl_functions.cpp.

faudes::Signature::~Signature ( void   )  [inline]

Destructor.

Definition at line 238 of file cfl_functions.h.


Member Function Documentation

void faudes::Signature::Append ( const Parameter rParam  ) 

Append positional parameter.

Parameters:
rParam Parameter to append

Definition at line 222 of file cfl_functions.cpp.

void faudes::Signature::At ( int  n,
const Parameter rParam 
)

Set parameter type by position.

Parameters:
n Position of patameter.
rParam Paraeter value
Exceptions:
Exception 
  • Index out of range

Definition at line 210 of file cfl_functions.cpp.

const Parameter & faudes::Signature::At ( int  n  )  const

Get parameter type by position.

Parameters:
n Position of patameter.
Exceptions:
Exception 
  • Index out of range

Definition at line 198 of file cfl_functions.cpp.

void faudes::Signature::Clear ( void   )  [virtual]

Clear signature.

Reimplemented from faudes::Type.

Definition at line 176 of file cfl_functions.cpp.

void faudes::Signature::DoAssign ( const Signature rSrc  )  [protected, virtual]

Std faudes type interface: assignment.

Parameters:
rSrc Source to copy from
Returns:
Reference to this object.

Definition at line 160 of file cfl_functions.cpp.

bool faudes::Signature::DoEqual ( const Signature rOther  )  const [protected, virtual]

Std faudes type interface: test equality.

Parameters:
rOther Other object to compare with.
Returns:
True on match.

Definition at line 167 of file cfl_functions.cpp.

void faudes::Signature::DoRead ( TokenReader rTr,
const std::string &  rLabel = "",
const Type pContext = 0 
) [protected, virtual]

Read signature from from TokenReader.

The section is hardcoded to "Signature", context is ignored.

Parameters:
rTr TokenReader to read from
rLabel Section to read
pContext Read context to provide contextual information (ignored)
Exceptions:
Exception 
  • IO error (id 1)
  • Token mismatch (id 50, 51, 52)

Reimplemented from faudes::Type.

Definition at line 258 of file cfl_functions.cpp.

void faudes::Signature::DoWrite ( TokenWriter rTw,
const std::string &  rLabel = "",
const Type pContext = 0 
) const [protected, virtual]

Write configuration data of this object to TokenWriter.

The section is hardcoded to "Signature", context is ignored.

Parameters:
rTw Reference to TokenWriter
rLabel Label of section to write
pContext Write context to provide contextual information
Exceptions:
Exception 
  • IO errors (id 2)

Reimplemented from faudes::Type.

Definition at line 229 of file cfl_functions.cpp.

void faudes::Signature::Name ( const std::string &  rName  )  [virtual]

Set signature name.

Parameters:
rName 

Reimplemented from faudes::Type.

Definition at line 188 of file cfl_functions.cpp.

const std::string & faudes::Signature::Name ( void   )  const [virtual]

Return signature name.

Returns:
Name

Reimplemented from faudes::Type.

Definition at line 183 of file cfl_functions.cpp.

int faudes::Signature::Size ( void   )  const

Return number of parameters.

Returns:
int

Definition at line 193 of file cfl_functions.cpp.


Member Data Documentation

std::string faudes::Signature::mName [protected]

Variable to store name.

Definition at line 359 of file cfl_functions.h.

std::vector<Parameter> faudes::Signature::mParameters [protected]

Vector of Parameter-objects.

Definition at line 362 of file cfl_functions.h.


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

libFAUDES 2.23h --- 2014.04.03 --- c++ api documentaion by doxygen