NullableArray
NullableArray 重写了 Array 中的方法,允许数组中存在空值。
NullableArray 重写了基类 Array 的所有公共方法,使用 nullBitmap
来确定数组元素中哪些具有空值。nullBitmap
是一个由无符号 64 位整数组成的数组,其设置的位表示具有空值的元素。
以下列出了 NullableArray 提供的方法:
NullableArray
NullableArray(Array* payload, ScalarArray<uint64_t>* bitmap = NULL)
带有一个数组参数 payload
和可选的nullBitmap
的构造函数。
getAt
McoSql::ValueRef getAt( size_t index )
返回由 Array 方法
getAt()
返回索引处 Value 对象的引用;或者,如果 nullBitmap 中对应的位已设置,则返回 McoSql::Null。
getCopyAt
McoSql::Value *getCopyAt( size_t index )
- 返回由 Array 方法
getAt()
返回索引处 Value 对象的副本; - 或者,如果 nullBitmap 中对应的位已设置,则返回 McoSql::Null。
使用 getCopyAt()
时,应用程序必须显式释放(解除分配)副本。
setAt
void setAt( size_t index, McoSql::Value* value)
- 将数组中索引位置为
index
的元素设置为value
,并清除nullBitmap
中对应的位; - 或者,如果
value
为null
,则在nullBitmap
中设置对应的位。
updateAt
Value * updateAt( int index )
此方法抛出“无效操作”异常;要更改数组元素的值,使用setAt()
方法。
size
size_t size()
返回已分配数组中的元素数量。
setSize
void setSize(size_t newSize);
设置数组中要操作的元素数量。
请注意,指定的大小不能超过由方法size()
返回的数组的大小,并且在完成所需的操作后,有必要稍后通过再次调用方法setSize()
将其恢复为原始值;否则将不正确地执行解分配。
getBody
void getBody( void * dst, size_t offs, size_t len )
从数组主体中返回指定数量为 len
的元素到由 Array 方法 getBody()
返回的缓冲区 dst
中。
setBody
void setBody( void * src, size_t offs, size_t len )
将缓冲区 src
中指定数量 len
的元素设置到数组 body
中,并且对于 null
元素,在 nullBitmap
中设置对应的位。
getElemSize
size_t getElemSize( void )
返回数组元素的字节大小。
getElemType
McoSql::Type getElemType()
返回数组元素类型的类型。
toString
size_t toString( char * buf , size_t & size )
将当前Value 序列化到指定的缓冲区。只复制大小字节。注意,如果终止null
不适合大小字节,则结果缓冲区将不会以空结束。
clone
Value * clone( McoSql::Allocator* allocator )
使用指定的内存分配器创建数组的副本。
getNullBitmap
Array * getNullBitmap()
返回 nullBitmap
。