# SeriesBase< Self > Struct Template Reference
[Algebra, Series]

Structural element of series K<A*> from a free monoid A* to a semiring K. More...

Inheritance diagram for SeriesBase< Self >:
[legend]

List of all members.

## Public Types

typedef virtual_types< Self > ::monoid_t | monoid_t
| The type of the free monoid A*.
typedef virtual_types< Self > ::semiring_t | semiring_t
| The type of the semiring K.
typedef Self | self_t
| Exact type of the most derived type in the hierarchy.

## Public Member Functions

const monoid_t & | monoid () const
| Accessor to the monoid (const version).
const semiring_t & | semiring () const
| Accessor to the semiring (const version).
monoid_t & | monoid ()
| Accessor to the monoid.
semiring_t & | semiring ()
| Accessor to the semiring.
template<class T >
bool | can_choose_non_starable (SELECTOR(T)) const
| Whether it is possible to call choose_non_starable.
template<class T >
Element< Self, T > | choose_starable (SELECTOR(T)) const
| A randomly chosen starable semiring element.
template<class T >
Element< Self, T > | choose_non_starable (SELECTOR(T)) const
| A randomly chosen non-starable semiring element.
template<typename T >
Element< Self, T > | identity (SELECTOR(T)) const
| Returns the identity of the monoid (if mul_kind).
template<typename T >
Element< Self, T > | zero (SELECTOR(T)) const
| Returns the zero of the monoid (if add_kind).
bool | contains (const Element< Self, T > &elt) const
| Check if a given element is compatible with the structural element.
bool | contains (const Element< OtherS, T > &other) const
| Specialization of `contains` that always returns false.
bool | contains (const T &elt_value) const
| Check if an anonymous value is compatible with a structural element.
Element< Self, T > | choose (SELECTOR(T)) const
| Choose randomly an element in the structure.
self_t & | self ()
| Accessor to the real type.
const self_t & | self () const
| Accessor to the real type.

## Protected Member Functions

| SeriesBase ()
| Default constructor is protected since it is an abstract class.
| SeriesBase (const SeriesBase &other)
| Copy constructor is protected since it is an abstract class.

## Detailed Description

### template<class Self>
struct vcsn::algebra::SeriesBase< Self >

Structural element of series K<A*> from a free monoid A* to a semiring K.

Definition at line 37 of file series_base.hh.

## Member Function Documentation

bool can_choose_non_starable | ( | SELECTOR(T) |  | ) | const`[inherited]`

Whether it is possible to call choose_non_starable.

There's no need for can_choose_starable, since Zero is always starable and therefore can be chosen.

Definition at line 47 of file semiring_base.hxx.

References vcsn::algebra::op_can_choose_non_starable(), and SELECT.

bool contains | ( | const Element< OtherS, T > & | other | ) | const`[inherited]`

Specialization of `contains` that always returns false.

Indeed, elements structured by a particular type are always incompatible with structural elements of another type.

self_t& self | ( |  | ) | `[inherited]`

Accessor to the real type.

To be used by implementations in this class and derived structures to obtain a reference to the structural element with its most derived type.

const self_t& self | ( |  | ) | const`[inherited]`

Accessor to the real type.

To be used by implementations in this class and derived structures to obtain a reference to the structural element with its most derived type.