rule.h
来自「2009 ROBOCUP 仿真2DSERVER 源码」· C头文件 代码 · 共 213 行
H
213 行
// -*-c++-*-/*************************************************************************** rule.h Classes for clang rules ------------------- begin : 25-APR-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 CLANG_RULE_H#define CLANG_RULE_H#include <iosfwd>#include <string>#include <list>#include <memory>namespace rcss {namespace clang {typedef std::string RuleID;// If the rule list is empty then it counts a containing all// rules. This also means that there is no support for an empty// rule ID list, but that is just the way we want it.class RuleIDList// : public std::list< RuleID >{// private:// bool empty() const;public: bool all() const; bool unary() const; void push_front( const RuleID & id ) { M_list.push_front( id ); } std::ostream & print( std::ostream & o ) const; std::ostream & printPretty( std::ostream & out, const std::string & line_header ) const;private: std::list< RuleID > M_list;};class ActivateRules {public: ActivateRules(); ActivateRules( const bool on, const RuleIDList & list ); ~ActivateRules(); bool on() const; bool all() const; bool unary() const; const RuleIDList & getList() const; void set( const bool on ); void set( const RuleIDList & rids ); std::ostream & print( std::ostream & o ) const; std::ostream & printPretty( std::ostream & o, const std::string & line_header ) const;private: bool M_on; RuleIDList M_rids;};class Cond;class Dir;class Rule {public: virtual ~Rule(); virtual std::auto_ptr< Rule > deepCopy() 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;};class CondRule : public Rule {public: CondRule( std::auto_ptr< Cond > cond ); virtual ~CondRule(); const Cond * getCond() const; std::auto_ptr< Cond > detachCond();private: std::auto_ptr< Cond > M_cond;};class SimpleRule : public CondRule {public: typedef std::list< Dir * > Storage; SimpleRule( std::auto_ptr< Cond > cond ); SimpleRule( std::auto_ptr< Cond > cond, const Storage & dirs ); ~SimpleRule(); virtual std::ostream & print( std::ostream & out ) const; virtual std::ostream & printPretty( std::ostream & out, const std::string & line_header ) const; virtual std::auto_ptr< Rule > deepCopy() const; const Storage & getDirs() const;private: Storage M_dirs;};class NestedRule : public CondRule {public: typedef std::list< Rule * > Storage; NestedRule( std::auto_ptr< Cond > cond ); NestedRule( std::auto_ptr< Cond > cond, const Storage & rules ); virtual ~NestedRule(); virtual std::ostream & print( std::ostream & out ) const; virtual std::ostream & printPretty( std::ostream & out, const std::string & line_header ) const; virtual std::auto_ptr< Rule > deepCopy() const; const Storage & getRules() const;private: Storage M_rules;};class IDListRule : public Rule {public: IDListRule(); IDListRule( const RuleIDList & rules ); ~IDListRule(); virtual std::ostream & print( std::ostream & out ) const; virtual std::ostream & printPretty( std::ostream & out, const std::string & line_header ) const; virtual std::auto_ptr< Rule > deepCopy() const; const RuleIDList & getIDList() const;private: RuleIDList M_rids;};std::ostream&operator<<( std::ostream& o, const rcss::clang::RuleIDList& id_list );std::ostream&operator<<( std::ostream& o, const rcss::clang::ActivateRules& activ_rules );std::ostream&operator<<( std::ostream & os, const rcss::clang::Rule& r );}}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?