/**
* The array interface provides metadata about the array, including its handle, type and
* array descriptors.
* To access the data in the array, a constant (read-only) iterator can be requested, or a
* volatile iterator can be used.
*/
class Array : public SelfStatistics
{
public:
/**
* An enum that defines three levels of Array read access policy - ranging from most restrictive to least restrictive.
*/
enum Access
{
/**
* Most restrictive access policy wherein the array can only be iterated over one time.
* If you need to read multiple attributes, you need to read all of the attributes horizontally, at the same time.
* Imagine that reading the array is like scanning from a pipe - after a single scan, the data is no longer available.
* This is the only supported access mode for InputArray and MergeSortArray.
* Any SINGLE_PASS array must inherit from scidb::SinglePassArray if that array is ever returned from PhysicalOperator::execute().
* The reason is that the sg() operator can handle only the SINGLE_PASS arrays conforming to the SinglePassArray interface.
*/
SINGLE_PASS = 0,
/**
* A policy wherein the array can be iterated over several times, and various attributes can be scanned independently,
* but the ArrayIterator::setPosition() function is not supported.
* This is less restrictive than SINGLE_PASS.
* This is the least restrictive access mode fsupported by ConcatArray
*/
MULTI_PASS = 1,
/**
* A policy wherein the client of the array can use the full functionality of the API.
* This is the least restrictive access policy and it's supported by the vast majority of Array subtypes.
*/
RANDOM = 2
};
* The array interface provides metadata about the array, including its handle, type and
* array descriptors.
* To access the data in the array, a constant (read-only) iterator can be requested, or a
* volatile iterator can be used.
*/
class Array : public SelfStatistics
{
public:
/**
* An enum that defines three levels of Array read access policy - ranging from most restrictive to least restrictive.
*/
enum Access
{
/**
* Most restrictive access policy wherein the array can only be iterated over one time.
* If you need to read multiple attributes, you need to read all of the attributes horizontally, at the same time.
* Imagine that reading the array is like scanning from a pipe - after a single scan, the data is no longer available.
* This is the only supported access mode for InputArray and MergeSortArray.
* Any SINGLE_PASS array must inherit from scidb::SinglePassArray if that array is ever returned from PhysicalOperator::execute().
* The reason is that the sg() operator can handle only the SINGLE_PASS arrays conforming to the SinglePassArray interface.
*/
SINGLE_PASS = 0,
/**
* A policy wherein the array can be iterated over several times, and various attributes can be scanned independently,
* but the ArrayIterator::setPosition() function is not supported.
* This is less restrictive than SINGLE_PASS.
* This is the least restrictive access mode fsupported by ConcatArray
*/
MULTI_PASS = 1,
/**
* A policy wherein the client of the array can use the full functionality of the API.
* This is the least restrictive access policy and it's supported by the vast majority of Array subtypes.
*/
RANDOM = 2
};