⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcvalue.h

📁 robocup rcssserver 运行防真机器人足球比赛所用的服务器端
💻 H
字号:
/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*-   this file is part of rcssserver3D   Fri May 9 2003   Copyright (C) 2002,2003 Koblenz University   Copyright (C) 2003 RoboCup Soccer Server 3D Maintenance Group   $Id: gcvalue.h,v 1.4 2008/02/20 17:16:29 hedayat Exp $   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; version 2 of the License.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#ifndef ZEITGEIST_GCVALUE_H#define ZEITGEIST_GCVALUE_Htypedef unsigned long VALUE;typedef unsigned long ID;#include <string>namespace zeitgeist{/** \class GCValue is a ruby VALUE wrapper. It is responsible to    register and unregister the wrapped value as busy with the ruby    garbage collector. The ruby garbage collector might be    transparently invoked on any call to ruby. If a returned VALUE    must stay valid during a series of ruby function calls you should    use this wrapper. A simple use case is a VALUE returned from ruby    that is used as an argument in a subsequent function call. This    wrapper also provides some helpers to access and convert the    stored value.*/class GCValue{public:    GCValue();    GCValue(const GCValue& value);    GCValue(VALUE v);    /** constructs the corresponding ruby boolean */    GCValue(bool b);    /** constructs a new ruby string object */    GCValue(const std::string& str);    /** constructs a new ruby string object */    GCValue(const char* str);    /** constructs a new ruby float object */    GCValue(float f);    /** constructs a new riby int object */    GCValue(int i);    ~GCValue();    void operator = (const GCValue& value);    void operator = (const VALUE& value);    /** returns the stored ruby VALUE */    VALUE Get();    /** sets the setored value to v. Any previously stored value is        properly unregistered    */    void Set(VALUE v);    /** returns true if the stored value equals QNil */    bool IsNil();    /** tries to convert the stored value to an integer value, returns        true on success    */    bool GetInt(int& value);    /** tries to convert the stored value to a float value, returns        true on success    */    bool GetFloat(float& value);    /** tries to convert the stored value to a bool value, returns        true on success    */    bool GetBool(bool& value);    /** tries to convert the stored value to a string, returns true on        success    */    bool GetString(std::string& value);protected:    /** unregisters the stored VALUE from the ruby garbage collector,        i.e marks mValue no longer as busy    */    void GC_Unregister();    /** registers the stored VALUE to the ruby garbage collector,        i.e. marks it as busy    */    void GC_Register();protected:    /** the wrapped ruby VALUE */    VALUE mValue;};} // namespace zeitgeist#endif // ZEITGEIST_GCVALUE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -