(svn r12544) [NoAI] -Codechange: do not force dependency on OTTD internal strings when defining errors.
--- a/src/ai/api/ai_error.cpp Wed Apr 02 11:14:29 2008 +0000
+++ b/src/ai/api/ai_error.cpp Thu Apr 03 13:28:46 2008 +0000
@@ -19,11 +19,7 @@
/* static */ const char *AIError::GetLastErrorString()
{
- if (AIObject::GetLastError() == STR_NULL) return strdup("ERR_NONE");
-
- AIErrorMapString::iterator it = error_map_string.find(AIObject::GetLastError());
- if (it == error_map_string.end()) return strdup("ERR_UNKNOWN");
- return (*it).second;
+ return (*error_map_string.find(AIError::GetLastError())).second;
}
/* static */ void AIError::RegisterErrorMap(uint internal_string_id, uint ai_error_msg)
@@ -31,9 +27,9 @@
error_map[internal_string_id] = ai_error_msg;
}
-/* static */ void AIError::RegisterErrorMapString(uint internal_string_id, const char *message)
+/* static */ void AIError::RegisterErrorMapString(uint ai_error_msg, const char *message)
{
- error_map_string[internal_string_id] = message;
+ error_map_string[ai_error_msg] = message;
}
/* static */ AIError::ErrorCategories AIError::GetErrorCategory() {
--- a/src/ai/api/ai_error.hpp Wed Apr 02 11:14:29 2008 +0000
+++ b/src/ai/api/ai_error.hpp Thu Apr 03 13:28:46 2008 +0000
@@ -34,8 +34,10 @@
* General error messages (0x0100 - 0x0200).
*/
enum ErrorMessages {
- ERR_NONE = ERR_CAT_NONE << ERR_CAT_BIT_SIZE, //!< Initial error value
- ERR_UNKNOWN, //!< If an error occured and the error wasn't mapped
+ /** Initial error value */
+ ERR_NONE = ERR_CAT_NONE << ERR_CAT_BIT_SIZE, // []
+ /** If an error occured and the error wasn't mapped */
+ ERR_UNKNOWN, // []
/** Base for general errors */
ERR_GENERAL_BASE = ERR_CAT_GENERAL << ERR_CAT_BIT_SIZE,
@@ -86,10 +88,10 @@
/**
* Map an internal OpenTTD error message to it's NoAI equivalent.
* @note DO NOT INVOKE THIS METHOD YOURSELF! The calls are autogenerated.
- * @param internal_string_id The OpenTTD StringID used for an error.
+ * @param ai_error_msg The NoAI error message representation.
* @param message The string representation of this error message, used for debug purposes.
*/
- static void RegisterErrorMapString(uint internal_string_id, const char *message);
+ static void RegisterErrorMapString(uint ai_error_msg, const char *message);
private:
typedef std::map<uint, uint> AIErrorMap;
--- a/src/ai/api/ai_error.hpp.sq Wed Apr 02 11:14:29 2008 +0000
+++ b/src/ai/api/ai_error.hpp.sq Thu Apr 03 13:28:46 2008 +0000
@@ -33,16 +33,19 @@
SQAIError.DefSQConst(engine, AIError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR");
SQAIError.DefSQConst(engine, AIError::ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY, "ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY");
- AIError::RegisterErrorMap (STR_0003_NOT_ENOUGH_CASH_REQUIRES, AIError::ERR_NOT_ENOUGH_CASH);
- AIError::RegisterErrorMapString(STR_0003_NOT_ENOUGH_CASH_REQUIRES, "ERR_NOT_ENOUGH_CASH");
- AIError::RegisterErrorMap (STR_2009_LOCAL_AUTHORITY_REFUSES, AIError::ERR_LOCAL_AUTHORITY_REFUSES);
- AIError::RegisterErrorMapString(STR_2009_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES");
- AIError::RegisterErrorMap (STR_1007_ALREADY_BUILT, AIError::ERR_ALREADY_BUILT);
- AIError::RegisterErrorMapString(STR_1007_ALREADY_BUILT, "ERR_ALREADY_BUILT");
- AIError::RegisterErrorMap (STR_2004_BUILDING_MUST_BE_DEMOLISHED, AIError::ERR_AREA_NOT_CLEAR);
- AIError::RegisterErrorMapString(STR_2004_BUILDING_MUST_BE_DEMOLISHED, "ERR_AREA_NOT_CLEAR");
- AIError::RegisterErrorMap (STR_1024_AREA_IS_OWNED_BY_ANOTHER, AIError::ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY);
- AIError::RegisterErrorMapString(STR_1024_AREA_IS_OWNED_BY_ANOTHER, "ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY");
+ AIError::RegisterErrorMap(STR_0003_NOT_ENOUGH_CASH_REQUIRES, AIError::ERR_NOT_ENOUGH_CASH);
+ AIError::RegisterErrorMap(STR_2009_LOCAL_AUTHORITY_REFUSES, AIError::ERR_LOCAL_AUTHORITY_REFUSES);
+ AIError::RegisterErrorMap(STR_1007_ALREADY_BUILT, AIError::ERR_ALREADY_BUILT);
+ AIError::RegisterErrorMap(STR_2004_BUILDING_MUST_BE_DEMOLISHED, AIError::ERR_AREA_NOT_CLEAR);
+ AIError::RegisterErrorMap(STR_1024_AREA_IS_OWNED_BY_ANOTHER, AIError::ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY);
+
+ AIError::RegisterErrorMapString(AIError::ERR_NONE, "ERR_NONE");
+ AIError::RegisterErrorMapString(AIError::ERR_UNKNOWN, "ERR_UNKNOWN");
+ AIError::RegisterErrorMapString(AIError::ERR_NOT_ENOUGH_CASH, "ERR_NOT_ENOUGH_CASH");
+ AIError::RegisterErrorMapString(AIError::ERR_LOCAL_AUTHORITY_REFUSES, "ERR_LOCAL_AUTHORITY_REFUSES");
+ AIError::RegisterErrorMapString(AIError::ERR_ALREADY_BUILT, "ERR_ALREADY_BUILT");
+ AIError::RegisterErrorMapString(AIError::ERR_AREA_NOT_CLEAR, "ERR_AREA_NOT_CLEAR");
+ AIError::RegisterErrorMapString(AIError::ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY, "ERR_AREA_IS_OWNED_BY_ANOTHER_COMPANY");
SQAIError.DefSQStaticMethod(engine, &AIError::GetClassName, "GetClassName", 1, "x");
SQAIError.DefSQStaticMethod(engine, &AIError::GetErrorCategory, "GetErrorCategory", 1, "x");
--- a/src/ai/api/squirrel_export.awk Wed Apr 02 11:14:29 2008 +0000
+++ b/src/ai/api/squirrel_export.awk Thu Apr 03 13:28:46 2008 +0000
@@ -28,7 +28,8 @@
BEGIN {
enum_size = 0
enum_value_size = 0
- enum_error_size = 0
+ enum_string_to_error_size = 0
+ enum_error_to_string_size = 0
struct_size = 0
method_size = 0
static_method_size = 0
@@ -187,18 +188,28 @@
}
if (enum_value_size != 0) print ""
+ # Mapping of OTTD strings to errors
mlen = 0
- for (i = 1; i <= enum_error_size; i++) {
- if (mlen <= length(enum_error_string_mapping[i])) mlen = length(enum_error_string_mapping[i])
+ for (i = 1; i <= enum_string_to_error_size; i++) {
+ if (mlen <= length(enum_string_to_error_mapping_string[i])) mlen = length(enum_string_to_error_mapping_string[i])
}
- for (i = 1; i <= enum_error_size; i++) {
- print " AIError::RegisterErrorMap (" enum_error_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_string_mapping[i])) cls "::" enum_error_value_mapping[i] ");"
- print " AIError::RegisterErrorMapString(" enum_error_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_string_mapping[i]) + length(cls) + 1) "\"" enum_error_value_mapping[i] "\");"
+ for (i = 1; i <= enum_string_to_error_size; i++) {
+ print " AIError::RegisterErrorMap(" enum_string_to_error_mapping_string[i] ", " substr(spaces, 1, mlen - length(enum_string_to_error_mapping_string[i])) cls "::" enum_string_to_error_mapping_error[i] ");"
- delete enum_error_string_mapping[i]
- delete enum_error_value_mapping[i]
+ delete enum_string_to_error_mapping_string[i]
}
- if (enum_error_size != 0) print ""
+ if (enum_string_to_error_size != 0) print ""
+
+ # Mapping of errors to human 'readable' strings.
+ mlen = 0
+ for (i = 1; i <= enum_error_to_string_size; i++) {
+ if (mlen <= length(enum_error_to_string_mapping[i])) mlen = length(enum_error_to_string_mapping[i])
+ }
+ for (i = 1; i <= enum_error_to_string_size; i++) {
+ print " AIError::RegisterErrorMapString(" cls "::" enum_error_to_string_mapping[i] ", " substr(spaces, 1, mlen - length(enum_error_to_string_mapping[i])) "\"" enum_error_to_string_mapping[i] "\");"
+ delete enum_error_to_string_mapping[i]
+ }
+ if (enum_error_to_string_size != 0) print ""
# Static methods
mlen = 0
@@ -232,7 +243,8 @@
enum_size = 0
enum_value_size = 0
- enum_error_size = 0
+ enum_string_to_error_size = 0
+ enum_error_to_string_size = 0
struct_size = 0
method_size = 0
static_method_size = 0
@@ -260,19 +272,19 @@
# }
# Set the mappings
- if (match($0, "\\[.+\\]") != 0) {
+ if (match($0, "\\[.*\\]") != 0) {
mappings = substr($0, RSTART, RLENGTH);
gsub("([\\[[:space:]\\]])", "", mappings);
split(mappings, mapitems, ",");
for (i = 1; i <= length(mapitems); i++) {
- enum_error_size++
- enum_error_string_mapping[enum_error_size] = mapitems[i]
- enum_error_value_mapping[enum_error_size] = $1
+ enum_string_to_error_size++
+ enum_string_to_error_mapping_string[enum_string_to_error_size] = mapitems[i]
+ enum_string_to_error_mapping_error[enum_string_to_error_size] = $1
}
- # Mark this index as an error
- enum_is_error_mapping[enum_value_size] = 1
+ enum_error_to_string_size++
+ enum_error_to_string_mapping[enum_error_to_string_size] = $1
}
}
next