//## begin module%1.4%.codegen_version preserve=yes
//   Read the documentation to learn more about C++ code generator
//   versioning.
//## end module%1.4%.codegen_version

//## begin module%3D86D3AC00AA.cm preserve=no
//	  %X% %Q% %Z% %W%
//## end module%3D86D3AC00AA.cm

//## begin module%3D86D3AC00AA.cp preserve=no
//## end module%3D86D3AC00AA.cp

//## Module: Explorer%3D86D3AC00AA; Pseudo Package specification
//## Source file: C:\Program Files\Rational\Rose\C++\source\Explorer.h

#ifndef Explorer_h
#define Explorer_h 1

//## begin module%3D86D3AC00AA.additionalIncludes preserve=no
//## end module%3D86D3AC00AA.additionalIncludes

//## begin module%3D86D3AC00AA.includes preserve=yes
//## end module%3D86D3AC00AA.includes

// Communicator
#include "Communicator.h"
// Broadcaster
#include "Broadcaster.h"
// Behavior
#include "Behavior.h"
//## begin module%3D86D3AC00AA.additionalDeclarations preserve=yes
//## end module%3D86D3AC00AA.additionalDeclarations


//## begin Explorer%3D86D3AC00AA.preface preserve=yes
//## end Explorer%3D86D3AC00AA.preface

//## Class: Explorer%3D86D3AC00AA
//	/**
//	Explores the plane using simple search patterns. Avoids
//	walls and the own cluster point when exploring. Returns
//	when a cube or a robot has been detected.
//	@author Jia L. Du
//	 */
//## Category: <Top Level>
//## Persistence: Transient
//## Cardinality/Multiplicity: n



class Explorer : public Behavior  //## Inherits: <unnamed>%3D9ACA360398
{
  //## begin Explorer%3D86D3AC00AA.initialDeclarations preserve=yes
  //## end Explorer%3D86D3AC00AA.initialDeclarations

  public:
    //## Constructors (generated)
      Explorer();


    //## Other Operations (specified)
      //## Operation: activate%3D9291F00302
      //	/**
      //	Activates this behavior
      //	@return A result code indicating why this behavior
      //	terminated. Explorer.ROBOT_DETECTED or Explorer.CUBE_
      //	DETECTED or Explorer.DRIVE_STALLED
      //	 */
      int activate ();

      //## Attribute: ROBOT_DETECTED%3D9AB3D1008C
      //	/**
      //	Used as result code for Explorer::activate()
      //	*/
      //## begin Explorer::ROBOT_DETECTED%3D9AB3D1008C.attr preserve=no  public: static int {UC} 0
      static const int ROBOT_DETECTED;
      //## end Explorer::ROBOT_DETECTED%3D9AB3D1008C.attr

      //## Attribute: CUBE_DETECTED%3D9AB3F003DE
      //	/**
      //	Used as result code for Explorer::activate()
      //	*/
      //## begin Explorer::CUBE_DETECTED%3D9AB3F003DE.attr preserve=no  public: static int {UC} 1
      static const int CUBE_DETECTED;
      //## end Explorer::CUBE_DETECTED%3D9AB3F003DE.attr

    // Additional Public Declarations
      //## begin Explorer%3D86D3AC00AA.public preserve=yes
      //	/**
      //	Used as result code for Explorer::activate()
      //	*/
      static const int DRIVE_STALLED;
      //## end Explorer%3D86D3AC00AA.public

  protected:
    // Additional Protected Declarations
      //## begin Explorer%3D86D3AC00AA.protected preserve=yes
      //## end Explorer%3D86D3AC00AA.protected

  private:

    //## Other Operations (specified)

    // Additional Private Declarations
      //## begin Explorer%3D86D3AC00AA.private preserve=yes
      //## end Explorer%3D86D3AC00AA.private

  private: //## implementation
    // Data Members for Class Attributes


    // Data Members for Associations

      //## Association: <unnamed>%3D8AA73D0258
      //## Role: Explorer::<broadcaster>%3D8AA73F0168
      //	/**
      //	The Explorer needs to communicate with the Broadcaster
      //	when the first cube is found
      //	*/
      //## begin Explorer::<broadcaster>%3D8AA73F0168.role preserve=no  public: Broadcaster { -> RHN}
      Broadcaster *broadcaster;
      //## end Explorer::<broadcaster>%3D8AA73F0168.role


    // Additional Implementation Declarations
      //## begin Explorer%3D86D3AC00AA.implementation preserve=yes
      //## end Explorer%3D86D3AC00AA.implementation

};

//## begin Explorer%3D86D3AC00AA.postscript preserve=yes
//## end Explorer%3D86D3AC00AA.postscript

// Class Explorer

//## begin module%3D86D3AC00AA.epilog preserve=yes
//## end module%3D86D3AC00AA.epilog


#endif
