📄 clangaction.h
字号:
// -*-c++-*-/*************************************************************************** clangaction.h Abstract base class for CLang Actions ------------------- begin : 28-MAY-2002 copyright : (C) 2002 by The RoboCup Soccer Server Maintenance Group. email : sserver-admin@lists.sourceforge.net ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU LGPL as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any * * later version. * * * ***************************************************************************/#ifndef CLANGACTION_H#define CLANGACTION_H#include <memory>#include "hasa.h"#include "region.h"namespace rcss{ namespace clang { class ActPos; class ActHome; class ActBallToReg; class ActBallToPlayer; class ActMark; class ActMarkLinePlayer; class ActMarkLineReg; class ActOffsidesLine; class ActHetType; class ActNamed; class ActPassReg; class ActPassUNum; class ActDribble; class ActClear; class ActShoot; class ActHold; class ActIntercept; class ActTackle; class Action { public:// typedef util::Visitor20< ActPos*,// ActHome*,// ActBallToReg*,// ActBallToPlayer*,// ActMark*,// ActMarkLinePlayer*,// ActMarkLineReg*,// ActOffsidesLine*,// ActHetType*,// ActNamed*,// ActPassReg*,// ActPassUNum*,// ActDribble*,// ActClear*,// ActShoot*,// ActHold*,// ActIntercept*,// ActTackle* > Visitor;// typedef util::Visitor20< const ActPos*,// const ActHome*,// const ActBallToReg*,// const ActBallToPlayer*,// const ActMark*,// const ActMarkLinePlayer*,// const ActMarkLineReg*,// const ActOffsidesLine*,// const ActHetType*,// const ActNamed*,// const ActPassReg*,// const ActPassUNum*,// const ActDribble*,// const ActClear*,// const ActShoot*,// const ActHold*,// const ActIntercept*,// const ActTackle* > ConstVisitor;// class TypeExtractor// : public util::TypeExtractor20< ActPos*,// ActHome*,// ActBallToReg*,// ActBallToPlayer*,// ActMark*,// ActMarkLinePlayer*,// ActMarkLineReg*,// ActOffsidesLine*,// ActHetType*,// ActNamed*,// ActPassReg*,// ActPassUNum*,// ActDribble*,// ActClear*,// ActShoot*,// ActHold*,// ActIntercept*,// ActTackle* >// {// protected:// virtual// ~TypeExtractor()// {}// virtual// void// visit( ActPos* act );// virtual// void// visit( ActHome* act );// virtual// void// visit( ActBallToReg* act );// virtual// void// visit( ActBallToPlayer* act );// virtual// void// visit( ActMark* act );// virtual// void// visit( ActMarkLinePlayer* act );// virtual// void// visit( ActMarkLineReg* act );// virtual// void// visit( ActOffsidesLine* act );// virtual// void// visit( ActHetType* act );// virtual// void// visit( ActNamed* act );// virtual// void// visit( ActPassReg* act );// virtual// void// visit( ActPassUNum* act );// virtual// void// visit( ActDribble* act );// virtual// void// visit( ActClear* act );// virtual// void// visit( ActShoot* act );// virtual// void// visit( ActHold* act );// virtual// void// visit( ActIntercept* act );// virtual// void// visit( ActTackle* act );// };// class ConstTypeExtractor// : public util::TypeExtractor20< const ActPos*,// const ActHome*,// const ActBallToReg*,// const ActBallToPlayer*,// const ActMark*,// const ActMarkLinePlayer*,// const ActMarkLineReg*,// const ActOffsidesLine*,// const ActHetType*,// const ActNamed*,// const ActPassReg*,// const ActPassUNum*,// const ActDribble*,// const ActClear*,// const ActShoot*,// const ActHold*,// const ActIntercept*,// const ActTackle* >// {// protected:// virtual// ~ConstTypeExtractor()// {}// virtual// void// visit( const ActPos* act );// virtual// void// visit( const ActHome* act );// virtual// void// visit( const ActBallToReg* act );// virtual// void// visit( const ActBallToPlayer* act );// virtual// void// visit( const ActMark* act );// virtual// void// visit( const ActMarkLinePlayer* act );// virtual// void// visit( const ActMarkLineReg* act );// virtual// void// visit( const ActOffsidesLine* act );// virtual// void// visit( const ActHetType* act );// virtual// void// visit( const ActNamed* act );// virtual// void// visit( const ActPassReg* act );// virtual// void// visit( const ActPassUNum* act );// virtual// void// visit( const ActDribble* act );// virtual// void// visit( const ActClear* act );// virtual// void// visit( const ActShoot* act );// virtual// void// visit( const ActHold* act );// virtual// void// visit( const ActIntercept* act );// virtual// void// visit( const ActTackle* act );// }; virtual ~Action(); virtual std::auto_ptr< Action > deepCopy() const = 0;// virtual// void// accept( Visitor& v ) = 0;// virtual// void// accept( ConstVisitor& v ) const = 0; virtual std::ostream& print( std::ostream& out ) const = 0; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const = 0; }; // end Action class ActPos : public Action { public: ActPos(); ActPos( std::auto_ptr< Region > r ); virtual ~ActPos(); virtual std::auto_ptr< Action > deepCopy() const;// virtual// void// accept( Visitor& v );// virtual// void// accept( ConstVisitor& v ) const; virtual std::ostream& print( std::ostream& out ) const; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const; const Region* getRegion() const; private: std::auto_ptr< Region > m_reg; }; class ActHome : public Action { public: ActHome(); ActHome( std::auto_ptr< Region > r ); virtual ~ActHome(); virtual std::auto_ptr< Action > deepCopy() const;// virtual// void// accept( Visitor& v );// virtual// void// accept( ConstVisitor& v ) const; virtual std::ostream& print( std::ostream& out ) const; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const; const Region* getRegion() const; private: std::auto_ptr< Region > m_reg; }; class ActBallToReg : public Action { public: ActBallToReg(); ActBallToReg( std::auto_ptr< Region > reg, const BallMove& bmtset ); virtual ~ActBallToReg(); virtual std::auto_ptr< Action > deepCopy() const;// virtual// void// accept( Visitor& v );// virtual// void// accept( ConstVisitor& v ) const; virtual std::ostream& print( std::ostream& out ) const; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const; const Region* getRegion() const; BallMove getBallMove() const; void addBMT( BallMoveToken t ); void removeBMT( BallMoveToken t ); void clearBMTSet(); private: std::auto_ptr< Region > m_reg; BallMove m_bmtset; }; class ActBallToPlayer : public Action { public: ActBallToPlayer(); ActBallToPlayer( const UNumSet& players ); virtual ~ActBallToPlayer(); virtual std::auto_ptr< Action > deepCopy() const;// virtual// void// accept( Visitor& v );// virtual// void// accept( ConstVisitor& v ) const; virtual std::ostream& print( std::ostream& out ) const; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header) const; UNumSet& getPlayers(); const UNumSet& getPlayers() const; void setPlayers( const UNumSet& players ); void addPlayer( const UNum& u ); void clearPlayers(); private: UNumSet M_players; } ; class ActMark : public Action { public: ActMark(); ActMark( const UNumSet& players ); virtual ~ActMark(); virtual std::auto_ptr< Action > deepCopy() const;// virtual// void// accept( Visitor& v );// virtual// void// accept( ConstVisitor& v ) const; virtual std::ostream& print( std::ostream& out ) const; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const; UNumSet& getPlayers(); const UNumSet& getPlayers() const; void setPlayers( const UNumSet& players ); void addPlayer( const UNum& i ); void clearPlayers(); private: UNumSet M_players; } ; class ActMarkLinePlayer : public Action { public: ActMarkLinePlayer(); ActMarkLinePlayer( const UNumSet& players ); virtual ~ActMarkLinePlayer(); virtual std::auto_ptr< Action > deepCopy() const;// virtual// void// accept( Visitor& v );// virtual// void// accept( ConstVisitor& v ) const; virtual std::ostream& print( std::ostream& out ) const; virtual std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const; UNumSet& getPlayers(); const UNumSet& getPlayers() const; void setPlayers( const UNumSet& players ); void addPlayer( const UNum& i ); void clearPlayers(); private: UNumSet M_players; } ; class ActMarkLineReg : public Action { public: ActMarkLineReg() : Action() {} ActMarkLineReg( std::auto_ptr< Region > reg ) : Action(), m_reg( reg ) {} ~ActMarkLineReg() {} std::ostream& print( std::ostream& out ) const { out << "(markl "; if( getRegion() == NULL ) out << "(null)"; else out << *getRegion(); return out << ")"; } std::ostream& printPretty( std::ostream& out, const std::string& line_header ) const { out << line_header << "mark line to region:" << std::endl; if( getRegion() == NULL ) out << line_header << " (null)\n"; else getRegion()->printPretty( out, line_header + " " ); return out; } const Region* getRegion() const { return m_reg.get(); } std::auto_ptr< Region > detachRegion() { return m_reg; } // virtual// void// accept( Visitor& v )// { v.startVisit( this ); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -