void ApiRegistrar::DefineClass( TypeHandle type, size_t sizeInBytes, std::initializer_list<Constructor> constructors, std::initializer_list<Property> properties, std::initializer_list<Method> methods, std::initializer_list<Operator> operators, std::initializer_list<Field> fields ) { const auto typeName( GetTypeName( type ) ); const auto registerResult( _scriptEngine.RegisterObjectType( typeName, static_cast<int>( sizeInBytes ), ( asEObjTypeFlags::asOBJ_VALUE | asEObjTypeFlags::asOBJ_APP_CLASS_CDAK ) ) ); ETRuntimeAssert( asERetCodes::asSUCCESS <= registerResult || asERetCodes::asALREADY_REGISTERED == registerResult ); const asITypeInfo& typeInfo( *_scriptEngine.GetTypeInfoByName( typeName ) ); // Register the factories. for( const Constructor& constructor : constructors ) { RegisterConstructor( typeInfo, constructor ); } // Register the (virtual) properties. for( const Property& property : properties ) { RegisterProperty( typeInfo, property ); } // Register the methods. for( const Method& method : methods ) { RegisterMethod( typeInfo, method ); } // Register the operators. for( const Operator& op : operators ) { RegisterOperator( typeInfo, op ); } // Register the fields. for( const Field& field : fields ) { RegisterField( typeInfo, field ); } }
void ApiRegistrar::DefineUserAllocatedClass( TypeHandle type, std::initializer_list<Factory> factories, std::initializer_list<Property> properties, std::initializer_list<Method> methods, std::initializer_list<Operator> operators, std::initializer_list<Field> fields ) { const auto typeName( GetTypeName( type ) ); const auto registerResult( _scriptEngine.RegisterObjectType( typeName, 0, asEObjTypeFlags::asOBJ_REF ) ); ETRuntimeAssert( asERetCodes::asSUCCESS <= registerResult || asERetCodes::asALREADY_REGISTERED == registerResult ); const asITypeInfo& typeInfo( *_scriptEngine.GetTypeInfoByName( typeName ) ); // Register the factories. for( const Factory& factory : factories ) { RegisterFactory( typeInfo, factory ); } // Register the (virtual) properties. for( const Property& property : properties ) { RegisterProperty( typeInfo, property ); } // Register the methods. for( const Method& method : methods ) { RegisterMethod( typeInfo, method ); } // Register the operators. for( const Operator& op : operators ) { RegisterOperator( typeInfo, op ); } // Register the fields. for( const Field& field : fields ) { RegisterField( typeInfo, field ); } }
RCODE CSPDB::registerFieldArray(HFDB hFlaim, CS_FIELD_DEF *fieldTable, FLMINT count) { RCODE rc = FERR_OK; int i; // Begin a flaim transaction. rc = FlmDbTransBegin(hFlaim, FLM_UPDATE_TRANS, 255); if (RC_OK(rc)) { for (i = 0; i < count; ++i) { FLMUINT fieldId = fieldTable[i].id; rc = RegisterField(hFlaim, fieldTable[i].name, CSPTypeToFlaimType(fieldTable[i].type), &fieldId); if (RC_BAD(rc)) { break; } } if (RC_OK(rc)) { FlmDbTransCommit(hFlaim); } else { FlmDbTransAbort(hFlaim); } } return (rc); } // CSPDB::registerFieldArray()