1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
|
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: XIntrospectionAccess.idl,v $
* $Revision: 1.13 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef __com_sun_star_beans_XIntrospectionAccess_idl__
#define __com_sun_star_beans_XIntrospectionAccess_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_beans_Property_idl__
#include <com/sun/star/beans/Property.idl>
#endif
#ifndef __com_sun_star_container_NoSuchElementException_idl__
#include <com/sun/star/container/NoSuchElementException.idl>
#endif
#ifndef __com_sun_star_reflection_XIdlMethod_idl__
#include <com/sun/star/reflection/XIdlMethod.idl>
#endif
#ifndef __com_sun_star_lang_NoSuchMethodException_idl__
#include <com/sun/star/lang/NoSuchMethodException.idl>
#endif
#ifndef __com_sun_star_reflection_XIdlClass_idl__
#include <com/sun/star/reflection/XIdlClass.idl>
#endif
#ifndef __com_sun_star_beans_IllegalTypeException_idl__
#include <com/sun/star/beans/IllegalTypeException.idl>
#endif
//=============================================================================
module com { module sun { module star { module beans {
//=============================================================================
/** represents the result of an introspection operation done by
the inspect method of <type scope="com::sun::star::beans">
XIntrospection</type>.
<p>This interface gives information about an object's
properties and methods as detected in the introspection
process. It's not possible to access properties or call
methods directly using this interface but it provides
access to other interfaces to do so.
See <member scope="com::sun::star::beans">
XIntrospectionAccess::queryAdapter()</member></p>
<p>The <type>XExactName</type> interface has to be supported
in order to implement inaccurate name access for all objects
which implement the <type scope="com::sun::star::container">
XNameAccess</type> interface or <type>XPropertySet</type>.</p>
<p>The <type>XMaterialHolder</type> interface has to be
supported to give access to the inspected object.</p>
@see XPropertySet
@see com::sun::star::beans::XExactName
*/
published interface XIntrospectionAccess: com::sun::star::uno::XInterface
{
//-------------------------------------------------------------------------
/** returns information about which method concepts described in
the <type>MethodConcept</type> constants group are supported
by this <type>XIntrospectionAccess</type> implementation.
<p>The minimum supported concepts should be:</p>
<ul>
<li> <const>MethodConcept::PROPERTY</const>, </li>
<li> <const>MethodConcept::LISTENER</const>, </li>
<li> <const>MethodConcept::ENUMERATION</const>, </li>
<li> <const>MethodConcept::NAMECONTAINER</const></li>
<li> <const>MethodConcept::INDEXCONTAINER</const>; </li>
</ul>
@returns
zero or more constants of the <type>MethodConcept</type>
constants group combined by an arithmetical or-operation.
*/
long getSuppliedMethodConcepts();
//-------------------------------------------------------------------------
/** returns information about which property concepts described in
the <type>PropertyConcept</type> constants group are supported
by this <type>XIntrospectionAccess</type> implementation.
<p>The minimum supported concepts should be:</p>
<ul>
<li> <const>PropertyConcept::PROPERTYSET</const>, </li>
<li> <const>PropertyConcept::ATTRIBUTES</const> and </li>
<li> <const>PropertyConcept::METHODS</const>. </li>
</ul>
@returns
zero or more constants of the <type>PropertyConcept</type>
constants group.combined by an arithmetical or-operation.
*/
long getSuppliedPropertyConcepts();
//-------------------------------------------------------------------------
/** returns information about a property if a property with
the demanded name exists and if it accords to one of the
demanded <type>PropertyConcept</type>s. The information
is provided as <type>Property</type> struct.
@returns
A <type>Property</type> struct providing
information about the demanded property,
if a corresponding property exists.
@param aName
the name of the property.
@param nPropertyConcepts
zero or more constants of the <type>PropertyConcept
</type> constants group combined by an arithmetical
or-operation.
@throws NoSuchElementException
when a property with the demanded name doesn't exist
or if it accords to a wrong <type>PropertyConcept
</type>.
*/
com::sun::star::beans::Property getProperty( [in] string aName,
[in] long nPropertyConcepts )
raises( com::sun::star::container::NoSuchElementException );
//-------------------------------------------------------------------------
/** allows to ask if a property with the demanded name exists
and if it accords to one of the demanded <type>
PropertyConcept</type>s.
@returns
<TRUE/> if the property exists and accords to one of
the demanded <type>PropertyConcept</type>s, otherwise
<FALSE/> is returned.
@param aName
the name of the property.
@param nPropertyConcepts
zero or more constants of the <type>PropertyConcept
</type> constants group combined by an arithmetical
or-operation.
*/
boolean hasProperty( [in] string aName,
[in] long nPropertyConcepts );
//-------------------------------------------------------------------------
/** returns a sequence of properties of the introspected object
@returns
all properties of the introspected object which accord
to the demanded <type>PropertyConcept</type>s.
@param nPropertyConcepts
zero or more constants of the <type>PropertyConcept
</type> constants group combined by an arithmetical
or-operation.
*/
sequence<com::sun::star::beans::Property> getProperties(
[in] long nPropertyConcepts );
//-------------------------------------------------------------------------
/** returns information about a method if a method with
the demanded name exists and if it accords to one of
the demanded MethodConcepts. The information is
provided as <type scope="com::sun::star::reflection">
XIdlMethod</type>.
@returns
A <type scope="com::sun::star::reflection">
XIdlMethod</type> providing information about and
access to the demanded method if a corresponding
method exists.
@param aName
the name of the method.
@param nMethodConcepts
zero or more constants of the <type>MethodConcept
</type> constants group combined by an arithmetical
or-operation.
@throws NoSuchElementException
when a method with the demanded name doesn't exist
or if it accords to a wrong <type>MethodConcept</type>.
*/
com::sun::star::reflection::XIdlMethod getMethod( [in] string aName,
[in] long nMethodConcepts )
raises( com::sun::star::lang::NoSuchMethodException );
//-------------------------------------------------------------------------
/** allows to ask if a method with the demanded name exists
and if it accords to one of the demanded <type>MethodConcept
</type>s.
@returns
<TRUE/> if the method exists and accords to one of
the demanded <type>MethodConcept</type>s, otherwise
<FALSE/> is returned.
@param aName
the name of the method.
@param nMethodConcepts
zero or more constants of the <type>MethodConcept
</type> constants group combined by an arithmetical
or-operation.
*/
boolean hasMethod( [in] string aName,
[in] long nMethodConcepts );
//-------------------------------------------------------------------------
/** returns a sequence of methods of the introspected object.
@returns
all methods of the introspected object which accord
to the demanded <type>MethodConcept</type>s.
@param nMethodConcepts
zero or more constants of the <type>MethodConcept
</type> constants group combined by an arithmetical
or-operation.
*/
sequence<com::sun::star::reflection::XIdlMethod> getMethods(
[in] long nMethodConcepts );
//-------------------------------------------------------------------------
/** returns the listener types supported by the introspected
object.
<p>If the introspected object has the methods
<code>addFooListener( XFooListener xFoo )</code> and
<code>removeFooListener( XFooListener xFoo )</code>
the type of XFooListener will be one of the elements
in the returned sequence.
@returns
a sequence of the types of listener interfaces
which are supported by the introspected object.
*/
sequence<type> getSupportedListeners();
//-------------------------------------------------------------------------
/** creates an adapter that implements an interface with the
specified type.
<p>To access properties, query for the <type>XPropertySet
</type> interface. If the <type>XPropertySet</type> can
be queried, the <type>XFastPropertySet</type> interface
must be supported too. </p>
<p>If the introspected object implements a name container,
the introspection should return the <type scope=
"com::sun::star::container">XNameAccess</type> and <type
scope="com::sun::star::container">XNameContainer</type>
interfaces.</p>
<p>If the introspected object implements an index container,
the introspection should return the <type scope=
"com::sun::star::container">XIndexAccess</type> and <type
scope="com::sun::star::container">XIndexContainer</type>
interfaces.</p>
<p>If the introspected object implements an enumeration
container, the introspection should return the <type scope=
"com::sun::star::container">XEnumerationAccess</type>
interface.</p>
<p>If the introspected object implements the <type scope=
"com::sun::star::reflection">XIdlArray</type> interface,
the introspection should return this.</p>
<p>To implement inaccurate name access, at all objects,
which implement the <type scope="com::sun::star::container">
XNameAccess</type> or <type>XPropertySet</type> interface,
the <type>XExactName</type> interface has to be supported.
</p>
@see com::sun::star::beans::XExactName
*/
com::sun::star::uno::XInterface queryAdapter( [in] type aInterfaceType )
raises( com::sun::star::beans::IllegalTypeException );
};
//=============================================================================
}; }; }; };
#endif
|