<?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.ScSheetLinkObj</name>
        <description>
	This component provides access to a sheet link.
</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="final"/>
        <supported-service>com.sun.star.sheet.SheetLink</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.NoSuchElementException</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.XNameAccess</type>
        <type>com.sun.star.container.XNamed</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.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.XAreaLink</type>
        <type>com.sun.star.sheet.XAreaLinks</type>
        <type>com.sun.star.sheet.XDDELink</type>
        <type>com.sun.star.table.CellAddress</type>
        <type>com.sun.star.table.CellRangeAddress</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>
        <type>com.sun.star.util.XRefreshListener</type>
        <type>com.sun.star.util.XRefreshable</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>
