Skip to content

File channel_handle.hpp

File List > backends > cxx > include > zmbt > mapping > channel_handle.hpp

Go to the documentation of this file

#ifndef ZMBT_MAPPING_CHANNEL_HANDLE_HPP_
#define ZMBT_MAPPING_CHANNEL_HANDLE_HPP_

#include <list>
#include <boost/json.hpp>

#include "zmbt/core.hpp"
#include "zmbt/model/environment.hpp"
#include "zmbt/expr.hpp"

namespace zmbt {
namespace mapping {


class ChannelHandle
{
    JsonNode data_;
    Environment env;

public:
    using ConditionPipe = std::list<ChannelHandle>;
    using Kind = ChannelKind;

    ~ChannelHandle() = default;
    ChannelHandle(JsonNode& model, boost::json::string_view cnl_ptr);

    boost::json::string key() const;

    object_id host() const;
    interface_id interface() const;
    boost::json::string full_path() const;
    boost::json::string signal_path() const;
    Kind kind() const;

    bool operator==(boost::json::value const& v) const;

    operator boost::json::value() const
    {
        return data_.node();
    }

    std::size_t index() const;
    boost::json::value alias() const;

    boost::json::array captures() const;

    lang::Expression transform() const;

    Environment::InterfaceHandle inerface_handle() const;

};



} // namespace mapping
} // namespace zmbt

#endif