Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!

1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Member Since 09 Dec 2012
Offline Last Active Jan 27 2015 03:07 PM

Topics I've Started

Bug in type-casting

13 December 2014 - 12:03 AM

I've encountered a bug when using implicit ref casting. All of my widget objects inherit from a Base class that then has a implicit cast for each widget type. The findWidget() method returns a reference to a Base object and then is casted to the Label object. If I try to assign the reference to a class property it can't resolve the method call for setText(). Creating a local variable works just fine.

class CobaltTheme
    private const Widgets::Label @mClock;

        @mClock = Window.findWidget("Home.Clock");    

        onTimerCallback @timerCallback = onTimerCallback(this._clockTimer);
        createTimer(1, timerCallback);

    bool _clockTimer()
        //  ERR  : No matching signatures to 'Label::setText(string) const'

        // Works fine:
        Widgets::Label @Clock = Window.findWidget("Home.Clock");
        return true;
// The Base to Label reference cast
r = engine->RegisterObjectBehaviour("Base", asBEHAVE_IMPLICIT_REF_CAST, "Label@ f()", asFUNCTION(Base::castToLabel), asCALL_CDECL_OBJLAST); assert( r >= 0 );
r = engine->RegisterObjectMethod("Window", "Widgets::Base@ findWidget(const string &in)", asMETHOD(Window, findWidget), asCALL_THISCALL); assert( r >= 0 );


Initializing array in function call

16 January 2014 - 12:01 PM

Any chance of allowing a initialization list to be used in a function call?

void test(array<string> &in); // Function definition

test({"string1", "string2"});

Or something like:

test(array<string>{"string1", "string2"});

- dave


05 January 2013 - 10:50 PM

Could you add a method to get the current default namespace?


const char *asCScriptEngine::GetDefaultNamespace() const
    return defaultNamespace->name.AddressOf();



Dave Krusu


01 January 2013 - 11:26 PM

I'm getting a segfault when registering a object with a method that returns a handle to it's self. The following code reproduces the crash:


#include <angelscript.h>
#include <stdio.h>

class IManaged {
        virtual void addRef() = 0;
        virtual void Release() = 0;

class Test : public IManaged {
        void addRef() {


        void Release() {


        Test &Foo() {
            return *this;

Test *pTest;

int main() {
    asIScriptEngine *pEngine = asCreateScriptEngine(ANGELSCRIPT_VERSION);
    asIScriptModule *Mod     = pEngine->GetModule(0, asGM_ALWAYS_CREATE);

    pTest = new Test();

    pEngine->RegisterObjectType("Test", 0, asOBJ_REF);
    pEngine->RegisterObjectBehaviour("Test", asBEHAVE_ADDREF, "void f()", asMETHOD(Test, addRef), asCALL_THISCALL);
    pEngine->RegisterObjectBehaviour("Test", asBEHAVE_RELEASE, "void f()", asMETHOD(Test, Release), asCALL_THISCALL);
    pEngine->RegisterObjectMethod("Test", "Test &Foo()", asMETHOD(Test, Foo), asCALL_THISCALL);
    pEngine->RegisterGlobalProperty("Test @pTest", pTest);

    const char *Script = "void main() { pTest.Foo(); }";

    Mod->AddScriptSection("script", Script);

    asIScriptContext *Ctx = pEngine->CreateContext();
    asIScriptFunction *Func = Mod->GetFunctionByDecl("void main()");


    return 0;


here is the backtrace:


#0  0x0000000000412682 in asCScriptEngine::CallObjectMethod (this=0x737010,
    obj=0x4c5e30 <vtable for Test+16>, i=0x7400f0, s=0x740150)
    at ../../source/as_scriptengine.cpp:3382
#1  0x0000000000412574 in asCScriptEngine::CallObjectMethod (this=0x737010,
    obj=0x4c5e30 <vtable for Test+16>, func=31)
    at ../../source/as_scriptengine.cpp:3354
#2  0x0000000000490b73 in asCContext::ExecuteNext (this=0x740ae0)
    at ../../source/as_context.cpp:3739
#3  0x00000000004896af in asCContext::Execute (this=0x740ae0)
    at ../../source/as_context.cpp:1155
#4  0x00000000004026c7 in main () at test.cpp:48



This happends on both 32 and 64-bit builds with GCC 4.7.2 (Linux)





No type id for enum values?

26 December 2012 - 10:56 AM

I'm writing a function that takes a var arg type and then identifies the type to print either the value or information about the object. Everything seems to have an Id except enum values, however they always seem to get an id of 14. Can enum values be given a typeId like the rest? Or am I missing something that allows me to identify enum values?



Dave Krusu