@原创文章,转载请注明: 转载自 镜中影的技术博客
本文链接地址: Apache Arrow源码分析(二)——类型的封装
URL:http://blog.csdn.net/linkpark1904/article/details/51000719
引言
对于向量容器而言,需要适配底层多种数据类型。C++在语言层面提供了诸如int,double,float,char等基础类型,但是对于程序库而言,需要自己定义多种类型的数据结构,当然是构建在C++语言层面提供的基础数据类型之上,就需要对数据类型进行封装。Arrow项目中亦有涉及对数据类型(DataType)的封装,采用C++11实现,很多新特性值得我们学习和借鉴,这里单独拿出来分析。
DataType类图结构和详细分析
DataType的定义从struct type开始,struct type中包含enum 变量type用来描述arrow支持的逻辑类型,抽象出类DataType来表示类型基类,所有自定义类型都继承自DataType基类。详细类图描述如下:
具体Type类的代码如下所示(Type.h):
struct Type {
enum type {
// A degenerate NULL type represented as 0 bytes/bits
NA = 0,
// A boolean value represented as 1 bit
BOOL = 1,
// Little-endian integer types
UINT8 = 2,
INT8 = 3,
UINT16 = 4,
INT16 = 5,
UINT32 = 6,
INT32 = 7,
UINT64 = 8,
INT64 = 9,
....
// Exact timestamp encoded with int64 since UNIX epoch
// Default unit millisecond
TIMESTAMP = 17,
// Timestamp as double seconds since the UNIX epoch
TIMESTAMP_DOUBLE = 18,
// Exact time