(svn r9453) [NoAI] -Codechange: make a difference between static and non-static methods in the squirrel export script.
--- a/src/ai/api/ai_accounting.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_accounting.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -62,6 +62,8 @@
SQAIAccounting.PreRegister(engine);
SQAIAccounting.AddConstructor(engine);
+ SQAIAccounting.DefSQStaticMethod(engine, &AIAccounting::GetClassName, "GetClassName");
+
SQAIAccounting.DefSQMethod(engine, &AIAccounting::GetCosts, "GetCosts");
SQAIAccounting.DefSQMethod(engine, &AIAccounting::ResetCosts, "ResetCosts");
--- a/src/ai/api/ai_base.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_base.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -57,6 +57,8 @@
SQAIBase.PreRegister(engine);
SQAIBase.AddConstructor(engine);
+ SQAIBase.DefSQStaticMethod(engine, &AIBase::GetClassName, "GetClassName");
+
SQAIBase.DefSQMethod(engine, &AIBase::Rand, "Rand");
SQAIBase.DefSQMethod(engine, &AIBase::RandRange, "RandRange");
SQAIBase.DefSQMethod(engine, &AIBase::Chance, "Chance");
--- a/src/ai/api/ai_cargo.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_cargo.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -61,7 +61,9 @@
SQAICargo.PreRegister(engine);
SQAICargo.AddConstructor(engine);
- SQAICargo.DefSQMethod(engine, &AICargo::IsValidCargo, "IsValidCargo");
+ SQAICargo.DefSQStaticMethod(engine, &AICargo::GetClassName, "GetClassName");
+ SQAICargo.DefSQStaticMethod(engine, &AICargo::IsValidCargo, "IsValidCargo");
+
SQAICargo.DefSQMethod(engine, &AICargo::GetCargoLabel, "GetCargoLabel");
SQAICargo.DefSQMethod(engine, &AICargo::IsFreight, "IsFreight");
SQAICargo.DefSQMethod(engine, &AICargo::GetCargoIncome, "GetCargoIncome");
--- a/src/ai/api/ai_company.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_company.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -90,6 +90,8 @@
SQAICompany.PreRegister(engine);
SQAICompany.AddConstructor(engine);
+ SQAICompany.DefSQStaticMethod(engine, &AICompany::GetClassName, "GetClassName");
+
SQAICompany.DefSQMethod(engine, &AICompany::SetCompanyName, "SetCompanyName");
SQAICompany.DefSQMethod(engine, &AICompany::GetCompanyName, "GetCompanyName");
SQAICompany.DefSQMethod(engine, &AICompany::GetCompanyValue, "GetCompanyValue");
--- a/src/ai/api/ai_execmode.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_execmode.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -56,6 +56,7 @@
SQAIExecMode.PreRegister(engine);
SQAIExecMode.AddConstructor(engine);
+ SQAIExecMode.DefSQStaticMethod(engine, &AIExecMode::GetClassName, "GetClassName");
SQAIExecMode.PostRegister(engine);
}
--- a/src/ai/api/ai_industry.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_industry.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -70,9 +70,11 @@
SQAIIndustry.PreRegister(engine);
SQAIIndustry.AddConstructor(engine);
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::GetClassName, "GetClassName");
+ SQAIIndustry.DefSQStaticMethod(engine, &AIIndustry::IsValidIndustry, "IsValidIndustry");
+
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");
--- a/src/ai/api/ai_map.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_map.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -136,6 +136,8 @@
SQAIMap.PreRegister(engine);
SQAIMap.AddConstructor(engine);
+ SQAIMap.DefSQStaticMethod(engine, &AIMap::GetClassName, "GetClassName");
+
SQAIMap.DefSQMethod(engine, &AIMap::IsValidTile, "IsValidTile");
SQAIMap.DefSQMethod(engine, &AIMap::GetMapSize, "GetMapSize");
SQAIMap.DefSQMethod(engine, &AIMap::GetMapSizeX, "GetMapSizeX");
--- a/src/ai/api/ai_order.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_order.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -175,26 +175,28 @@
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.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.DefSQStaticMethod(engine, &AIOrder::GetClassName, "GetClassName");
+ SQAIOrder.DefSQStaticMethod(engine, &AIOrder::IsValidVehicleOrder, "IsValidVehicleOrder");
+ SQAIOrder.DefSQStaticMethod(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:46:57 2007 +0000
+++ b/src/ai/api/ai_road.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -119,6 +119,8 @@
SQAIRoad.PreRegister(engine);
SQAIRoad.AddConstructor(engine);
+ SQAIRoad.DefSQStaticMethod(engine, &AIRoad::GetClassName, "GetClassName");
+
SQAIRoad.DefSQMethod(engine, &AIRoad::IsRoadTile, "IsRoadTile");
SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoad, "BuildRoad");
SQAIRoad.DefSQMethod(engine, &AIRoad::BuildRoadDepot, "BuildRoadDepot");
--- a/src/ai/api/ai_settings.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_settings.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -41,6 +41,8 @@
SQAISettings.PreRegister(engine);
SQAISettings.AddConstructor(engine);
+ SQAISettings.DefSQStaticMethod(engine, &AISettings::GetClassName, "GetClassName");
+
SQAISettings.DefSQMethod(engine, &AISettings::SetCommandDelay, "SetCommandDelay");
SQAISettings.PostRegister(engine);
--- a/src/ai/api/ai_sign.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_sign.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -87,9 +87,11 @@
SQAISign.PreRegister(engine);
SQAISign.AddConstructor(engine);
+ SQAISign.DefSQStaticMethod(engine, &AISign::GetClassName, "GetClassName");
+ SQAISign.DefSQStaticMethod(engine, &AISign::IsValidSign, "IsValidSign");
+
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");
--- a/src/ai/api/ai_testmode.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_testmode.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -58,6 +58,7 @@
SQAITestMode.PreRegister(engine);
SQAITestMode.AddConstructor(engine);
+ SQAITestMode.DefSQStaticMethod(engine, &AITestMode::GetClassName, "GetClassName");
SQAITestMode.PostRegister(engine);
}
--- a/src/ai/api/ai_town.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_town.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -78,9 +78,11 @@
SQAITown.PreRegister(engine);
SQAITown.AddConstructor(engine);
+ SQAITown.DefSQStaticMethod(engine, &AITown::GetClassName, "GetClassName");
+ SQAITown.DefSQStaticMethod(engine, &AITown::IsValidTown, "IsValidTown");
+
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");
--- a/src/ai/api/ai_transactionmode.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_transactionmode.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -117,6 +117,8 @@
SQAITransactionMode.PreRegister(engine);
SQAITransactionMode.AddConstructor(engine);
+ SQAITransactionMode.DefSQStaticMethod(engine, &AITransactionMode::GetClassName, "GetClassName");
+
SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Execute, "Execute");
SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Stop, "Stop");
SQAITransactionMode.DefSQMethod(engine, &AITransactionMode::Rollback, "Rollback");
--- a/src/ai/api/ai_vehicle.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/ai_vehicle.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -130,8 +130,10 @@
SQAIVehicle.PreRegister(engine);
SQAIVehicle.AddConstructor(engine);
- SQAIVehicle.DefSQMethod(engine, &AIVehicle::IsValidEngine, "IsValidEngine");
- SQAIVehicle.DefSQMethod(engine, &AIVehicle::IsValidVehicle, "IsValidVehicle");
+ SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetClassName, "GetClassName");
+ SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::IsValidEngine, "IsValidEngine");
+ SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::IsValidVehicle, "IsValidVehicle");
+
SQAIVehicle.DefSQMethod(engine, &AIVehicle::FindBestRoadVehicle, "FindBestRoadVehicle");
SQAIVehicle.DefSQMethod(engine, &AIVehicle::BuildVehicle, "BuildVehicle");
SQAIVehicle.DefSQMethod(engine, &AIVehicle::CloneVehicle, "CloneVehicle");
--- a/src/ai/api/squirrel_export.awk Sun Mar 25 16:46:57 2007 +0000
+++ b/src/ai/api/squirrel_export.awk Sun Mar 25 17:43:40 2007 +0000
@@ -18,9 +18,10 @@
BEGIN {
enum_size = 0
+ enum_value_size = 0
struct_size = 0
method_size = 0
- enum_value_size = 0
+ static_method_size = 0
cls = ""
start_squirrel_define_on_next_line = "false"
cls_level = 0
@@ -120,36 +121,53 @@
print " SQ" cls ".PreRegister(engine);"
print " SQ" cls ".AddConstructor(engine);"
print ""
+
+ # Enum values
mlen = 0
for (i = 1; i <= enum_value_size; i++) {
- if (mlen <= length(enum_value[i])) mlen = length(enum_value[i])
+ if (mlen <= length(enum_value[i])) mlen = length(enum_value[i]) + 1
}
- for (i = 1; i <= method_size; i++) {
- if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1 #one character (&) longer
- }
-
for (i = 1; i <= enum_value_size; i++) {
- print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, mlen - length(enum_value[i]) + 1) "\"" enum_value[i] "\");"
+ print " SQ" cls ".DefSQConst (engine, " cls "::" enum_value[i] ", " substr(spaces, 0, mlen - length(enum_value[i])) "\"" enum_value[i] "\");"
delete enum_value[i]
}
if (enum_value_size != 0) print ""
+ # Static methods
+ mlen = 0
+ for (i = 1; i <= static_method_size; i++) {
+ if (mlen <= length(static_methods[i])) mlen = length(static_methods[i]) + 1
+ }
+ for (i = 1; i <= static_method_size; i++) {
+ print " SQ" cls ".DefSQStaticMethod(engine, &" cls "::" static_methods[i] ", " substr(spaces, 0, mlen - length(static_methods[i])) "\"" static_methods[i] "\");"
+ delete static_methods[i]
+ }
+ if (static_method_size != 0) print ""
+ # Non-static methods
+ mlen = 0
for (i = 1; i <= method_size; i++) {
- print " SQ" cls ".DefSQFunction(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");"
+ if (mlen <= length(methods[i])) mlen = length(methods[i]) + 1
+ }
+ for (i = 1; i <= method_size; i++) {
+ print " SQ" cls ".DefSQMethod(engine, &" cls "::" methods[i] ", " substr(spaces, 0, mlen - length(methods[i])) "\"" methods[i] "\");"
delete methods[i]
}
- print ""
+ if (method_size != 0) print ""
+
print " SQ" cls ".PostRegister(engine);"
print "}"
print "#endif /* DEFINE_SQUIRREL_CLASS */"
+ enum_size = 0
+ enum_value_size = 0
+ struct_size = 0
+ method_size = 0
+ static_method_size = 0
cls = ""
start_squirrel_define_on_next_line = "false"
- enum_size = 0
- struct_size = 0
- method_size = 0
+ cls_level = 0
}
# Skip non-public functions
@@ -167,12 +185,20 @@
# Add a method to the list
/^.*$/ {
if (cls_level != 1) next
+
+ is_static = match($0, "static")
gsub("virtual", "", $0)
gsub("static", "", $0)
+ gsub("const", "", $0)
gsub("\*", "", $0)
gsub("\(.*", "", $0)
if ($2 == "") next
- method_size++
- methods[method_size] = $2
+ if (is_static) {
+ static_method_size++
+ static_methods[static_method_size] = $2
+ } else {
+ method_size++
+ methods[method_size] = $2
+ }
next
}
--- a/src/squirrel_helper.hpp Sun Mar 25 16:46:57 2007 +0000
+++ b/src/squirrel_helper.hpp Sun Mar 25 17:43:40 2007 +0000
@@ -51,14 +51,15 @@
*/
template <typename T> static int Return(HSQUIRRELVM vm, T t);
- template <> inline int Return<uint8> (HSQUIRRELVM vm, uint8 res) { sq_pushinteger(vm, (int32)res); return 1; }
- template <> inline int Return<uint16>(HSQUIRRELVM vm, uint16 res) { sq_pushinteger(vm, (int32)res); return 1; }
- template <> inline int Return<uint32>(HSQUIRRELVM vm, uint32 res) { sq_pushinteger(vm, (int32)res); return 1; }
- template <> inline int Return<int8> (HSQUIRRELVM vm, int8 res) { sq_pushinteger(vm, res); return 1; }
- template <> inline int Return<int16> (HSQUIRRELVM vm, int16 res) { sq_pushinteger(vm, res); return 1; }
- template <> inline int Return<int32> (HSQUIRRELVM vm, int32 res) { sq_pushinteger(vm, res); return 1; }
- template <> inline int Return<bool> (HSQUIRRELVM vm, bool res) { sq_pushbool (vm, res); return 1; }
- template <> inline int Return<char *>(HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else sq_pushstring (vm, OTTD2FS(res), strlen(res)); free(res); return 1; }
+ template <> inline int Return<uint8> (HSQUIRRELVM vm, uint8 res) { sq_pushinteger(vm, (int32)res); return 1; }
+ template <> inline int Return<uint16> (HSQUIRRELVM vm, uint16 res) { sq_pushinteger(vm, (int32)res); return 1; }
+ template <> inline int Return<uint32> (HSQUIRRELVM vm, uint32 res) { sq_pushinteger(vm, (int32)res); return 1; }
+ template <> inline int Return<int8> (HSQUIRRELVM vm, int8 res) { sq_pushinteger(vm, res); return 1; }
+ template <> inline int Return<int16> (HSQUIRRELVM vm, int16 res) { sq_pushinteger(vm, res); return 1; }
+ template <> inline int Return<int32> (HSQUIRRELVM vm, int32 res) { sq_pushinteger(vm, res); return 1; }
+ template <> inline int Return<bool> (HSQUIRRELVM vm, bool res) { sq_pushbool (vm, res); return 1; }
+ template <> inline int Return<char *> (HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else sq_pushstring (vm, OTTD2FS(res), strlen(res)); free(res); return 1; }
+ template <> inline int Return<const char *>(HSQUIRRELVM vm, const char *res) { if (res == NULL) sq_pushnull(vm); else sq_pushstring (vm, OTTD2FS(res), strlen(res)); return 1; }
/**
* To get a param from squirrel, we call this function. It converts to the right format.