// --------------------------------------------------------
// Code generated by Papyrus C++
// --------------------------------------------------------

#ifndef PRODUCERCONSUMER_DATAEXCHANGE_PUBDATA_PUSHPULL_H
#define PRODUCERCONSUMER_DATAEXCHANGE_PUBDATA_PUSHPULL_H

/************************************************************
 PushPull class header
 ************************************************************/

#include "ProducerConsumer/DataExchange_PubData/Pkg_DataExchange_PubData.h"

#include "ProducerConsumer/DataExchange_PubData/PullC.h"
#include "ProducerConsumer/DataExchange_PubData/PushP.h"

namespace ProducerConsumer {
namespace DataExchange_PubData {

/************************************************************/
/**
 * 
 */
class PushPull: public PushP, public PullC {

};
/************************************************************/
/* External declarations (package visibility)               */
/************************************************************/

/* Inline functions                                         */

} // of namespace DataExchange_PubData
} // of namespace ProducerConsumer

/************************************************************
 End of PushPull class header
 ************************************************************/

#endif
