]>
Commit | Line | Data |
---|---|---|
46f4442e A |
1 | /* |
2 | ************************************************************************ | |
729e4ab9 | 3 | * Copyright (c) 2008-2010, International Business Machines |
46f4442e A |
4 | * Corporation and others. All Rights Reserved. |
5 | ************************************************************************ | |
6 | */ | |
7 | ||
8 | /** C Utilities to aid in debugging **/ | |
9 | ||
10 | #ifndef _UDBGUTIL_H | |
11 | #define _UDBGUTIL_H | |
12 | ||
46f4442e A |
13 | #include "unicode/utypes.h" |
14 | ||
15 | ||
16 | enum UDebugEnumType { | |
17 | UDBG_UDebugEnumType = 0, /* Self-referential, strings for UDebugEnumType. Count=ENUM_COUNT. */ | |
729e4ab9 | 18 | #if !UCONFIG_NO_FORMATTING |
46f4442e A |
19 | UDBG_UCalendarDateFields, /* UCalendarDateFields. Count=UCAL_FIELD_COUNT. Unsupported if UCONFIG_NO_FORMATTING. */ |
20 | UDBG_UCalendarMonths, /* UCalendarMonths. Count= (UCAL_UNDECIMBER+1) */ | |
21 | UDBG_UDateFormatStyle, /* Count = UDAT_SHORT=1 */ | |
729e4ab9 A |
22 | #endif |
23 | UDBG_UPlugReason, /* Count = UPLUG_REASON_COUNT */ | |
24 | UDBG_UPlugLevel, /* COUNT = UPLUG_LEVEL_COUNT */ | |
25 | UDBG_UAcceptResult, /* Count = ULOC_ACCEPT_FALLBACK+1=3 */ | |
26 | ||
27 | /* All following enums may be discontiguous. */ | |
28 | ||
29 | #if !UCONFIG_NO_COLLATION | |
30 | UDBG_UColAttributeValue, /* UCOL_ATTRIBUTE_VALUE_COUNT */ | |
31 | #endif | |
32 | UDBG_ENUM_COUNT, | |
33 | UDBG_HIGHEST_CONTIGUOUS_ENUM = UDBG_UAcceptResult, /**< last enum in this list with contiguous (testable) values. */ | |
34 | UDBG_INVALID_ENUM = -1 /** Invalid enum value **/ | |
46f4442e A |
35 | }; |
36 | ||
37 | typedef enum UDebugEnumType UDebugEnumType; | |
38 | ||
39 | /** | |
40 | * @param type the type of enum | |
41 | * Print how many enums are contained for this type. | |
42 | * Should be equal to the appropriate _COUNT constant or there is an error. Return -1 if unsupported. | |
43 | */ | |
729e4ab9 | 44 | U_CAPI int32_t U_EXPORT2 udbg_enumCount(UDebugEnumType type); |
46f4442e A |
45 | |
46 | /** | |
47 | * Convert an enum to a string | |
48 | * @param type type of enum | |
49 | * @param field field number | |
50 | * @return string of the format "ERA", "YEAR", etc, or NULL if out of range or unsupported | |
51 | */ | |
729e4ab9 | 52 | U_CAPI const char * U_EXPORT2 udbg_enumName(UDebugEnumType type, int32_t field); |
46f4442e A |
53 | |
54 | /** | |
55 | * for consistency checking | |
56 | * @param type the type of enum | |
57 | * Print how many enums should be contained for this type. | |
58 | * This is equal to the appropriate _COUNT constant or there is an error. Returns -1 if unsupported. | |
59 | */ | |
729e4ab9 | 60 | U_CAPI int32_t U_EXPORT2 udbg_enumExpectedCount(UDebugEnumType type); |
46f4442e A |
61 | |
62 | /** | |
63 | * For consistency checking, returns the expected enum ordinal value for the given index value. | |
64 | * @param type which type | |
65 | * @param field field number | |
66 | * @return should be equal to 'field' or -1 if out of range. | |
67 | */ | |
729e4ab9 A |
68 | U_CAPI int32_t U_EXPORT2 udbg_enumArrayValue(UDebugEnumType type, int32_t field); |
69 | ||
70 | /** | |
71 | * Locate the specified field value by name. | |
72 | * @param type which type | |
73 | * @param name name of string (case sensitive) | |
74 | * @return should be a field value or -1 if not found. | |
75 | */ | |
76 | U_CAPI int32_t U_EXPORT2 udbg_enumByName(UDebugEnumType type, const char *name); | |
46f4442e A |
77 | |
78 | #endif |