/******************************************************************** * COPYRIGHT: * Copyright (c) 2002, International Business Machines Corporation and * others. All Rights Reserved. ********************************************************************/ /* Created by weiv 05/09/2002 */ #ifndef INTLTST_DATAMAP #define INTLTST_DATAMAP #include "hash.h" #include "unicode/ures.h" /** Holder of test data and settings. Allows addressing of items by name. * For test cases, names are defined in the "Headers" section. For settings * and info data, names are keys in data. Currently, we return scalar strings * and integers and arrays of strings and integers. Arrays should be deposited * of by the user. */ class DataMap { public: virtual ~DataMap() {}; protected: DataMap() {}; int32_t utoi(const UnicodeString &s) const; public: /** get the string from the DataMap. Addressed by name * @param key name of the data field. * @return a string containing the data */ virtual const UnicodeString getString(const char* key, UErrorCode &status) const = 0; /** get the string from the DataMap. Addressed by name * @param key name of the data field. * @return an integer containing the data */ virtual const int32_t getInt(const char* key, UErrorCode &status) const = 0; /** get an array of strings from the DataMap. Addressed by name. * The user must dispose of it after usage. * @param key name of the data field. * @return a string array containing the data */ virtual const UnicodeString* getStringArray(int32_t& count, const char* key, UErrorCode &status) const = 0; /** get an array of integers from the DataMap. Addressed by name. * The user must dispose of it after usage. * @param key name of the data field. * @return an integer array containing the data */ virtual const int32_t* getIntArray(int32_t& count, const char* key, UErrorCode &status) const = 0; // ... etc ... }; // This one is already concrete - it is going to be instantiated from // concrete data by TestData children... class RBDataMap : public DataMap{ private: Hashtable *fData; public: virtual ~RBDataMap(); public: RBDataMap(); RBDataMap(UResourceBundle *data, UErrorCode &status); RBDataMap(UResourceBundle *headers, UResourceBundle *data, UErrorCode &status); public: void init(UResourceBundle *data, UErrorCode &status); void init(UResourceBundle *headers, UResourceBundle *data, UErrorCode &status); virtual const UnicodeString getString(const char* key, UErrorCode &status) const; virtual const int32_t getInt(const char* key, UErrorCode &status) const; virtual const UnicodeString* getStringArray(int32_t& count, const char* key, UErrorCode &status) const; virtual const int32_t* getIntArray(int32_t& count, const char* key, UErrorCode &status) const; // ... etc ... }; #endif