| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 2003, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * file name: genldml.h |
| */ |
| #ifndef GENLDML_H |
| #define GENLDML_H |
| |
| #include "unicode/ures.h" |
| #include "unicode/format.h" |
| #include "unicode/unistr.h" |
| #include "unicode/resbund.h" |
| #include "unicode/ustdio.h" |
| #include "unicode/fmtable.h" |
| #include "unicode/ucol.h" |
| #include "unicode/smpdtfmt.h" |
| #include "unicode/ustring.h" |
| #include "unicode/msgfmt.h" |
| #include "unicode/fmtable.h" |
| #include "unicode/locid.h" |
| #include "unicode/rep.h" |
| #include "unicode/numfmt.h" |
| #include "unicode/decimfmt.h" |
| #include "unicode/dcfmtsym.h" |
| #include "unicode/ures.h" |
| #include "unicode/ucol.h" |
| #include "unicode/unum.h" |
| #include "unicode/udata.h" /* ICU API for data handling. */ |
| #include "unicode/uset.h" |
| #include "unicode/ucnv.h" |
| #include "uoptions.h" |
| #include "unicode/uchar.h" |
| //#include "ucol_tok.h" |
| |
| #include <stdio.h> |
| |
| class GenerateXML { |
| private: |
| /* |
| * |
| * "& a << befg << c << d << d" |
| * ^ ^ ^ ^ |
| * start prevCurrent current end |
| */ |
| struct Token{ |
| UChar* start; |
| UChar* end ; |
| UChar* current; |
| UChar* prevCurrent; |
| UChar* chars; |
| int32_t charsCapacity; |
| int32_t charsLen; |
| |
| }; |
| UnicodeString mSettings; |
| |
| /* Full path to the resource bundle eg: root.res */ |
| ResourceBundle mSourceBundle; |
| |
| /*Bundle to retrieve the xml strings */ |
| ResourceBundle mStringsBundle; |
| |
| /* output file stream handle */ |
| FILE* mFile; |
| |
| /* error code */ |
| UErrorCode mError; |
| |
| /* locale */ |
| Locale mLocale; |
| |
| /* indenting string */ |
| UnicodeString indentOffset; |
| |
| const char* locName; |
| const char* path; |
| /* destination directory */ |
| const char* destDir; |
| |
| /* default private constructor */ |
| GenerateXML(); |
| |
| /*overloaded utility function with 3 args for formatting the string*/ |
| UnicodeString formatString(UnicodeString& str, const Formattable* args, int32_t num,UnicodeString& result); |
| |
| /*overloaded utility function with 2 args for formatting the string*/ |
| UnicodeString formatString(UnicodeString& str,UnicodeString& argument, UnicodeString& result); |
| |
| /* get the file handle */ |
| FILE* getFileHandle(const char* path, const char* name); |
| |
| /* print the unicode string */ |
| void printString( UnicodeString* uString, FILE* file); |
| void printString( UnicodeString* uString); |
| /* chop the indent string*/ |
| void chopIndent(); |
| void chopIndent(UnicodeString& indent); |
| void addIndent(UnicodeString& indent); |
| /** |
| * writeXMLVersionAndComments() |
| * Prints version and comments strings in the output xml file |
| * Creation date: (6/29/00 3:56:37 PM) |
| * @return void |
| * @param void |
| */ |
| void writeXMLVersionAndComments(); |
| |
| /** |
| * writeDocVersion() |
| * Prints document version and IBM copytright info strings in the output xml file |
| * Creation date: (6/29/00 3:56:37 PM) |
| * @return void |
| * @param void |
| */ |
| void writeVersion(UnicodeString& xmlString); |
| |
| /** |
| * writeIdentity() |
| * Prints identity info strings in the output xml file |
| * <identity></identity> tags |
| * Creation date: (6/29/00 3:56:37 PM) |
| * @return void |
| * @param void |
| */ |
| void writeIdentity(); |
| |
| void writeLocaleScript(UnicodeString& xmlString); |
| |
| void writeScript(UnicodeString& xmlString); |
| |
| void writeLanguage(UnicodeString& xmlString); |
| |
| void writeCountryNames(UnicodeString& xmlString); |
| |
| void writeVariantNames(UnicodeString& xmlString); |
| |
| void writeKeywordNames(UnicodeString& xmlString); |
| |
| void writeTypeNames(UnicodeString& xmlString); |
| |
| void writeLayout(); |
| |
| void writeEncodings(); |
| |
| void writeExemplarCharacters(UnicodeString& xmlString); |
| |
| void writeDelimiters(); |
| |
| void writeMeasurement(); |
| |
| void writeDisplayNames(); |
| |
| void writeCalendars(UnicodeString& xmlString); |
| |
| void writeCalendar(ResourceBundle& calendar, UnicodeString& cal,UBool isDefault, UnicodeString& xmlString); |
| |
| void writeAMPMmarkers(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeDateFormat(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeDateTimeFormat(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeDateTimeElements(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeDayNames(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeEra(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeMonthNames(ResourceBundle& calendar,UnicodeString& xmlString); |
| |
| void writeTimeFormat(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeWeek(ResourceBundle& calendar, UnicodeString& xmlString); |
| |
| void writeFormats(UnicodeString& xmlString); |
| |
| void writeFormat(const char* style, const char* start, const char* end, const char* type,UnicodeString& pattern, UnicodeString& xmlString, UBool split=FALSE); |
| |
| void writeFormat(const char* elemName, const char* style, const char* start, const char* end, const char* type,UnicodeString& pattern, UnicodeString& xmlString, UBool split=FALSE); |
| |
| void writeLocalePatternChars(UnicodeString& xmlString); |
| |
| void writeNumberFormat(); |
| |
| void writeRuleBasedNumberFormat(UnicodeString& xmlString); |
| |
| void writeNumberElements(UnicodeString& xmlString); |
| |
| void writeNumberPatterns(UnicodeString& xmlString); |
| void writeDates(); |
| |
| void writeCurrency(UnicodeString&); |
| |
| void writeCurrencies(UnicodeString&); |
| |
| void writeCollations(); |
| |
| void writeCollation(ResourceBundle& bundle, UnicodeString& xmlString,UnicodeString* collKey=NULL); |
| |
| void writeCollation(UnicodeString& src, UnicodeString &xmlString, uint32_t prevStrength, const char* keyName); |
| |
| void writeBase(UnicodeString& xmlString); |
| |
| void writeTimeZoneNames(UnicodeString& xmlString); |
| |
| void writeBoundary(UnicodeString& xmlString); |
| |
| void closeFileHandle(); |
| |
| void closeXMLDocument(); |
| |
| void writeTransliteration(); |
| |
| void writeCharBrkRules(UnicodeString& xmlString); |
| |
| void writeSentBrkRules(UnicodeString& xmlString); |
| |
| void writeLineBrkRules(UnicodeString& xmlString); |
| |
| void writeMisc(); |
| |
| void escape(UnicodeString& str); |
| |
| void writeSupplementalData(); |
| |
| void writeCurrencyMeta(UnicodeString& xmlString, UResourceBundle* root, UErrorCode& error); |
| |
| void writeCurrencyMap(UnicodeString& xmlString, UResourceBundle* root, UErrorCode& error); |
| |
| void writePosixAdditions(); |
| void writeMeasurement(UnicodeString& xmlString); |
| void writeCountryPost(UnicodeString& xmlString); |
| void writeCountryCar(UnicodeString& xmlString); |
| void writeCountryISBNNumber(UnicodeString& xmlString); |
| void writeLanguageLibraryUse(UnicodeString& xmlString); |
| void writePaperSize(UnicodeString& xmlString); |
| void getStringRes(const char* key,UnicodeString& xmlString,UnicodeString pattern); |
| void getStringRes(const char *key,ResourceBundle& bundle,UnicodeString& xmlString,UnicodeString pattern); |
| |
| void writePosixCompData(); |
| |
| void writeMessages(ResourceBundle& bundle,UnicodeString& xmlString); |
| |
| void addressFormat(ResourceBundle& bundle,UnicodeString& xmlString); |
| |
| void nameFormat(ResourceBundle& bundle,UnicodeString& xmlString); |
| |
| void identity(ResourceBundle& bundle,UnicodeString& xmlString); |
| |
| void telephoneFormat(ResourceBundle& bundle,UnicodeString& xmlString); |
| |
| void writeTable(const char* key, const char* resMain, const char* resElement, UnicodeString& xmlString); |
| |
| UnicodeString parseRules(UChar* rules, int32_t ruleLen, UnicodeString& ruleXML); |
| |
| uint32_t parseRules(Token* src, UBool startOfRules); |
| |
| int32_t copyUnicodeStringToChars(const UnicodeString& str, char* buf,int32_t bufCapacity); |
| |
| void writeSpecial(); |
| |
| int32_t fillOutputString(const UnicodeString &temp, UChar *dest, int32_t destCapacity) ; |
| |
| void writeSettings(UnicodeString& src , UnicodeString& xmlString); |
| |
| void writeReset(UnicodeString& src, UnicodeString& xmlString); |
| |
| void growBuffer(UChar* src, int32_t len, int32_t size, int32_t requiredCapacity, UErrorCode* status); |
| |
| void writeUCARules(UnicodeString& sequence,UnicodeString& xmlString); |
| int32_t getSettingAndValue(UnicodeString& source, int32_t index, UnicodeString& setting, UnicodeString& value); |
| public: |
| |
| /* constructor */ |
| GenerateXML(const char* path,const char* locName,const char* destDir, UErrorCode& error); |
| |
| /* destructor */ |
| ~GenerateXML(); |
| |
| void DoIt(); |
| |
| }; |
| |
| int32_t |
| my_fillOutputString(const UnicodeString &temp, |
| UChar *dest, |
| int32_t destCapacity, |
| UErrorCode *status); |
| #endif |