- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# MetaElement< Structure< S >, T > Struct Template Reference
[Fundamental C++: the Element design pattern.]

The base class that glues structural elements to implementation values. More...

Inheritance diagram for MetaElement< Structure< S >, T >:

[legend]

List of all members.

## Public Member Functions
const S & | structure () const
| Virtual accessor to the structural element.
template<typename OtherS, typename U>
Element< S, T > & | operator+= (const Element< OtherS, U > &other)
| Self addition between Element instances. Maps to `op_in_add()`.
template<typename U>
Element< S, T > & | operator+= (const U &other)
| Self addition between Element and foreign values.
template<typename OtherS, typename U>
Element< S, T > & | operator-= (const Element< OtherS, U > &other)
| Self substraction between Element instances. Maps to `op_in_sub()`.
template<typename U>
Element< S, T > & | operator-= (const U &other)
| Self substraction between Element and foreign values.
template<typename OtherS, typename U>
Element< S, T > & | operator/= (const Element< OtherS, U > &other)
| Self division between Element instances. Maps to `op_in_div()`.
template<typename U>
Element< S, T > & | operator/= (const U &other)
| Self division between Element and foreign values.
template<typename OtherS, typename U>
Element< S, T > & | operator *= (const Element< OtherS, U > &other)
| Self multiplication between Element instances. Maps to `op_in_mul()`.
template<typename U>
Element< S, T > & | operator *= (const U &other)
| Self multiplication between Element and foreign values.
template<typename OtherS, typename U>
Element< S, T > & | operator%= (const Element< OtherS, U > &other)
| Self modulus between Element instances. Maps to `op_in_mod()`.
template<typename U>
Element< S, T > & | operator%= (const U &other)
| Self modulus between Element and foreign values.
Element< S, T > & | operator++ ()
| In-place, prefix incrementation. Maps to `op_in_inc()`.
Element< S, T > | operator++ (int)
| Postfix incrementation. Maps to `op_in_dec()`, with Element copy.
Element< S, T > & | operator-- ()
| In-place, prefix decrementation. Maps to `op_in_dec()`.
Element< S, T > | operator-- (int)
| Postfix decrementation. Maps to `op_in_dec()`, with Element copy().
template<typename U>
Element< S, T > & | swap (Element< S, U > &other)
| Standard constant-time swap between Element instances.
T & | value ()
| Virtual accessor to value data.
const T & | value () const
| Virtual accessor to value data.
Element< S, T > & | self ()
| Accessor to the real type.
const Element< S, T > & | self () const
| Accessor to the real type.
## Static Public Attributes
static const bool | dynamic_value = true
| Whether the implementation type has run-time data.
## Protected Member Functions
| MetaElement ()
| Protected constructor for class abstraction.
| MetaElement (const MetaElement &other)
| Protected constructor for class abstraction.

## Detailed Description

### template<class S, typename T>
struct vcsn::MetaElement< Structure< S >, T >

The base class that glues structural elements to implementation values.

`MetaElement<Structure<Self>`, T> is the specialization that is at the top of all the hierarchy of Vaucanson. It inherits, and thus is decorated with, `SyntacticDecorator<Self, T>`.

See also:
  - `SyntacticDecorator`
  - `MetaElement`
  - `Element`
  - `Structure`

Definition at line 86 of file meta_element_root.hh.

## Member Function Documentation

Element<S, T>& operator+= | ( | const U & | other | ) | `[inline, inherited]`

Self addition between Element and foreign values.

Maps to `op_in_add()`.

Element<S, T>& operator-= | ( | const U & | other | ) | `[inline, inherited]`

Self substraction between Element and foreign values.

Maps to `op_in_sub()`.

Element<S, T>& operator/= | ( | const U & | other | ) | `[inline, inherited]`

Self division between Element and foreign values.

Maps to `op_in_div()`.

Element<S, T>& operator *= | ( | const U & | other | ) | `[inline, inherited]`

Self multiplication between Element and foreign values.

Maps to `op_in_mul()`.

Element<S, T>& operator%= | ( | const U & | other | ) | `[inline, inherited]`

Self modulus between Element and foreign values.

Maps to `op_in_mod()`.

Element< S, T > & swap | ( | Element< S, U > & | other | ) | `[inline, inherited]`

Standard constant-time swap between Element instances.

Maps to `op_swap()`.

Definition at line 130 of file syntactic_decorator.hxx.

References vcsn::op_swap(), Element::structure(), SyntacticDecorator::structure(), Element::value(), and SyntacticDecorator::value().

Element< S, T > & self | ( |  | ) | `[inline, inherited]`

Accessor to the real type.

To be used by implementations in this class and derived MetaElement specializations to obtain a reference to the Element instance with its most derived type.

Definition at line 27 of file syntactic_decorator.hxx.

const Element< S, T > & self | ( |  | ) | const`[inline, inherited]`

Accessor to the real type.

To be used by implementations in this class and derived MetaElement specializations to obtain a reference to the Element instance with its most derived type.

Definition at line 34 of file syntactic_decorator.hxx.