blob: 0b798ede721fc508e02b5e198b0f22b6ee1fff2c [file] [log] [blame]
/*
*******************************************************************************
* *
* COPYRIGHT: *
* (C) Copyright International Business Machines Corporation, 1998, 1999 *
* Licensed Material - Program-Property of IBM - All Rights Reserved. *
* US Government Users Restricted Rights - Use, duplication, or disclosure *
* restricted by GSA ADP Schedule Contract with IBM Corp. *
* *
*******************************************************************************
*
* 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 "utypes.h"
#include "uhash.h"
#include "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 ClassID getDynamicClassID(void) const = 0;
};
/** 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 ClassID getDynamicClassID(void) const;
static ClassID getStaticClassID(void);
static ClassID 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 ClassID getDynamicClassID(void) const;
static ClassID getStaticClassID(void);
static ClassID 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
{
public:
TaggedList();
virtual ~TaggedList();
void put(const UnicodeString& tag, const UnicodeString& data);
const UnicodeString* get(const UnicodeString& tag) const;
virtual ClassID getDynamicClassID(void) const;
static ClassID getStaticClassID(void);
static void deleteValue(void* value);
static ClassID fgClassID;
UHashtable *fHashtableValues;
UHashtable *fHashtableKeys;
};
#endif