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 + -
显示快捷键?