#ifndef _pac_h #define _pac_h class TopLevelAgent { private: IntermediateLevelAgent* intermediateAgent; BottomLevelAgent* bottomAgent; public: TopLevelAgent(): intermediateAgent(0), bottomAgent(0) { }; IntermediateLevelAgent* getIntermediateAgent() { return intermediateAgent; }; void setIntermediateAgent( IntermediateLevelAgent* agent ) { intermediateAgent = agent; }; BottomLevelAgent* getBottomAgent() { return bottomAgent; }; void setBottomAgent( BottomLevelAgent* agent ) { bottomAgent = agent; }; }; class IntermediateLevelAgent { private: TopLevelAgent* topAgent; IntermediateLevelAgent* intermediateAgent; BottomLevelAgent* bottomAgent; public: IntermediateLevelAgent(): topAgent(0), intermediateAgent(0), bottomAgent(0) { }; TopLevelAgent* getTopAgent() { return topAgent; }; void setTopAgent( TopLevelAgent* agent ) { topAgent = agent; }; IntermediateLevelAgent* getIntermediateAgent() { return intermediateAgent; }; void setIntermediateAgent( IntermediateLevelAgent* agent ) { intermediateAgent = agent; }; BottomLevelAgent* getBottomAgent() { return bottomAgent; }; void setBottomAgent( BottomLevelAgent* agent ) { bottomAgent = agent; }; }; class BottomLevelAgent { private: TopLevelAgent* topAgent; IntermediateLevelAgent* intermediateAgent; public: BottomLevelAgent(): topAgent(0), intermediateAgent(0) { }; TopLevelAgent* getTopAgent() { return topAgent; }; void setTopAgent( TopLevelAgent* agent ) { topAgent = agent; }; IntermediateLevelAgent* getIntermediateAgent() { return intermediateAgent; }; void setIntermediateAgent( IntermediateLevelAgent* agent ) { intermediateAgent = agent; }; }; #endif