Program Listing for File toml_config.ixx

Program Listing for File toml_config.ixx#

↰ Return to documentation for file (Src/toml_config.ixx)

module;

#include "kataglyphis_export.h"
#include <cstdint>
#include <expected>
#include <filesystem>
#include <string>
#include <vector>

export module kataglyphis.toml_config;

export namespace kataglyphis::config {

enum class TomlConfigError { FileNotFound, ParseError, MissingField, InvalidValue };

struct ModelConfig
{
    std::string model_path;
    std::string framework{ "onnx" };
    std::uint32_t input_width{ 640 };
    std::uint32_t input_height{ 640 };
    double confidence_threshold{ 0.25 };
    double iou_threshold{ 0.45 };
    std::vector<std::string> labels;
};

struct PipelineConfig
{
    std::string camera_device{ "0" };
    std::uint32_t capture_width{ 1280 };
    std::uint32_t capture_height{ 720 };
    std::uint32_t capture_fps{ 30 };
    bool enable_inference{ true };
    bool enable_overlay{ true };
};

struct InferenceConfig
{
    ModelConfig model;
    PipelineConfig pipeline;
    std::string log_level{ "info" };
};

[[nodiscard]] KATAGLYPHIS_CPP_API auto load_inference_config(const std::filesystem::path &config_path)
  -> std::expected<InferenceConfig, TomlConfigError>;

[[nodiscard]] KATAGLYPHIS_CPP_API auto parse_inference_config(const std::string &toml_content)
  -> std::expected<InferenceConfig, TomlConfigError>;

[[nodiscard]] KATAGLYPHIS_CPP_API auto get_default_inference_config() -> InferenceConfig;

}// namespace kataglyphis::config