| /* | 
 | ****************************************************************************** | 
 | * | 
 | *   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 |