All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader Class Referenceabstract

#include <ArrayPropertyReader.h>

+ Inheritance diagram for Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader:

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,
getFloorIndex (chrono_t iTime)=0
virtual std::pair< index_t,
getCeilIndex (chrono_t iTime)=0
virtual std::pair< index_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 PropertyHeadergetHeader () const =0
const std::stringgetName () const
PropertyType getPropertyType () const
bool isScalar () const
bool isArray () const
bool isCompound () const
bool isSimple () const
const MetaDatagetMetaData () const
const DataTypegetDataType () const
TimeSamplingPtr getTimeSampling () const
virtual ObjectReaderPtr getObject ()=0
virtual CompoundPropertyReaderPtr getParent ()=0
virtual ScalarPropertyReaderPtr asScalarPtr ()
virtual ArrayPropertyReaderPtr asArrayPtr ()
virtual CompoundPropertyReaderPtr asCompoundPtr ()

Detailed Description

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.

Constructor & Destructor Documentation

virtual Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::~ArrayPropertyReader ( )

Virtual destructor ...

Member Function Documentation

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 std::pair<index_t, chrono_t> Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getCeilIndex ( chrono_t  iTime)
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.

virtual void Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getDimensions ( index_t  iSampleIndex,
Dimensions &  oDim 
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.

virtual std::pair<index_t, chrono_t> Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getFloorIndex ( chrono_t  iTime)
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.

virtual bool Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getKey ( index_t  iSampleIndex,
ArraySampleKey oKey 
pure virtual

Expose the key for apps that use their own custom cache management.

virtual std::pair<index_t, chrono_t> Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getNearIndex ( chrono_t  iTime)
pure virtual

Find the valid index with the closest time to the given time. Invalid to call this with zero samples.

virtual size_t Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::getNumSamples ( )
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.

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.

virtual bool Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::isConstant ( )
pure virtual

Ask if we're constant - no change in value amongst samples, regardless of the time sampling.

virtual bool Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader::isScalarLike ( )
pure virtual

A hint about whether this property has 1 and only 1 DataType for each of it's samples. Array Properties with no samples written to it are still considered scalar like.

The documentation for this class was generated from the following file: