<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
    <module-name>i18n</module-name>
    <component-description>
        <author>Georges Murr</author>
        <name>com.sun.star.i18n.NumberFormatCodeMapper</name>
        <description>
	This component provides Localized Number formatter
</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>C++</language>
        <status value="final"/>
        <supported-service>com.sun.star.i18n.NumberFormatMapper</supported-service>
        <reference-docu xlink:href="file:///docs/sampledoc.html" xlink:type="simple"/>
        <type>com.sun.star.i18n.Calendar</type>
        <type>com.sun.star.i18n.CalendarItem</type>
        <type>com.sun.star.i18n.Currency</type>
        <type>com.sun.star.i18n.ForbiddenCharacters</type>
        <type>com.sun.star.i18n.FormatElement</type>
        <type>com.sun.star.i18n.Implementation</type>
        <type>com.sun.star.i18n.KNumberFormatType</type>
        <type>com.sun.star.i18n.KNumberFormatUsage</type>
        <type>com.sun.star.i18n.LanguageCountryInfo</type>
        <type>com.sun.star.i18n.LocaleDataItem</type>
        <type>com.sun.star.i18n.NumberFormatCode</type>
        <type>com.sun.star.i18n.XLocaleData</type>
        <type>com.sun.star.i18n.XNumberFormatCode</type>
        <type>com.sun.star.lang.Locale</type>
        <type>com.sun.star.lang.XMultiServiceFactory</type>
        <type>com.sun.star.lang.XTypeProvider</type>
        <type>com.sun.star.uno.Exception</type>
        <type>com.sun.star.uno.RuntimeException</type>
        <type>com.sun.star.uno.TypeClass</type>
        <type>com.sun.star.uno.XAdapter</type>
        <type>com.sun.star.uno.XAggregation</type>
        <type>com.sun.star.uno.XInterface</type>
        <type>com.sun.star.uno.XReference</type>
        <type>com.sun.star.uno.XWeak</type>
        <type>com.sun.star.uno.Any</type>
        <type>com.sun.star.uno.Reference</type>
        <type>com.sun.star.uno.Sequence</type>
        <type>com.sun.star.uno.Type</type>
        <type>com.sun.star.uno.genfunc</type>
    </component-description>
    <project-build-dependency>comphelper</project-build-dependency>
    <project-build-dependency>cppu</project-build-dependency>
    <project-build-dependency>cppuhelper</project-build-dependency>
    <project-build-dependency>osl</project-build-dependency>
    <project-build-dependency>rtl</project-build-dependency>
    <project-build-dependency>sal</project-build-dependency>
    <project-build-dependency>stl</project-build-dependency>
    <project-build-dependency>typelib</project-build-dependency>
    <project-build-dependency>uno</project-build-dependency>
    <runtime-module-dependency>comphelper</runtime-module-dependency>
    <runtime-module-dependency>cppu</runtime-module-dependency>
    <runtime-module-dependency>cppuhelper</runtime-module-dependency>
    <runtime-module-dependency>osl</runtime-module-dependency>
    <runtime-module-dependency>rtl</runtime-module-dependency>
    <runtime-module-dependency>sal</runtime-module-dependency>
    <runtime-module-dependency>stl</runtime-module-dependency>
    <runtime-module-dependency>typelib</runtime-module-dependency>
    <runtime-module-dependency>uno</runtime-module-dependency>
</module-description>
