<?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>sc</module-name>
    <component-description>
        <author>Niklas Nebel</author>
        <name>com.sun.star.comp.office.ScFunctionListObj</name>
        <description>
	This component provides access to the list of function descriptions.
</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="final"/>
        <supported-service>com.sun.star.sheet.FunctionDescriptions</supported-service>
        <type>com.sun.star.awt.FocusEvent</type>
        <type>com.sun.star.awt.InputEvent</type>
        <type>com.sun.star.awt.KeyEvent</type>
        <type>com.sun.star.awt.MouseEvent</type>
        <type>com.sun.star.awt.PaintEvent</type>
        <type>com.sun.star.awt.Rectangle</type>
        <type>com.sun.star.awt.WindowEvent</type>
        <type>com.sun.star.awt.XFocusListener</type>
        <type>com.sun.star.awt.XKeyListener</type>
        <type>com.sun.star.awt.XMouseListener</type>
        <type>com.sun.star.awt.XMouseMotionListener</type>
        <type>com.sun.star.awt.XPaintListener</type>
        <type>com.sun.star.awt.XWindow</type>
        <type>com.sun.star.awt.XWindowListener</type>
        <type>com.sun.star.beans.Property</type>
        <type>com.sun.star.beans.PropertyChangeEvent</type>
        <type>com.sun.star.beans.PropertyState</type>
        <type>com.sun.star.beans.PropertyValue</type>
        <type>com.sun.star.beans.PropertyVetoException</type>
        <type>com.sun.star.beans.UnknownPropertyException</type>
        <type>com.sun.star.beans.XPropertyChangeListener</type>
        <type>com.sun.star.beans.XPropertySet</type>
        <type>com.sun.star.beans.XPropertySetInfo</type>
        <type>com.sun.star.beans.XVetoableChangeListener</type>
        <type>com.sun.star.container.ContainerEvent</type>
        <type>com.sun.star.container.ElementExistException</type>
        <type>com.sun.star.container.NoSuchElementException</type>
        <type>com.sun.star.container.XContainer</type>
        <type>com.sun.star.container.XContainerListener</type>
        <type>com.sun.star.container.XElementAccess</type>
        <type>com.sun.star.container.XEnumeration</type>
        <type>com.sun.star.container.XEnumerationAccess</type>
        <type>com.sun.star.container.XIndexAccess</type>
        <type>com.sun.star.container.XIndexContainer</type>
        <type>com.sun.star.container.XIndexReplace</type>
        <type>com.sun.star.container.XNameAccess</type>
        <type>com.sun.star.container.XNameContainer</type>
        <type>com.sun.star.container.XNameReplace</type>
        <type>com.sun.star.container.XNamed</type>
        <type>com.sun.star.container.XSet</type>
        <type>com.sun.star.frame.FrameAction</type>
        <type>com.sun.star.frame.FrameActionEvent</type>
        <type>com.sun.star.frame.XController</type>
        <type>com.sun.star.frame.XFrame</type>
        <type>com.sun.star.frame.XFrameActionListener</type>
        <type>com.sun.star.frame.XFrames</type>
        <type>com.sun.star.frame.XFramesSupplier</type>
        <type>com.sun.star.frame.XModel</type>
        <type>com.sun.star.lang.EventObject</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>
        <type>com.sun.star.lang.IndexOutOfBoundsException</type>
        <type>com.sun.star.lang.Locale</type>
        <type>com.sun.star.lang.WrappedTargetException</type>
        <type>com.sun.star.lang.XComponent</type>
        <type>com.sun.star.lang.XEventListener</type>
        <type>com.sun.star.lang.XMultiServiceFactory</type>
        <type>com.sun.star.lang.XServiceInfo</type>
        <type>com.sun.star.lang.XSingleServiceFactory</type>
        <type>com.sun.star.lang.XTypeProvider</type>
        <type>com.sun.star.lang.XUnoTunnel</type>
        <type>com.sun.star.registry.InvalidRegistryException</type>
        <type>com.sun.star.registry.InvalidValueException</type>
        <type>com.sun.star.registry.RegistryKeyType</type>
        <type>com.sun.star.registry.RegistryValueType</type>
        <type>com.sun.star.registry.XRegistryKey</type>
        <type>com.sun.star.sheet.FunctionArgument</type>
        <type>com.sun.star.sheet.XFunctionDescriptions</type>
        <type>com.sun.star.sheet.XRecentFunctions</type>
        <type>com.sun.star.uno.Any</type>
        <type>com.sun.star.uno.Exception</type>
        <type>com.sun.star.uno.Reference</type>
        <type>com.sun.star.uno.RuntimeException</type>
        <type>com.sun.star.uno.Sequence</type>
        <type>com.sun.star.uno.Type</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.genfunc</type>
        <type>com.sun.star.util.URL</type>
    </component-description>
    <project-build-dependency>cppu</project-build-dependency>
    <project-build-dependency>cppuhelper</project-build-dependency>
    <project-build-dependency>osl</project-build-dependency>
    <project-build-dependency>rsc</project-build-dependency>
    <project-build-dependency>rtl</project-build-dependency>
    <project-build-dependency>sal</project-build-dependency>
    <project-build-dependency>sfx2</project-build-dependency>
    <project-build-dependency>sot</project-build-dependency>
    <project-build-dependency>stl</project-build-dependency>
    <project-build-dependency>svtools</project-build-dependency>
    <project-build-dependency>svx</project-build-dependency>
    <project-build-dependency>tools</project-build-dependency>
    <project-build-dependency>typelib</project-build-dependency>
    <project-build-dependency>uno</project-build-dependency>
    <project-build-dependency>vcl</project-build-dependency>
    <project-build-dependency>vos</project-build-dependency>
</module-description>
