Common Utility Functions
Configuration Parameter Access
The following utility functions are member functions of the MethodPreset class and can be called directly by its derived classes to safely obtain various types of parameter values from method configuration.
GetOptionAsIndexT
Function: Get unsigned integer value (IndexT/uint32_t) from method configuration.
Calling Method:
this->GetOptionAsIndexT(key, default_value)or directly callGetOptionAsIndexT(key, default_value)in member functions.Parameters:
key: const MethodParams& - Parameter key name.default_value: IndexT - Default value returned when key does not exist or conversion fails, defaults to 0.
Return Value: Parameter value of IndexT type.
Usage Example:
// In MethodPreset derived class member function: // IndexT max_iterations = this->GetOptionAsIndexT("max_iterations", 100); IndexT max_iterations = GetOptionAsIndexT("max_iterations", 100);
GetOptionAsInt
Function: Get signed integer value (int) from method configuration.
Calling Method:
this->GetOptionAsInt(key, default_value)orGetOptionAsInt(key, default_value).Parameters:
key: const MethodParams& - Parameter key name.default_value: int - Default value returned when key does not exist or conversion fails, defaults to 0.
Return Value: Parameter value of int type.
Usage Example:
// int step_size = this->GetOptionAsInt("step_size", -1); int step_size = GetOptionAsInt("step_size", -1);
GetOptionAsFloat
Function: Get float value from method configuration.
Calling Method:
this->GetOptionAsFloat(key, default_value)orGetOptionAsFloat(key, default_value).Parameters:
key: const MethodParams& - Parameter key name.default_value: float - Default value returned when key does not exist or conversion fails, defaults to 0.0f.
Return Value: Parameter value of float type.
Usage Example:
// float threshold = this->GetOptionAsFloat("threshold", 0.5f); float threshold = GetOptionAsFloat("threshold", 0.5f);
GetOptionAsDouble
Function: Get double precision floating point value from method configuration.
Calling Method:
this->GetOptionAsDouble(key, default_value)orGetOptionAsDouble(key, default_value).Parameters:
key: const MethodParams& - Parameter key name.default_value: double - Default value returned when key does not exist or conversion fails, defaults to 0.0.
Return Value: Parameter value of double type.
Usage Example:
// double precision_value = this->GetOptionAsDouble("precision", 1e-6); double precision_value = GetOptionAsDouble("precision", 1e-6);
GetOptionAsBool
Function: Get bool value from method configuration.
Calling Method:
this->GetOptionAsBool(key, default_value)orGetOptionAsBool(key, default_value).Parameters:
key: const MethodParams& - Parameter key name.default_value: bool - Default value returned when key does not exist or conversion fails, defaults to false.
Return Value: Parameter value of bool type.
Note: “true”, “yes”, “1”, “on” in configuration are recognized as true; “false”, “no”, “0”, “off” are recognized as false.
Usage Example:
// bool enable_feature = this->GetOptionAsBool("enable_feature", false); bool enable_feature = GetOptionAsBool("enable_feature", false);
GetOptionAsString
Function: Get string value from method configuration.
Calling Method:
this->GetOptionAsString(key, default_value)orGetOptionAsString(key, default_value).Parameters:
key: const MethodParams& - Parameter key name.default_value: const std::string& - Default value returned when key does not exist, defaults to empty string.
Return Value: Parameter value of std::string type.
Usage Example:
// std::string mode = this->GetOptionAsString("algorithm_mode", "default"); std::string mode = GetOptionAsString("algorithm_mode", "default");
GetOptionAsPath
Function: Get path value from method configuration with placeholder support. Supports
{exe_dir},{root_dir}, and generic{key_name}placeholders.Calling Method:
this->GetOptionAsPath(key, root_dir, default_value)orGetOptionAsPath(key, root_dir, default_value).Parameters:
key: const MethodParams& - Parameter key name.root_dir: const std::string& - Root directory path for{root_dir}placeholder replacement. If empty, gets frommethod_options_. Defaults to empty string.default_value: const std::string& - Default value returned when key does not exist, defaults to empty string.
Return Value: Parameter value of std::string type with placeholders replaced.
Supported Placeholders:
{root_dir}: Root directory path. Prioritizes theroot_dirparameter, otherwise gets frommethod_options_.{exe_dir}: Executable file directory.{key_name}: Reference other key values inmethod_options_(note: referenced keys need to exist first).
Usage Example:
// Get path with placeholders std::string output_path = GetOptionAsPath("output_dir", "/project/root"); // If config contains: "output_dir = {root_dir}/results/{dataset_name}" // And method_options_ contains: "dataset_name = test_data" // Result: "/project/root/results/test_data" // Get path with exe_dir placeholder std::string config_path = GetOptionAsPath("config_file"); // If config contains: "config_file = {exe_dir}/../configs/settings.ini" // Result: "/path/to/executable/../configs/settings.ini"
Data Type Conversion and Access
GetDataPtr Function
Function: Safely get and convert data pointer to specified type. This function can intelligently handle both regular
DataPtrandDataPackagethat encapsulates multiple data items.Template Parameters:
T: Target data structure type to convert to (e.g.,GlobalPoses,Tracks).
Parameters:
data_ptr_or_package_ptr: const Interface::DataPtr& - Smart pointer pointing to a singleDataIOobject orDataPackageobject.data_name_in_package(optional): const std::string& - If the first parameter is aDataPackage, this parameter specifies the name of the target data item in the package. Defaults to empty string.
Return Value:
std::shared_ptr<T>, pointing to data of type T. Returnsnullptrif conversion fails or data item is not found.How It Works:
Check if input
data_ptr_or_package_ptrisnullptr.Determine if input points to
DataPackageor regularDataIOobject:If
DataPackage:Requires
data_name_in_packagemust be provided.Extract target
DataIOobject fromDataPackageby name.
If regular
DataIOobject:data_name_in_packageparameter (if provided) will be ignored.Directly use this
DataIOobject.
Call
GetData()from targetDataIOobject to get rawvoid*pointer.static_castvoid*pointer toT*.Use
std::shared_ptr’s aliasing constructor to create a newstd::shared_ptr<T>that points to internalTtype data but shares ownership with the originalDataIOobject (orDataIOobject inDataPackage). This ensures that as long as the returnedstd::shared_ptr<T>exists, the underlying data will not be released.
Usage Example:
// Example 1: Get GlobalPoses from regular DataPtr Interface::DataPtr single_pose_data_ptr = some_plugin->Run(); // Assume returns single pose data auto poses = GetDataPtr<GlobalPoses>(single_pose_data_ptr); if (poses) { // Use poses } // Example 2: Get Tracks data from DataPackage Interface::DataPtr package_ptr = another_plugin->Run(); // Assume returns a DataPackage auto tracks = GetDataPtr<Tracks>(package_ptr, "output_tracks"); // "output_tracks" is the name defined in package if (tracks) { // Use tracks }
String Conversion Utilities
String2Float
Function: Convert string to float type
Parameters:
value: const std::string& - Input string
default_value: float - Default value returned when conversion fails, defaults to 0.0f
Return Value: Converted float value
Usage Scenario: Used for safe conversion of configuration file string values to floating point numbers
Usage Example:
float threshold = String2Float("0.75", 0.5f); // Returns 0.75 float invalid = String2Float("xyz", 0.5f); // Returns 0.5
String2Bool
Function: Convert string to bool type
Parameters:
str: const std::string& - Input string
default_value: bool - Default value returned when conversion fails, defaults to false
Return Value: Converted bool value
Note: “true”, “yes”, “1”, “on” are converted to true; “false”, “no”, “0”, “off” are converted to false
Usage Example:
bool enabled = String2Bool("yes", false); // Returns true bool disabled = String2Bool("off", true); // Returns false bool invalid = String2Bool("maybe", false); // Returns default value false
Deprecated Functions
String2IndexT (Deprecated): This function has been removed from
types.hpp, related functionality is replaced byMethodPreset::GetOptionAsIndexT().