blob: aa2758375b8f82ee896b8379fdd71f668bb8c3c5 [file] [log] [blame]
* Copyright (C) 1998-1999, International Business Machines
* Corporation and others. All Rights Reserved.
* File list.h
* Modification History:
* Date Name Description
* 06/01/99 stephen Creation.
#ifndef LIST_H
#define LIST_H 1
#include "unicode/utypes.h"
/* A string list */
struct SStringList {
UChar **fData;
int32_t fCount;
int32_t fCapacity;
struct SList* strlist_open(UErrorCode *status);
void strlist_close(struct SList *list, UErrorCode *status);
void strlist_add(struct SList *list, const UChar *s, UErrorCode *status);
/* A two-dimensional string list */
struct SStringList2d {
UChar **fData;
int32_t fCount;
int32_t fCapacity;
int32_t *fRows;
int32_t fRowCount;
int32_t fRowCapacity;
struct SList* strlist2d_open(UErrorCode *status);
void strlist2d_close(struct SList *list, UErrorCode *status);
void strlist2d_newRow(struct SList *list, UErrorCode *status);
void strlist2d_add(struct SList *list, const UChar *s, UErrorCode *status);
/* A name/value pair for a tagged list */
struct SStringPair {
UChar *fKey;
UChar *fValue;
/* A tagged list */
struct STaggedList {
struct SStringPair *fData;
int32_t fCount;
int32_t fCapacity;
struct SList* taglist_open(UErrorCode *status);
void taglist_close(struct SList *list, UErrorCode *status);
void taglist_add(struct SList *list, const UChar *tag,
const UChar *data, UErrorCode *status);
const UChar* taglist_get(const struct SList *list, const UChar *tag,
UErrorCode *status);
/* Types of lists */
enum EListType {
/* A generic list container */
struct SList {
enum EListType fType; /* type of element in union */
union {
struct SStringList fStringList;
struct SStringList2d fStringList2d;
struct STaggedList fTaggedList;
} u;