1
0
Fork 0

(svn r23777) -Codechange: refactor allocating memory and fetching strings into a single function for scripts

release/1.2
rubidium 2012-01-08 21:48:05 +00:00
parent ab38e3227d
commit 4479f90843
14 changed files with 27 additions and 60 deletions

View File

@ -27,12 +27,8 @@
{ {
if (!IsValidBaseStation(station_id)) return NULL; if (!IsValidBaseStation(station_id)) return NULL;
static const int len = 64;
char *name = MallocT<char>(len);
::SetDParam(0, station_id); ::SetDParam(0, station_id);
::GetString(name, ::Station::IsValidID(station_id) ? STR_STATION_NAME : STR_WAYPOINT_NAME, &name[len - 1]); return GetString(::Station::IsValidID(station_id) ? STR_STATION_NAME : STR_WAYPOINT_NAME);
return name;
} }
/* static */ bool ScriptBaseStation::SetName(StationID station_id, Text *name) /* static */ bool ScriptBaseStation::SetName(StationID station_id, Text *name)

View File

@ -136,11 +136,7 @@ static void _DoCommandReturnBuildBridge1(class ScriptInstance *instance)
{ {
if (!IsValidBridge(bridge_id)) return NULL; if (!IsValidBridge(bridge_id)) return NULL;
static const int len = 64; return GetString(::GetBridgeSpec(bridge_id)->transport_name[0]);
char *bridge_name = MallocT<char>(len);
::GetString(bridge_name, ::GetBridgeSpec(bridge_id)->transport_name[0], &bridge_name[len - 1]);
return bridge_name;
} }
/* static */ int32 ScriptBridge::GetMaxSpeed(BridgeID bridge_id) /* static */ int32 ScriptBridge::GetMaxSpeed(BridgeID bridge_id)

View File

@ -55,12 +55,8 @@
company = ResolveCompanyID(company); company = ResolveCompanyID(company);
if (company == COMPANY_INVALID) return NULL; if (company == COMPANY_INVALID) return NULL;
static const int len = 64;
char *company_name = MallocT<char>(len);
::SetDParam(0, company); ::SetDParam(0, company);
::GetString(company_name, STR_COMPANY_NAME, &company_name[len - 1]); return GetString(STR_COMPANY_NAME);
return company_name;
} }
/* static */ bool ScriptCompany::SetPresidentName(Text *name) /* static */ bool ScriptCompany::SetPresidentName(Text *name)

View File

@ -36,12 +36,8 @@
{ {
if (!IsValidEngine(engine_id)) return NULL; if (!IsValidEngine(engine_id)) return NULL;
static const int len = 64;
char *engine_name = MallocT<char>(len);
::SetDParam(0, engine_id); ::SetDParam(0, engine_id);
::GetString(engine_name, STR_ENGINE_NAME, &engine_name[len - 1]); return GetString(STR_ENGINE_NAME);
return engine_name;
} }
/* static */ CargoID ScriptEngine::GetCargoType(EngineID engine_id) /* static */ CargoID ScriptEngine::GetCargoType(EngineID engine_id)

View File

@ -28,12 +28,9 @@ bool ScriptEventEnginePreview::IsEngineValid() const
char *ScriptEventEnginePreview::GetName() char *ScriptEventEnginePreview::GetName()
{ {
if (!this->IsEngineValid()) return NULL; if (!this->IsEngineValid()) return NULL;
static const int len = 64;
char *engine_name = MallocT<char>(len);
::SetDParam(0, this->engine); ::SetDParam(0, this->engine);
::GetString(engine_name, STR_ENGINE_NAME, &engine_name[len - 1]); return GetString(STR_ENGINE_NAME);
return engine_name;
} }
CargoID ScriptEventEnginePreview::GetCargoType() CargoID ScriptEventEnginePreview::GetCargoType()

View File

@ -64,12 +64,8 @@
{ {
if (!IsValidGroup(group_id)) return NULL; if (!IsValidGroup(group_id)) return NULL;
static const int len = 64;
char *group_name = MallocT<char>(len);
::SetDParam(0, group_id); ::SetDParam(0, group_id);
::GetString(group_name, STR_GROUP_NAME, &group_name[len - 1]); return GetString(STR_GROUP_NAME);
return group_name;
} }
/* static */ bool ScriptGroup::EnableAutoReplaceProtection(GroupID group_id, bool enable) /* static */ bool ScriptGroup::EnableAutoReplaceProtection(GroupID group_id, bool enable)

View File

@ -38,13 +38,9 @@
/* static */ char *ScriptIndustry::GetName(IndustryID industry_id) /* static */ char *ScriptIndustry::GetName(IndustryID industry_id)
{ {
if (!IsValidIndustry(industry_id)) return NULL; if (!IsValidIndustry(industry_id)) return NULL;
static const int len = 64;
char *industry_name = MallocT<char>(len);
::SetDParam(0, industry_id); ::SetDParam(0, industry_id);
::GetString(industry_name, STR_INDUSTRY_NAME, &industry_name[len - 1]); return GetString(STR_INDUSTRY_NAME);
return industry_name;
} }
/* static */ ScriptIndustry::CargoAcceptState ScriptIndustry::IsCargoAccepted(IndustryID industry_id, CargoID cargo_id) /* static */ ScriptIndustry::CargoAcceptState ScriptIndustry::IsCargoAccepted(IndustryID industry_id, CargoID cargo_id)

View File

@ -51,12 +51,8 @@
/* static */ char *ScriptIndustryType::GetName(IndustryType industry_type) /* static */ char *ScriptIndustryType::GetName(IndustryType industry_type)
{ {
if (!IsValidIndustryType(industry_type)) return NULL; if (!IsValidIndustryType(industry_type)) return NULL;
static const int len = 64;
char *industrytype_name = MallocT<char>(len);
::GetString(industrytype_name, ::GetIndustrySpec(industry_type)->name, &industrytype_name[len - 1]); return GetString(::GetIndustrySpec(industry_type)->name);
return industrytype_name;
} }
/* static */ ScriptList *ScriptIndustryType::GetProducedCargo(IndustryType industry_type) /* static */ ScriptList *ScriptIndustryType::GetProducedCargo(IndustryType industry_type)

View File

@ -16,6 +16,8 @@
#include "../../company_base.h" #include "../../company_base.h"
#include "../../network/network.h" #include "../../network/network.h"
#include "../../genworld.h" #include "../../genworld.h"
#include "../../string_func.h"
#include "../../strings_func.h"
#include "../script_storage.hpp" #include "../script_storage.hpp"
#include "../script_instance.hpp" #include "../script_instance.hpp"
@ -233,6 +235,13 @@ ScriptObject::ActiveInstance::~ActiveInstance()
return GetStorage()->log_data; return GetStorage()->log_data;
} }
/* static */ char *ScriptObject::GetString(StringID string)
{
char buffer[64];
::GetString(buffer, string, lastof(buffer));
return ::strdup(buffer);
}
/* static */ void ScriptObject::SetCallbackVariable(int index, int value) /* static */ void ScriptObject::SetCallbackVariable(int index, int value)
{ {
if ((size_t)index >= GetStorage()->callback_value.size()) GetStorage()->callback_value.resize(index + 1); if ((size_t)index >= GetStorage()->callback_value.size()) GetStorage()->callback_value.resize(index + 1);

View File

@ -236,6 +236,11 @@ protected:
*/ */
static void *&GetLogPointer(); static void *&GetLogPointer();
/**
* Get an allocated string with all control codes stripped off.
*/
static char *GetString(StringID string);
private: private:
/** /**
* Store a new_vehicle_id per company. * Store a new_vehicle_id per company.

View File

@ -25,11 +25,7 @@
{ {
if (!IsRailTypeAvailable(rail_type)) return NULL; if (!IsRailTypeAvailable(rail_type)) return NULL;
static const int len = 64; return GetString(GetRailTypeInfo((::RailType)rail_type)->strings.menu_text);
char *railtype_name = MallocT<char>(len);
::GetString(railtype_name, GetRailTypeInfo((::RailType)rail_type)->strings.menu_text, &railtype_name[len - 1]);
return railtype_name;
} }
/* static */ bool ScriptRail::IsRailTile(TileIndex tile) /* static */ bool ScriptRail::IsRailTile(TileIndex tile)

View File

@ -48,13 +48,8 @@
{ {
if (!IsValidSign(sign_id)) return NULL; if (!IsValidSign(sign_id)) return NULL;
static const int len = 64;
char *sign_name = MallocT<char>(len);
::SetDParam(0, sign_id); ::SetDParam(0, sign_id);
::GetString(sign_name, STR_SIGN_NAME, &sign_name[len - 1]); return GetString(STR_SIGN_NAME);
return sign_name;
} }
/* static */ TileIndex ScriptSign::GetLocation(SignID sign_id) /* static */ TileIndex ScriptSign::GetLocation(SignID sign_id)

View File

@ -14,6 +14,7 @@
#include "script_map.hpp" #include "script_map.hpp"
#include "script_error.hpp" #include "script_error.hpp"
#include "../../town.h" #include "../../town.h"
#include "../../string_func.h"
#include "../../strings_func.h" #include "../../strings_func.h"
#include "../../station_base.h" #include "../../station_base.h"
#include "../../landscape.h" #include "../../landscape.h"
@ -32,13 +33,9 @@
/* static */ char *ScriptTown::GetName(TownID town_id) /* static */ char *ScriptTown::GetName(TownID town_id)
{ {
if (!IsValidTown(town_id)) return NULL; if (!IsValidTown(town_id)) return NULL;
static const int len = 64;
char *town_name = MallocT<char>(len);
::SetDParam(0, town_id); ::SetDParam(0, town_id);
::GetString(town_name, STR_TOWN_NAME, &town_name[len - 1]); return GetString(STR_TOWN_NAME);
return town_name;
} }
/* static */ bool ScriptTown::SetText(TownID town_id, Text *text) /* static */ bool ScriptTown::SetText(TownID town_id, Text *text)

View File

@ -270,12 +270,8 @@
{ {
if (!IsValidVehicle(vehicle_id)) return NULL; if (!IsValidVehicle(vehicle_id)) return NULL;
static const int len = 64;
char *vehicle_name = MallocT<char>(len);
::SetDParam(0, vehicle_id); ::SetDParam(0, vehicle_id);
::GetString(vehicle_name, STR_VEHICLE_NAME, &vehicle_name[len - 1]); return GetString(STR_VEHICLE_NAME);
return vehicle_name;
} }
/* static */ int32 ScriptVehicle::GetAge(VehicleID vehicle_id) /* static */ int32 ScriptVehicle::GetAge(VehicleID vehicle_id)