<?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>stringresource</module-name>
    
    <component-description>
        <author>Andreas Bregas</author>
        <name>com.sun.star.comp.scripting.StringResource</name>
        <description>string resource</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="drafts"/>
        <supported-service>com.sun.star.resource.StringResource</supported-service>
        <supported-service>com.sun.star.resource.StringResourceWithLocation</supported-service>
        <supported-service>com.sun.star.resource.StringResourceWithStorage</supported-service>
        <type>com.sun.star.resource.XStringResourceWithStorage</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>
        <type>com.sun.star.lang.XInitialization</type>       
        <type>com.sun.star.lang.XMultiComponentFactory</type>        
        <type>com.sun.star.lang.XServiceInfo</type>        
        <type>com.sun.star.uno.XComponentContext</type>        
        <type>com.sun.star.ucb.XSimpleFileAccess3</type>        
        <type>com.sun.star.io.XInputStream</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>cppuhelper3$(COM)</runtime-module-dependency>
    <runtime-module-dependency>cppu3</runtime-module-dependency>
    <runtime-module-dependency>sal3</runtime-module-dependency>
    <runtime-module-dependency>ucb</runtime-module-dependency>
    
</module-description>
