37#ifndef Alembic_Abc_TypedArraySample_h
38#define Alembic_Abc_TypedArraySample_h
40#include <Alembic/Abc/Foundation.h>
41#include <Alembic/Abc/TypedPropertyTraits.h>
45namespace ALEMBIC_VERSION_NS {
47using Alembic::Util::Dimensions;
50template <
class TRAITS>
51class TypedArraySample :
public AbcA::ArraySample
54 typedef TRAITS traits_type;
55 typedef TypedArraySample<TRAITS> this_type;
56 typedef typename TRAITS::value_type value_type;
57 typedef typename std::vector<value_type> value_vector;
62 : AbcA::ArraySample( NULL, TRAITS::dataType(), Dimensions() ) {}
66 TypedArraySample(
const value_type *iValues,
size_t iNumVals )
67 : AbcA::ArraySample(
reinterpret_cast<const void *
>( iValues ),
68 TRAITS::dataType(), Dimensions( iNumVals ) ) {}
70 TypedArraySample(
const value_type *iValues,
const Dimensions &iDims )
71 : AbcA::ArraySample(
reinterpret_cast<const void *
>( iValues ),
72 TRAITS::dataType(), iDims ) {}
76 TypedArraySample(
const value_vector &iVec )
77 : AbcA::ArraySample(
reinterpret_cast<const void *
>( iVec.size() > 0 ?
80 TRAITS::dataType(), Dimensions( iVec.size() ) ) {}
83 TypedArraySample(
const value_vector &iVec,
84 const Dimensions &iDims )
85 : AbcA::ArraySample(
reinterpret_cast<const void *
>( iVec.size() > 0 ?
88 TRAITS::dataType(), iDims )
90 ABCA_ASSERT( iDims.numPoints() == iVec.size(),
91 "Invalid dimensions in TypedArraySample" );
99 TypedArraySample(
const AbcA::ArraySample &iCopy )
100 : AbcA::ArraySample( iCopy )
102 ABCA_ASSERT( iCopy.getDataType() == TRAITS::dataType(),
103 "Invalid DataType in TypedArraySample. Expected: "
104 << TRAITS::dataType()
105 <<
", but got: " << iCopy.getDataType() );
108 TypedArraySample<TRAITS> operator=(
const AbcA::ArraySample &iCopy )
110 ArraySample::operator=( iCopy );
112 ABCA_ASSERT( iCopy.getDataType() == TRAITS::dataType(),
113 "Invalid DataType in TypedArraySample. Expected: "
114 << TRAITS::dataType()
115 <<
", but got: " << iCopy.getDataType() );
120 const value_type *get()
const
122 return reinterpret_cast<const value_type *
>(
getData() );
125 const value_type *operator->()
const {
return this->get(); }
128 const value_type &operator[](
const size_t i )
const
130 return this->get()[i];
136 static TypedArraySample<TRAITS> emptySample()
138 return TypedArraySample<TRAITS>( NULL, 0 );
218typedef Alembic::Util::shared_ptr<BoolArraySample> BoolArraySamplePtr;
219typedef Alembic::Util::shared_ptr<UcharArraySample> UcharArraySamplePtr;
220typedef Alembic::Util::shared_ptr<CharArraySample> CharArraySamplePtr;
221typedef Alembic::Util::shared_ptr<UInt16ArraySample> UInt16ArraySamplePtr;
222typedef Alembic::Util::shared_ptr<Int16ArraySample> Int16ArraySamplePtr;
223typedef Alembic::Util::shared_ptr<UInt32ArraySample> UInt32ArraySamplePtr;
224typedef Alembic::Util::shared_ptr<Int32ArraySample> Int32ArraySamplePtr;
225typedef Alembic::Util::shared_ptr<UInt64ArraySample> UInt64ArraySamplePtr;
226typedef Alembic::Util::shared_ptr<Int64ArraySample> Int64ArraySamplePtr;
227typedef Alembic::Util::shared_ptr<HalfArraySample> HalfArraySamplePtr;
228typedef Alembic::Util::shared_ptr<FloatArraySample> FloatArraySamplePtr;
229typedef Alembic::Util::shared_ptr<DoubleArraySample> DoubleArraySamplePtr;
230typedef Alembic::Util::shared_ptr<StringArraySample> StringArraySamplePtr;
231typedef Alembic::Util::shared_ptr<WstringArraySample> WstringArraySamplePtr;
233typedef Alembic::Util::shared_ptr<V2sArraySample> V2sArraySamplePtr;
234typedef Alembic::Util::shared_ptr<V2iArraySample> V2iArraySamplePtr;
235typedef Alembic::Util::shared_ptr<V2fArraySample> V2fArraySamplePtr;
236typedef Alembic::Util::shared_ptr<V2dArraySample> V2dArraySamplePtr;
238typedef Alembic::Util::shared_ptr<V3sArraySample> V3sArraySamplePtr;
239typedef Alembic::Util::shared_ptr<V3iArraySample> V3iArraySamplePtr;
240typedef Alembic::Util::shared_ptr<V3fArraySample> V3fArraySamplePtr;
241typedef Alembic::Util::shared_ptr<V3dArraySample> V3dArraySamplePtr;
243typedef Alembic::Util::shared_ptr<P2sArraySample> P2sArraySamplePtr;
244typedef Alembic::Util::shared_ptr<P2iArraySample> P2iArraySamplePtr;
245typedef Alembic::Util::shared_ptr<P2fArraySample> P2fArraySamplePtr;
246typedef Alembic::Util::shared_ptr<P2dArraySample> P2dArraySamplePtr;
248typedef Alembic::Util::shared_ptr<P3sArraySample> P3sArraySamplePtr;
249typedef Alembic::Util::shared_ptr<P3iArraySample> P3iArraySamplePtr;
250typedef Alembic::Util::shared_ptr<P3fArraySample> P3fArraySamplePtr;
251typedef Alembic::Util::shared_ptr<P3dArraySample> P3dArraySamplePtr;
253typedef Alembic::Util::shared_ptr<Box2sArraySample> Box2sArraySamplePtr;
254typedef Alembic::Util::shared_ptr<Box2iArraySample> Box2iArraySamplePtr;
255typedef Alembic::Util::shared_ptr<Box2fArraySample> Box2fArraySamplePtr;
256typedef Alembic::Util::shared_ptr<Box2dArraySample> Box2dArraySamplePtr;
258typedef Alembic::Util::shared_ptr<Box3sArraySample> Box3sArraySamplePtr;
259typedef Alembic::Util::shared_ptr<Box3iArraySample> Box3iArraySamplePtr;
260typedef Alembic::Util::shared_ptr<Box3fArraySample> Box3fArraySamplePtr;
261typedef Alembic::Util::shared_ptr<Box3dArraySample> Box3dArraySamplePtr;
263typedef Alembic::Util::shared_ptr<M33fArraySample> M33fArraySamplePtr;
264typedef Alembic::Util::shared_ptr<M33dArraySample> M33dArraySamplePtr;
266typedef Alembic::Util::shared_ptr<M44fArraySample> M44fArraySamplePtr;
267typedef Alembic::Util::shared_ptr<M44dArraySample> M44dArraySamplePtr;
269typedef Alembic::Util::shared_ptr<QuatfArraySample> QuatfArraySamplePtr;
270typedef Alembic::Util::shared_ptr<QuatdArraySample> QuatdArraySamplePtr;
272typedef Alembic::Util::shared_ptr<C3hArraySample> C3hArraySamplePtr;
273typedef Alembic::Util::shared_ptr<C3fArraySample> C3fArraySamplePtr;
274typedef Alembic::Util::shared_ptr<C3cArraySample> C3cArraySamplePtr;
276typedef Alembic::Util::shared_ptr<C4hArraySample> C4hArraySamplePtr;
277typedef Alembic::Util::shared_ptr<C4fArraySample> C4fArraySamplePtr;
278typedef Alembic::Util::shared_ptr<C4cArraySample> C4cArraySamplePtr;
280typedef Alembic::Util::shared_ptr<N2fArraySample> N2fArraySamplePtr;
281typedef Alembic::Util::shared_ptr<N2dArraySample> N2dArraySamplePtr;
283typedef Alembic::Util::shared_ptr<N3fArraySample> N3fArraySamplePtr;
284typedef Alembic::Util::shared_ptr<N3dArraySample> N3dArraySamplePtr;
288using namespace ALEMBIC_VERSION_NS;
Definition TypedArraySample.h:52
bool valid() const
Definition ArraySample.h:111
const Dimensions & getDimensions() const
Definition ArraySample.h:95
const void * getData() const
Definition ArraySample.h:87
size_t size() const
Definition ArraySample.h:99
Alembic namespace ...
Definition ArchiveInfo.cpp:39