8730035cc6
X-SVN-Rev: 5226
125 lines
3.7 KiB
C
125 lines
3.7 KiB
C
/*
|
|
*******************************************************************************
|
|
*
|
|
* Copyright (C) 2000, International Business Machines
|
|
* Corporation and others. All Rights Reserved.
|
|
*
|
|
*******************************************************************************
|
|
*
|
|
* File reslist.h
|
|
*
|
|
* Modification History:
|
|
*
|
|
* Date Name Description
|
|
* 02/21/00 weiv Creation.
|
|
*******************************************************************************
|
|
*/
|
|
|
|
#ifndef RESLIST_H
|
|
#define RESLIST_H
|
|
|
|
#define KEY_SPACE_SIZE 65532
|
|
#define RESLIST_MAX_INT_VECTOR 2048
|
|
|
|
#include "unicode/utypes.h"
|
|
#include "unicode/ures.h"
|
|
#include "unicode/ustring.h"
|
|
#include "uresdata.h"
|
|
#include "cmemory.h"
|
|
#include "cstring.h"
|
|
#include "unewdata.h"
|
|
|
|
/* Resource bundle root table */
|
|
struct SRBRoot {
|
|
char *fLocale;
|
|
uint16_t fKeyPoint;
|
|
char *fKeys;
|
|
int32_t fCount;
|
|
struct SResource *fRoot;
|
|
};
|
|
|
|
struct SRBRoot *bundle_open(UErrorCode *status);
|
|
/*void bundle_write(struct SRBRoot *bundle, const char *outputDir, const char *filename, UErrorCode *status);*/
|
|
void bundle_write(struct SRBRoot *bundle, const char *outputDir, UErrorCode *status);
|
|
void bundle_close(struct SRBRoot *bundle, UErrorCode *status);
|
|
void bundle_setlocale(struct SRBRoot *bundle, UChar *locale, UErrorCode *status);
|
|
uint16_t bundle_addtag(struct SRBRoot *bundle, const char *tag, UErrorCode *status);
|
|
|
|
/* Various resource types */
|
|
|
|
struct SResTable {
|
|
uint16_t fCount;
|
|
uint32_t fChildrenSize;
|
|
struct SResource *fFirst;
|
|
struct SRBRoot *fRoot;
|
|
};
|
|
|
|
struct SResource* table_open(struct SRBRoot *bundle, char *tag, UErrorCode *status);
|
|
void table_close(struct SResource *table, UErrorCode *status);
|
|
void table_add(struct SResource *table, struct SResource *res, int linenumber, UErrorCode *status);
|
|
|
|
struct SResArray {
|
|
uint32_t fCount;
|
|
uint32_t fChildrenSize;
|
|
struct SResource *fFirst;
|
|
struct SResource *fLast;
|
|
};
|
|
|
|
struct SResource* array_open(struct SRBRoot *bundle, char *tag, UErrorCode *status);
|
|
void array_close(struct SResource *array, UErrorCode *status);
|
|
void array_add(struct SResource *array, struct SResource *res, UErrorCode *status);
|
|
|
|
struct SResString {
|
|
uint32_t fLength;
|
|
UChar *fChars;
|
|
};
|
|
|
|
struct SResource *string_open(struct SRBRoot *bundle, char *tag, UChar *value, int32_t len, UErrorCode *status);
|
|
void string_close(struct SResource *string, UErrorCode *status);
|
|
|
|
struct SResIntVector {
|
|
uint32_t fCount;
|
|
uint32_t *fArray;
|
|
};
|
|
|
|
struct SResource* intvector_open(struct SRBRoot *bundle, char *tag, UErrorCode *status);
|
|
void intvector_close(struct SResource *intvector, UErrorCode *status);
|
|
void intvector_add(struct SResource *intvector, int32_t value, UErrorCode *status);
|
|
|
|
struct SResInt {
|
|
uint32_t fValue;
|
|
};
|
|
|
|
struct SResource *int_open(struct SRBRoot *bundle, char *tag, int32_t value, UErrorCode *status);
|
|
void int_close(struct SResource *intres, UErrorCode *status);
|
|
|
|
struct SResBinary {
|
|
uint32_t fLength;
|
|
uint8_t *fData;
|
|
};
|
|
|
|
struct SResource *bin_open(struct SRBRoot *bundle, const char *tag, uint32_t length, uint8_t *data, UErrorCode *status);
|
|
void bin_close(struct SResource *binres, UErrorCode *status);
|
|
|
|
/* Resource place holder */
|
|
|
|
struct SResource {
|
|
UResType fType;
|
|
uint16_t fKey;
|
|
uint32_t fSize; /* Size in bytes outside the header part */
|
|
int line; /* used internally to report duplicate keys in tables */
|
|
struct SResource *fNext; /*This is for internal chaining while building*/
|
|
union {
|
|
struct SResTable fTable;
|
|
struct SResArray fArray;
|
|
struct SResString fString;
|
|
struct SResIntVector fIntVector;
|
|
struct SResInt fIntValue;
|
|
struct SResBinary fBinaryValue;
|
|
} u;
|
|
};
|
|
|
|
void res_close(struct SResource *res, UErrorCode *status);
|
|
|
|
#endif /* #ifndef RESLIST_H */
|