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_lang_XTypeProvider_idl__
24#define __com_sun_star_lang_XTypeProvider_idl__
25
26#ifndef __com_sun_star_uno_XInterface_idl__
27#include <com/sun/star/uno/XInterface.idl>
28#endif
29
30#ifndef __com_sun_star_reflection_XIdlClass_idl__
31#include <com/sun/star/reflection/XIdlClass.idl>
32#endif
33
34//=============================================================================
35
36module com {  module sun {  module star {  module lang {
37
38//=============================================================================
39
40/** interface to get information about the types
41	(usually interface types) supported by an object.
42 */
43published interface XTypeProvider: com::sun::star::uno::XInterface
44{
45
46	/** returns
47		a sequence of all types (usually interface types) provided by the object.
48		Important: If the object aggregates other objects the sequence also has
49		to contain all types supported by the aggregated objects.
50	 */
51	sequence<type> getTypes();
52
53
54	/** returns
55		a sequence of bytes with length > 0 that is used as an Id to distinguish
56		unambiguously between two sets of types, e.g. to realise hashing
57		functionality when the object is introspected. Two objects that return
58		the same UUID also have to return the same set of types in getTypes().
59
60		If a unique implementation Id cannot be provided this method has to return
61		an empty sequence.
62
63		Important: If the object aggregates other objects the UUID has to be unique
64		for the whole combination of objects.
65	 */
66	sequence<byte> getImplementationId();
67};
68
69//=============================================================================
70
71}; }; }; };
72
73#endif
74
75
76