1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23#ifndef __com_sun_star_reflection_TypeDescriptionManager_idl__
24#define __com_sun_star_reflection_TypeDescriptionManager_idl__
25
26#ifndef __com_sun_star_container_XHierarchicalNameAccess_idl__
27#include <com/sun/star/container/XHierarchicalNameAccess.idl>
28#endif
29
30#ifndef __com_sun_star_container_XSet_idl__
31#include <com/sun/star/container/XSet.idl>
32#endif
33
34#ifndef __com_sun_star_lang_XInitialization_idl__
35#include <com/sun/star/lang/XInitialization.idl>
36#endif
37
38#ifndef __com_sun_star_lang_XComponent_idl__
39#include <com/sun/star/lang/XComponent.idl>
40#endif
41
42#ifndef __com_sun_star_reflection_XTypeDescriptionEnumerationAccess_idl__
43#include <com/sun/star/reflection/XTypeDescriptionEnumerationAccess.idl>
44#endif
45
46//=============================================================================
47
48 module com {  module sun {  module star {  module reflection {
49
50//=============================================================================
51
52/** This service manages type descriptions and acts as a central access point
53    to every type description.  It delegates calls for demanded types to
54    subsequent
55    <type scope="com::sun::star::reflection">TypeDescriptionProvider</type>s
56    and may cache type descriptions.<br>
57	Using cppuhelper's bootstrapping routines bootstrapping an initial
58	component context, there is a singleton accessable via key
59    "/singletons/com.sun.star.reflection.theTypeDescriptionManager".
60    This singleton object is hooked into the C UNO runtime typelib and
61    lives until the context is shut down.<br>
62
63    @see com::sun::star::reflection::TypeDescriptionProvider
64    @see com::sun::star::reflection::XTypeDescription
65*/
66published service TypeDescriptionManager
67{
68    /** Interface to retrieve type descriptions.
69
70        <ul>
71            <li>Names are given in dotted notation, for example
72            <code>"com.sun.star.uno.XInterface"</code>.</li>
73
74            <li>Sequence types are accessible via
75            <code>"[]<var>ComponentType</var>"</code></li>
76
77            <li>Instantiated polymorphic struct types are accessible via
78            <code>"<var>StructType</var>&lt;<!--
79            --><var>Parameter</var><sub>1</sub>,&hellip;,<!--
80            --><var>Parameter</var><sub><var>n</var></sub>&gt;"</code>.</li>
81
82            <li>Members of interface types are accessible via
83            <code>"<var>InterfaceType</var>::<var>Member</var>"</code>.</li>
84        </ul>
85
86        <p>The returned values are of interface type
87        <type>XTypeDescription</type>.</p>
88
89        <p>Even though the name of this interface suggests that the used type
90        names are hierarchic, this need not be the case.  (For example, consider
91        the names of instantiated polymorphic struct types, like
92        <code>"Struct&lt;long&gt;"</code>.)</p>
93    */
94	interface com::sun::star::container::XHierarchicalNameAccess;
95
96    /** You can manually add or remove a providers via this interface.
97    */
98	interface com::sun::star::container::XSet;
99
100    /** Interface to signal shutdown to the manager.<br>
101        This signals all providers to shut down, because usually each provider
102        references its manager, listening for disposing events.
103    */
104	[optional] interface com::sun::star::lang::XComponent;
105
106    /** Interface for creating enumerations for type descriptions supported
107        by this <type>TypeDescriptionManager</type>
108
109	@since OpenOffice 1.1.2
110    */
111    [optional] interface XTypeDescriptionEnumerationAccess;
112};
113
114//=============================================================================
115
116}; }; }; };
117
118/*=============================================================================
119
120=============================================================================*/
121#endif
122