Skip to content

File model_definition_states.hpp

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

Go to the documentation of this file

#ifndef ZMBT_MAPPING_MODEL_DEFINITION_STATES_HPP_
#define ZMBT_MAPPING_MODEL_DEFINITION_STATES_HPP_

#include "zmbt/mapping/model_definition.hpp"
#include "zmbt/mapping/model_definition_node.hpp"
#include "zmbt/mapping/model_definition_transitions.hpp"

namespace zmbt {
namespace mapping {

class ModelDefinition::N_Descr 
    : public ModelDefinition::N_Term
    , public ModelDefinition::T_Description<ModelDefinition::N_Term>
{
  private:
    friend class ModelDefinition;
    N_Descr(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Descr(N_Descr const&) = delete;
    N_Descr(N_Descr&&) = default;

  public:
    N_Descr() : N_Descr(detail::DefinitionHelper{}) {}
    virtual ~N_Descr()
    {
    }
};

class ModelDefinition::N_Post 
    : public ModelDefinition::N_Descr
    , public ModelDefinition::T_PostRun<ModelDefinition::N_Descr>
{
  private:
    friend class ModelDefinition;
    N_Post(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Post(N_Post const&) = delete;
    N_Post(N_Post&&) = default;

  public:
    N_Post() : N_Post(detail::DefinitionHelper{}) {}
    virtual ~N_Post()
    {
    }
};

class ModelDefinition::N_Pre 
    : public ModelDefinition::N_Post
    , public ModelDefinition::T_PreRun<ModelDefinition::N_Post>
{
  private:
    friend class ModelDefinition;
    N_Pre(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Pre(N_Pre const&) = delete;
    N_Pre(N_Pre&&) = default;

  public:
    N_Pre() : N_Pre(detail::DefinitionHelper{}) {}
    virtual ~N_Pre()
    {
    }
};

class ModelDefinition::N_Param 
    : public ModelDefinition::N_Pre
    , public ModelDefinition::T_Param<ModelDefinition::N_ParamTable>
    , public ModelDefinition::T_CustomParam<ModelDefinition::N_Param>
{
  private:
    friend class ModelDefinition;
    N_Param(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Param(N_Param const&) = delete;
    N_Param(N_Param&&) = default;

  public:
    N_Param() : N_Param(detail::DefinitionHelper{}) {}
    virtual ~N_Param()
    {
    }
};

class ModelDefinition::N_ParamTable 
    : public ModelDefinition::N_Param
    , public ModelDefinition::T_ParamRow<ModelDefinition::N_ParamTable>
{
  private:
    friend class ModelDefinition;
    N_ParamTable(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_ParamTable(N_ParamTable const&) = delete;
    N_ParamTable(N_ParamTable&&) = default;

  public:
    N_ParamTable() : N_ParamTable(detail::DefinitionHelper{}) {}
    virtual ~N_ParamTable()
    {
    }
};

class ModelDefinition::N_Test 
    : public ModelDefinition::N_Param
    , public ModelDefinition::T_Test<ModelDefinition::N_TestTable>
{
  private:
    friend class ModelDefinition;
    N_Test(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Test(N_Test const&) = delete;
    N_Test(N_Test&&) = default;

  public:
    N_Test() : N_Test(detail::DefinitionHelper{}) {}
    virtual ~N_Test()
    {
    }
};

class ModelDefinition::N_TestTable 
    : public ModelDefinition::N_Param
    , public ModelDefinition::T_TestRow<ModelDefinition::N_TestTable>
{
  private:
    friend class ModelDefinition;
    N_TestTable(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_TestTable(N_TestTable const&) = delete;
    N_TestTable(N_TestTable&&) = default;

  public:
    N_TestTable() : N_TestTable(detail::DefinitionHelper{}) {}
    virtual ~N_TestTable()
    {
    }
};

class ModelDefinition::N_Channel 
    : public ModelDefinition::T_At<ModelDefinition::N_Filter>
{
  private:
    friend class ModelDefinition;
    N_Channel(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Channel(N_Channel const&) = delete;
    N_Channel(N_Channel&&) = default;

  public:
    N_Channel() : N_Channel(detail::DefinitionHelper{}) {}
    virtual ~N_Channel()
    {
    }
};

class ModelDefinition::N_MaybeChannel 
    : public ModelDefinition::N_Test
    , public ModelDefinition::T_At<ModelDefinition::N_Filter>
{
  private:
    friend class ModelDefinition;
    N_MaybeChannel(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_MaybeChannel(N_MaybeChannel const&) = delete;
    N_MaybeChannel(N_MaybeChannel&&) = default;

  public:
    N_MaybeChannel() : N_MaybeChannel(detail::DefinitionHelper{}) {}
    virtual ~N_MaybeChannel()
    {
    }
};

class ModelDefinition::N_ChannelEnd 
    : public ModelDefinition::T_TerminatePipe<ModelDefinition::N_MaybeChannel>
    , public ModelDefinition::T_ContinuePipe<ModelDefinition::N_Channel>
{
  private:
    friend class ModelDefinition;
    N_ChannelEnd(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_ChannelEnd(N_ChannelEnd const&) = delete;
    N_ChannelEnd(N_ChannelEnd&&) = default;

  public:
    N_ChannelEnd() : N_ChannelEnd(detail::DefinitionHelper{}) {}
    virtual ~N_ChannelEnd()
    {
    }
};

class ModelDefinition::N_Decor 
    : public ModelDefinition::N_ChannelEnd
    , public ModelDefinition::T_As<ModelDefinition::N_ChannelEnd>
{
  private:
    friend class ModelDefinition;
    N_Decor(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Decor(N_Decor const&) = delete;
    N_Decor(N_Decor&&) = default;

  public:
    N_Decor() : N_Decor(detail::DefinitionHelper{}) {}
    virtual ~N_Decor()
    {
    }
};

class ModelDefinition::N_Alias 
    : public ModelDefinition::N_Decor
    , public ModelDefinition::T_Alias<ModelDefinition::N_Decor>
{
  private:
    friend class ModelDefinition;
    N_Alias(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Alias(N_Alias const&) = delete;
    N_Alias(N_Alias&&) = default;

  public:
    N_Alias() : N_Alias(detail::DefinitionHelper{}) {}
    virtual ~N_Alias()
    {
    }
};

class ModelDefinition::N_Via 
    : public ModelDefinition::N_Alias
    , public ModelDefinition::T_Take<ModelDefinition::N_Alias>
{
  private:
    friend class ModelDefinition;
    N_Via(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Via(N_Via const&) = delete;
    N_Via(N_Via&&) = default;

  public:
    N_Via() : N_Via(detail::DefinitionHelper{}) {}
    virtual ~N_Via()
    {
    }
};

class ModelDefinition::N_Filter 
    : public ModelDefinition::N_Via
    , public ModelDefinition::T_Filter<ModelDefinition::N_Via>
{
  private:
    friend class ModelDefinition;
    N_Filter(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Filter(N_Filter const&) = delete;
    N_Filter(N_Filter&&) = default;

  public:
    N_Filter() : N_Filter(detail::DefinitionHelper{}) {}
    virtual ~N_Filter()
    {
    }
};

class ModelDefinition::N_Repeat 
    : public ModelDefinition::N_MaybeChannel
    , public ModelDefinition::T_Repeat<ModelDefinition::N_MaybeChannel>
{
  private:
    friend class ModelDefinition;
    N_Repeat(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Repeat(N_Repeat const&) = delete;
    N_Repeat(N_Repeat&&) = default;

  public:
    N_Repeat() : N_Repeat(detail::DefinitionHelper{}) {}
    virtual ~N_Repeat()
    {
    }
};

class ModelDefinition::N_Main 
    : public ModelDefinition::T_OnTrigger<ModelDefinition::N_Repeat>
{
  private:
    friend class ModelDefinition;
    N_Main(detail::DefinitionHelper&& m) : ModelDefinition::BaseTransition(std::move(m))
    {
    }
    N_Main(N_Main const&) = delete;
    N_Main(N_Main&&) = default;

  public:
    N_Main() : N_Main(detail::DefinitionHelper{}) {}
    virtual ~N_Main()
    {
    }
};


extern template class ModelDefinition::T_Description<ModelDefinition::N_Term>;
extern template class ModelDefinition::T_PostRun<ModelDefinition::N_Descr>;
extern template class ModelDefinition::T_PreRun<ModelDefinition::N_Post>;
extern template class ModelDefinition::T_Param<ModelDefinition::N_ParamTable>;
extern template class ModelDefinition::T_CustomParam<ModelDefinition::N_Param>;
extern template class ModelDefinition::T_ParamRow<ModelDefinition::N_ParamTable>;
extern template class ModelDefinition::T_Test<ModelDefinition::N_TestTable>;
extern template class ModelDefinition::T_TestRow<ModelDefinition::N_TestTable>;
extern template class ModelDefinition::T_At<ModelDefinition::N_Filter>;
extern template class ModelDefinition::T_TerminatePipe<ModelDefinition::N_MaybeChannel>;
extern template class ModelDefinition::T_ContinuePipe<ModelDefinition::N_Channel>;
extern template class ModelDefinition::T_As<ModelDefinition::N_ChannelEnd>;
extern template class ModelDefinition::T_Alias<ModelDefinition::N_Decor>;
extern template class ModelDefinition::T_Take<ModelDefinition::N_Alias>;
extern template class ModelDefinition::T_Filter<ModelDefinition::N_Via>;
extern template class ModelDefinition::T_Repeat<ModelDefinition::N_MaybeChannel>;
extern template class ModelDefinition::T_OnTrigger<ModelDefinition::N_Repeat>;

}  // namespace mapping
}  // namespace zmbt

#endif