/* ******************************************************************************* * * Copyright (C) 1998-1999, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* * * File rbdata.h * * Modification History: * * Date Name Description * 06/11/99 stephen Creation. (Moved here from resbund.cpp) ******************************************************************************* */ #ifndef RBDATA_H #define RBDATA_H 1 #include "unicode/utypes.h" #include "hash.h" #include "unicode/unistr.h" /** * Abstract base class for data stored in resource bundles. These * objects are kept in hashtables, indexed by strings. We never need * to copy or clone these objects, since they are created once and * never deleted. */ class ResourceBundleData { public: virtual ~ResourceBundleData() {} virtual UClassID getDynamicClassID(void) const = 0; UErrorCode fCreationStatus; }; /** Concrete data class representing a list of strings. */ class StringList : public ResourceBundleData { public: StringList(); StringList(UnicodeString* adopted, int32_t count); virtual ~StringList(); const UnicodeString& operator[](int32_t i) const; virtual UClassID getDynamicClassID(void) const; static UClassID getStaticClassID(void); static UClassID fgClassID; int32_t fCount; UnicodeString *fStrings; }; /** Concrete data class representing a 2-dimensional list of strings. */ class String2dList : public ResourceBundleData { public: String2dList(); String2dList(UnicodeString** adopted, int32_t rowCount, int32_t colCount); virtual ~String2dList(); const UnicodeString& getString(int32_t rowIndex, int32_t colIndex); virtual UClassID getDynamicClassID(void) const; static UClassID getStaticClassID(void); static UClassID fgClassID; int32_t fRowCount; int32_t fColCount; UnicodeString **fStrings; }; /** * Concrete data class representing a tagged list of strings. This is * implemented using a hash table. */ class TaggedList : public ResourceBundleData { Hashtable *hash; public: TaggedList(); virtual ~TaggedList(); void put(const UnicodeString& tag, const UnicodeString& data); const UnicodeString* get(const UnicodeString& tag) const; UBool nextElement(const UnicodeString*& key, const UnicodeString*& value, int32_t& pos) const; int32_t count() const; virtual UClassID getDynamicClassID(void) const; static UClassID getStaticClassID(void); static UClassID fgClassID; }; #endif