51 Arguments( ErrorHandler::Policy iPolicy = ErrorHandler::kThrowPolicy,
52 const AbcA::MetaData &iMetaData = AbcA::MetaData(),
53 AbcA::TimeSamplingPtr iTimeSampling =
54 AbcA::TimeSamplingPtr(),
55 uint32_t iTimeIndex = 0,
56 SchemaInterpMatching iMatch = kNoMatching,
57 SparseFlag iSparse = kFull )
58 : m_errorHandlerPolicy( iPolicy ),
59 m_metaData( iMetaData ),
60 m_timeSampling( iTimeSampling ),
61 m_timeSamplingIndex( iTimeIndex ),
63 m_sparse( iSparse ) {}
65 void operator()(
const uint32_t & iTimeSamplingIndex)
66 { m_timeSamplingIndex = iTimeSamplingIndex; }
68 void operator()(
const ErrorHandler::Policy &iPolicy )
69 { m_errorHandlerPolicy = iPolicy; }
71 void operator()(
const AbcA::MetaData &iMetaData )
72 { m_metaData = iMetaData; }
74 void operator()(
const AbcA::TimeSamplingPtr & iTimeSampling )
75 { m_timeSampling = iTimeSampling; }
77 void operator()(
const SchemaInterpMatching &iMatching )
78 { m_matching = iMatching; }
80 void operator()(
const SparseFlag &iSparse )
81 { m_sparse = iSparse; }
83 ErrorHandler::Policy getErrorHandlerPolicy()
const
84 {
return m_errorHandlerPolicy; }
86 const AbcA::MetaData &getMetaData()
const
87 {
return m_metaData; }
89 AbcA::TimeSamplingPtr getTimeSampling()
const
90 {
return m_timeSampling; }
92 uint32_t getTimeSamplingIndex()
const
93 {
return m_timeSamplingIndex; }
95 SchemaInterpMatching getSchemaInterpMatching()
const
96 {
return m_matching; }
99 {
return m_sparse == kSparse; }
102 ErrorHandler::Policy m_errorHandlerPolicy;
103 AbcA::MetaData m_metaData;
104 AbcA::TimeSamplingPtr m_timeSampling;
105 uint32_t m_timeSamplingIndex;
106 SchemaInterpMatching m_matching;
123 m_whichVariant( kArgumentNone ) {}
125 Argument( ErrorHandler::Policy iPolicy ) :
126 m_whichVariant( kArgumentErrorHandlerPolicy ),
127 m_variant( iPolicy ) {}
129 Argument( Alembic::Util::uint32_t iTsIndex ) :
130 m_whichVariant( kArgumentTimeSamplingIndex ),
131 m_variant( iTsIndex ) {}
133 Argument(
const AbcA::MetaData &iMetaData ) :
134 m_whichVariant( kArgumentMetaData ),
135 m_variant( &iMetaData ) {}
137 Argument(
const AbcA::TimeSamplingPtr &iTsPtr ) :
138 m_whichVariant( kArgumentTimeSamplingPtr ),
139 m_variant( &iTsPtr ) {}
141 Argument( SchemaInterpMatching iMatch ) :
142 m_whichVariant( kArgumentSchemaInterpMatching ),
143 m_variant( iMatch ) {}
145 Argument( SparseFlag iSparse ) :
146 m_whichVariant( kArgumentSparse ),
147 m_variant( iSparse ) {}
151 switch ( m_whichVariant )
153 case kArgumentErrorHandlerPolicy:
154 iArgs( m_variant.policy );
157 case kArgumentTimeSamplingIndex:
158 iArgs( m_variant.timeSamplingIndex );
161 case kArgumentMetaData:
162 iArgs( *m_variant.metaData );
165 case kArgumentTimeSamplingPtr:
166 iArgs( *m_variant.timeSamplingPtr );
169 case kArgumentSchemaInterpMatching:
170 iArgs( m_variant.schemaInterpMatching );
173 case kArgumentSparse:
174 iArgs( m_variant.sparseFlag );
192 const Argument& operator= (
const Argument&);
194 enum ArgumentWhichFlag
197 kArgumentErrorHandlerPolicy,
198 kArgumentTimeSamplingIndex,
200 kArgumentTimeSamplingPtr,
201 kArgumentSchemaInterpMatching,
203 }
const m_whichVariant;
205 union ArgumentVariant
207 ArgumentVariant() : timeSamplingIndex( 0 ) {}
209 explicit ArgumentVariant( ErrorHandler::Policy iPolicy ) :
212 explicit ArgumentVariant( Alembic::Util::uint32_t iTsIndex ) :
213 timeSamplingIndex( iTsIndex ) {}
215 explicit ArgumentVariant(
const AbcA::MetaData * iMetaData ) :
216 metaData( iMetaData ) {}
218 explicit ArgumentVariant(
const AbcA::TimeSamplingPtr * iTsPtr ) :
219 timeSamplingPtr( iTsPtr ) {}
221 explicit ArgumentVariant( SchemaInterpMatching iMatch ) :
222 schemaInterpMatching( iMatch ) {}
224 explicit ArgumentVariant( SparseFlag iSparse ) :
225 sparseFlag( iSparse ) {}
227 ErrorHandler::Policy policy;
228 Alembic::Util::uint32_t timeSamplingIndex;
229 const AbcA::MetaData * metaData;
230 const AbcA::TimeSamplingPtr * timeSamplingPtr;
231 SchemaInterpMatching schemaInterpMatching;
232 SparseFlag sparseFlag;