Skip to content

elm/specialist_adapter.hpp

Composition-based adapter that wraps ISpecialist behind the IELM interface (D-06, D-07) More...

Namespaces

Name
sgns
sgns::neoswarm
sgns::neoswarm::elm

Classes

Name
class sgns::neoswarm::elm::SpecialistAdapter
Adapter that maps ISpecialist → IELM via composition.

Detailed Description

Composition-based adapter that wraps ISpecialist behind the IELM interface (D-06, D-07)

Date: 2026-07-17

Source code

#ifndef NEOSWARM_ELM_SPECIALIST_ADAPTER_HPP
#define NEOSWARM_ELM_SPECIALIST_ADAPTER_HPP

#include "i_elm.hpp"
#include "specialists/i_specialist.hpp"

#include <memory>
#include <string>

namespace sgns::neoswarm::elm
{
    class SpecialistAdapter : public IELM
    {
        public:
        SpecialistAdapter( std::shared_ptr<specialists::ISpecialist> specialist,
                           ELMRole role,
                           const std::string& name );

        std::string GetName() const override
        {
            return m_name;
        }

        ELMRole GetRole() const override
        {
            return m_role;
        }

        bool IsLoaded() const override
        {
            return m_specialist && m_specialist->IsLoaded();
        }

        float GetConfidence() const override
        {
            return m_lastConfidence;
        }

        outcome::result<void> Load( const std::string& model_path ) override;

        outcome::result<std::string> Process( const std::string& input, const ELMContext& context ) override;

        private:
        std::shared_ptr<specialists::ISpecialist> m_specialist;
        ELMRole m_role;
        std::string m_name;
        float m_lastConfidence = 0.0f;
    };

} // namespace sgns::neoswarm::elm

#endif // NEOSWARM_ELM_SPECIALIST_ADAPTER_HPP

Updated on 2026-10-09 at 03:59:42 +0000