PoloList.mcpp Source CodeΒΆ

~import std::exception;
~import boost::format;
~import Macaroni::Lua::LuaClass;
~import Macaroni::Lua::LuaFunction;
~import Macaroni::Lua::LuaGlueCode;
~import Macaroni::Lua::LuaIncludes;
~import Macaroni::Lua::LuaIndexExtraCode;
~import Macaroni::Lua::LuaOperator;
~import Macaroni::Lua::LuaProperty;
~import Macaroni::Tests::Lua::Polo;
~import Macaroni::Tests::Lua::PoloPtr;
~import boost::shared_ptr;

~import Macaroni::Tests::Lua::PoloList;

namespace Macaroni::Tests::Lua
{
    typedef shared_ptr<PoloList> PoloListPtr
        @LuaClass [ SameAsNode = PoloList ]
    ;

    typedef std::vector<PoloPtr> PoloList
        @LuaClass [
            ReferenceType=PoloListPtr
        ]
        @LuaIncludes ={
            #include <Macaroni/Tests/Lua/PoloLuaMetaData.h>
            #include <Macaroni/Tests/Lua/Polo.h>
        }
        @LuaIndexExtraCode ={
            const auto listIndex = luaL_checknumber(L, 2) + 1;
            PoloList & list = *instance;
            PoloPtr element = list[listIndex];
            PoloLuaMetaData::PutInstanceOnStack(L, element);
            return 1;
        }
    ;

}