# HG changeset patch # User rubidium # Date 1176583090 0 # Node ID 5009a30f320a286d2aeb5b8a734aa1c197ba7fe3 # Parent 012f29f59906f366a80cea843a04f71348978c1b (svn r9627) [NoAI] -Fix: let the squirrel export script export all needed (and a few more) types of references to structs and classes. diff -r 012f29f59906 -r 5009a30f320a src/ai/ai_squirrel.cpp --- a/src/ai/ai_squirrel.cpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/ai_squirrel.cpp Sat Apr 14 20:38:10 2007 +0000 @@ -21,6 +21,7 @@ /* Convert all AI related classes to Squirrel data */ #define DEFINE_SQUIRREL_CLASS +#include "api/ai_abstractlist.hpp" #include "api/ai_accounting.hpp" #include "api/ai_base.hpp" #include "api/ai_cargo.hpp" diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_abstractlist.hpp --- a/src/ai/api/ai_abstractlist.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_abstractlist.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -198,10 +198,16 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow inner classes/structs to be used as Squirrel parameters */ + template <> AIAbstractList::Valuator *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAbstractList::Valuator *)instance; } + template <> AIAbstractList::Valuator &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIAbstractList::Valuator *)instance; } + template <> const AIAbstractList::Valuator *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAbstractList::Valuator *)instance; } template <> const AIAbstractList::Valuator &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIAbstractList::Valuator *)instance; } /* Allow AIAbstractList to be used as Squirrel parameter */ - template <> AIAbstractList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAbstractList *)instance; } + template <> AIAbstractList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAbstractList *)instance; } + template <> AIAbstractList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIAbstractList *)instance; } + template <> const AIAbstractList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAbstractList *)instance; } + template <> const AIAbstractList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIAbstractList *)instance; } }; // namespace SQConvert void SQAIAbstractListRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_accounting.hpp --- a/src/ai/api/ai_accounting.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_accounting.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -54,7 +54,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIAccounting to be used as Squirrel parameter */ - template <> AIAccounting *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAccounting *)instance; } + template <> AIAccounting *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAccounting *)instance; } + template <> AIAccounting &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIAccounting *)instance; } + template <> const AIAccounting *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIAccounting *)instance; } + template <> const AIAccounting &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIAccounting *)instance; } }; // namespace SQConvert void SQAIAccountingRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_base.hpp --- a/src/ai/api/ai_base.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_base.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -49,7 +49,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIBase to be used as Squirrel parameter */ - template <> AIBase *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBase *)instance; } + template <> AIBase *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBase *)instance; } + template <> AIBase &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBase *)instance; } + template <> const AIBase *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIBase *)instance; } + template <> const AIBase &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIBase *)instance; } }; // namespace SQConvert void SQAIBaseRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_cargo.hpp --- a/src/ai/api/ai_cargo.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_cargo.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -53,7 +53,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AICargo to be used as Squirrel parameter */ - template <> AICargo *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargo *)instance; } + template <> AICargo *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargo *)instance; } + template <> AICargo &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICargo *)instance; } + template <> const AICargo *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICargo *)instance; } + template <> const AICargo &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICargo *)instance; } }; // namespace SQConvert void SQAICargoRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_company.hpp --- a/src/ai/api/ai_company.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_company.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -97,7 +97,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AICompany to be used as Squirrel parameter */ - template <> AICompany *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICompany *)instance; } + template <> AICompany *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICompany *)instance; } + template <> AICompany &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICompany *)instance; } + template <> const AICompany *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AICompany *)instance; } + template <> const AICompany &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AICompany *)instance; } }; // namespace SQConvert void SQAICompanyRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_execmode.hpp --- a/src/ai/api/ai_execmode.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_execmode.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -48,7 +48,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIExecMode to be used as Squirrel parameter */ - template <> AIExecMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIExecMode *)instance; } + template <> AIExecMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIExecMode *)instance; } + template <> AIExecMode &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIExecMode *)instance; } + template <> const AIExecMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIExecMode *)instance; } + template <> const AIExecMode &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIExecMode *)instance; } }; // namespace SQConvert void SQAIExecModeRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_industry.hpp --- a/src/ai/api/ai_industry.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_industry.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -62,7 +62,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIIndustry to be used as Squirrel parameter */ - template <> AIIndustry *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustry *)instance; } + template <> AIIndustry *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustry *)instance; } + template <> AIIndustry &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustry *)instance; } + template <> const AIIndustry *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIIndustry *)instance; } + template <> const AIIndustry &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIIndustry *)instance; } }; // namespace SQConvert void SQAIIndustryRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_list.hpp --- a/src/ai/api/ai_list.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_list.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -34,7 +34,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIList to be used as Squirrel parameter */ - template <> AIList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIList *)instance; } + template <> AIList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIList *)instance; } + template <> AIList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIList *)instance; } + template <> const AIList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIList *)instance; } + template <> const AIList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIList *)instance; } }; // namespace SQConvert void SQAIListRegister(Squirrel *engine) { @@ -44,8 +47,8 @@ SQAIList.DefSQStaticMethod(engine, &AIList::GetClassName, "GetClassName", 1, "x"); - SQAIList.DefSQMethod(engine, &AIList::AddItem, "AddItem", 2, "xi"); - SQAIList.DefSQMethod(engine, &AIList::RemoveItem, "RemoveItem", 2, "xi"); + SQAIList.DefSQMethod(engine, &AIList::AddItem, "AddItem", 2, "xi"); + SQAIList.DefSQMethod(engine, &AIList::RemoveItem, "RemoveItem", 2, "xi"); SQAIList.PostRegister(engine); } diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_map.hpp --- a/src/ai/api/ai_map.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_map.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -128,7 +128,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIMap to be used as Squirrel parameter */ - template <> AIMap *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIMap *)instance; } + template <> AIMap *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIMap *)instance; } + template <> AIMap &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIMap *)instance; } + template <> const AIMap *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIMap *)instance; } + template <> const AIMap &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIMap *)instance; } }; // namespace SQConvert void SQAIMapRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_order.hpp --- a/src/ai/api/ai_order.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_order.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -167,7 +167,10 @@ template <> int Return(HSQUIRRELVM vm, AIOrder::AIOrderFlags res) { sq_pushinteger(vm, (int32)res); return 1; } /* Allow AIOrder to be used as Squirrel parameter */ - template <> AIOrder *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIOrder *)instance; } + template <> AIOrder *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIOrder *)instance; } + template <> AIOrder &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIOrder *)instance; } + template <> const AIOrder *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIOrder *)instance; } + template <> const AIOrder &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIOrder *)instance; } }; // namespace SQConvert void SQAIOrderRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_road.hpp --- a/src/ai/api/ai_road.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_road.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -177,7 +177,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIRoad to be used as Squirrel parameter */ - template <> AIRoad *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIRoad *)instance; } + template <> AIRoad *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIRoad *)instance; } + template <> AIRoad &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIRoad *)instance; } + template <> const AIRoad *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIRoad *)instance; } + template <> const AIRoad &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIRoad *)instance; } }; // namespace SQConvert void SQAIRoadRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_settings.hpp --- a/src/ai/api/ai_settings.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_settings.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -33,7 +33,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AISettings to be used as Squirrel parameter */ - template <> AISettings *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISettings *)instance; } + template <> AISettings *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISettings *)instance; } + template <> AISettings &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AISettings *)instance; } + template <> const AISettings *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISettings *)instance; } + template <> const AISettings &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AISettings *)instance; } }; // namespace SQConvert void SQAISettingsRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_sign.hpp --- a/src/ai/api/ai_sign.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_sign.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -81,7 +81,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AISign to be used as Squirrel parameter */ - template <> AISign *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISign *)instance; } + template <> AISign *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISign *)instance; } + template <> AISign &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AISign *)instance; } + template <> const AISign *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AISign *)instance; } + template <> const AISign &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AISign *)instance; } }; // namespace SQConvert void SQAISignRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_testmode.hpp --- a/src/ai/api/ai_testmode.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_testmode.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -50,7 +50,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITestMode to be used as Squirrel parameter */ - template <> AITestMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITestMode *)instance; } + template <> AITestMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITestMode *)instance; } + template <> AITestMode &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITestMode *)instance; } + template <> const AITestMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITestMode *)instance; } + template <> const AITestMode &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITestMode *)instance; } }; // namespace SQConvert void SQAITestModeRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_tilelist.hpp --- a/src/ai/api/ai_tilelist.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_tilelist.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -62,7 +62,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITileList to be used as Squirrel parameter */ - template <> AITileList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList *)instance; } + template <> AITileList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList *)instance; } + template <> AITileList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList *)instance; } + template <> const AITileList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileList *)instance; } + template <> const AITileList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileList *)instance; } }; // namespace SQConvert void SQAITileListRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_tilelist_valuator.hpp --- a/src/ai/api/ai_tilelist_valuator.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_tilelist_valuator.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -26,7 +26,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITileListBuildable to be used as Squirrel parameter */ - template <> AITileListBuildable *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileListBuildable *)instance; } + template <> AITileListBuildable *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileListBuildable *)instance; } + template <> AITileListBuildable &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileListBuildable *)instance; } + template <> const AITileListBuildable *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITileListBuildable *)instance; } + template <> const AITileListBuildable &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITileListBuildable *)instance; } }; // namespace SQConvert void SQAITileListBuildableRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_town.hpp --- a/src/ai/api/ai_town.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_town.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -70,7 +70,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITown to be used as Squirrel parameter */ - template <> AITown *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITown *)instance; } + template <> AITown *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITown *)instance; } + template <> AITown &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITown *)instance; } + template <> const AITown *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITown *)instance; } + template <> const AITown &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITown *)instance; } }; // namespace SQConvert void SQAITownRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_townlist.hpp --- a/src/ai/api/ai_townlist.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_townlist.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -26,7 +26,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITownList to be used as Squirrel parameter */ - template <> AITownList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList *)instance; } + template <> AITownList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList *)instance; } + template <> AITownList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList *)instance; } + template <> const AITownList *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownList *)instance; } + template <> const AITownList &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownList *)instance; } }; // namespace SQConvert void SQAITownListRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_townlist_valuator.hpp --- a/src/ai/api/ai_townlist_valuator.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_townlist_valuator.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -26,7 +26,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITownListGetPopulation to be used as Squirrel parameter */ - template <> AITownListGetPopulation *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownListGetPopulation *)instance; } + template <> AITownListGetPopulation *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownListGetPopulation *)instance; } + template <> AITownListGetPopulation &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownListGetPopulation *)instance; } + template <> const AITownListGetPopulation *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownListGetPopulation *)instance; } + template <> const AITownListGetPopulation &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownListGetPopulation *)instance; } }; // namespace SQConvert void SQAITownListGetPopulationRegister(Squirrel *engine) { @@ -59,7 +62,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITownListGetLocation to be used as Squirrel parameter */ - template <> AITownListGetLocation *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownListGetLocation *)instance; } + template <> AITownListGetLocation *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownListGetLocation *)instance; } + template <> AITownListGetLocation &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownListGetLocation *)instance; } + template <> const AITownListGetLocation *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITownListGetLocation *)instance; } + template <> const AITownListGetLocation &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITownListGetLocation *)instance; } }; // namespace SQConvert void SQAITownListGetLocationRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_transactionmode.hpp --- a/src/ai/api/ai_transactionmode.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_transactionmode.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -109,7 +109,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AITransactionMode to be used as Squirrel parameter */ - template <> AITransactionMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITransactionMode *)instance; } + template <> AITransactionMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITransactionMode *)instance; } + template <> AITransactionMode &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITransactionMode *)instance; } + template <> const AITransactionMode *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AITransactionMode *)instance; } + template <> const AITransactionMode &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AITransactionMode *)instance; } }; // namespace SQConvert void SQAITransactionModeRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/ai_vehicle.hpp --- a/src/ai/api/ai_vehicle.hpp Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/ai_vehicle.hpp Sat Apr 14 20:38:10 2007 +0000 @@ -126,7 +126,10 @@ #ifdef DEFINE_SQUIRREL_CLASS namespace SQConvert { /* Allow AIVehicle to be used as Squirrel parameter */ - template <> AIVehicle *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicle *)instance; } + template <> AIVehicle *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicle *)instance; } + template <> AIVehicle &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicle *)instance; } + template <> const AIVehicle *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (AIVehicle *)instance; } + template <> const AIVehicle &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIVehicle *)instance; } }; // namespace SQConvert void SQAIVehicleRegister(Squirrel *engine) { diff -r 012f29f59906 -r 5009a30f320a src/ai/api/squirrel_export.awk --- a/src/ai/api/squirrel_export.awk Sat Apr 14 20:17:36 2007 +0000 +++ b/src/ai/api/squirrel_export.awk Sat Apr 14 20:38:10 2007 +0000 @@ -16,6 +16,13 @@ return } +function dump_class_templates(name) { + print " template <> " name " *GetParam(ForceType<" name " *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }" + print " template <> " name " &GetParam(ForceType<" name " &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" + print " template <> const " name " *GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" name " *)instance; }" + print " template <> const " name " &GetParam(ForceType, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }" +} + BEGIN { enum_size = 0 enum_value_size = 0 @@ -23,6 +30,7 @@ method_size = 0 static_method_size = 0 virtual_class = "false" + super_cls = "" cls = "" start_squirrel_define_on_next_line = "false" cls_level = 0 @@ -42,6 +50,11 @@ if (cls_level == 0) { public = "false" cls = $2 + if (match($4, "public") || match($4, "protected") || match($4, "private")) { + super_cls = $5 + } else { + super_cls = $4 + } } else if (cls_level == 1) { struct_size++ structs[struct_size] = cls "::" $2 @@ -124,7 +137,7 @@ } print " /* Allow inner classes/structs to be used as Squirrel parameters */" for (i = 1; i <= struct_size; i++) { - print " template <> " structs[i] " *GetParam(ForceType<" structs[i] " *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" structs[i] " *)instance; }" + dump_class_templates(structs[i]) delete structs[i] } } @@ -136,8 +149,7 @@ print "" } print " /* Allow " cls " to be used as Squirrel parameter */" - print " template <> " cls " *GetParam(ForceType<" cls " *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (" cls " *)instance; }" - # TODO returning... + dump_class_templates(cls) print "}; // namespace SQConvert" @@ -146,7 +158,11 @@ # Then do the registration functions of the class. */ print "void SQ" cls "Register(Squirrel *engine) {" print " DefSQClass <" cls "> SQ" cls "(\"" cls "\");" - print " SQ" cls ".PreRegister(engine);" + if (super_cls == "AIObject" || super_cls == "AIAbstractList::Valuator") { + print " SQ" cls ".PreRegister(engine);" + } else { + print " SQ" cls ".PreRegister(engine, \"" super_cls "\");" + } print " SQ" cls ".AddConstructor(engine);" print "" @@ -237,7 +253,7 @@ len = 1; for (len = 1; params[len] != ""; len++) { sub("^[ ]*", "", params[len]) - if (match(params[len], "\\*")) { + if (match(params[len], "\\*") || match(params[len], "&")) { if (match(params[len], "^char")) { types = types "s" } else {