コード例 #1
0
ファイル: ApiRegistrar.cpp プロジェクト: jvidziunas/Eldritch2
	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 );
		}
	}
コード例 #2
0
ファイル: ApiRegistrar.cpp プロジェクト: jvidziunas/Eldritch2
	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 );
		}
	}
コード例 #3
0
ファイル: CSPStore.cpp プロジェクト: ifolder/simias
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()