37#ifndef Alembic_Abc_OSchema_h
38#define Alembic_Abc_OSchema_h
40#include <Alembic/Abc/Foundation.h>
41#include <Alembic/Abc/OCompoundProperty.h>
45namespace ALEMBIC_VERSION_NS {
105#define ALEMBIC_ABC_DECLARE_SCHEMA_INFO( STITLE, SBTYP, SDFLT, SPREP, STDEF ) \
108 static const char * title() { return ( STITLE ) ; } \
109 static const char * defaultName() { return ( SDFLT ); } \
110 static const char * schemaBaseType() { return ( SBTYP ); } \
111 static bool replaceOnSparse() { return SPREP; } \
125 typedef INFO info_type;
132 return INFO::title();
139 return INFO::schemaBaseType();
146 return INFO::defaultName();
156 return INFO::replaceOnSparse();
162 static bool matches(
const AbcA::MetaData &iMetaData,
163 SchemaInterpMatching iMatching = kStrictMatching )
165 if ( std::string() ==
getSchemaTitle() || iMatching == kNoMatching )
168 if ( iMatching == kStrictMatching || iMatching == kSchemaTitleMatching )
179 static bool matches(
const AbcA::PropertyHeader &iHeader,
180 SchemaInterpMatching iMatching = kStrictMatching )
182 return matches( iHeader.getMetaData(), iMatching );
195 OSchema( AbcA::CompoundPropertyWriterPtr iParent,
196 const std::string &iName,
203 this_type::init( iParent, iName, iArg0, iArg1, iArg2, iArg3 );
209 const std::string &iName,
216 GetErrorHandlerPolicy( iParent ), iArg0, iArg1, iArg2);
225 void init( AbcA::CompoundPropertyWriterPtr iParent,
226 const std::string &iName,
237void OSchema<INFO>::init( AbcA::CompoundPropertyWriterPtr iParent,
238 const std::string &iName,
239 const Argument &iArg0,
240 const Argument &iArg1,
241 const Argument &iArg2,
242 const Argument &iArg3 )
245 iArg0.setInto( args );
246 iArg1.setInto( args );
247 iArg2.setInto( args );
248 iArg3.setInto( args );
250 getErrorHandler().setPolicy( args.getErrorHandlerPolicy() );
252 ALEMBIC_ABC_SAFE_CALL_BEGIN(
"OSchema::OSchema::init()" );
256 ABCA_ASSERT( iParent,
257 "NULL parent passed into OSchema ctor" );
260 AbcA::MetaData mdata = args.getMetaData();
261 std::string emptyStr;
262 if ( emptyStr != getSchemaTitle() && !args.isSparse() )
264 mdata.set(
"schema", getSchemaTitle() );
266 if ( emptyStr != getSchemaBaseType() && !args.isSparse() )
268 mdata.set(
"schemaBaseType", getSchemaBaseType() );
272 m_property = iParent->createCompoundProperty( iName, mdata );
274 ALEMBIC_ABC_SAFE_CALL_END_RESET();
279using namespace ALEMBIC_VERSION_NS;
Definition Argument.h:120
PROP_PTR getPtr() const
Definition OBaseProperty.h:162
OCompoundProperty()
Definition OCompoundProperty.h:65
OSchema(AbcA::CompoundPropertyWriterPtr iParent, const std::string &iName, const Argument &iArg0=Argument(), const Argument &iArg1=Argument(), const Argument &iArg2=Argument(), const Argument &iArg3=Argument())
Definition OSchema.h:195
static const char * getDefaultSchemaName()
Definition OSchema.h:144
OSchema(OCompoundProperty iParent, const std::string &iName, const Argument &iArg0=Argument(), const Argument &iArg1=Argument(), const Argument &iArg2=Argument())
Definition OSchema.h:208
static bool matches(const AbcA::MetaData &iMetaData, SchemaInterpMatching iMatching=kStrictMatching)
Definition OSchema.h:162
static bool matches(const AbcA::PropertyHeader &iHeader, SchemaInterpMatching iMatching=kStrictMatching)
Definition OSchema.h:179
OSchema()
Definition OSchema.h:191
static const char * getSchemaTitle()
Definition OSchema.h:130
static const char * getSchemaBaseType()
Definition OSchema.h:137
static bool replaceOnSparse()
Definition OSchema.h:154
Alembic namespace ...
Definition ArchiveInfo.cpp:39