|
StormByte C++ Library: Config module 1.0.1.9999
StormByte-Config is the configuration module of the StormByte C++ suite.
|
Holds child items. Group and List derive from this.
More...
#include <container.hxx>


Public Member Functions | |
Construction | |
| Container ()=default | |
| Constructs an empty Container. | |
| Container (const std::string &name) | |
| Constructs a Container with the given name. | |
| Container (std::string &&name) | |
| Constructs a Container with the given name (move). | |
| Container (const Container &base)=default | |
| Copy constructor. | |
| Container (Container &&base) noexcept=default | |
| Move constructor. | |
| Container & | operator= (const Container &base)=default |
| Copy assignment operator. | |
| Container & | operator= (Container &&base) noexcept=default |
| Move assignment operator. | |
| virtual | ~Container () noexcept override=default |
| Destructor. | |
Items | |
| Base & | Add (const Base &item, const StormByte::Config::OnExistingAction &on_existing) |
| Adds an item (const reference) using an explicit policy. | |
| Base & | Add (Base &&item, const StormByte::Config::OnExistingAction &on_existing) |
| Adds an item (rvalue) using an explicit policy. | |
| Base & | Add (const Base &item) |
| Adds an item using the container's current OnExistingAction policy. | |
| Base & | Add (Base &&item) |
| Adds an item using the container's current OnExistingAction policy (move). | |
| Base & | Add (Base::PointerType item, const StormByte::Config::OnExistingAction &on_existing) |
| Adds an item to the container. | |
| void | Clear () noexcept |
| Clears all items from the container. | |
| bool | Exists (const std::string &path) const |
| Checks if an item exists by path. | |
| void | Remove (const size_t &index) |
| Removes an item by index. | |
| void | Remove (const std::string &path) |
| Removes an item by path. | |
| constexpr std::span< Base::PointerType > | Items () noexcept |
| Returns a span of all items in the container. | |
| constexpr std::span< const Base::PointerType > | Items () const noexcept |
| Returns a const span of all items in the container. | |
| constexpr size_t | Size () const noexcept |
| Gets the number of items in the current level. | |
| size_t | Count () const noexcept |
| Gets the total number of items including nested ones. | |
Policy | |
| void | SetOnExistingAction (StormByte::Config::OnExistingAction action) noexcept |
| Sets the action to take when an item with the same identity already exists. | |
| StormByte::Config::OnExistingAction | GetOnExistingAction () const noexcept |
| Gets the current OnExistingAction policy. | |
Public Member Functions inherited from StormByte::Config::Item::Base | |
| Base ()=default | |
| Default constructor. | |
| Base (const std::string &name) | |
| Constructs a Base item with a name. | |
| Base (const Base &base)=default | |
| Copy constructor. | |
| Base (Base &&base) noexcept=default | |
| Move constructor. | |
| Base & | operator= (const Base &base)=default |
| Copy assignment operator. | |
| Base & | operator= (Base &&base) noexcept=default |
| Move assignment operator. | |
| virtual | ~Base () noexcept=default |
| Destructor. | |
| bool | operator== (const Base &other) const noexcept |
| Equality operator. | |
| bool | operator!= (const Base &other) const noexcept |
| Inequality operator. | |
| constexpr const std::optional< std::string > & | Name () const noexcept |
| Gets the name of the item. | |
| constexpr void | Name (const std::string &name) noexcept |
| Sets the item name. | |
| bool | IsNameValid () const noexcept |
| Checks if the current name is valid. | |
| virtual std::optional< CommentType > | GetCommentType () const noexcept |
| Returns the comment type if this item is a Comment, otherwise std::nullopt. | |
| constexpr std::string | TypeToString () const noexcept |
| Gets the item type as a string. | |
| operator std::string () const | |
| Converts the item to a string. | |
| template<typename T > | |
| const T & | Value () const |
| Gets the item value (const). | |
| template<typename T > | |
| T & | Value () |
| Gets the item value (mutable). | |
Protected Member Functions | |
| virtual Base::PointerType | BeforeAdditionActions (Base::PointerType item, const StormByte::Config::OnExistingAction onexisting)=0 |
| Actions performed before adding an item. | |
Protected Attributes | |
| std::vector< Base::PointerType > | m_items |
| Items stored in the container. | |
| StormByte::Config::OnExistingAction | m_on_existing_action = StormByte::Config::OnExistingAction::ThrowException |
| Collision policy. | |
Protected Attributes inherited from StormByte::Config::Item::Base | |
| std::optional< std::string > | m_name |
| Item name. | |
Access | |
| bool | Equals (const Base &other) const noexcept override |
| Polymorphic equality comparison. | |
| Base & | operator[] (const size_t &index) |
| Gets a reference to an item by index. | |
| const Base & | operator[] (const size_t &index) const |
| Gets a const reference to an item by index. | |
| Base & | operator[] (const std::string &path) |
| Gets a reference to an item by path. | |
| const Base & | operator[] (const std::string &path) const |
| Gets a const reference to an item by path. | |
| bool | operator== (const Container &container) const noexcept |
| Equality operator. | |
| bool | operator!= (const Container &container) const noexcept |
| Inequality operator. | |
| std::string | Serialize (const int &indent_level) const noexcept override |
| Serializes the container to a string. | |
| virtual constexpr Item::ContainerType | ContainerType () const noexcept=0 |
| Gets the container type. | |
| constexpr std::string | ContainerTypeToString () const noexcept |
| Gets the container type as string. | |
| constexpr Item::Type | Type () const noexcept override |
| Gets the item type. | |
| static constexpr std::pair< const char, const char > | EnclosureCharacters (const ContainerType &type) noexcept |
| Returns the enclosure characters for a given container type. | |
| static constexpr const char | EndCharacter (const ContainerType &type) noexcept |
| Returns the closing character for a given container type. | |
| StormByte::Config::Item::Container::Container | ( | const std::string & | name | ) |
Constructs a Container with the given name.
| name | The name of the container. |
| StormByte::Config::Item::Container::Container | ( | std::string && | name | ) |
Constructs a Container with the given name (move).
| name | The name of the container. |
|
default |
Copy constructor.
| base | Container to copy. |
|
defaultnoexcept |
Move constructor.
| base | Container to move. |
Adds an item using the container's current OnExistingAction policy (move).
| item | Item to add. |
|
inline |
Adds an item (rvalue) using an explicit policy.
| item | Item to add. |
| on_existing | Action to take if the item already exists. |
| Base & StormByte::Config::Item::Container::Add | ( | Base::PointerType | item, |
| const StormByte::Config::OnExistingAction & | on_existing | ||
| ) |
Adds an item to the container.
| item | The item to add. |
| on_existing | The action to take if the item already exists. |
Adds an item using the container's current OnExistingAction policy.
| item | Item to add. |
|
inline |
Adds an item (const reference) using an explicit policy.
| item | Item to add. |
| on_existing | Action to take if the item already exists. |
|
protectedpure virtual |
Actions performed before adding an item.
| item | Item to check. |
| onexisting | Action to take if the item already exists. |
|
constexprpure virtualnoexcept |
Gets the container type.
Implemented in StormByte::Config::Item::Group, and StormByte::Config::Item::List.
|
inlineconstexprnoexcept |
Gets the container type as string.
|
noexcept |
Gets the total number of items including nested ones.
|
inlinestaticconstexprnoexcept |
Returns the enclosure characters for a given container type.
| type | Container type. |
|
inlinestaticconstexprnoexcept |
Returns the closing character for a given container type.
| type | Container type. |
|
overridevirtualnoexcept |
Polymorphic equality comparison.
| other | The other item to compare against. |
Implements StormByte::Config::Item::Base.
| bool StormByte::Config::Item::Container::Exists | ( | const std::string & | path | ) | const |
Checks if an item exists by path.
| path | Path to the item. |
|
inlinenoexcept |
Gets the current OnExistingAction policy.
|
inlineconstexprnoexcept |
Returns a const span of all items in the container.
|
inlineconstexprnoexcept |
Returns a span of all items in the container.
|
inlinenoexcept |
|
noexcept |
| Base & StormByte::Config::Item::Container::operator[] | ( | const size_t & | index | ) |
Gets a reference to an item by index.
| index | Index of the item. |
| OutOfBounds | if index is out of bounds. |
| const Base & StormByte::Config::Item::Container::operator[] | ( | const size_t & | index | ) | const |
Gets a const reference to an item by index.
| index | Index of the item. |
| OutOfBounds | if index is out of bounds. |
| Base & StormByte::Config::Item::Container::operator[] | ( | const std::string & | path | ) |
Gets a reference to an item by path.
| path | Path to the item. |
| InvalidPath | if path is invalid. |
| ItemNotFound | if item is not found. |
|
inline |
Gets a const reference to an item by path.
| path | Path to the item. |
| InvalidPath | if path is invalid. |
| ItemNotFound | if item is not found. |
| void StormByte::Config::Item::Container::Remove | ( | const size_t & | index | ) |
Removes an item by index.
| index | Index of the item to remove. |
| OutOfBounds | if index is out of bounds. |
| void StormByte::Config::Item::Container::Remove | ( | const std::string & | path | ) |
Removes an item by path.
| path | Path to the item to remove. |
| InvalidPath | if path is invalid. |
| ItemNotFound | if item is not found. |
|
overridevirtualnoexcept |
Serializes the container to a string.
| indent_level | Indentation level. |
Reimplemented from StormByte::Config::Item::Base.
|
inlinenoexcept |
Sets the action to take when an item with the same identity already exists.
| action | The policy to apply on name/identity collision. |
|
inlineconstexprnoexcept |
Gets the number of items in the current level.
|
inlineconstexproverridevirtualnoexcept |