Skip to content

elm/specialist_adapter.cpp

SpecialistAdapter implementation — delegates to ISpecialist via composition. More...

Namespaces

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

Detailed Description

SpecialistAdapter implementation — delegates to ISpecialist via composition.

Date: 2026-07-17

Source code

#include "specialist_adapter.hpp"
#include "common/logging.hpp"

namespace sgns::neoswarm::elm
{
    namespace
    {
        auto SpecialistLogger()
        {
            return neoswarm::CreateLogger( "SpecialistAdapter" );
        }
    } // namespace

    SpecialistAdapter::SpecialistAdapter( std::shared_ptr<specialists::ISpecialist> specialist,
                                          ELMRole role,
                                          const std::string& name )
        : m_specialist( std::move( specialist ) )
        , m_role( role )
        , m_name( name )
    {
    }

    outcome::result<void> SpecialistAdapter::Load( const std::string& model_path )
    {
        if ( !m_specialist )
        {
            return outcome::failure( Error::ModelLoadFailed );
        }
        return m_specialist->Load( model_path );
    }

    outcome::result<std::string> SpecialistAdapter::Process( const std::string& input, const ELMContext& /*ctx*/ )
    {
        if ( !m_specialist )
        {
            m_lastConfidence = 0.0f;
            return outcome::failure( Error::InternalError );
        }
        auto result = m_specialist->Process( input );
        if ( result.has_value() )
        {
            m_lastConfidence = m_specialist->GetConfidence();
        }
        else
        {
            m_lastConfidence = 0.0f;
            return outcome::failure( Error::InternalError );
        }
        return result;
    }

} // namespace sgns::neoswarm::elm

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