Advertisement

GetDeclarationsStr

Started by September 17, 2013 09:11 PM
0 comments, last by WitchLord 11 years, 2 months ago

I'm not sure if this is a bug or not, but when I call asIScriptFunction::GetDeclaration on a constructor I am getting a return type, contrary to some comments in the code as_scriptfunction.cpp, line 480.


// Don't add the return type for constructors and destructors
if( !(returnType.GetTokenType() == ttVoid && 
      objectType && 
      (name == objectType->name || (name.GetLength() > 0 && name[0] == '~'))) ) 
{
    str = returnType.Format();
    str += " ";
} 

The problem seems to be that "name" is always "_beh_0_", which is certainly not going to equal objectType->name. This name is set here when registering a behaviour, as_scriptengine.cpp, line 1811:


asCBuilder bld(this, 0);
int r = bld.ParseFunctionDeclaration(objectType, decl, &func, true, &internal.paramAutoHandles, &internal.returnAutoHandle);
if( r < 0 )
    return ConfigError(asINVALID_DECLARATION, "RegisterObjectBehaviour", objectType->name.AddressOf(), decl);
func.name.Format("_beh_%d_", behaviour);

These two sections of code seem inconsistent. If I had to pick, I would prefer constructors to have their names equal the names of the objects which they construct.

Not really a bug, but certainly something I'll look into changing.

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

This topic is closed to new replies.

Advertisement