HDK
|
#include <ArrayPropertyReader.h>
Public Member Functions | |
virtual | ~ArrayPropertyReader () |
virtual size_t | getNumSamples ()=0 |
virtual bool | isConstant ()=0 |
virtual void | getSample (index_t iSampleIndex, ArraySamplePtr &oSample)=0 |
virtual std::pair< index_t, chrono_t > | getFloorIndex (chrono_t iTime)=0 |
virtual std::pair< index_t, chrono_t > | getCeilIndex (chrono_t iTime)=0 |
virtual std::pair< index_t, chrono_t > | getNearIndex (chrono_t iTime)=0 |
virtual bool | getKey (index_t iSampleIndex, ArraySampleKey &oKey)=0 |
Expose the key for apps that use their own custom cache management. More... | |
virtual void | getDimensions (index_t iSampleIndex, Dimensions &oDim)=0 |
virtual bool | isScalarLike ()=0 |
virtual void | getAs (index_t iSample, void *iIntoLocation, PlainOldDataType iPod)=0 |
Public Member Functions inherited from Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::BasePropertyReader | |
virtual | ~BasePropertyReader () |
virtual const PropertyHeader & | getHeader () const =0 |
const std::string & | getName () const |
PropertyType | getPropertyType () const |
bool | isScalar () const |
bool | isArray () const |
bool | isCompound () const |
bool | isSimple () const |
const MetaData & | getMetaData () const |
const DataType & | getDataType () const |
TimeSamplingPtr | getTimeSampling () const |
virtual ObjectReaderPtr | getObject ()=0 |
virtual CompoundPropertyReaderPtr | getParent ()=0 |
virtual ScalarPropertyReaderPtr | asScalarPtr () |
virtual ArrayPropertyReaderPtr | asArrayPtr () |
virtual CompoundPropertyReaderPtr | asCompoundPtr () |
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 |
Virtual destructor ...
|
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.
|
pure virtual |
Find the smallest valid index that has a time greater than the given time. Invalid to call this with zero samples. If the maximum sample time is less than iTime, index numSamples-1 will be returned.
|
pure virtual |
The ArraySample may have incorrect dimensions, (even though the packed data will be correct) expose the correct dimensions here for those clients that need it.
|
pure virtual |
Find the largest valid index that has a time less than or equal to the given time. Invalid to call this with zero samples. If the minimum sample time is greater than iTime, index 0 will be returned.
|
pure virtual |
Expose the key for apps that use their own custom cache management.
|
pure virtual |
Find the valid index with the closest time to the given time. Invalid to call this with zero samples.
|
pure virtual |
Return the number of samples contained in the property. This can be any number, including zero. This returns the number of samples that were written, independently of whether or not they were constant. Implementations may (and should) choose to condense identical samples.
|
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.
|
pure virtual |
Ask if we're constant - no change in value amongst samples, regardless of the time sampling.
|
pure virtual |