libcamera: yaml_parser: Extend YamlObject::size() to dictionaries

Dictionaries have a size too, extend the size() function to support
them.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2022-05-24 12:23:38 +03:00
parent 27483e971f
commit 27fb47f70b
3 changed files with 30 additions and 20 deletions

View file

@ -74,6 +74,29 @@ YamlObject::~YamlObject() = default;
* \return True if the YamlObject is a dictionary, false otherwise
*/
/**
* \fn YamlObject::size()
* \brief Retrieve the number of elements in a dictionary or list YamlObject
*
* This function retrieves the size of the YamlObject, defined as the number of
* child elements it contains. Only YamlObject instances of Dictionary or List
* types have a size, calling this function on other types of instances is
* invalid and results in undefined behaviour.
*
* \return The size of the YamlObject
*/
std::size_t YamlObject::size() const
{
switch (type_) {
case Type::Dictionary:
return dictionary_.size();
case Type::List:
return list_.size();
default:
return 0;
}
}
/**
* \fn template<typename T> YamlObject::get<T>(
* const T &defaultValue, bool *ok) const
@ -235,25 +258,6 @@ Size YamlObject::get(const Size &defaultValue, bool *ok) const
#endif /* __DOXYGEN__ */
/**
* \fn YamlObject::size()
* \brief Retrieve the number of elements in a list YamlObject
*
* This function retrieves the size of the YamlObject, defined as the number of
* child elements it contains. Only YamlObject instances of List type have a
* size, calling this function on other types of instances is invalid and
* results in undefined behaviour.
*
* \return The size of the YamlObject
*/
std::size_t YamlObject::size() const
{
if (type_ != Type::List)
return 0;
return list_.size();
}
/**
* \fn YamlObject::operator[](std::size_t index) const
* \brief Retrieve the element from list YamlObject by index