<?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>	proxyfac.uno	</module-name>
    <component-description>
        <author> Daniel Boelzle </author>
        <name>	com.sun.star.comp.stoc.ProxyFactory	</name>
        <description>
Specifies a factory object to create proxy objects.
These proxy object represent a given target object and can be
be aggregated. The proxy objects act UNO conform and do NOT provide
original target interfaces on queryInterface() calls.
</description>
        <loader-name>	com.sun.star.loader.SharedLibrary	</loader-name>
        <language>	C++	</language>
        <status value="final"/>
        <supported-service>	com.sun.star.reflection.ProxyFactory	</supported-service>
        <service-dependency> ... </service-dependency>
        <type>	com.sun.star.lang.XTypeProvider						</type>
        <type>	com.sun.star.lang.XServiceInfo						</type>
        <type>	com.sun.star.lang.XSingleServiceFactory				</type>
        <type>	com.sun.star.lang.XMultiServiceFactory				</type>
        <type>	com.sun.star.registry.XSimpleRegistry				</type>
        <type>	com.sun.star.registry.XRegistryKey					</type>
        <type>	com.sun.star.lang.XSingleComponentFactory </type>
        <type>	com.sun.star.uno.XComponentContext        </type>
        <type>	com.sun.star.uno.XAggregation						</type>
        <type>	com.sun.star.uno.XWeak								</type>
        <type>	com.sun.star.reflection.XProxyFactory	</type>
    </component-description>
    <project-build-dependency>	cppuhelper	</project-build-dependency>
    <project-build-dependency>	cppu		</project-build-dependency>
    <project-build-dependency>	sal			</project-build-dependency>
    <runtime-module-dependency>	cppuhelper2$(COM)	</runtime-module-dependency>
    <runtime-module-dependency>	cppu2		</runtime-module-dependency>
    <runtime-module-dependency>	sal2		</runtime-module-dependency>
</module-description>
