Jungshik Shin | 87232d8 | 2017-05-13 21:10:13 -0700 | [diff] [blame] | 1 | // © 2016 and later: Unicode, Inc. and others. |
Jungshik Shin | 5feb9ad | 2016-10-21 12:52:48 -0700 | [diff] [blame] | 2 | // License & terms of use: http://www.unicode.org/copyright.html |
jshin@chromium.org | 6f31ac3 | 2014-03-26 22:15:14 +0000 | [diff] [blame] | 3 | /* |
| 4 | ************************************************************************ |
Jungshik Shin | 70f8250 | 2016-01-29 00:32:36 -0800 | [diff] [blame] | 5 | * Copyright (c) 2008-2015, International Business Machines |
jshin@chromium.org | 6f31ac3 | 2014-03-26 22:15:14 +0000 | [diff] [blame] | 6 | * Corporation and others. All Rights Reserved. |
| 7 | ************************************************************************ |
| 8 | */ |
| 9 | |
| 10 | /** C Utilities to aid in debugging **/ |
| 11 | |
| 12 | #ifndef _UDBGUTIL_H |
| 13 | #define _UDBGUTIL_H |
| 14 | |
| 15 | #include "unicode/utypes.h" |
| 16 | #include <stdio.h> |
| 17 | |
| 18 | enum UDebugEnumType { |
| 19 | UDBG_UDebugEnumType = 0, /* Self-referential, strings for UDebugEnumType. Count=ENUM_COUNT. */ |
| 20 | #if !UCONFIG_NO_FORMATTING |
| 21 | UDBG_UCalendarDateFields, /* UCalendarDateFields. Count=UCAL_FIELD_COUNT. Unsupported if UCONFIG_NO_FORMATTING. */ |
| 22 | UDBG_UCalendarMonths, /* UCalendarMonths. Count= (UCAL_UNDECIMBER+1) */ |
| 23 | UDBG_UDateFormatStyle, /* Count = UDAT_SHORT=1 */ |
| 24 | #endif |
Jungshik Shin | 70f8250 | 2016-01-29 00:32:36 -0800 | [diff] [blame] | 25 | #if UCONFIG_ENABLE_PLUGINS |
jshin@chromium.org | 6f31ac3 | 2014-03-26 22:15:14 +0000 | [diff] [blame] | 26 | UDBG_UPlugReason, /* Count = UPLUG_REASON_COUNT */ |
| 27 | UDBG_UPlugLevel, /* COUNT = UPLUG_LEVEL_COUNT */ |
Jungshik Shin | 70f8250 | 2016-01-29 00:32:36 -0800 | [diff] [blame] | 28 | #endif |
jshin@chromium.org | 6f31ac3 | 2014-03-26 22:15:14 +0000 | [diff] [blame] | 29 | UDBG_UAcceptResult, /* Count = ULOC_ACCEPT_FALLBACK+1=3 */ |
| 30 | |
| 31 | /* All following enums may be discontiguous. */ |
| 32 | |
| 33 | #if !UCONFIG_NO_COLLATION |
| 34 | UDBG_UColAttributeValue, /* UCOL_ATTRIBUTE_VALUE_COUNT */ |
| 35 | #endif |
| 36 | UDBG_ENUM_COUNT, |
| 37 | UDBG_HIGHEST_CONTIGUOUS_ENUM = UDBG_UAcceptResult, /**< last enum in this list with contiguous (testable) values. */ |
| 38 | UDBG_INVALID_ENUM = -1 /** Invalid enum value **/ |
| 39 | }; |
| 40 | |
| 41 | typedef enum UDebugEnumType UDebugEnumType; |
| 42 | |
| 43 | /** |
| 44 | * @param type the type of enum |
| 45 | * Print how many enums are contained for this type. |
| 46 | * Should be equal to the appropriate _COUNT constant or there is an error. Return -1 if unsupported. |
| 47 | */ |
| 48 | U_CAPI int32_t U_EXPORT2 udbg_enumCount(UDebugEnumType type); |
| 49 | |
| 50 | /** |
| 51 | * Convert an enum to a string |
| 52 | * @param type type of enum |
| 53 | * @param field field number |
| 54 | * @return string of the format "ERA", "YEAR", etc, or NULL if out of range or unsupported |
| 55 | */ |
| 56 | U_CAPI const char * U_EXPORT2 udbg_enumName(UDebugEnumType type, int32_t field); |
| 57 | |
| 58 | /** |
| 59 | * for consistency checking |
| 60 | * @param type the type of enum |
| 61 | * Print how many enums should be contained for this type. |
| 62 | * This is equal to the appropriate _COUNT constant or there is an error. Returns -1 if unsupported. |
| 63 | */ |
| 64 | U_CAPI int32_t U_EXPORT2 udbg_enumExpectedCount(UDebugEnumType type); |
| 65 | |
| 66 | /** |
| 67 | * For consistency checking, returns the expected enum ordinal value for the given index value. |
| 68 | * @param type which type |
| 69 | * @param field field number |
| 70 | * @return should be equal to 'field' or -1 if out of range. |
| 71 | */ |
| 72 | U_CAPI int32_t U_EXPORT2 udbg_enumArrayValue(UDebugEnumType type, int32_t field); |
| 73 | |
| 74 | /** |
| 75 | * Locate the specified field value by name. |
| 76 | * @param type which type |
| 77 | * @param name name of string (case sensitive) |
| 78 | * @return should be a field value or -1 if not found. |
| 79 | */ |
| 80 | U_CAPI int32_t U_EXPORT2 udbg_enumByName(UDebugEnumType type, const char *name); |
| 81 | |
| 82 | |
| 83 | /** |
| 84 | * Return the Platform (U_PLATFORM) as a string |
| 85 | */ |
| 86 | U_CAPI const char *udbg_getPlatform(void); |
| 87 | |
| 88 | /** |
| 89 | * Get the nth system parameter's name |
| 90 | * @param i index of name, starting from zero |
| 91 | * @return name, or NULL if off the end |
| 92 | * @see udbg_getSystemParameterValue |
| 93 | */ |
| 94 | U_CAPI const char *udbg_getSystemParameterNameByIndex(int32_t i); |
| 95 | |
| 96 | /** |
| 97 | * Get the nth system parameter's value, in a user supplied buffer |
| 98 | * @parameter i index of value, starting from zero |
| 99 | * @param status error status |
| 100 | * @return length written (standard termination rules) |
| 101 | * @see udbg_getSystemParameterName |
| 102 | */ |
| 103 | U_CAPI int32_t udbg_getSystemParameterValueByIndex(int32_t i, char *buffer, int32_t bufferCapacity, UErrorCode *status); |
| 104 | |
| 105 | /** |
| 106 | * Write ICU info as XML |
| 107 | */ |
| 108 | U_CAPI void udbg_writeIcuInfo(FILE *f); |
| 109 | |
| 110 | /** |
| 111 | * \def UDBG_KNOWNISSUE_LEN |
| 112 | * Length of output buffer for udbg_knownIssueURLFrom |
| 113 | */ |
| 114 | #define UDBG_KNOWNISSUE_LEN 255 |
| 115 | |
| 116 | /** |
jshin@chromium.org | 6f31ac3 | 2014-03-26 22:15:14 +0000 | [diff] [blame] | 117 | * Open (or reopen) a 'known issue' table. |
| 118 | * @param ptr pointer to 'table'. Opaque. |
| 119 | * @return new or existing ptr |
| 120 | */ |
| 121 | U_CAPI void *udbg_knownIssue_openU(void *ptr, const char *ticket, char *where, const UChar *msg, UBool *firstForTicket, |
| 122 | UBool *firstForWhere); |
| 123 | |
| 124 | |
| 125 | /** |
| 126 | * Open (or reopen) a 'known issue' table. |
| 127 | * @param ptr pointer to 'table'. Opaque. |
| 128 | * @return new or existing ptr |
| 129 | */ |
| 130 | U_CAPI void *udbg_knownIssue_open(void *ptr, const char *ticket, char *where, const char *msg, UBool *firstForTicket, |
| 131 | UBool *firstForWhere); |
| 132 | |
| 133 | /** |
| 134 | * Print 'known issue' table, to std::cout. |
| 135 | * @param ptr pointer from udbg_knownIssue |
Frank Tang | 1f164ee | 2022-11-08 12:31:27 -0800 | [diff] [blame^] | 136 | * @return true if there were any issues. |
jshin@chromium.org | 6f31ac3 | 2014-03-26 22:15:14 +0000 | [diff] [blame] | 137 | */ |
| 138 | U_CAPI UBool udbg_knownIssue_print(void *ptr); |
| 139 | |
| 140 | /** |
| 141 | * Close 'known issue' table. |
| 142 | * @param ptr |
| 143 | */ |
| 144 | U_CAPI void udbg_knownIssue_close(void *ptr); |
| 145 | |
| 146 | |
| 147 | #endif |