当前位置: 首页>>代码示例>>C++>>正文


C++ CScriptBuilder::GetMetadataStringForVar方法代码示例

本文整理汇总了C++中CScriptBuilder::GetMetadataStringForVar方法的典型用法代码示例。如果您正苦于以下问题:C++ CScriptBuilder::GetMetadataStringForVar方法的具体用法?C++ CScriptBuilder::GetMetadataStringForVar怎么用?C++ CScriptBuilder::GetMetadataStringForVar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CScriptBuilder的用法示例。


在下文中一共展示了CScriptBuilder::GetMetadataStringForVar方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Test

bool Test()
{
	bool fail = false;
	int r = 0;
	COutStream out;

	// TODO: Preprocessor directives should be alone on the line

	asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);

	engine->SetMessageCallback(asMETHOD(COutStream,Callback), &out, asCALL_THISCALL);

	// Test the parse token method
	asETokenClass t = engine->ParseToken("!is");
	if( t != asTC_KEYWORD )
		fail = true;

	// Compile a script with meta data strings
	CScriptBuilder builder;
	builder.DefineWord("COMPILE");
	r = builder.BuildScriptFromMemory(engine, 0, script);
#if AS_PROCESS_METADATA == 1
	if( r < 0 )
		fail = true;

	int funcId = engine->GetModule(0)->GetFunctionIdByName("func1");
	string metadata = builder.GetMetadataStringForFunc(funcId);
	if( metadata != " my meta data test " )
		fail = true;

	funcId = engine->GetModule(0)->GetFunctionIdByName("func2");
	metadata = builder.GetMetadataStringForFunc(funcId);
	if( metadata != " test['hello'] " )
		fail = true;

	int typeId = engine->GetModule(0)->GetTypeIdByDecl("MyClass");
	metadata = builder.GetMetadataStringForType(typeId);
	if( metadata != " myclass " )
		fail = true;

	typeId = engine->GetModule(0)->GetTypeIdByDecl("MyIntf");
	metadata = builder.GetMetadataStringForType(typeId);
	if( metadata != " myintf " )
		fail = true;

	int varIdx = engine->GetModule(0)->GetGlobalVarIndexByName("g_var");
	metadata = builder.GetMetadataStringForVar(varIdx);
	if( metadata != " init " )
		fail = true;

	varIdx = engine->GetModule(0)->GetGlobalVarIndexByName("g_obj");
	metadata = builder.GetMetadataStringForVar(varIdx);
	if( metadata != " var of type myclass " )
		fail = true;
#endif

	engine->Release();

	return fail;
}
开发者ID:svn2github,项目名称:AngelscriptMirror,代码行数:60,代码来源:test_metadata.cpp

示例2: Test

bool Test()
{
	bool fail = false;
	int r = 0;
	COutStream out;
	CBufferedOutStream bout;

	// TODO: Preprocessor directives should be alone on the line

	asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION);
	RegisterScriptArray(engine, true);

	engine->SetMessageCallback(asMETHOD(COutStream,Callback), &out, asCALL_THISCALL);
	if( !strstr(asGetLibraryOptions(), "AS_MAX_PORTABILITY") )
		RegisterScriptMathComplex(engine);
	else
		engine->RegisterObjectType("complex", 4, asOBJ_VALUE | asOBJ_POD);

	// Test the parse token method
	asETokenClass t = engine->ParseToken("!is");
	if( t != asTC_KEYWORD )
		TEST_FAILED;

	// Compile a script with meta data strings
	CScriptBuilder builder;
	builder.DefineWord("COMPILE");
	r = builder.StartNewModule(engine, 0);
	r = builder.AddSectionFromMemory("", script);
	r = builder.BuildModule();
#if AS_PROCESS_METADATA == 1
	if( r < 0 )
		TEST_FAILED;

	asIScriptFunction *func = engine->GetModule(0)->GetFunctionByName("func1");
	string metadata = builder.GetMetadataStringForFunc(func);
	if( metadata != " my meta data test " )
		TEST_FAILED;

	func = engine->GetModule(0)->GetFunctionByName("func2");
	metadata = builder.GetMetadataStringForFunc(func);
	if( metadata != " test['hello'] " )
		TEST_FAILED;

	engine->GetModule(0)->SetDefaultNamespace("NS");
	func = engine->GetModule(0)->GetFunctionByName("func");
	metadata = builder.GetMetadataStringForFunc(func);
	if( metadata != "func" )
		TEST_FAILED;
	engine->GetModule(0)->SetDefaultNamespace("");

	int typeId = engine->GetModule(0)->GetTypeIdByDecl("MyClass");
	metadata = builder.GetMetadataStringForType(typeId);
	if( metadata != " myclass " )
		TEST_FAILED;

	typeId = engine->GetModule(0)->GetTypeIdByDecl("NS::Class");
	metadata = builder.GetMetadataStringForType(typeId);
	if( metadata != "class" )
		TEST_FAILED;

	typeId = engine->GetModule(0)->GetTypeIdByDecl("MyClass2");
	metadata = builder.GetMetadataStringForTypeProperty(typeId, 0);
	if( metadata != " edit " )
		TEST_FAILED;
	metadata = builder.GetMetadataStringForTypeProperty(typeId, 1);
	if( metadata != " noedit " )
		TEST_FAILED;
	metadata = builder.GetMetadataStringForTypeProperty(typeId, 2);
	if( metadata != " edit,c " )
		TEST_FAILED;

	asIObjectType *type = engine->GetObjectTypeById(typeId);
	if( type == 0 )
		TEST_FAILED;
	else
	{
		metadata = builder.GetMetadataStringForTypeMethod(typeId, type->GetMethodByName("get_prop"));
		if( metadata != " prop " )
			TEST_FAILED;
		metadata = builder.GetMetadataStringForTypeMethod(typeId, type->GetMethodByName("set_prop"));
		if( metadata != " prop " )
			TEST_FAILED;
	}

	typeId = engine->GetModule(0)->GetTypeIdByDecl("MyIntf");
	metadata = builder.GetMetadataStringForType(typeId);
	if( metadata != " myintf " )
		TEST_FAILED;

	int varIdx = engine->GetModule(0)->GetGlobalVarIndexByName("g_var");
	metadata = builder.GetMetadataStringForVar(varIdx);
	if( metadata != " init " )
		TEST_FAILED;

	varIdx = engine->GetModule(0)->GetGlobalVarIndexByName("g_obj");
	metadata = builder.GetMetadataStringForVar(varIdx);
	if( metadata != " var of type myclass " )
		TEST_FAILED;
#endif

//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:


注:本文中的CScriptBuilder::GetMetadataStringForVar方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。