COCOS2D-3.9 Value接口分析
来源:互联网 发布:ubuntu查找源命令 编辑:程序博客网 时间:2024/05/19 13:10
2DX 在3.2时没有引入 Value 概念,用于存放动态类型,实际值通过当时类型和值获取。
头文件中定义的几个类型和常量
typedef std::vector<Value> ValueVector;
存放 Value 类型的动态数组
typedef std::unordered_map<std::string, Value> ValueMap;
散列容器 string->Value
typedef std::unordered_map<int, Value> ValueMapIntKey;
散列容器 int->Value
针对上面的容器稍微有点看法:个人觉得RB的容器在数据量小的时候体现不出优势,但是 unordered_map 也不一定真的就比RB好
CC_DLL extern const ValueVector ValueVectorNull;
CC_DLL extern const ValueMap ValueMapNull;
CC_DLL extern const ValueMapIntKey ValueMapIntKeyNull;
这几个空容器没搞懂为啥
Value 中比较重要的两个结构。
枚举类型 Type , 分别用于表示 :
NONE (空类型), BYTE(字节), INTEGER(整型), FLOAT(浮点数),DOUBLE(双精度),
BOOLEAN(布尔), STRING(字符串), VECTOR(数组), MAP(StringKey), INT_KEY_MAP(IntKey)
枚举类型 Type _type; 字段表示当前实际类型。
联合体 _field 字段,分别用于存放对应类型的数据:
unsigned char byteVal(BYTE); int intVal(INTEGER); float floatVal(FLOAT); double doubleVal(DOUBLE); bool boolVal(BOOLEAN);
std::string* strVal(STRING); ValueVector* vectorVal(VECTOR); ValueMap* mapVal(MAP); ValueMapIntKey* intKeyMapVal(INT_KEY_MAP);
通过对应获取实际的值。
私有函数:
void clear();
通过当前类型清除当前类型的值,并将 _type 设置为 NONE
void reset(Type type);
设置当前类型,若类型没变则无操作,否则将清除,如果为指针类型,还将分配对象空间。
公共函数:
inline Type getType() const { return _type; }
获取当前类型
std::string getDescription() const;
获取描述,具体的值。
inline bool isNull() const { return _type == Type::NONE; }
获取类型是否可用
unsigned char asByte() const;
int asInt() const;
float asFloat() const;
double asDouble() const;
bool asBool() const;
返回基本类型的值
std::string asString() const;
将基本类型和字符串类型已字符串类型返回
特殊说明:基本类型和string之间会相互转换。也仅限为将当前值转换为指定值
ValueVector& asValueVector();
const ValueVector& asValueVector() const;
获取 ValueVector 引用或者常引用
ValueMap& asValueMap();
const ValueMap& asValueMap() const;
获取 ValueMap 引用或者常引用
ValueMapIntKey& asIntKeyMap();
const ValueMapIntKey& asIntKeyMap() const;
获取 ValueMapIntKey 引用或者常引用
bool operator!= (const Value& v);
bool operator!= (const Value& v) const;
bool operator== (const Value& v);
bool operator== (const Value& v) const;
等于不等于的操作符重载。
Value& operator= (const Value& other);
Value& operator= (Value&& other);
Value& operator= (unsigned char v);
Value& operator= (int v);
Value& operator= (float v);
Value& operator= (double v);
Value& operator= (bool v);
Value& operator= (const char* v);
Value& operator= (const std::string& v);
Value& operator= (const ValueVector& v);
Value& operator= (ValueVector&& v);
Value& operator= (const ValueMap& v);
Value& operator= (ValueMap&& v);
Value& operator= (const ValueMapIntKey& v);
Value& operator= (ValueMapIntKey&& v);
操作符 = 重载,用于赋值一个 Value 对象,指定对应的类型和值,右值引用和一般引用没多大区别,需要注意变量生命周期
Value();
explicit Value(unsigned char v);
explicit Value(int v);
explicit Value(float v);
explicit Value(double v);
explicit Value(bool v);
explicit Value(const char* v);
explicit Value(const std::string& v);
explicit Value(const ValueVector& v);
explicit Value(ValueVector&& v);
explicit Value(const ValueMap& v);
explicit Value(ValueMap&& v);
explicit Value(const ValueMapIntKey& v);
explicit Value(ValueMapIntKey&& v);
Value(const Value& other);
Value(Value&& other);
构造函数、复制构造函数, explicit 防止隐式转换。
静态变量:
static const Value Null;
没发现作用,除了一个空对象
头文件中定义的几个类型和常量
typedef std::vector<Value> ValueVector;
存放 Value 类型的动态数组
typedef std::unordered_map<std::string, Value> ValueMap;
散列容器 string->Value
typedef std::unordered_map<int, Value> ValueMapIntKey;
散列容器 int->Value
针对上面的容器稍微有点看法:个人觉得RB的容器在数据量小的时候体现不出优势,但是 unordered_map 也不一定真的就比RB好
CC_DLL extern const ValueVector ValueVectorNull;
CC_DLL extern const ValueMap ValueMapNull;
CC_DLL extern const ValueMapIntKey ValueMapIntKeyNull;
这几个空容器没搞懂为啥
Value 中比较重要的两个结构。
枚举类型 Type , 分别用于表示 :
NONE (空类型), BYTE(字节), INTEGER(整型), FLOAT(浮点数),DOUBLE(双精度),
BOOLEAN(布尔), STRING(字符串), VECTOR(数组), MAP(StringKey), INT_KEY_MAP(IntKey)
枚举类型 Type _type; 字段表示当前实际类型。
联合体 _field 字段,分别用于存放对应类型的数据:
unsigned char byteVal(BYTE); int intVal(INTEGER); float floatVal(FLOAT); double doubleVal(DOUBLE); bool boolVal(BOOLEAN);
std::string* strVal(STRING); ValueVector* vectorVal(VECTOR); ValueMap* mapVal(MAP); ValueMapIntKey* intKeyMapVal(INT_KEY_MAP);
通过对应获取实际的值。
私有函数:
void clear();
通过当前类型清除当前类型的值,并将 _type 设置为 NONE
void reset(Type type);
设置当前类型,若类型没变则无操作,否则将清除,如果为指针类型,还将分配对象空间。
公共函数:
inline Type getType() const { return _type; }
获取当前类型
std::string getDescription() const;
获取描述,具体的值。
inline bool isNull() const { return _type == Type::NONE; }
获取类型是否可用
unsigned char asByte() const;
int asInt() const;
float asFloat() const;
double asDouble() const;
bool asBool() const;
返回基本类型的值
std::string asString() const;
将基本类型和字符串类型已字符串类型返回
特殊说明:基本类型和string之间会相互转换。也仅限为将当前值转换为指定值
ValueVector& asValueVector();
const ValueVector& asValueVector() const;
获取 ValueVector 引用或者常引用
ValueMap& asValueMap();
const ValueMap& asValueMap() const;
获取 ValueMap 引用或者常引用
ValueMapIntKey& asIntKeyMap();
const ValueMapIntKey& asIntKeyMap() const;
获取 ValueMapIntKey 引用或者常引用
bool operator!= (const Value& v);
bool operator!= (const Value& v) const;
bool operator== (const Value& v);
bool operator== (const Value& v) const;
等于不等于的操作符重载。
Value& operator= (const Value& other);
Value& operator= (Value&& other);
Value& operator= (unsigned char v);
Value& operator= (int v);
Value& operator= (float v);
Value& operator= (double v);
Value& operator= (bool v);
Value& operator= (const char* v);
Value& operator= (const std::string& v);
Value& operator= (const ValueVector& v);
Value& operator= (ValueVector&& v);
Value& operator= (const ValueMap& v);
Value& operator= (ValueMap&& v);
Value& operator= (const ValueMapIntKey& v);
Value& operator= (ValueMapIntKey&& v);
操作符 = 重载,用于赋值一个 Value 对象,指定对应的类型和值,右值引用和一般引用没多大区别,需要注意变量生命周期
Value();
explicit Value(unsigned char v);
explicit Value(int v);
explicit Value(float v);
explicit Value(double v);
explicit Value(bool v);
explicit Value(const char* v);
explicit Value(const std::string& v);
explicit Value(const ValueVector& v);
explicit Value(ValueVector&& v);
explicit Value(const ValueMap& v);
explicit Value(ValueMap&& v);
explicit Value(const ValueMapIntKey& v);
explicit Value(ValueMapIntKey&& v);
Value(const Value& other);
Value(Value&& other);
构造函数、复制构造函数, explicit 防止隐式转换。
静态变量:
static const Value Null;
没发现作用,除了一个空对象
0 0
- COCOS2D-3.9 Value接口分析
- COCOS2D-3.9 Configuration 接口分析
- cocos2d::Value
- cocos2d::Value
- COCOS2D-3.9 Data分析
- COCOS2D-3.9 DictMaker分析
- COCOS2D-3.9 ApplicationProtocol 分析
- COCOS2D-3.9 Application分析
- cocos2d-x3.0中数据类型vector,map和value的分析和挖掘
- [Cocos2d-x v3.x]cocos2d::Value
- Cocos2d-3.x_基本数据类型(cocos2d::Value)
- cocos2d-x Vector&map&value
- COCOS2D-3.9 FileUtils 分析(一)
- 【cocos2d-x游戏开发】Value、Vector、Map
- Cocos2d-x 3.0final -Vector&map&value
- Cocos2d-x 3.0-Vector&map&value
- cocos2d lua 提示InterpolationMissingOptionError: Bad value substitution:
- cocos2d-x 3.0 数据结构(3/3) cocos2d::Value
- 搞定HTML\CSS之absolute和relative
- 将CentOS 6.7默认的Python 2.6.6升级为2.7.4版本
- Android Studio中使用NDK
- Scala trait介绍
- 继续学习
- COCOS2D-3.9 Value接口分析
- 测试管理-多读书
- 内存管理pbuf.c源码解析——LwIP学习
- 浅谈java.awt使用过程中遇到的问题
- 新能源首页
- hdu 2647 拓扑排序
- 随意细解:UI -- 初级数据持久化
- [LeetCode]018-4-Sum
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)