本文整理汇总了C++中CScriptBuilder::GetMetadataStringForFunc方法的典型用法代码示例。如果您正苦于以下问题:C++ CScriptBuilder::GetMetadataStringForFunc方法的具体用法?C++ CScriptBuilder::GetMetadataStringForFunc怎么用?C++ CScriptBuilder::GetMetadataStringForFunc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CScriptBuilder
的用法示例。
在下文中一共展示了CScriptBuilder::GetMetadataStringForFunc方法的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;
}
示例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
//.........这里部分代码省略.........