<?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.BreakIterator</name>
        <description>
	This component provides localized paragraph, line, word, sentence break
</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>C++</language>
        <status value="final"/>
        <supported-service>com.sun.star.i18n.BreakIterator</supported-service>
        <reference-docu xlink:href="file:///docs/sampledoc.html" xlink:type="simple"/>
        <type>com.sun.star.beans.PropertyState</type>
        <type>com.sun.star.beans.PropertyValue</type>
        <type>com.sun.star.beans.PropertyValues</type>
        <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.LanguageCountryInfo</type>
        <type>com.sun.star.i18n.LocaleDataItem</type>
        <type>com.sun.star.i18n.NumberFormatCode</type>
        <type>com.sun.star.i18n.ParseResult</type>
        <type>com.sun.star.i18n.XCharacterClassification</type>
        <type>com.sun.star.i18n.XLocaleData</type>
        <type>com.sun.star.i18n.XNumberFormatCode</type>
        <type>com.sun.star.lang.IllegalArgumentException</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.linguistic2.XHyphenatedWord</type>
        <type>com.sun.star.linguistic2.XHyphenator</type>
        <type>com.sun.star.linguistic2.XPossibleHyphens</type>
        <type>com.sun.star.linguistic2.XSupportedLocales</type>
        <type>com.sun.star.i18n.Boundary</type>
        <type>com.sun.star.i18n.BreakType</type>
        <type>com.sun.star.i18n.CharType</type>
        <type>com.sun.star.i18n.CharacterIteratorMode</type>
        <type>com.sun.star.i18n.LineBreakHyphenationOptions</type>
        <type>com.sun.star.i18n.LineBreakResults</type>
        <type>com.sun.star.i18n.LineBreakUserOptions</type>
        <type>com.sun.star.i18n.ScriptType</type>
        <type>com.sun.star.i18n.WordType</type>
        <type>com.sun.star.i18n.XBreakIterator</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>
