Jump to content

  • Log In with Google      Sign In   
  • Create Account


sylexer

Member Since 17 May 2012
Offline Last Active Jun 21 2012 08:27 AM

Topics I've Started

compiler error when using namespace with the array addon

13 June 2012 - 02:13 PM

i have the following declaration in my class


array<Mesh::TexturePlane@> pointMesh;

this gives me the following error:

main.asc (14, 5) : ERR : Expected method or property
main.asc (323, 1) : ERR : Unexpected token '}'

line 323 is the last line of my script.

When i remove the Namespace in the c++ "scriptEngine->SetDefaultNamespace("Mesh")"
array<TexturePlane@> pointMesh; << compiles ok

I also tested the simple array notation works with the namespace

Mesh::TexturePlane@[] pointMesh; << compiles ok

Seems like a bug in the array template addon notation.

scriptbuilder and includes no matching signatures

17 May 2012 - 07:06 AM

Hi,

I'm trying to implement the angelscript engine but i ran into a problem when i try to include other files in my angelscript source files.
I'm building the scripts with the scriptbuilder addon.
When i try to build the module i get the following error.

(3, 1) : INFO : Compiling void main()
(7, 5) : ERR : No matching signatures to 'testinclude()'

I have implemented my own include callback and verified that all the scripts get loaded and the callback is triggered.

//include handler, this function is called once for loading test.asc
int includeScript(const char *include, const char *from, CScriptBuilder *builder, void *userParam)
{
	const char *contents = MBEngine::ResourceManager::loadTextFileConst(include);
	if ( NULL != contents )
	{
		int ret = builder->AddSectionFromMemory(contents);

		assert(ret >= 0);
		return 0;
	}
	return -1;
}


	scriptEngine = asCreateScriptEngine(ANGELSCRIPT_VERSION);
	int ret;
	ret = scriptEngine->SetMessageCallback(asFUNCTION(MessageCallback), 0, asCALL_CDECL);
	assert( ret >= 0 );

	RegisterStdString(scriptEngine);
	RegisterScriptArray(scriptEngine, true);
	RegisterScriptMath(scriptEngine);
	RegisterScriptDictionary(scriptEngine);
	ret = scriptEngine->RegisterGlobalFunction("void print(const string &in)", asFUNCTION(print), asCALL_CDECL);
	assert( ret >= 0 );
  
   CScriptBuilder scriptBuilder;
  
	//set the include loader
	scriptBuilder.SetIncludeCallback( includeScript, NULL);
  
	ret = scriptBuilder.StartNewModule(scriptEngine, "Main");
	assert( ret >= 0 );
  
	//load main script
	const char *mainScript = ResourceManager::loadTextFileConst("main.asc");
	ret = scriptBuilder.AddSectionFromMemory( mainScript );
	assert( ret >= 0 );
  
	//compile the script this where the compiler error is triggered
	ret = scriptBuilder.BuildModule();
	assert( ret >= 0 );

my 2 angelscript test files
main.asc

#include "test.asc"

void main()
{
	print("I'm now in main()\n");

	testinclude();
}

test.asc


void testinclude()
{
print("included function()\n");
}

I used the sample "include" as a reference
Who can help me, what i'm i missing here.

PARTNERS