#ifndef LEARN_CT____LEARN____COMPOUND_HPP_
#define LEARN_CT____LEARN____COMPOUND_HPP_

// /home/siemens/bip/examples/sync_lec/learn.bip:131:1
// include package "master" header
#include <learn.hpp>

#include <Compound.hpp>

// User include given in @cpp annotation
#include <utilities.hpp>

// for component types
#include <learn/AT__learn__Environment.hpp>
#include <learn/AT__learn__Perception.hpp>
#include <learn/AT__learn__SpeedSensor.hpp>
#include <learn/AT__learn__Camera.hpp>
#include <learn/AT__learn__Brake.hpp>
#include <learn/AT__learn__Controller.hpp>
#include <learn/AT__learn__Throttle.hpp>

// for connector types
#include <learn/ConnT__learn__singleton.hpp>
#include <learn/ConnT__learn__intConnector.hpp>
#include <learn/ConnT__learn__rendezVous.hpp>


class CT__learn__Compound : public Compound {
public:
    CT__learn__Compound (const string &name, AT__learn__Environment &_comp_decl__environment, AT__learn__Camera &_comp_decl__camera, AT__learn__Perception &_comp_decl__perception, AT__learn__Controller &_comp_decl__controller, AT__learn__Brake &_comp_decl__brake, AT__learn__Throttle &_comp_decl__throttle, AT__learn__SpeedSensor &_comp_decl__speedSensor
                                  , ConnT__learn__intConnector &_conn_decl__capture, ConnT__learn__intConnector &_conn_decl__getPerceptionInput, ConnT__learn__intConnector &_conn_decl__getSpeedLimit, ConnT__learn__intConnector &_conn_decl__getSpeed, ConnT__learn__intConnector &_conn_decl__throttleCommand, ConnT__learn__intConnector &_conn_decl__brakeCommand, ConnT__learn__rendezVous &_conn_decl__throttleAction, ConnT__learn__rendezVous &_conn_decl__brakeAction, ConnT__learn__rendezVous &_conn_decl__noSpeedChangeAction, ConnT__learn__singleton &_conn_decl__inference, ConnT__learn__singleton &_conn_decl__noInput, ConnT__learn__singleton &_conn_decl__getInputInitial
                                  
                                  
                                  
                                  
    
    );
    virtual ~CT__learn__Compound();


private:

    // SubComponent decls
    AT__learn__Environment &_comp_decl__environment;
    AT__learn__Camera &_comp_decl__camera;
    AT__learn__Perception &_comp_decl__perception;
    AT__learn__Controller &_comp_decl__controller;
    AT__learn__Brake &_comp_decl__brake;
    AT__learn__Throttle &_comp_decl__throttle;
    AT__learn__SpeedSensor &_comp_decl__speedSensor;

    // connector decls
    ConnT__learn__intConnector &_conn_decl__capture;
    ConnT__learn__intConnector &_conn_decl__getPerceptionInput;
    ConnT__learn__intConnector &_conn_decl__getSpeedLimit;
    ConnT__learn__intConnector &_conn_decl__getSpeed;
    ConnT__learn__intConnector &_conn_decl__throttleCommand;
    ConnT__learn__intConnector &_conn_decl__brakeCommand;
    ConnT__learn__rendezVous &_conn_decl__throttleAction;
    ConnT__learn__rendezVous &_conn_decl__brakeAction;
    ConnT__learn__rendezVous &_conn_decl__noSpeedChangeAction;
    ConnT__learn__singleton &_conn_decl__inference;
    ConnT__learn__singleton &_conn_decl__noInput;
    ConnT__learn__singleton &_conn_decl__getInputInitial;
};



#endif // LEARN_CT____LEARN____COMPOUND_HPP_
