serializer.h
来自「2009 ROBOCUP 仿真2DSERVER 源码」· C头文件 代码 · 共 1,022 行 · 第 1/3 页
H
1,022 行
// -*-c++-*-/*************************************************************************** serializer.h Classes for serializing data to clients ------------------- begin : 27-JAN-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 RCSS_SERIALIZER_H#define RCSS_SERIALIZER_H#include "types.h"#include <rcssbase/factory.hpp>#include <iostream>class PVector;class Player;namespace rcss {namespace clang {class Msg;}class SerializerCommon {protected: SerializerCommon(); virtual ~SerializerCommon();public: typedef const SerializerCommon & (*Creator)(); typedef rcss::Factory< Creator, int > FactoryHolder; static FactoryHolder & factory(); virtual void serializeServerParamBegin( std::ostream & ) const { } virtual void serializeServerParamEnd( std::ostream & ) const { } virtual void serializePlayerParamBegin( std::ostream & ) const { } virtual void serializePlayerParamEnd( std::ostream & ) const { } virtual void serializePlayerTypeBegin( std::ostream & ) const { } virtual void serializePlayerTypeEnd( std::ostream & ) const { } virtual void serializeParam( std::ostream &, const int ) const { } virtual void serializeParam( std::ostream &, const unsigned int ) const { } virtual void serializeParam( std::ostream &, const bool ) const { } virtual void serializeParam( std::ostream &, const double & ) const { } virtual void serializeParam( std::ostream &, const std::string & ) const { } virtual void serializeParam( std::ostream &, const std::string &, const int ) const { } virtual void serializeParam( std::ostream &, const std::string &, const bool ) const { } virtual void serializeParam( std::ostream &, const std::string &, const double & ) const { } virtual void serializeParam( std::ostream &, const std::string &, const std::string & ) const { }};class Serializer {public: Serializer( const SerializerCommon & common ) : m_common( common ) { }protected: const SerializerCommon & commonSerializer() const { return m_common; }public: void serializeServerParamBegin( std::ostream & strm ) const { commonSerializer().serializeServerParamBegin( strm ); } void serializeServerParamEnd( std::ostream & strm ) const { commonSerializer().serializeServerParamEnd( strm ); } void serializePlayerParamBegin( std::ostream & strm ) const { commonSerializer().serializePlayerParamBegin( strm ); } void serializePlayerParamEnd( std::ostream & strm ) const { commonSerializer().serializePlayerParamEnd( strm ); } void serializePlayerTypeBegin( std::ostream & strm ) const { commonSerializer().serializePlayerTypeBegin( strm ); } void serializePlayerTypeEnd( std::ostream & strm ) const { commonSerializer().serializePlayerTypeEnd( strm ); } void serializeParam( std::ostream & strm, const int value ) const { commonSerializer().serializeParam( strm, value ); } void serializeParam( std::ostream & strm, const unsigned int value ) const { commonSerializer().serializeParam( strm, value ); } void serializeParam( std::ostream & strm, const bool value ) const { commonSerializer().serializeParam( strm, value ); } void serializeParam( std::ostream & strm, const double & value ) const { commonSerializer().serializeParam( strm, value ); } void serializeParam( std::ostream & strm, const std::string & value ) const { commonSerializer().serializeParam( strm, value ); } void serializeParam( std::ostream & strm, const std::string & name, const int value ) const { commonSerializer().serializeParam( strm, name, value ); } void serializeParam( std::ostream & strm, const std::string & name, const bool value ) const { commonSerializer().serializeParam( strm, name, value ); } void serializeParam( std::ostream & strm, const std::string & name, const double & value ) const { commonSerializer().serializeParam( strm, name, value ); } void serializeParam( std::ostream & strm, const std::string & name, const std::string & value ) const { commonSerializer().serializeParam( strm, name, value ); }private: const SerializerCommon & m_common;};class SerializerPlayer : public Serializer {public: typedef const SerializerPlayer* (*Creator)(); typedef rcss::Factory< Creator, int > FactoryHolder; static FactoryHolder & factory();protected: SerializerPlayer( const SerializerCommon & common ); virtual ~SerializerPlayer();public: virtual void serializeRefereeAudio( std::ostream & strm, const int time, const char * msg ) const = 0; virtual void serializeCoachAudio( std::ostream & strm, const int time, const std::string & name, const char * msg ) const = 0; virtual void serializeCoachStdAudio( std::ostream & strm, const int time, const std::string & name, const clang::Msg & msg ) const = 0; virtual void serializeSelfAudio( std::ostream & strm, const int time, const char * msg ) const = 0; virtual void serializePlayerAudio( std::ostream & strm, const int time, const double& dir, const char * msg ) const = 0; virtual void serializeAllyAudioFull( std::ostream &, const int, const double &, const int, const char * ) const { } virtual void serializeOppAudioFull( std::ostream &, const int, const double &, const char * ) const { } virtual void serializeAllyAudioShort( std::ostream &, const int, const int ) const { } virtual void serializeOppAudioShort( std::ostream &, const int ) const { } virtual void serializeVisualBegin( std::ostream &, const int ) const { } virtual void serializeVisualEnd( std::ostream & ) const { } void serializeVisualObject( std::ostream & strm, const std::string & name, const int dir ) const { strm << " (" << name << ' ' << dir << ')'; } void serializeVisualObject( std::ostream & strm, const std::string & name, const double & dist, const int dir ) const { strm << " (" << name << ' ' << dist << ' ' << dir << ')'; } void serializeVisualObject( std::ostream & strm, const std::string & name, const double & dist, const int dir, const double & dist_chg, const double & dir_chg ) const { strm << " (" << name << ' ' << dist << ' ' << dir << ' ' << dist_chg << ' ' << dir_chg << ')'; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?