1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27#ifndef __com_sun_star_reflection_TypeDescriptionManager_idl__
28#define __com_sun_star_reflection_TypeDescriptionManager_idl__
29
30#ifndef __com_sun_star_container_XHierarchicalNameAccess_idl__
31#include <com/sun/star/container/XHierarchicalNameAccess.idl>
32#endif
33
34#ifndef __com_sun_star_container_XSet_idl__
35#include <com/sun/star/container/XSet.idl>
36#endif
37
38#ifndef __com_sun_star_lang_XInitialization_idl__
39#include <com/sun/star/lang/XInitialization.idl>
40#endif
41
42#ifndef __com_sun_star_lang_XComponent_idl__
43#include <com/sun/star/lang/XComponent.idl>
44#endif
45
46#ifndef __com_sun_star_reflection_XTypeDescriptionEnumerationAccess_idl__
47#include <com/sun/star/reflection/XTypeDescriptionEnumerationAccess.idl>
48#endif
49
50//=============================================================================
51
52 module com {  module sun {  module star {  module reflection {
53
54//=============================================================================
55
56/** This service manages type descriptions and acts as a central access point
57    to every type description.  It delegates calls for demanded types to
58    subsequent
59    <type scope="com::sun::star::reflection">TypeDescriptionProvider</type>s
60    and may cache type descriptions.<br>
61	Using cppuhelper's bootstrapping routines bootstrapping an initial
62	component context, there is a singleton accessable via key
63    "/singletons/com.sun.star.reflection.theTypeDescriptionManager".
64    This singleton object is hooked into the C UNO runtime typelib and
65    lives until the context is shut down.<br>
66
67    @see com::sun::star::reflection::TypeDescriptionProvider
68    @see com::sun::star::reflection::XTypeDescription
69*/
70published service TypeDescriptionManager
71{
72    /** Interface to retrieve type descriptions.
73
74        <ul>
75            <li>Names are given in dotted notation, for example
76            <code>"com.sun.star.uno.XInterface"</code>.</li>
77
78            <li>Sequence types are accessible via
79            <code>"[]<var>ComponentType</var>"</code></li>
80
81            <li>Instantiated polymorphic struct types are accessible via
82            <code>"<var>StructType</var>&lt;<!--
83            --><var>Parameter</var><sub>1</sub>,&hellip;,<!--
84            --><var>Parameter</var><sub><var>n</var></sub>&gt;"</code>.</li>
85
86            <li>Members of interface types are accessible via
87            <code>"<var>InterfaceType</var>::<var>Member</var>"</code>.</li>
88        </ul>
89
90        <p>The returned values are of interface type
91        <type>XTypeDescription</type>.</p>
92
93        <p>Even though the name of this interface suggests that the used type
94        names are hierarchic, this need not be the case.  (For example, consider
95        the names of instantiated polymorphic struct types, like
96        <code>"Struct&lt;long&gt;"</code>.)</p>
97    */
98	interface com::sun::star::container::XHierarchicalNameAccess;
99
100    /** You can manually add or remove a providers via this interface.
101    */
102	interface com::sun::star::container::XSet;
103
104    /** Interface to signal shutdown to the manager.<br>
105        This signals all providers to shut down, because usually each provider
106        references its manager, listening for disposing events.
107    */
108	[optional] interface com::sun::star::lang::XComponent;
109
110    /** Interface for creating enumerations for type descriptions supported
111        by this <type>TypeDescriptionManager</type>
112
113	@since OOo 1.1.2
114    */
115    [optional] interface XTypeDescriptionEnumerationAccess;
116};
117
118//=============================================================================
119
120}; }; }; };
121
122/*=============================================================================
123
124=============================================================================*/
125#endif
126