| /* |
| ****************************************************************************** |
| * |
| * Copyright (C) 1998-2001, 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 |