changeset 12755:3008789eb634 draft

(svn r17221) -Change [NoAI] [FS#3101]: when the API requests a string as parameter allow every squirrel type and convert to a string
author yexo <yexo@openttd.org>
date Wed, 19 Aug 2009 14:54:52 +0000
parents d254ce897707
children 7e6255798f4e
files src/ai/api/ai_basestation.hpp.sq src/ai/api/ai_company.hpp.sq src/ai/api/ai_gamesettings.hpp.sq src/ai/api/ai_group.hpp.sq src/ai/api/ai_log.hpp.sq src/ai/api/ai_sign.hpp.sq src/ai/api/ai_vehicle.hpp.sq src/ai/api/squirrel_export.awk src/script/squirrel_helper.hpp
diffstat 9 files changed, 24 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/api/ai_basestation.hpp.sq
+++ b/src/ai/api/ai_basestation.hpp.sq
@@ -27,7 +27,7 @@
 
 	SQAIBaseStation.DefSQStaticMethod(engine, &AIBaseStation::IsValidBaseStation,  "IsValidBaseStation",  2, ".i");
 	SQAIBaseStation.DefSQStaticMethod(engine, &AIBaseStation::GetName,             "GetName",             2, ".i");
-	SQAIBaseStation.DefSQStaticMethod(engine, &AIBaseStation::SetName,             "SetName",             3, ".is");
+	SQAIBaseStation.DefSQStaticMethod(engine, &AIBaseStation::SetName,             "SetName",             3, ".i.");
 	SQAIBaseStation.DefSQStaticMethod(engine, &AIBaseStation::GetLocation,         "GetLocation",         2, ".i");
 	SQAIBaseStation.DefSQStaticMethod(engine, &AIBaseStation::GetConstructionDate, "GetConstructionDate", 2, ".i");
 
--- a/src/ai/api/ai_company.hpp.sq
+++ b/src/ai/api/ai_company.hpp.sq
@@ -33,9 +33,9 @@
 
 	SQAICompany.DefSQStaticMethod(engine, &AICompany::ResolveCompanyID,     "ResolveCompanyID",     2, ".i");
 	SQAICompany.DefSQStaticMethod(engine, &AICompany::IsMine,               "IsMine",               2, ".i");
-	SQAICompany.DefSQStaticMethod(engine, &AICompany::SetName,              "SetName",              2, ".s");
+	SQAICompany.DefSQStaticMethod(engine, &AICompany::SetName,              "SetName",              2, "..");
 	SQAICompany.DefSQStaticMethod(engine, &AICompany::GetName,              "GetName",              2, ".i");
-	SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentName,     "SetPresidentName",     2, ".s");
+	SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentName,     "SetPresidentName",     2, "..");
 	SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentName,     "GetPresidentName",     2, ".i");
 	SQAICompany.DefSQStaticMethod(engine, &AICompany::SetPresidentGender,   "SetPresidentGender",   2, ".i");
 	SQAICompany.DefSQStaticMethod(engine, &AICompany::GetPresidentGender,   "GetPresidentGender",   2, ".i");
--- a/src/ai/api/ai_gamesettings.hpp.sq
+++ b/src/ai/api/ai_gamesettings.hpp.sq
@@ -17,8 +17,8 @@
 	SQAIGameSettings.PreRegister(engine);
 	SQAIGameSettings.AddConstructor<void (AIGameSettings::*)(), 1>(engine, "x");
 
-	SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::IsValid,               "IsValid",               2, ".s");
-	SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::GetValue,              "GetValue",              2, ".s");
+	SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::IsValid,               "IsValid",               2, "..");
+	SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::GetValue,              "GetValue",              2, "..");
 	SQAIGameSettings.DefSQStaticMethod(engine, &AIGameSettings::IsDisabledVehicleType, "IsDisabledVehicleType", 2, ".i");
 
 	SQAIGameSettings.PostRegister(engine);
--- a/src/ai/api/ai_group.hpp.sq
+++ b/src/ai/api/ai_group.hpp.sq
@@ -29,7 +29,7 @@
 	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::CreateGroup,                 "CreateGroup",                 2, ".i");
 	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::DeleteGroup,                 "DeleteGroup",                 2, ".i");
 	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::GetVehicleType,              "GetVehicleType",              2, ".i");
-	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::SetName,                     "SetName",                     3, ".is");
+	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::SetName,                     "SetName",                     3, ".i.");
 	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::GetName,                     "GetName",                     2, ".i");
 	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::EnableAutoReplaceProtection, "EnableAutoReplaceProtection", 3, ".ib");
 	SQAIGroup.DefSQStaticMethod(engine, &AIGroup::GetAutoReplaceProtection,    "GetAutoReplaceProtection",    2, ".i");
--- a/src/ai/api/ai_log.hpp.sq
+++ b/src/ai/api/ai_log.hpp.sq
@@ -17,9 +17,9 @@
 	SQAILog.PreRegister(engine);
 	SQAILog.AddConstructor<void (AILog::*)(), 1>(engine, "x");
 
-	SQAILog.DefSQStaticMethod(engine, &AILog::Info,    "Info",    2, ".s");
-	SQAILog.DefSQStaticMethod(engine, &AILog::Warning, "Warning", 2, ".s");
-	SQAILog.DefSQStaticMethod(engine, &AILog::Error,   "Error",   2, ".s");
+	SQAILog.DefSQStaticMethod(engine, &AILog::Info,    "Info",    2, "..");
+	SQAILog.DefSQStaticMethod(engine, &AILog::Warning, "Warning", 2, "..");
+	SQAILog.DefSQStaticMethod(engine, &AILog::Error,   "Error",   2, "..");
 
 	SQAILog.PostRegister(engine);
 }
--- a/src/ai/api/ai_sign.hpp.sq
+++ b/src/ai/api/ai_sign.hpp.sq
@@ -29,10 +29,10 @@
 	AIError::RegisterErrorMapString(AISign::ERR_SIGN_TOO_MANY_SIGNS, "ERR_SIGN_TOO_MANY_SIGNS");
 
 	SQAISign.DefSQStaticMethod(engine, &AISign::IsValidSign, "IsValidSign", 2, ".i");
-	SQAISign.DefSQStaticMethod(engine, &AISign::SetName,     "SetName",     3, ".is");
+	SQAISign.DefSQStaticMethod(engine, &AISign::SetName,     "SetName",     3, ".i.");
 	SQAISign.DefSQStaticMethod(engine, &AISign::GetName,     "GetName",     2, ".i");
 	SQAISign.DefSQStaticMethod(engine, &AISign::GetLocation, "GetLocation", 2, ".i");
-	SQAISign.DefSQStaticMethod(engine, &AISign::BuildSign,   "BuildSign",   3, ".is");
+	SQAISign.DefSQStaticMethod(engine, &AISign::BuildSign,   "BuildSign",   3, ".i.");
 	SQAISign.DefSQStaticMethod(engine, &AISign::RemoveSign,  "RemoveSign",  2, ".i");
 
 	SQAISign.PostRegister(engine);
--- a/src/ai/api/ai_vehicle.hpp.sq
+++ b/src/ai/api/ai_vehicle.hpp.sq
@@ -102,7 +102,7 @@
 
 	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::IsValidVehicle,                 "IsValidVehicle",                 2, ".i");
 	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetNumWagons,                   "GetNumWagons",                   2, ".i");
-	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::SetName,                        "SetName",                        3, ".is");
+	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::SetName,                        "SetName",                        3, ".i.");
 	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetName,                        "GetName",                        2, ".i");
 	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetLocation,                    "GetLocation",                    2, ".i");
 	SQAIVehicle.DefSQStaticMethod(engine, &AIVehicle::GetEngineType,                  "GetEngineType",                  2, ".i");
--- a/src/ai/api/squirrel_export.awk
+++ b/src/ai/api/squirrel_export.awk
@@ -375,7 +375,7 @@
 		sub("^[ 	]*", "", params[len])
 		if (match(params[len], "\\*") || match(params[len], "&")) {
 			if (match(params[len], "^char")) {
-				types = types "s"
+				types = types "."
 			} else if (match(params[len], "^void")) {
 				types = types "p"
 			} else if (match(params[len], "^Array")) {
--- a/src/script/squirrel_helper.hpp
+++ b/src/script/squirrel_helper.hpp
@@ -96,8 +96,18 @@
 	template <> inline int16       GetParam(ForceType<int16>       , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger     tmp; sq_getinteger    (vm, index, &tmp); return tmp; }
 	template <> inline int32       GetParam(ForceType<int32>       , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger     tmp; sq_getinteger    (vm, index, &tmp); return tmp; }
 	template <> inline bool        GetParam(ForceType<bool>        , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQBool        tmp; sq_getbool       (vm, index, &tmp); return tmp != 0; }
-	template <> inline const char *GetParam(ForceType<const char *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { const SQChar *tmp; sq_getstring     (vm, index, &tmp); char *tmp_str = strdup(FS2OTTD(tmp)); *ptr->Append() = (void *)tmp_str; str_validate(tmp_str, tmp_str + strlen(tmp_str)); return tmp_str; }
 	template <> inline void       *GetParam(ForceType<void *>      , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer tmp; sq_getuserpointer(vm, index, &tmp); return tmp; }
+	template <> inline const char *GetParam(ForceType<const char *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr)
+	{
+		sq_tostring(vm, index);
+		const SQChar *tmp;
+		sq_getstring(vm, -1, &tmp);
+		char *tmp_str = strdup(FS2OTTD(tmp));
+		sq_poptop(vm);
+		*ptr->Append() = (void *)tmp_str;
+		str_validate(tmp_str, tmp_str + strlen(tmp_str));
+		return tmp_str;
+	}
 
 	template <> inline Array      *GetParam(ForceType<Array *>,      HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr)
 	{