Tesseract 0.28.4
Loading...
Searching...
No Matches
property_tree.h File Reference

This is a property tree class. More...

#include <string>
#include <string_view>
#include <map>
#include <vector>
#include <optional>
#include <cstdint>
#include <functional>
#include <iosfwd>
#include <yaml-cpp/yaml.h>

Classes

class  tesseract::common::PropertyTree
 Represents a node in a hierarchical property tree. More...
 
class  tesseract::common::PropertyTreeBuilder
 Fluent builder for constructing PropertyTree schemas with minimal boilerplate. More...
 

Namespaces

namespace  tesseract::common
 Namespace owning boost's hash_is_avalanching, and defined iff boost has the trait at all.
 

Functions

std::string tesseract::common::property_type::createList (std::string_view type, std::size_t length=0)
 A utility for constructing the vector<type>
 
std::string tesseract::common::property_type::createMap (std::string_view type)
 A utility for constructing the map<std::string, type>
 
std::string tesseract::common::property_type::createMap (std::string_view key, std::string_view type)
 A utility for constructing the map<key, type>
 
PropertyTree tesseract::common::makePluginInfoContainerSchema (std::string_view factory_base_type)
 Build a PluginInfoContainer schema for the given factory base type.
 
std::optional< std::pair< std::string, std::size_t > > tesseract::common::isSequenceType (std::string_view type)
 Check if type is a sequence.
 
std::optional< std::pair< std::string, std::string > > tesseract::common::isMapType (std::string_view type)
 Check if type is a map.
 
void tesseract::common::validateRequired (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: ensure 'required' attribute is present and non-null.
 
void tesseract::common::validateEnum (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: enforce that node's value is in 'enum' list.
 
void tesseract::common::validateStringLength (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: enforce minimum_length and maximum_length constraints on strings.
 
void tesseract::common::validateMap (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: ensure node value is of type YAML::NodeType::Map.
 
void tesseract::common::validateSequence (const PropertyTree &node, std::size_t length, const std::string &path, std::vector< std::string > &errors)
 Validator: ensure node value is of type YAML::NodeType::Sequence.
 
void tesseract::common::validateContainer (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: ensure property is a container of child properties. The property should have children and the value should be null.
 
void tesseract::common::validateCustomType (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: Retrieve schema for the custom type and run its validators.
 
void tesseract::common::validatePluginInfo (const PropertyTree &node, const std::string &base_type, const std::string &path, std::vector< std::string > &errors)
 Validator: Validate a plugin info structure (class + config) for derived types.
 
template<typename T >
void tesseract::common::validateTypeCast (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validate that the node's value can be interpreted as the provided type.
 
template<typename T >
void tesseract::common::validateTypeCastWithRange (const PropertyTree &node, const std::string &path, std::vector< std::string > &errors)
 Validator: type cast and enforce 'minimum'/'maximum' range constraints.
 

Variables

constexpr std::string_view tesseract::common::property_type::BOOL { "bool" }
 
constexpr std::string_view tesseract::common::property_type::CHAR { "char" }
 
constexpr std::string_view tesseract::common::property_type::STRING { "string" }
 
constexpr std::string_view tesseract::common::property_type::INT32 { "int32" }
 
constexpr std::string_view tesseract::common::property_type::UINT32 { "uint32" }
 
constexpr std::string_view tesseract::common::property_type::INT64 { "int64" }
 
constexpr std::string_view tesseract::common::property_type::UINT64 { "uint64" }
 
constexpr std::string_view tesseract::common::property_type::FLOAT32 { "float32" }
 
constexpr std::string_view tesseract::common::property_type::FLOAT64 { "float64" }
 
constexpr std::string_view tesseract::common::property_type::CONTAINER { "container" }
 
constexpr std::string_view tesseract::common::property_type::ONEOF { "oneOf" }
 
constexpr std::string_view tesseract::common::property_type::EIGEN_ISOMETRY_3D { "Eigen::Isometry3d" }
 
constexpr std::string_view tesseract::common::property_type::EIGEN_VECTOR_XD { "Eigen::VectorXd" }
 
constexpr std::string_view tesseract::common::property_type::EIGEN_VECTOR_2D { "Eigen::Vector2d" }
 
constexpr std::string_view tesseract::common::property_type::EIGEN_VECTOR_3D { "Eigen::Vector3d" }
 
constexpr std::string_view tesseract::common::property_attribute::TYPE { "type" }
 
constexpr std::string_view tesseract::common::property_attribute::DOC { "doc" }
 
constexpr std::string_view tesseract::common::property_attribute::REQUIRED { "required" }
 
constexpr std::string_view tesseract::common::property_attribute::DEFAULT { "default" }
 
constexpr std::string_view tesseract::common::property_attribute::ENUM { "enum" }
 
constexpr std::string_view tesseract::common::property_attribute::MINIMUM { "minimum" }
 
constexpr std::string_view tesseract::common::property_attribute::MAXIMUM { "maximum" }
 
constexpr std::string_view tesseract::common::property_attribute::MINIMUM_LENGTH { "minimum_length" }
 
constexpr std::string_view tesseract::common::property_attribute::MAXIMUM_LENGTH { "maximum_length" }
 
constexpr std::string_view tesseract::common::property_attribute::ACCEPTS_DERIVED_TYPES { "accepts_derived_types" }
 
constexpr std::string_view tesseract::common::property_attribute::CONFIG_KEY { "config_key" }
 
constexpr std::string_view tesseract::common::property_attribute::PLUGIN_DISCOVERY_ROLE { "plugin_discovery_role" }
 
constexpr std::string_view tesseract::common::property_attribute::PLUGIN_SECTION { "plugin_section" }
 
constexpr std::string_view tesseract::common::property_attribute::PLUGIN_BASE_TYPE { "plugin_base_type" }
 
constexpr std::string_view tesseract::common::property_attribute::LABEL { "label" }
 
constexpr std::string_view tesseract::common::property_attribute::PLACEHOLDER { "placeholder" }
 
constexpr std::string_view tesseract::common::property_attribute::GROUP { "group" }
 
constexpr std::string_view tesseract::common::property_attribute::READ_ONLY { "read_only" }
 
constexpr std::string_view tesseract::common::property_attribute::HIDDEN { "hidden" }
 
constexpr std::string_view tesseract::common::plugin_discovery_role::SEARCH_PATHS { "search_paths" }
 
constexpr std::string_view tesseract::common::plugin_discovery_role::SEARCH_LIBRARIES { "search_libraries" }
 

Detailed Description

This is a property tree class.

Defines PropertyTree, a hierarchical structure for YAML-based configuration with metadata and validation support.

Author
Levi Armstrong
Date
March 1, 2026
License
Software License Agreement (Apache License)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ createList()

std::string tesseract::common::property_type::createList ( std::string_view  type,
std::size_t  length = 0 
)

A utility for constructing the vector<type>

Parameters
typeThe type assoicated with the list
lengthThe length if fixed size
Returns
The string representation of the vector<type>, aka. type[] and type[length] for fixed size

◆ createMap() [1/2]

std::string tesseract::common::property_type::createMap ( std::string_view  type)

A utility for constructing the map<std::string, type>

Parameters
typeThe value type assoicated with the map
Returns
The string representation of the map<std::string, type>, aka. {string,string}

◆ createMap() [2/2]

std::string tesseract::common::property_type::createMap ( std::string_view  key,
std::string_view  type 
)

A utility for constructing the map<key, type>

Parameters
typeThe value type assoicated with the map
Returns
The string representation of the map<key, type>, aka. {string, string} or {string[2], string}

Variable Documentation

◆ ACCEPTS_DERIVED_TYPES

constexpr std::string_view tesseract::common::property_attribute::ACCEPTS_DERIVED_TYPES { "accepts_derived_types" }
constexpr

Allow derived types for custom type validation

◆ CONFIG_KEY

constexpr std::string_view tesseract::common::property_attribute::CONFIG_KEY { "config_key" }
constexpr

YAML document key containing this schema

◆ PLUGIN_DISCOVERY_ROLE

constexpr std::string_view tesseract::common::property_attribute::PLUGIN_DISCOVERY_ROLE { "plugin_discovery_role" }
constexpr

Role of a loader input property

◆ PLUGIN_SECTION

constexpr std::string_view tesseract::common::property_attribute::PLUGIN_SECTION { "plugin_section" }
constexpr

boost_plugin_loader export section

◆ PLUGIN_BASE_TYPE

constexpr std::string_view tesseract::common::property_attribute::PLUGIN_BASE_TYPE { "plugin_base_type" }
constexpr

Registered plugin factory base type

◆ LABEL

constexpr std::string_view tesseract::common::property_attribute::LABEL { "label" }
constexpr

Display name for the property (e.g. "Format Result")

◆ PLACEHOLDER

constexpr std::string_view tesseract::common::property_attribute::PLACEHOLDER { "placeholder" }
constexpr

Hint text shown when the field is empty

◆ GROUP

constexpr std::string_view tesseract::common::property_attribute::GROUP { "group" }
constexpr

Category/section for organizing properties in the GUI

◆ READ_ONLY

constexpr std::string_view tesseract::common::property_attribute::READ_ONLY { "read_only" }
constexpr

If true, the property is not user-editable

◆ HIDDEN

constexpr std::string_view tesseract::common::property_attribute::HIDDEN { "hidden" }
constexpr

If true, the property is hidden from the GUI