summaryrefslogtreecommitdiff
path: root/i18npool/source/localedata/LocaleNode.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'i18npool/source/localedata/LocaleNode.hxx')
-rw-r--r--i18npool/source/localedata/LocaleNode.hxx259
1 files changed, 259 insertions, 0 deletions
diff --git a/i18npool/source/localedata/LocaleNode.hxx b/i18npool/source/localedata/LocaleNode.hxx
new file mode 100644
index 000000000000..bf1bd1a9c4ab
--- /dev/null
+++ b/i18npool/source/localedata/LocaleNode.hxx
@@ -0,0 +1,259 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _LOCALE_NODE_
+#define _LOCALE_NODE_
+#include <com/sun/star/xml/sax/XParser.hpp>
+#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
+
+#include <vector>
+
+#include <com/sun/star/registry/XImplementationRegistration.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+
+#include <com/sun/star/xml/sax/SAXParseException.hpp>
+#include <com/sun/star/xml/sax/XParser.hpp>
+#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
+
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/io/XActiveDataSource.hpp>
+
+#include <cppuhelper/servicefactory.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/implbase3.hxx>
+
+using namespace ::rtl;
+using namespace ::std;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::cppu;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::registry;
+using namespace ::com::sun::star::xml::sax;
+using namespace ::com::sun::star::io;
+
+class OFileWriter
+{
+public:
+
+OFileWriter(const char *pcFile, const char *locale );
+virtual ~OFileWriter();
+ virtual void writeStringCharacters(const ::rtl::OUString& str) const;
+ virtual void writeAsciiString(const char *str)const ;
+ virtual void writeInt(sal_Int16 nb) const;
+ virtual void writeFunction(const char *func, const char *count, const char *array) const;
+ virtual void writeRefFunction(const char *func, const ::rtl::OUString& useLocale) const;
+ virtual void writeFunction(const char *func, const char *count, const char *array, const char *from, const char *to) const;
+ virtual void writeRefFunction(const char *func, const ::rtl::OUString& useLocale, const char *to) const;
+ virtual void writeFunction2(const char *func, const char *style, const char* attr, const char *array) const;
+ virtual void writeRefFunction2(const char *func, const ::rtl::OUString& useLocale) const;
+ virtual void writeFunction3(const char *func, const char *style, const char* levels, const char* attr, const char *array) const;
+ virtual void writeRefFunction3(const char *func, const ::rtl::OUString& useLocale) const;
+ virtual void writeIntParameter(const sal_Char* pAsciiStr, const sal_Int16 count, sal_Int16 val) const;
+ virtual bool writeDefaultParameter(const sal_Char* pAsciiStr, const ::rtl::OUString& str, sal_Int16 count) const;
+ virtual bool writeDefaultParameter(const sal_Char* pAsciiStr, const ::rtl::OUString& str) const;
+ virtual void writeParameter(const sal_Char* pAsciiStr, const ::rtl::OUString& aChars) const;
+ virtual void writeParameter(const sal_Char* pAsciiStr, const ::rtl::OUString& aChars, sal_Int16 count) const;
+ virtual void writeParameter(const sal_Char* pAsciiStr, const ::rtl::OUString& aChars, sal_Int16 count0, sal_Int16 count1) const;
+ virtual void writeParameter(const sal_Char* pTagStr, const sal_Char* pAsciiStr, const ::rtl::OUString& aChars, const sal_Int16 count) const;
+ virtual void writeParameter(const sal_Char* pTagStr, const sal_Char* pAsciiStr, const ::rtl::OUString& aChars) const;
+ virtual void writeParameter(const sal_Char* pTagStr, const sal_Char* pAsciiStr, const ::rtl::OUString& aChars, sal_Int16 count0, sal_Int16 count1) const;
+ virtual void flush(void) const ;
+ virtual void closeOutput(void) const;
+ /// Return the locale string, something like en_US or de_DE
+ const char * getLocale() const { return theLocale; }
+private:
+ char m_pcFile[1024];
+ char theLocale[50];
+ FILE *m_f;
+};
+
+class Attr {
+ Sequence <OUString> name;
+ Sequence <OUString> value;
+
+public:
+ Attr (const Reference< XAttributeList > & attr);
+ const OUString& getValueByName (const sal_Char *str) const;
+ sal_Int32 getLength() const;
+ const OUString& getTypeByIndex (sal_Int32 idx) const;
+ const OUString& getValueByIndex (sal_Int32 idx) const ;
+};
+
+class LocaleNode
+{
+ OUString aName;
+ OUString aValue;
+ Attr * xAttribs;
+ LocaleNode * parent;
+ LocaleNode* * children;
+ sal_Int32 nChildren;
+ sal_Int32 childArrSize;
+
+ void setParent ( LocaleNode* node);
+
+protected:
+ mutable int nError;
+
+public:
+ LocaleNode (const OUString& name, const Reference< XAttributeList > & attr);
+ inline void setValue(const OUString &oValue) { aValue += oValue; };
+ inline const OUString& getName() const { return aName; };
+ inline const OUString& getValue() const { return aValue; };
+ inline const Attr* getAttr() const { return xAttribs; };
+ inline sal_Int32 getNumberOfChildren () const { return nChildren; };
+ inline LocaleNode * getChildAt (sal_Int32 idx) const { return children[idx] ; };
+ const LocaleNode * findNode ( const sal_Char *name) const;
+ void print () const;
+ void printR () const;
+ virtual ~LocaleNode();
+ void addChild ( LocaleNode * node);
+ const LocaleNode* getParent() const { return parent; };
+ const LocaleNode* getRoot() const;
+ int getError() const;
+ virtual void generateCode (const OFileWriter &of) const;
+ // MUST >= nMinLen
+ // nMinLen <= 0 : no error
+ // nMinLen > 0 : error if less than nMinLen characters
+ // SHOULD NOT > nMaxLen
+ // nMaxLen < 0 : any length
+ // nMaxLen >= 0 : warning if more than nMaxLen characters
+ OUString writeParameterCheckLen( const OFileWriter &of, const char* pParameterName, const LocaleNode* pNode, sal_Int32 nMinLen, sal_Int32 nMaxLen ) const;
+ OUString writeParameterCheckLen( const OFileWriter &of, const char* pNodeName, const char* pParameterName, sal_Int32 nMinLen, sal_Int32 nMaxLen ) const;
+ // ++nError with output to stderr
+ void incError( const char* pStr ) const;
+ // ++nError with output to stderr
+ void incError( const ::rtl::OUString& rStr ) const;
+ // ++nError with output to stderr, pStr should contain "%d", otherwise appended
+ void incErrorInt( const char* pStr, int nVal ) const;
+ // ++nError with output to stderr, pStr should contain "%s", otherwise appended
+ void incErrorStr( const char* pStr, const ::rtl::OUString& rVal ) const;
+ // used by incError...(), returns a pointer to a static buffer,
+ // pDefaultConversion is appended if pFormat doesn't contain a %
+ // specification and should be something like ": %d" or ": %s" or similar.
+ char* prepareErrorFormat( const char* pFormat, const char* pDefaultConversion ) const;
+ static LocaleNode* createNode (const OUString& name,const Reference< XAttributeList > & attr);
+};
+
+class LCInfoNode : public LocaleNode {
+public:
+ inline LCInfoNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+
+class LCCTYPENode : public LocaleNode {
+public:
+ inline LCCTYPENode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCFormatNode : public LocaleNode {
+ static sal_Int16 mnSection;
+ static sal_Int16 mnFormats;
+public:
+ inline LCFormatNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCCollationNode : public LocaleNode {
+public:
+ inline LCCollationNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCIndexNode : public LocaleNode {
+public:
+ inline LCIndexNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCSearchNode : public LocaleNode {
+public:
+ inline LCSearchNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCCalendarNode : public LocaleNode {
+public:
+ inline LCCalendarNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCCurrencyNode : public LocaleNode {
+public:
+ inline LCCurrencyNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCTransliterationNode : public LocaleNode {
+public:
+ inline LCTransliterationNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCMiscNode : public LocaleNode {
+public:
+ inline LCMiscNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCNumberingLevelNode : public LocaleNode {
+public:
+ inline LCNumberingLevelNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+class LCOutlineNumberingLevelNode : public LocaleNode {
+public:
+ inline LCOutlineNumberingLevelNode (const OUString& name,
+ const Reference< XAttributeList > & attr) : LocaleNode (name, attr) { ; };
+
+ virtual void generateCode (const OFileWriter &of) const;
+};
+
+#endif