Index: source/tools/toolutil/udbgutil.cpp |
diff --git a/source/tools/toolutil/udbgutil.cpp b/source/tools/toolutil/udbgutil.cpp |
index efad36345f55a1d59ffa47c00441294ac59e9d08..d4f22a053c74a8d2008c5126ea055dcb6317746f 100644 |
--- a/source/tools/toolutil/udbgutil.cpp |
+++ b/source/tools/toolutil/udbgutil.cpp |
@@ -1,6 +1,6 @@ |
/******************************************************************** |
* COPYRIGHT: |
- * Copyright (c) 2007-2013, International Business Machines Corporation and |
+ * Copyright (c) 2007-2015, International Business Machines Corporation and |
* others. All Rights Reserved. |
********************************************************************/ |
@@ -17,6 +17,8 @@ |
To add a new enum type |
(For example: UShoeSize with values USHOE_WIDE=0, USHOE_REGULAR, USHOE_NARROW, USHOE_COUNT) |
+ 0. Make sure that all lines you add are protected with appropriate uconfig guards, |
+ such as '#if !UCONFIG_NO_SHOES'. |
1. udbgutil.h: add UDBG_UShoeSize to the UDebugEnumType enum before UDBG_ENUM_COUNT |
( The subsequent steps involve this file, udbgutil.cpp ) |
2. Find the marker "Add new enum types above this line" |
@@ -184,6 +186,7 @@ static const Field names_UColAttributeValue[] = { |
#endif |
+#if UCONFIG_ENABLE_PLUGINS |
#include "unicode/icuplug.h" |
#define LEN_UPLUG_REASON 13 /* UPLUG_REASON_ */ |
@@ -202,6 +205,7 @@ static const Field names_UPlugLevel[] = { |
FIELD_NAME_STR( LEN_UPLUG_LEVEL, UPLUG_LEVEL_LOW ), |
FIELD_NAME_STR( LEN_UPLUG_LEVEL, UPLUG_LEVEL_HIGH ), |
}; |
+#endif |
#define LEN_UDBG 5 /* "UDBG_" */ |
static const int32_t count_UDebugEnumType = UDBG_ENUM_COUNT; |
@@ -213,8 +217,10 @@ static const Field names_UDebugEnumType[] = |
FIELD_NAME_STR( LEN_UDBG, UDBG_UCalendarMonths ), |
FIELD_NAME_STR( LEN_UDBG, UDBG_UDateFormatStyle ), |
#endif |
+#if UCONFIG_ENABLE_PLUGINS |
FIELD_NAME_STR( LEN_UDBG, UDBG_UPlugReason ), |
FIELD_NAME_STR( LEN_UDBG, UDBG_UPlugLevel ), |
+#endif |
FIELD_NAME_STR( LEN_UDBG, UDBG_UAcceptResult ), |
#if !UCONFIG_NO_COLLATION |
FIELD_NAME_STR( LEN_UDBG, UDBG_UColAttributeValue ), |
@@ -244,8 +250,10 @@ static int32_t _udbg_enumCount(UDebugEnumType type, UBool actual) { |
COUNT_CASE(UCalendarMonths) |
COUNT_CASE(UDateFormatStyle) |
#endif |
+#if UCONFIG_ENABLE_PLUGINS |
COUNT_CASE(UPlugReason) |
COUNT_CASE(UPlugLevel) |
+#endif |
COUNT_CASE(UAcceptResult) |
#if !UCONFIG_NO_COLLATION |
COUNT_CASE(UColAttributeValue) |
@@ -264,10 +272,12 @@ static const Field* _udbg_enumFields(UDebugEnumType type) { |
FIELD_CASE(UCalendarMonths) |
FIELD_CASE(UDateFormatStyle) |
#endif |
+#if UCONFIG_ENABLE_PLUGINS |
FIELD_CASE(UPlugReason) |
FIELD_CASE(UPlugLevel) |
+#endif |
FIELD_CASE(UAcceptResult) |
- // FIELD_FAIL_CASE(UNonExistentEnum) |
+ // FIELD_FAIL_CASE(UNonExistentEnum) |
#if !UCONFIG_NO_COLLATION |
FIELD_CASE(UColAttributeValue) |
#endif |
@@ -319,15 +329,17 @@ int32_t udbg_enumByName(UDebugEnumType type, const char *value) { |
return -1; // type out of range |
} |
const Field *fields = _udbg_enumFields(type); |
- for(int32_t field = 0;field<_udbg_enumCount(type, FALSE);field++) { |
- if(!strcmp(value, fields[field].str + fields[field].prefix)) { |
- return fields[field].num; |
+ if (fields != NULL) { |
+ for(int32_t field = 0;field<_udbg_enumCount(type, FALSE);field++) { |
+ if(!strcmp(value, fields[field].str + fields[field].prefix)) { |
+ return fields[field].num; |
+ } |
} |
- } |
- // try with the prefix |
- for(int32_t field = 0;field<_udbg_enumCount(type, FALSE);field++) { |
- if(!strcmp(value, fields[field].str)) { |
- return fields[field].num; |
+ // try with the prefix |
+ for(int32_t field = 0;field<_udbg_enumCount(type, FALSE);field++) { |
+ if(!strcmp(value, fields[field].str)) { |
+ return fields[field].num; |
+ } |
} |
} |
// fail |