#include <directives.h>
Inheritance diagram for conf::ConfArray< ValueT, ContainerT >:
Public Types | |
typedef ValueT | value_type |
The value type. | |
typedef ContainerT | container_type |
Public Member Functions | |
ConfArray (std::string const &name, bool reloadable=true, typename ContainerT::size_type max=INT_MAX) | |
Constructor. | |
ConfArray (std::string const &name, ContainerT const &defval, bool reloadable=true, typename ContainerT::size_type max=INT_MAX) | |
Constructor setting a default value. | |
ConfArray (ConfArray const &cd) | |
Copy constructor. | |
virtual ConfArray< ValueT, ContainerT > & | operator= (ConfArray< ValueT, ContainerT > const &right) |
Assignment operator. | |
operator ContainerT const & () const | |
Conversion operator. | |
ContainerT const & | operator * () const |
Provides access to the underlying container. | |
ContainerT const * | operator-> () const |
Provides access to the underlying container. | |
virtual char const * | label (size_t index) const |
Implements ConfDir::label(). | |
virtual size_t | label_count () const |
Implements ConfDir::label_count(). | |
Protected Member Functions | |
virtual bool | assign (Conf &conf, unsigned short count, std::string const params[]) |
Sets the value. | |
virtual ContainerT::iterator | insert () |
Inserts a new ValueT object in the container. | |
Protected Attributes | |
ContainerT::size_type | m_max_values |
The template also lets you choose the container type you want to use to implement the array (it will work as long as the container has insert(iterator pos, T const &value), clear() and size() functions -- which is the case of all containers of the C++ STL.
Operators * and -> are overloaded so you can easily access the internal container object. A conversion operator to the container type is also provided.
Example of use:
ConfArray<ConfBool, std::vector<ConfBool> > array;
Caveat:
conf::ConfArray< ValueT, ContainerT >::ConfArray | ( | std::string const & | name, | |
bool | reloadable = true , |
|||
typename ContainerT::size_type | max = INT_MAX | |||
) | [inline, explicit] |
This constructor sets the directive name and the maximum number of values that can be added to the container.
[in] | name | The directive name. |
[in] | reloadable | Whether the directive can be reloaded or not. |
[in] | max | The maximum number of values. |
conf::ConfArray< ValueT, ContainerT >::ConfArray | ( | std::string const & | name, | |
ContainerT const & | defval, | |||
bool | reloadable = true , |
|||
typename ContainerT::size_type | max = INT_MAX | |||
) | [inline] |
This constructor sets the directive name, default value and the maximum number of values that can be added to the container.
[in] | name | The directive name. |
[in] | defval | The default value. |
[in] | reloadable | Whether the directive can be reloaded or not. |
[in] | max | The maximum number of values. |
bool conf::ConfArray< ValueT, ContainerT >::assign | ( | Conf & | conf, | |
unsigned short | count, | |||
std::string const | params[] | |||
) | [inline, protected, virtual] |
Transforms the string array passed by the parser into the directive's value. This function must ensure that the value is valid through a call to check() before setting it (you don't need to set m_value_set to true, this will be handled by set() when the function returns successfully).
[in] | conf | The Conf object that called set(). |
[in] | count | Number of parameters in params. |
[in] | params | Parameters passed to the directive (NULL if count is 0). |
Implements conf::ConfValue< ContainerT >.
ContainerT::iterator conf::ConfArray< ValueT, ContainerT >::insert | ( | ) | [inline, protected, virtual] |
Inserts a new ValueT directive (that the function is responsible to create) in the container, through a call to the ContainerT::insert(iterator, ValueT) function. It must name the new directive as the name[n] where name is this directive name and n is ContainerT::size().