Skip to content

File permanent_data.hpp

File List > backends > cxx > include > zmbt > model > permanent_data.hpp

Go to the documentation of this file

#ifndef ZMBT_MODEL_PERMANENT_DATA_HPP_
#define ZMBT_MODEL_PERMANENT_DATA_HPP_

#include <functional>
#define BOOST_UNORDERED_DISABLE_REENTRANCY_CHECK
#include <boost/unordered/concurrent_flat_map.hpp>
#include <boost/optional.hpp>



#include "zmbt/core.hpp"
#include "zmbt/reflect/prototypes.hpp"
#include "output_recorder.hpp"


namespace zmbt {

struct PermanentEnvData final
{
    using SetupOutputRecorder = std::function<void(OutputRecorder&)>;

    boost::concurrent_flat_map<interface_id, object_id> default_objects{};
    boost::concurrent_flat_map<interface_id, reflect::Prototypes> prototypes{};
    boost::concurrent_flat_map<interface_id, SetupOutputRecorder> output_recorder_factories{};

    boost::optional<object_id>             get_default_object(interface_id const&) const;
    boost::optional<reflect::Prototypes>   get_prototypes(interface_id const&) const;
    boost::optional<SetupOutputRecorder>   get_output_recorder_factory(interface_id const&) const;
};

} // namespace zmbt

#endif