Apache Arrow源码分析(二)——类型的封装

本文主要分析Apache Arrow项目中数据类型(DataType)的封装,包括DataType的类图结构、PrimitiveType、ListType、StringType和StructType的实现。文章探讨了C++11的特性如`override`和`constexpr`的使用,并提供了相关测试代码示例。
摘要由CSDN通过智能技术生成

@原创文章,转载请注明: 转载自 镜中影的技术博客
本文链接地址: 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基类。详细类图描述如下:

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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值