Alembic: Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader Class Reference

Alembic 1.8.11

Loading...
Searching...
No Matches
Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader Class Referenceabstract

`#include <ArrayPropertyReader.h>`

Inheritance diagram for Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader:
[legend]
Collaboration diagram for Alembic::AbcCoreAbstract::ALEMBIC_VERSION_NS::ArrayPropertyReader:
[legend]

## 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.
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 ()

## 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.

## Constructor & Destructor Documentation

## ◆ ~ArrayPropertyReader()

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

Virtual destructor ...

## Member Function Documentation

## ◆ getAs()

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.

Implemented in Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::AprImpl.

## ◆ getCeilIndex()

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.

## ◆ getDimensions()

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.

Implemented in Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::AprImpl.

## ◆ getFloorIndex()

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.

## ◆ getNearIndex()

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.

## ◆ getNumSamples()

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.

Implemented in Alembic::AbcCoreOgawa::ALEMBIC_VERSION_NS::AprImpl.

## ◆ getSample()

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.

## ◆ isConstant()

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.

Implemented in Alembic::AbcCoreOgawa::ALEMBIC_VERSION_NS::AprImpl.

## ◆ isScalarLike()

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.

Implemented in Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::AprImpl, and Alembic::AbcCoreOgawa::ALEMBIC_VERSION_NS::AprImpl.

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

- AbcCoreAbstract/ArrayPropertyReader.h
- AbcCoreAbstract/ArrayPropertyReader.cpp