Home | History | Annotate | Download | only in genrb
      1 /*
      2 *******************************************************************************
      3 *
      4 *   Copyright (C) 2000-2008, International Business Machines
      5 *   Corporation and others.  All Rights Reserved.
      6 *
      7 *******************************************************************************
      8 *
      9 * File reslist.h
     10 *
     11 * Modification History:
     12 *
     13 *   Date        Name        Description
     14 *   02/21/00    weiv        Creation.
     15 *******************************************************************************
     16 */
     17 
     18 #ifndef RESLIST_H
     19 #define RESLIST_H
     20 
     21 #define KEY_SPACE_SIZE 65536
     22 #define RESLIST_MAX_INT_VECTOR 2048
     23 
     24 #include "unicode/utypes.h"
     25 #include "unicode/ures.h"
     26 #include "unicode/ustring.h"
     27 #include "uresdata.h"
     28 #include "cmemory.h"
     29 #include "cstring.h"
     30 #include "unewdata.h"
     31 #include "ustr.h"
     32 
     33 U_CDECL_BEGIN
     34 
     35 /* Resource bundle root table */
     36 struct SRBRoot {
     37   char *fLocale;
     38   int32_t fKeyPoint;
     39   char *fKeys;
     40   int32_t fKeysCapacity;
     41   int32_t fCount;
     42   struct SResource *fRoot;
     43   int32_t fMaxTableLength;
     44   UBool noFallback; /* see URES_ATT_NO_FALLBACK */
     45 };
     46 
     47 struct SRBRoot *bundle_open(const struct UString* comment, UErrorCode *status);
     48 void bundle_write(struct SRBRoot *bundle, const char *outputDir, const char *outputPkg, char *writtenFilename, int writtenFilenameLen, UErrorCode *status);
     49 
     50 /* write a java resource file */
     51 void bundle_write_java(struct SRBRoot *bundle, const char *outputDir, const char* outputEnc, char *writtenFilename,
     52                        int writtenFilenameLen, const char* packageName, const char* bundleName, UErrorCode *status);
     53 
     54 /* write a xml resource file */
     55 /* commented by Jing*/
     56 /* void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outputEnc,
     57                   char *writtenFilename, int writtenFilenameLen,UErrorCode *status); */
     58 
     59 /* added by Jing*/
     60 void bundle_write_xml(struct SRBRoot *bundle, const char *outputDir,const char* outputEnc, const char* rbname,
     61                   char *writtenFilename, int writtenFilenameLen, const char* language, const char* package, UErrorCode *status);
     62 
     63 void bundle_close(struct SRBRoot *bundle, UErrorCode *status);
     64 void bundle_setlocale(struct SRBRoot *bundle, UChar *locale, UErrorCode *status);
     65 int32_t bundle_addtag(struct SRBRoot *bundle, const char *tag, UErrorCode *status);
     66 
     67 /* Various resource types */
     68 struct SResource* res_open(const struct UString* comment, UErrorCode* status);
     69 
     70 /*
     71  * Return a unique pointer to a dummy object,
     72  * for use in non-error cases when no resource is to be added to the bundle.
     73  * (NULL is used in error cases.)
     74  */
     75 struct SResource* res_none(void);
     76 
     77 struct SResTable {
     78     uint32_t fCount;
     79     uint32_t fChildrenSize;
     80     struct SResource *fFirst;
     81     struct SRBRoot *fRoot;
     82 };
     83 
     84 struct SResource* table_open(struct SRBRoot *bundle, char *tag, const struct UString* comment, UErrorCode *status);
     85 void table_add(struct SResource *table, struct SResource *res, int linenumber, UErrorCode *status);
     86 
     87 struct SResArray {
     88     uint32_t fCount;
     89     uint32_t fChildrenSize;
     90     struct SResource *fFirst;
     91     struct SResource *fLast;
     92 };
     93 
     94 struct SResource* array_open(struct SRBRoot *bundle, const char *tag, const struct UString* comment, UErrorCode *status);
     95 void array_add(struct SResource *array, struct SResource *res, UErrorCode *status);
     96 
     97 struct SResString {
     98     uint32_t fLength;
     99     UChar *fChars;
    100 };
    101 
    102 struct SResource *string_open(struct SRBRoot *bundle, char *tag, const UChar *value, int32_t len, const struct UString* comment, UErrorCode *status);
    103 
    104 struct SResource *alias_open(struct SRBRoot *bundle, char *tag, UChar *value, int32_t len, const struct UString* comment, UErrorCode *status);
    105 
    106 struct SResIntVector {
    107     uint32_t fCount;
    108     uint32_t *fArray;
    109 };
    110 
    111 struct SResource* intvector_open(struct SRBRoot *bundle, char *tag,  const struct UString* comment, UErrorCode *status);
    112 void intvector_add(struct SResource *intvector, int32_t value, UErrorCode *status);
    113 
    114 struct SResInt {
    115     uint32_t fValue;
    116 };
    117 
    118 struct SResource *int_open(struct SRBRoot *bundle, char *tag, int32_t value, const struct UString* comment, UErrorCode *status);
    119 
    120 struct SResBinary {
    121     uint32_t fLength;
    122     uint8_t *fData;
    123     char* fFileName; /* file name for binary or import binary tags if any */
    124 };
    125 
    126 struct SResource *bin_open(struct SRBRoot *bundle, const char *tag, uint32_t length, uint8_t *data, const char* fileName, const struct UString* comment, UErrorCode *status);
    127 
    128 /* Resource place holder */
    129 
    130 struct SResource {
    131     UResType fType;
    132     int32_t  fKey;
    133     uint32_t fSize; /* Size in bytes outside the header part */
    134     int      line;  /* used internally to report duplicate keys in tables */
    135     struct SResource *fNext; /*This is for internal chaining while building*/
    136     struct UString fComment;
    137     union {
    138         struct SResTable fTable;
    139         struct SResArray fArray;
    140         struct SResString fString;
    141         struct SResIntVector fIntVector;
    142         struct SResInt fIntValue;
    143         struct SResBinary fBinaryValue;
    144     } u;
    145 };
    146 
    147 void res_close(struct SResource *res);
    148 void setIncludeCopyright(UBool val);
    149 UBool getIncludeCopyright(void);
    150 
    151 U_CDECL_END
    152 #endif /* #ifndef RESLIST_H */
    153