An Array Property is a Rank N (usually 1-3) property which has a multidimensional array of identically typed values for each sample. This is distinguished from a Simple Property, which has a single element per sample, and requires less sophisticated resource management.
Definition at line 55 of file ArrayPropertyReader.h.
virtual void Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getAs |
( |
index_t |
iSample, |
|
|
void * |
iIntoLocation, |
|
|
PlainOldDataType |
iPod |
|
) |
| |
|
pure virtual |
Reads the data for the requested sample into the memory location specified by iIntoLocation as the requested POD type specified by iPod. Out-of-range indices, or incompatible POD types will cause an exception to be thrown.
Incompatible POD types include trying to read a std::string, std::wstring, or float16_t as anything OTHER than itself.
In all cases EXCEPT String and Wstring, the iPod type and the total number of items from getDimensions for this property can be used to determine the size of the memory buffer which iIntoLocation must point to. In the case of String and Wstring, iIntoLocation should be an array of std::string or std::wstring.
This is one of the only places where we break from POD types at the base, and we're making an explicit decision to use std::string and std::wstring as core language-level primitives.
virtual void Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getSample |
( |
index_t |
iSampleIndex, |
|
|
ArraySamplePtr & |
oSample |
|
) |
| |
|
pure virtual |
It returns a shared pointer to a thing which is the data, in a locked and retrieved form. This represents the point of demand, not below here. Implementations of this library can (and should) utilize the custom-deleter capabilities of the smart_ptr to add locking and unlocking access to cache or management code. It will throw an exception on an out-of-range access. Though it could technically return the pointer by value efficiently enough, we return by reference so that the calling signature mirrors the ScalarPropertyReader.
For each DataType, the ( void * ) data buffer returned in the array sample points to one data element, which in the case of DataType( kStringPOD, 1 ) and DataType( kWstringPOD, 1 ) are arrays of std::string and std::wstring, respectively.