(svn r9451) [NoAI] -Add: allow static and non-static members for SQ noai
authortruelight
Sun, 25 Mar 2007 16:32:02 +0000
branchnoai
changeset 9530 5b93bc87cc5e
parent 9529 5f26f4bc574b
child 9531 6a2e35738593
(svn r9451) [NoAI] -Add: allow static and non-static members for SQ
src/ai/api/ai_accounting.hpp
src/ai/api/ai_base.hpp
src/ai/api/ai_cargo.hpp
src/ai/api/ai_company.hpp
src/ai/api/ai_controller.hpp
src/ai/api/ai_industry.hpp
src/ai/api/ai_map.hpp
src/ai/api/ai_order.hpp
src/ai/api/ai_road.hpp
src/ai/api/ai_settings.hpp
src/ai/api/ai_sign.hpp
src/ai/api/ai_town.hpp
src/ai/api/ai_transactionmode.hpp
src/ai/api/ai_vehicle.hpp
src/squirrel_class.hpp
src/squirrel_helper.hpp
--- a/src/ai/api/ai_accounting.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_accounting.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -62,8 +62,8 @@
 	SQAIAccounting.PreRegister(engine);
 	SQAIAccounting.AddConstructor(engine);
 
-	SQAIAccounting.DefSQFunction(engine, &AIAccounting::GetCosts,   "GetCosts");
-	SQAIAccounting.DefSQFunction(engine, &AIAccounting::ResetCosts, "ResetCosts");
+	SQAIAccounting.DefSQMethod(engine, &AIAccounting::GetCosts,   "GetCosts");
+	SQAIAccounting.DefSQMethod(engine, &AIAccounting::ResetCosts, "ResetCosts");
 
 	SQAIAccounting.PostRegister(engine);
 }
--- a/src/ai/api/ai_base.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_base.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -57,9 +57,9 @@
 	SQAIBase.PreRegister(engine);
 	SQAIBase.AddConstructor(engine);
 
-	SQAIBase.DefSQFunction(engine, &AIBase::Rand,      "Rand");
-	SQAIBase.DefSQFunction(engine, &AIBase::RandRange, "RandRange");
-	SQAIBase.DefSQFunction(engine, &AIBase::Chance,    "Chance");
+	SQAIBase.DefSQMethod(engine, &AIBase::Rand,      "Rand");
+	SQAIBase.DefSQMethod(engine, &AIBase::RandRange, "RandRange");
+	SQAIBase.DefSQMethod(engine, &AIBase::Chance,    "Chance");
 
 	SQAIBase.PostRegister(engine);
 }
--- a/src/ai/api/ai_cargo.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_cargo.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -61,10 +61,10 @@
 	SQAICargo.PreRegister(engine);
 	SQAICargo.AddConstructor(engine);
 
-	SQAICargo.DefSQFunction(engine, &AICargo::IsValidCargo,   "IsValidCargo");
-	SQAICargo.DefSQFunction(engine, &AICargo::GetCargoLabel,  "GetCargoLabel");
-	SQAICargo.DefSQFunction(engine, &AICargo::IsFreight,      "IsFreight");
-	SQAICargo.DefSQFunction(engine, &AICargo::GetCargoIncome, "GetCargoIncome");
+	SQAICargo.DefSQMethod(engine, &AICargo::IsValidCargo,   "IsValidCargo");
+	SQAICargo.DefSQMethod(engine, &AICargo::GetCargoLabel,  "GetCargoLabel");
+	SQAICargo.DefSQMethod(engine, &AICargo::IsFreight,      "IsFreight");
+	SQAICargo.DefSQMethod(engine, &AICargo::GetCargoIncome, "GetCargoIncome");
 
 	SQAICargo.PostRegister(engine);
 }
--- a/src/ai/api/ai_company.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_company.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -90,14 +90,14 @@
 	SQAICompany.PreRegister(engine);
 	SQAICompany.AddConstructor(engine);
 
-	SQAICompany.DefSQFunction(engine, &AICompany::SetCompanyName,   "SetCompanyName");
-	SQAICompany.DefSQFunction(engine, &AICompany::GetCompanyName,   "GetCompanyName");
-	SQAICompany.DefSQFunction(engine, &AICompany::GetCompanyValue,  "GetCompanyValue");
-	SQAICompany.DefSQFunction(engine, &AICompany::GetBankBalance,   "GetBankBalance");
-	SQAICompany.DefSQFunction(engine, &AICompany::GetLoanAmount,    "GetLoanAmount");
-	SQAICompany.DefSQFunction(engine, &AICompany::GetMaxLoanAmount, "GetMaxLoanAmount");
-	SQAICompany.DefSQFunction(engine, &AICompany::GetLoanInterval,  "GetLoanInterval");
-	SQAICompany.DefSQFunction(engine, &AICompany::SetLoanAmount,    "SetLoanAmount");
+	SQAICompany.DefSQMethod(engine, &AICompany::SetCompanyName,   "SetCompanyName");
+	SQAICompany.DefSQMethod(engine, &AICompany::GetCompanyName,   "GetCompanyName");
+	SQAICompany.DefSQMethod(engine, &AICompany::GetCompanyValue,  "GetCompanyValue");
+	SQAICompany.DefSQMethod(engine, &AICompany::GetBankBalance,   "GetBankBalance");
+	SQAICompany.DefSQMethod(engine, &AICompany::GetLoanAmount,    "GetLoanAmount");
+	SQAICompany.DefSQMethod(engine, &AICompany::GetMaxLoanAmount, "GetMaxLoanAmount");
+	SQAICompany.DefSQMethod(engine, &AICompany::GetLoanInterval,  "GetLoanInterval");
+	SQAICompany.DefSQMethod(engine, &AICompany::SetLoanAmount,    "SetLoanAmount");
 
 	SQAICompany.PostRegister(engine);
 }
--- a/src/ai/api/ai_controller.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_controller.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -90,8 +90,8 @@
 void SQAIControllerRegister(Squirrel *engine) {
 	DefSQClass <AIControllerSquirrel> SQAIController("AIController");
 	SQAIController.PreRegister(engine);
-	SQAIController.DefSQFunction(engine, &AIControllerSquirrel::GetTick, "GetTick");
-	SQAIController.DefSQFunction(engine, &AIControllerSquirrel::Sleep,   "Sleep");
+	SQAIController.DefSQMethod(engine, &AIControllerSquirrel::GetTick, "GetTick");
+	SQAIController.DefSQMethod(engine, &AIControllerSquirrel::Sleep,   "Sleep");
 	SQAIController.PostRegister(engine);
 }
 #endif /* DEFINE_SQUIRREL_CLASS */
--- a/src/ai/api/ai_industry.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_industry.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -70,11 +70,11 @@
 	SQAIIndustry.PreRegister(engine);
 	SQAIIndustry.AddConstructor(engine);
 
-	SQAIIndustry.DefSQFunction(engine, &AIIndustry::GetMaxIndustryID, "GetMaxIndustryID");
-	SQAIIndustry.DefSQFunction(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount");
-	SQAIIndustry.DefSQFunction(engine, &AIIndustry::IsValidIndustry,  "IsValidIndustry");
-	SQAIIndustry.DefSQFunction(engine, &AIIndustry::GetName,          "GetName");
-	SQAIIndustry.DefSQFunction(engine, &AIIndustry::GetLocation,      "GetLocation");
+	SQAIIndustry.DefSQMethod(engine, &AIIndustry::GetMaxIndustryID, "GetMaxIndustryID");
+	SQAIIndustry.DefSQMethod(engine, &AIIndustry::GetIndustryCount, "GetIndustryCount");
+	SQAIIndustry.DefSQMethod(engine, &AIIndustry::IsValidIndustry,  "IsValidIndustry");
+	SQAIIndustry.DefSQMethod(engine, &AIIndustry::GetName,          "GetName");
+	SQAIIndustry.DefSQMethod(engine, &AIIndustry::GetLocation,      "GetLocation");
 
 	SQAIIndustry.PostRegister(engine);
 }
--- a/src/ai/api/ai_map.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_map.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -136,18 +136,18 @@
 	SQAIMap.PreRegister(engine);
 	SQAIMap.AddConstructor(engine);
 
-	SQAIMap.DefSQFunction(engine, &AIMap::IsValidTile,       "IsValidTile");
-	SQAIMap.DefSQFunction(engine, &AIMap::GetMapSize,        "GetMapSize");
-	SQAIMap.DefSQFunction(engine, &AIMap::GetMapSizeX,       "GetMapSizeX");
-	SQAIMap.DefSQFunction(engine, &AIMap::GetMapSizeY,       "GetMapSizeY");
-	SQAIMap.DefSQFunction(engine, &AIMap::GetTileX,          "GetTileX");
-	SQAIMap.DefSQFunction(engine, &AIMap::GetTileY,          "GetTileY");
-	SQAIMap.DefSQFunction(engine, &AIMap::GetTileIndex,      "GetTileIndex");
-	SQAIMap.DefSQFunction(engine, &AIMap::DistanceManhattan, "DistanceManhattan");
-	SQAIMap.DefSQFunction(engine, &AIMap::DistanceMax,       "DistanceMax");
-	SQAIMap.DefSQFunction(engine, &AIMap::DistanceSquare,    "DistanceSquare");
-	SQAIMap.DefSQFunction(engine, &AIMap::DistanceFromEdge,  "DistanceFromEdge");
-	SQAIMap.DefSQFunction(engine, &AIMap::DemolishTile,      "DemolishTile");
+	SQAIMap.DefSQMethod(engine, &AIMap::IsValidTile,       "IsValidTile");
+	SQAIMap.DefSQMethod(engine, &AIMap::GetMapSize,        "GetMapSize");
+	SQAIMap.DefSQMethod(engine, &AIMap::GetMapSizeX,       "GetMapSizeX");
+	SQAIMap.DefSQMethod(engine, &AIMap::GetMapSizeY,       "GetMapSizeY");
+	SQAIMap.DefSQMethod(engine, &AIMap::GetTileX,          "GetTileX");
+	SQAIMap.DefSQMethod(engine, &AIMap::GetTileY,          "GetTileY");
+	SQAIMap.DefSQMethod(engine, &AIMap::GetTileIndex,      "GetTileIndex");
+	SQAIMap.DefSQMethod(engine, &AIMap::DistanceManhattan, "DistanceManhattan");
+	SQAIMap.DefSQMethod(engine, &AIMap::DistanceMax,       "DistanceMax");
+	SQAIMap.DefSQMethod(engine, &AIMap::DistanceSquare,    "DistanceSquare");
+	SQAIMap.DefSQMethod(engine, &AIMap::DistanceFromEdge,  "DistanceFromEdge");
+	SQAIMap.DefSQMethod(engine, &AIMap::DemolishTile,      "DemolishTile");
 
 	SQAIMap.PostRegister(engine);
 }
--- a/src/ai/api/ai_order.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_order.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -175,26 +175,26 @@
 	SQAIOrder.PreRegister(engine);
 	SQAIOrder.AddConstructor(engine);
 
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_NONE,              "AIOF_NONE");
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_TRANSFER,          "AIOF_TRANSFER");
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_UNLOAD,            "AIOF_UNLOAD");
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_FULL_LOAD,         "AIOF_FULL_LOAD");
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_SERVICE_IF_NEEDED, "AIOF_SERVICE_IF_NEEDED");
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_NON_STOP,          "AIOF_NON_STOP");
-	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_INVALID,           "AIOF_INVALID");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_NONE,               "AIOF_NONE");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_TRANSFER,           "AIOF_TRANSFER");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_UNLOAD,             "AIOF_UNLOAD");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_FULL_LOAD,          "AIOF_FULL_LOAD");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_SERVICE_IF_NEEDED,  "AIOF_SERVICE_IF_NEEDED");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_NON_STOP,           "AIOF_NON_STOP");
+	SQAIOrder.DefSQConst   (engine, AIOrder::AIOF_INVALID,            "AIOF_INVALID");
 
-	SQAIOrder.DefSQFunction(engine, &AIOrder::IsValidVehicleOrder,   "IsValidVehicleOrder");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::AreOrderFlagsValid,    "AreOrderFlagsValid");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::GetNumberOfOrders,     "GetNumberOfOrders");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::GetOrderDestination,   "GetOrderDestination");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::GetOrderFlags,         "GetOrderFlags");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::AppendOrder,           "AppendOrder");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::InsertOrder,           "InsertOrder");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::RemoveOrder,           "RemoveOrder");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::ChangeOrder,           "ChangeOrder");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::CopyOrders,            "CopyOrders");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::ShareOrders,           "ShareOrders");
-	SQAIOrder.DefSQFunction(engine, &AIOrder::UnshareOrders,         "UnshareOrders");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::IsValidVehicleOrder,    "IsValidVehicleOrder");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::AreOrderFlagsValid,     "AreOrderFlagsValid");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::GetNumberOfOrders,      "GetNumberOfOrders");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::GetOrderDestination,    "GetOrderDestination");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::GetOrderFlags,          "GetOrderFlags");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::AppendOrder,            "AppendOrder");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::InsertOrder,            "InsertOrder");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::RemoveOrder,            "RemoveOrder");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::ChangeOrder,            "ChangeOrder");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::CopyOrders,             "CopyOrders");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::ShareOrders,            "ShareOrders");
+	SQAIOrder.DefSQMethod(engine, &AIOrder::UnshareOrders,          "UnshareOrders");
 
 	SQAIOrder.PostRegister(engine);
 }
--- a/src/ai/api/ai_road.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_road.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -119,13 +119,13 @@
 	SQAIRoad.PreRegister(engine);
 	SQAIRoad.AddConstructor(engine);
 
-	SQAIRoad.DefSQFunction(engine, &AIRoad::IsRoadTile,        "IsRoadTile");
-	SQAIRoad.DefSQFunction(engine, &AIRoad::BuildRoad,         "BuildRoad");
-	SQAIRoad.DefSQFunction(engine, &AIRoad::BuildRoadDepot,    "BuildRoadDepot");
-	SQAIRoad.DefSQFunction(engine, &AIRoad::BuildRoadStation,  "BuildRoadStation");
-	SQAIRoad.DefSQFunction(engine, &AIRoad::RemoveRoad,        "RemoveRoad");
-	SQAIRoad.DefSQFunction(engine, &AIRoad::RemoveRoadDepot,   "RemoveRoadDepot");
-	SQAIRoad.DefSQFunction(engine, &AIRoad::RemoveRoadStation, "RemoveRoadStation");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::IsRoadTile,        "IsRoadTile");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoad,         "BuildRoad");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadDepot,    "BuildRoadDepot");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadStation,  "BuildRoadStation");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoad,        "RemoveRoad");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoadDepot,   "RemoveRoadDepot");
+	SQAIRoad.DefSQMethod(engine, &AIRoad::RemoveRoadStation, "RemoveRoadStation");
 
 	SQAIRoad.PostRegister(engine);
 }
--- a/src/ai/api/ai_settings.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_settings.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -41,7 +41,7 @@
 	SQAISettings.PreRegister(engine);
 	SQAISettings.AddConstructor(engine);
 
-	SQAISettings.DefSQFunction(engine, &AISettings::SetCommandDelay, "SetCommandDelay");
+	SQAISettings.DefSQMethod(engine, &AISettings::SetCommandDelay, "SetCommandDelay");
 
 	SQAISettings.PostRegister(engine);
 }
--- a/src/ai/api/ai_sign.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_sign.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -87,13 +87,13 @@
 	SQAISign.PreRegister(engine);
 	SQAISign.AddConstructor(engine);
 
-	SQAISign.DefSQFunction(engine, &AISign::GetMaxSignID, "GetMaxSignID");
-	SQAISign.DefSQFunction(engine, &AISign::GetSignCount, "GetSignCount");
-	SQAISign.DefSQFunction(engine, &AISign::IsValidSign,  "IsValidSign");
-	SQAISign.DefSQFunction(engine, &AISign::GetText,      "GetText");
-	SQAISign.DefSQFunction(engine, &AISign::GetLocation,  "GetLocation");
-	SQAISign.DefSQFunction(engine, &AISign::RemoveSign,   "RemoveSign");
-	SQAISign.DefSQFunction(engine, &AISign::BuildSign,    "BuildSign");
+	SQAISign.DefSQMethod(engine, &AISign::GetMaxSignID, "GetMaxSignID");
+	SQAISign.DefSQMethod(engine, &AISign::GetSignCount, "GetSignCount");
+	SQAISign.DefSQMethod(engine, &AISign::IsValidSign,  "IsValidSign");
+	SQAISign.DefSQMethod(engine, &AISign::GetText,      "GetText");
+	SQAISign.DefSQMethod(engine, &AISign::GetLocation,  "GetLocation");
+	SQAISign.DefSQMethod(engine, &AISign::RemoveSign,   "RemoveSign");
+	SQAISign.DefSQMethod(engine, &AISign::BuildSign,    "BuildSign");
 
 	SQAISign.PostRegister(engine);
 }
--- a/src/ai/api/ai_town.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_town.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -78,12 +78,12 @@
 	SQAITown.PreRegister(engine);
 	SQAITown.AddConstructor(engine);
 
-	SQAITown.DefSQFunction(engine, &AITown::GetMaxTownID,  "GetMaxTownID");
-	SQAITown.DefSQFunction(engine, &AITown::GetTownCount,  "GetTownCount");
-	SQAITown.DefSQFunction(engine, &AITown::IsValidTown,   "IsValidTown");
-	SQAITown.DefSQFunction(engine, &AITown::GetName,       "GetName");
-	SQAITown.DefSQFunction(engine, &AITown::GetPopulation, "GetPopulation");
-	SQAITown.DefSQFunction(engine, &AITown::GetLocation,   "GetLocation");
+	SQAITown.DefSQMethod(engine, &AITown::GetMaxTownID,  "GetMaxTownID");
+	SQAITown.DefSQMethod(engine, &AITown::GetTownCount,  "GetTownCount");
+	SQAITown.DefSQMethod(engine, &AITown::IsValidTown,   "IsValidTown");
+	SQAITown.DefSQMethod(engine, &AITown::GetName,       "GetName");
+	SQAITown.DefSQMethod(engine, &AITown::GetPopulation, "GetPopulation");
+	SQAITown.DefSQMethod(engine, &AITown::GetLocation,   "GetLocation");
 
 	SQAITown.PostRegister(engine);
 }
--- a/src/ai/api/ai_transactionmode.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_transactionmode.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -117,11 +117,11 @@
 	SQAITransactionMode.PreRegister(engine);
 	SQAITransactionMode.AddConstructor(engine);
 
-	SQAITransactionMode.DefSQFunction(engine, &AITransactionMode::Execute,  "Execute");
-	SQAITransactionMode.DefSQFunction(engine, &AITransactionMode::Stop,     "Stop");
-	SQAITransactionMode.DefSQFunction(engine, &AITransactionMode::Rollback, "Rollback");
-	SQAITransactionMode.DefSQFunction(engine, &AITransactionMode::GetCosts, "GetCosts");
-	SQAITransactionMode.DefSQFunction(engine, &AITransactionMode::Append,   "Append");
+	SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Execute,  "Execute");
+	SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Stop,     "Stop");
+	SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Rollback, "Rollback");
+	SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::GetCosts, "GetCosts");
+	SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Append,   "Append");
 
 	SQAITransactionMode.PostRegister(engine);
 }
--- a/src/ai/api/ai_vehicle.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/ai/api/ai_vehicle.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -130,16 +130,16 @@
 	SQAIVehicle.PreRegister(engine);
 	SQAIVehicle.AddConstructor(engine);
 
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::IsValidEngine,       "IsValidEngine");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::IsValidVehicle,      "IsValidVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::FindBestRoadVehicle, "FindBestRoadVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::BuildVehicle,        "BuildVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::CloneVehicle,        "CloneVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::RefitVehicle,        "RefitVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::SellVehicle,         "SellVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::SendVehicleToDepot,  "SendVehicleToDepot");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::StartStopVehicle,    "StartStopVehicle");
-	SQAIVehicle.DefSQFunction(engine, &AIVehicle::SkipVehicleOrder,    "SkipVehicleOrder");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::IsValidEngine,       "IsValidEngine");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::IsValidVehicle,      "IsValidVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::FindBestRoadVehicle, "FindBestRoadVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::BuildVehicle,        "BuildVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::CloneVehicle,        "CloneVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::RefitVehicle,        "RefitVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::SellVehicle,         "SellVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::SendVehicleToDepot,  "SendVehicleToDepot");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::StartStopVehicle,    "StartStopVehicle");
+	SQAIVehicle.DefSQMethod(engine, &AIVehicle::SkipVehicleOrder,    "SkipVehicleOrder");
 
 	SQAIVehicle.PostRegister(engine);
 }
--- a/src/squirrel_class.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/squirrel_class.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -46,9 +46,18 @@
 	 * This defines a method inside a class for Squirrel.
 	 */
 	template <typename Func>
-	void DefSQFunction(Squirrel *engine, Func function_proc, const char *function_name)
+	void DefSQMethod(Squirrel *engine, Func function_proc, const char *function_name)
 	{
-		engine->AddMethod(function_name, SQConvert::DefSQCallback<CL, Func>, &function_proc, sizeof(function_proc));
+		engine->AddMethod(function_name, SQConvert::DefSQNonStaticCallback<CL, Func>, &function_proc, sizeof(function_proc));
+	}
+
+	/**
+	 * This defines a static method inside a class for Squirrel.
+	 */
+	template <typename Func>
+	void DefSQStaticMethod(Squirrel *engine, Func function_proc, const char *function_name)
+	{
+		engine->AddMethod(function_name, SQConvert::DefSQStaticCallback<CL, Func>, &function_proc, sizeof(function_proc));
 	}
 
 	template <typename Var>
--- a/src/squirrel_helper.hpp	Sun Mar 25 16:10:40 2007 +0000
+++ b/src/squirrel_helper.hpp	Sun Mar 25 16:32:02 2007 +0000
@@ -369,12 +369,12 @@
 
 
 	/**
-	 * A general template for all callback functions from Squirrel.
+	 * A general template for all non-static method callbacks from Squirrel.
 	 *  In here the function_proc is recovered, and the SQCall is called that
 	 *  can handle this exact amount of params.
 	 */
 	template <typename Tcls, typename Tmethod>
-	inline SQInteger DefSQCallback(HSQUIRRELVM vm)
+	inline SQInteger DefSQNonStaticCallback(HSQUIRRELVM vm)
 	{
 		/* Find the amount of params we got */
 		int nparam = sq_gettop(vm);
@@ -402,6 +402,25 @@
 		return HelperT<Tmethod>::SQCall((Tcls *)real_instance, *(Tmethod *)ptr, vm);
 	}
 
+	/**
+	 * A general template for all function/static method callbacks from Squirrel.
+	 *  In here the function_proc is recovered, and the SQCall is called that
+	 *  can handle this exact amount of params.
+	 */
+	template <typename Tcls, typename Tmethod>
+	inline SQInteger DefSQStaticCallback(HSQUIRRELVM vm)
+	{
+		/* Find the amount of params we got */
+		int nparam = sq_gettop(vm);
+		SQUserPointer ptr = NULL;
+
+		/* Get the real function pointer */
+		sq_getuserdata(vm, nparam, &ptr, 0);
+
+		/* Delegate it to a template that can handle this specific function */
+		return HelperT<Tmethod>::SQCall((Tcls *)NULL, *(Tmethod *)ptr, vm);
+	}
+
 }; // namespace SQConvert
 
 #endif /* SQUIRREL_HELPER_HPP */