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