Kea: isc::data::MapElement Class Reference

| Kea 3.0.3-git

isc::data::MapElement Class Reference

`#include <data.h>`

Inheritance diagram for isc::data::MapElement:
[legend]

## Public Member Functions
| MapElement (const Position &pos=ZERO_POSITION())
bool | contains (const std::string &s) const override
| Checks if there is data at the given key.
bool | empty () const override
| Return true if there are no elements in the list.
bool | equals (const Element &other, unsigned level=MAX_NESTING_LEVEL) const override
| Test equality.
ConstElementPtr | find (const std::string &id) const override
| Recursively finds any data at the given identifier.
bool | find (const std::string &id, ConstElementPtr &t) const override
| See `Element::find()`.
ConstElementPtr | get (const std::string &s) const override
| Returns the ElementPtr at the given key.
ConstElementPtr | get (int const i) const override
| Get the i-th element in the map.
virtual bool | getValue (bool &t) const
| Get the boolean value.
virtual bool | getValue (double &t) const
| Get the double value.
virtual bool | getValue (int64_t &t) const
| Get the integer value.
bool | getValue (std::map< std::string, ConstElementPtr > &t) const override
| Get the map value.
virtual bool | getValue (std::string &t) const
| Get the string value.
virtual bool | getValue (std::vector< ElementPtr > &t) const
| Get the list value.
const std::map< std::string, ConstElementPtr > & | mapValue () const override
| Return the map value.
void | remove (const std::string &s) override
| Remove the ElementPtr at the given key.
void | remove (int const i) override
| Remove the i-th element from the map.
virtual void | set (const size_t i, ElementPtr element)
| Sets the ElementPtr at the given index.
void | set (const std::string &key, ConstElementPtr value) override
| Sets the ElementPtr at the given key.
virtual bool | setValue (const bool t)
| Set the boolean value.
virtual bool | setValue (const double v)
| Set the double value.
bool | setValue (const int i)
| Set the integer value (int overload).
virtual bool | setValue (const isc::util::int128_t &v)
| Set the big integer value.
bool | setValue (const long int i)
| Set the integer value (long int overload).
virtual bool | setValue (const long long int v)
| Set the integer value.
bool | setValue (const std::map< std::string, ConstElementPtr > &v) override
| Set the map value.
virtual bool | setValue (const std::string &v)
| Set the string value.
virtual bool | setValue (const std::vector< ElementPtr > &v)
| Set the list value.
size_t | size () const override
| Returns number of stored elements.
void | toJSON (std::ostream &ss, unsigned level=MAX_NESTING_LEVEL) const override
| Converts the Element to JSON format and appends it to the given output stream.
Public Member Functions inherited from isc::data::Element
virtual | ~Element ()
const Position & | getPosition () const
| Returns position where the data element's value starts in a configuration string.
types | getType () const
std::string | str () const
| Returns a string representing the Element and all its child elements.
std::string | toWire () const
| Returns the wireformat for the Element and all its child elements.
void | toWire (std::ostream &out) const
| Appends the wireformat for the Element to the stream.
virtual int64_t | intValue () const
| Return the integer value.
virtual isc::util::int128_t | bigIntValue () const
| Return the big integer value.
virtual double | doubleValue () const
| Return the double value.
virtual bool | boolValue () const
| Return the boolean value.
virtual std::string | stringValue () const
| Return the string value.
virtual const std::vector< ElementPtr > & | listValue () const
| Return the list value.
bool | setValue (const long int i)
| Set the integer value (long int overload).
bool | setValue (const int i)
| Set the integer value (int overload).
virtual ElementPtr | getNonConst (const int i) const
| returns element as non-const pointer.
virtual void | add (ElementPtr element)
| Adds an ElementPtr to the list.
void | removeEmptyContainersRecursively (unsigned level=MAX_NESTING_LEVEL)
| Remove all empty maps and lists from this Element and its descendants.

## Additional Inherited Members
Public Types inherited from isc::data::Element
enum | types : int { integer = 0 , real = 1 , boolean = 2 , null = 3 , string = 4 , bigint = 5 , list = 6 , map = 7 , any = 8 }
| The types that an Element can hold. More...
Static Public Member Functions inherited from isc::data::Element
static const Position & | ZERO_POSITION ()
| Returns `Position` object with line_ and pos_ set to 0, and with an empty file name.
static ElementPtr | create (const Position &pos=ZERO_POSITION())
| Create a NullElement.
static ElementPtr | create (const long long int i, const Position &pos=ZERO_POSITION())
| Create an IntElement.
static ElementPtr | create (const int i, const Position &pos=ZERO_POSITION())
| Create an IntElement (int overload).
static ElementPtr | create (const long int i, const Position &pos=ZERO_POSITION())
| Create an IntElement (long int overload).
static ElementPtr | create (const uint32_t i, const Position &pos=ZERO_POSITION())
| Create an IntElement (int32_t overload).
static ElementPtr | create (const isc::util::int128_t &i, const Position &pos=ZERO_POSITION())
| Create a BigIntElement.
static ElementPtr | create (const double d, const Position &pos=ZERO_POSITION())
| Create a DoubleElement.
static ElementPtr | create (const bool b, const Position &pos=ZERO_POSITION())
| Create a BoolElement.
static ElementPtr | create (const std::string &s, const Position &pos=ZERO_POSITION())
| Create a StringElement.
static ElementPtr | create (const char *s, const Position &pos=ZERO_POSITION())
| Create a StringElement (char* overload).
static ElementPtr | createList (const Position &pos=ZERO_POSITION())
| Creates an empty ListElement type ElementPtr.
static ElementPtr | createMap (const Position &pos=ZERO_POSITION())
| Creates an empty MapElement type ElementPtr.
static ElementPtr | fromJSON (const std::string &in, bool preproc=false)
| These functions will parse the given string (JSON) representation of a compound element.
static ElementPtr | fromJSON (std::istream &in, bool preproc=false)
| Creates an Element from the given input stream containing JSON formatted data.
static ElementPtr | fromJSON (std::istream &in, const std::string &file_name, bool preproc=false)
| Creates an Element from the given input stream containing JSON formatted data.
static ElementPtr | fromJSON (std::istream &in, const std::string &file, int &line, int &pos, unsigned level=MAX_NESTING_LEVEL)
| Creates an Element from the given input stream, where we keep track of the location in the stream for error reporting.
static ElementPtr | fromJSONFile (const std::string &file_name, bool preproc=false)
| Reads contents of specified file and interprets it as JSON.
static std::string | typeToName (Element::types type)
| Returns the name of the given type as a string.
static Element::types | nameToType (const std::string &type_name)
| Converts the string to the corresponding type Throws a TypeError if the name is unknown.
static void | preprocess (std::istream &in, std::stringstream &out)
| input text preprocessor.
static ElementPtr | fromWire (std::stringstream &in, int length)
| These function parse the wireformat at the given stringstream (of the given length).
static ElementPtr | fromWire (const std::string &s)
| Creates an Element from the wire format in the given string.
Static Public Attributes inherited from isc::data::Element
static constexpr unsigned | MAX_NESTING_LEVEL = 100U
| Maximum nesting level of Element objects.
Protected Member Functions inherited from isc::data::Element
| Element (types t, const Position &pos=ZERO_POSITION())
| Constructor.

## Detailed Description

Definition at line 948 of file data.h.

## Constructor & Destructor Documentation

## ◆ MapElement()

isc::data::MapElement::MapElement | ( | const Position & | pos = ZERO_POSITION() | ) |
| inline

Definition at line 952 of file data.h.

References isc::data::Element::Element(), and isc::data::Element::map.

Here is the call graph for this function:

## Member Function Documentation

## ◆ contains()

bool isc::data::MapElement::contains | ( | const std::string & | name | ) | const
| inlineoverridevirtual

Checks if there is data at the given key.

Parameters

  name | The key of the Element checked for existence

Returns
  true if there is data at the key, false if not.

Reimplemented from isc::data::Element.

Definition at line 1000 of file data.h.

## ◆ empty()

bool isc::data::MapElement::empty | ( |  | ) | const
| inlineoverridevirtual

Return true if there are no elements in the list.

Reimplemented from isc::data::Element.

Definition at line 1029 of file data.h.

## ◆ equals()

bool isc::data::MapElement::equals | ( | const Element & | other,
|  | unsigned | level = MAX_NESTING_LEVEL ) const
| overridevirtual

Test equality.

Parameters

  other | The other element to compare with.
  level | The maximum level of recursion.

Returns
  true if the other ElementPtr has the same value and the same type (or a different and compatible type), false otherwise.

Exceptions

  BadValue | when nesting depth is more than level.

Implements isc::data::Element.

Definition at line 1199 of file data.cc.

References isc::data::Element::Element(), isc::data::Element::contains(), isc::data::Element::equals(), isc::data::Element::get(), isc::data::Element::getType(), isc_throw, isc::data::Element::map, isc::data::Element::mapValue(), and isc::data::Element::size().

Here is the call graph for this function:

## ◆ find() [1/2]

ConstElementPtr isc::data::MapElement::find | ( | const std::string & | identifier | ) | const
| overridevirtual

Recursively finds any data at the given identifier.

The identifier is a /-separated list of names of nested maps, with the last name being the leaf that is returned.

For instance, if you have a MapElement that contains another MapElement at the key "foo", and that second MapElement contains Another Element at key "bar", the identifier for that last element from the first is "foo/bar".

Parameters

  identifier | The identifier of the element to find

Returns
  The ElementPtr at the given identifier. Returns a null ElementPtr if it is not found, which can be checked with Element::is_null(ElementPtr e).

Reimplemented from isc::data::Element.

Definition at line 1033 of file data.cc.

References isc::data::Element::get(), and isc::data::Element::size().

Here is the call graph for this function:

## ◆ find() [2/2]

bool isc::data::MapElement::find | ( | const std::string & | identifier,
|  | ConstElementPtr & | t ) const
| overridevirtual

See `Element::find()`.

Parameters

  identifier | The identifier of the element to find
  t | Reference to store the resulting ElementPtr, if found.

Returns
  true if the element was found, false if not.

Reimplemented from isc::data::Element.

Definition at line 1082 of file data.cc.

References isc::data::Element::find().

Here is the call graph for this function:

## ◆ get() [1/2]

ConstElementPtr isc::data::MapElement::get | ( | const std::string & | name | ) | const
| inlineoverridevirtual

Returns the ElementPtr at the given key.

Parameters

  name | The key of the Element to return

Returns
  The ElementPtr at the given key, or null if not present

Reimplemented from isc::data::Element.

Definition at line 969 of file data.h.

## ◆ get() [2/2]

ConstElementPtr isc::data::MapElement::get | ( | int const | i | ) | const
| inlineoverridevirtual

Get the i-th element in the map.

Useful when required to iterate with an index.

Parameters

  i | the position of the element you want to return

Returns
  the element at position i

Reimplemented from isc::data::Element.

Definition at line 980 of file data.h.

References isc::data::Element::create().

Here is the call graph for this function:

## ◆ getValue() [1/6]

bool isc::data::Element::getValue | ( | bool & | t | ) | const
| virtual

Get the boolean value.

Parameters

  t | The reference to the boolean.

Returns
  false.

Reimplemented from isc::data::Element.

Definition at line 337 of file data.cc.

## ◆ getValue() [2/6]

bool isc::data::Element::getValue | ( | double & | t | ) | const
| virtual

Get the double value.

Parameters

  t | The reference to the double.

Returns
  false.

Reimplemented from isc::data::Element.

Definition at line 331 of file data.cc.

## ◆ getValue() [3/6]

bool isc::data::Element::getValue | ( | int64_t & | t | ) | const
| virtual

Get the integer value.

Parameters

  t | The reference to the integer.

Returns
  false.

Reimplemented from isc::data::Element.

Definition at line 325 of file data.cc.

## ◆ getValue() [4/6]

bool isc::data::MapElement::getValue | ( | std::map< std::string, ConstElementPtr > & | t | ) | const
| inlineoverridevirtual

Get the map value.

Parameters

  t | The reference to the map.

Returns
  false.

Reimplemented from isc::data::Element.

Definition at line 959 of file data.h.

## ◆ getValue() [5/6]

bool isc::data::Element::getValue | ( | std::string & | t | ) | const
| virtual

Get the string value.

Parameters

  t | The reference to the string.

Returns
  false.

Reimplemented from isc::data::Element.

Definition at line 343 of file data.cc.

## ◆ getValue() [6/6]

bool isc::data::Element::getValue | ( | std::vector< ElementPtr > & | t | ) | const
| virtual

Get the list value.

Parameters

  t | The reference to the list.

Returns
  false.

Reimplemented from isc::data::Element.

Definition at line 349 of file data.cc.

## ◆ mapValue()

const std::map< std::string, ConstElementPtr > & isc::data::MapElement::mapValue | ( |  | ) | const
| inlineoverridevirtual

Return the map value.

Reimplemented from isc::data::Element.

Definition at line 955 of file data.h.

## ◆ remove() [1/2]

void isc::data::MapElement::remove | ( | const std::string & | name | ) |
| inlineoverridevirtual

Remove the ElementPtr at the given key.

Parameters

  name | The key of the Element to remove

Reimplemented from isc::data::Element.

Definition at line 989 of file data.h.

## ◆ remove() [2/2]

void isc::data::MapElement::remove | ( | int const | i | ) |
| inlineoverridevirtual

Remove the i-th element from the map.

Parameters

  i | the position of the element you want to remove

Reimplemented from isc::data::Element.

Definition at line 994 of file data.h.

## ◆ set() [1/2]

void isc::data::Element::set | ( | const size_t | i,
|  | ElementPtr | element )
| virtual

Sets the ElementPtr at the given index.

If the index is out of bounds, this function throws an std::out_of_range exception.

Parameters

  i | The position of the ElementPtr to set
  element | The ElementPtr to set at the position

Reimplemented from isc::data::Element.

Definition at line 452 of file data.cc.

## ◆ set() [2/2]

void isc::data::MapElement::set | ( | const std::string & | name,
|  | ConstElementPtr | element )
| overridevirtual

Sets the ElementPtr at the given key.

Parameters

  name | The key of the Element to set
  element | The ElementPtr to set at the given key.

Reimplemented from isc::data::Element.

Definition at line 1077 of file data.cc.

## ◆ setValue() [1/9]

bool isc::data::Element::setValue | ( | const bool | t | ) |
| virtual

Set the boolean value.

Parameters

  t | The new boolean value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 390 of file data.cc.

## ◆ setValue() [2/9]

bool isc::data::Element::setValue | ( | const double | v | ) |
| virtual

Set the double value.

Parameters

  v | The new double value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 384 of file data.cc.

## ◆ setValue() [3/9]

bool isc::data::Element::setValue | ( | const int | i | ) |
| inline

Set the integer value (int overload).

Parameters

  i | The new integer value.

Returns
  True (and set the value) when the Element type is integer, false otherwise.

Definition at line 424 of file data.h.

## ◆ setValue() [4/9]

bool isc::data::Element::setValue | ( | const isc::util::int128_t & | v | ) |
| virtual

Set the big integer value.

Parameters

  v | The new big integer value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 378 of file data.cc.

## ◆ setValue() [5/9]

bool isc::data::Element::setValue | ( | const long int | i | ) |
| inline

Set the integer value (long int overload).

Parameters

  i | The new integer value.

Returns
  True (and set the value) when the Element type is integer, false otherwise.

Definition at line 415 of file data.h.

## ◆ setValue() [6/9]

bool isc::data::Element::setValue | ( | const long long int | v | ) |
| virtual

Set the integer value.

Parameters

  v | The new integer value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 372 of file data.cc.

## ◆ setValue() [7/9]

bool isc::data::MapElement::setValue | ( | const std::map< std::string, ConstElementPtr > & | v | ) |
| inlineoverridevirtual

Set the map value.

Parameters

  v | The new map value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 964 of file data.h.

## ◆ setValue() [8/9]

bool isc::data::Element::setValue | ( | const std::string & | v | ) |
| virtual

Set the string value.

Parameters

  v | The new string value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 396 of file data.cc.

## ◆ setValue() [9/9]

bool isc::data::Element::setValue | ( | const std::vector< ElementPtr > & | v | ) |
| virtual

Set the list value.

Parameters

  v | The new list value.

Returns
  False.

Reimplemented from isc::data::Element.

Definition at line 402 of file data.cc.

## ◆ size()

size_t isc::data::MapElement::size | ( |  | ) | const
| inlineoverridevirtual

Returns number of stored elements.

Returns
  number of elements.

Reimplemented from isc::data::Element.

Definition at line 1022 of file data.h.

## ◆ toJSON()

void isc::data::MapElement::toJSON | ( | std::ostream & | ss,
|  | unsigned | level = MAX_NESTING_LEVEL ) const
| overridevirtual

Converts the Element to JSON format and appends it to the given output stream.

Parameters

  ss | The output stream where to append the JSON format.
  level | The maximum level of recursion.

Exceptions

  BadValue | when nesting depth is more than level.

Implements isc::data::Element.

Definition at line 1004 of file data.cc.

References isc_throw.

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

- data.h
- data.cc