OLD | NEW |
(Empty) | |
| 1 /******************************************************************** |
| 2 * COPYRIGHT: |
| 3 * Copyright (c) 2002-2006, International Business Machines Corporation and |
| 4 * others. All Rights Reserved. |
| 5 ********************************************************************/ |
| 6 |
| 7 /* Created by weiv 05/09/2002 */ |
| 8 |
| 9 #ifndef U_TESTFW_DATAMAP |
| 10 #define U_TESTFW_DATAMAP |
| 11 |
| 12 #include "unicode/resbund.h" |
| 13 #include "unicode/testtype.h" |
| 14 |
| 15 |
| 16 |
| 17 U_NAMESPACE_BEGIN |
| 18 class Hashtable; |
| 19 U_NAMESPACE_END |
| 20 |
| 21 /** Holder of test data and settings. Allows addressing of items by name. |
| 22 * For test cases, names are defined in the "Headers" section. For settings |
| 23 * and info data, names are keys in data. Currently, we return scalar strings |
| 24 * and integers and arrays of strings and integers. Arrays should be deposited |
| 25 * of by the user. |
| 26 */ |
| 27 class T_CTEST_EXPORT_API DataMap { |
| 28 public: |
| 29 virtual ~DataMap(); |
| 30 |
| 31 protected: |
| 32 DataMap(); |
| 33 int32_t utoi(const UnicodeString &s) const; |
| 34 |
| 35 |
| 36 public: |
| 37 /** get the string from the DataMap. Addressed by name |
| 38 * @param key name of the data field. |
| 39 * @return a string containing the data |
| 40 */ |
| 41 virtual const UnicodeString getString(const char* key, UErrorCode &status) con
st = 0; |
| 42 |
| 43 /** get the string from the DataMap. Addressed by name |
| 44 * parses a bundle string into an integer |
| 45 * @param key name of the data field. |
| 46 * @return an integer containing the data |
| 47 */ |
| 48 virtual int32_t getInt(const char* key, UErrorCode &status) const = 0; |
| 49 |
| 50 /** |
| 51 * Get a signed integer without runtime parsing. |
| 52 * @param key name of the data field. |
| 53 * @param status UErrorCode in/out parameter |
| 54 * @return the integer |
| 55 */ |
| 56 virtual int32_t getInt28(const char* key, UErrorCode &status) const = 0; |
| 57 |
| 58 /** |
| 59 * Get an unsigned integer without runtime parsing. |
| 60 * @param key name of the data field. |
| 61 * @param status UErrorCode in/out parameter |
| 62 * @return the integer |
| 63 */ |
| 64 virtual uint32_t getUInt28(const char* key, UErrorCode &status) const = 0; |
| 65 |
| 66 /** |
| 67 * Get a vector of integers without runtime parsing. |
| 68 * @param length output parameter for the length of the vector |
| 69 * @param key name of the data field. |
| 70 * @param status UErrorCode in/out parameter |
| 71 * @return the integer vector, do not delete |
| 72 */ |
| 73 virtual const int32_t *getIntVector(int32_t &length, const char *key, UErrorCo
de &status) const = 0; |
| 74 |
| 75 /** |
| 76 * Get binary data without runtime parsing. |
| 77 * @param length output parameter for the length of the data |
| 78 * @param key name of the data field. |
| 79 * @param status UErrorCode in/out parameter |
| 80 * @return the binary data, do not delete |
| 81 */ |
| 82 virtual const uint8_t *getBinary(int32_t &length, const char *key, UErrorCode
&status) const = 0; |
| 83 |
| 84 /** get an array of strings from the DataMap. Addressed by name. |
| 85 * The user must dispose of it after usage, using delete. |
| 86 * @param key name of the data field. |
| 87 * @return a string array containing the data |
| 88 */ |
| 89 virtual const UnicodeString* getStringArray(int32_t& count, const char* key, U
ErrorCode &status) const = 0; |
| 90 |
| 91 /** get an array of integers from the DataMap. Addressed by name. |
| 92 * The user must dispose of it after usage, using delete. |
| 93 * @param key name of the data field. |
| 94 * @return an integer array containing the data |
| 95 */ |
| 96 virtual const int32_t* getIntArray(int32_t& count, const char* key, UErrorCode
&status) const = 0; |
| 97 |
| 98 // ... etc ... |
| 99 }; |
| 100 |
| 101 // This one is already concrete - it is going to be instantiated from |
| 102 // concrete data by TestData children... |
| 103 class T_CTEST_EXPORT_API RBDataMap : public DataMap{ |
| 104 private: |
| 105 Hashtable *fData; |
| 106 |
| 107 public: |
| 108 virtual ~RBDataMap(); |
| 109 |
| 110 public: |
| 111 RBDataMap(); |
| 112 |
| 113 RBDataMap(UResourceBundle *data, UErrorCode &status); |
| 114 RBDataMap(UResourceBundle *headers, UResourceBundle *data, UErrorCode &status)
; |
| 115 |
| 116 public: |
| 117 void init(UResourceBundle *data, UErrorCode &status); |
| 118 void init(UResourceBundle *headers, UResourceBundle *data, UErrorCode &status)
; |
| 119 |
| 120 virtual const ResourceBundle *getItem(const char* key, UErrorCode &status) con
st; |
| 121 |
| 122 virtual const UnicodeString getString(const char* key, UErrorCode &status) con
st; |
| 123 virtual int32_t getInt28(const char* key, UErrorCode &status) const; |
| 124 virtual uint32_t getUInt28(const char* key, UErrorCode &status) const; |
| 125 virtual const int32_t *getIntVector(int32_t &length, const char *key, UErrorCo
de &status) const; |
| 126 virtual const uint8_t *getBinary(int32_t &length, const char *key, UErrorCode
&status) const; |
| 127 |
| 128 virtual int32_t getInt(const char* key, UErrorCode &status) const; |
| 129 |
| 130 virtual const UnicodeString* getStringArray(int32_t& count, const char* key, U
ErrorCode &status) const; |
| 131 virtual const int32_t* getIntArray(int32_t& count, const char* key, UErrorCode
&status) const; |
| 132 |
| 133 // ... etc ... |
| 134 }; |
| 135 |
| 136 |
| 137 #endif |
| 138 |
OLD | NEW |