summaryrefslogtreecommitdiff
path: root/udkapi/com/sun/star/reflection/XIdlClass.idl
blob: 37a6c78b984ce87f59f4510ca2d354a691893567 (plain)
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
/*************************************************************************
 *
 *  $RCSfile: XIdlClass.idl,v $
 *
 *  $Revision: 1.8 $
 *
 *  last change: $Author: dbo $ $Date: 2002-01-23 08:52:21 $
 *
 *  The Contents of this file are made available subject to the terms of
 *  either of the following licenses
 *
 *         - GNU Lesser General Public License Version 2.1
 *         - Sun Industry Standards Source License Version 1.1
 *
 *  Sun Microsystems Inc., October, 2000
 *
 *  GNU Lesser General Public License Version 2.1
 *  =============================================
 *  Copyright 2000 by Sun Microsystems, Inc.
 *  901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License version 2.1, as published by the Free Software Foundation.
 *
 *  This library 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 for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *  MA  02111-1307  USA
 *
 *
 *  Sun Industry Standards Source License Version 1.1
 *  =================================================
 *  The contents of this file are subject to the Sun Industry Standards
 *  Source License Version 1.1 (the "License"); You may not use this file
 *  except in compliance with the License. You may obtain a copy of the
 *  License at http://www.openoffice.org/license.html.
 *
 *  Software provided under this License is provided on an "AS IS" basis,
 *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
 *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
 *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
 *  See the License for the specific provisions governing your rights and
 *  obligations concerning the Software.
 *
 *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
 *
 *  Copyright: 2000 by Sun Microsystems, Inc.
 *
 *  All Rights Reserved.
 *
 *  Contributor(s): _______________________________________
 *
 *
 ************************************************************************/
#ifndef __com_sun_star_reflection_XIdlClass_idl__
#define __com_sun_star_reflection_XIdlClass_idl__

#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif

#ifndef __com_sun_star_uno_TypeClass_idl__
#include <com/sun/star/uno/TypeClass.idl>
#endif

#ifndef __com_sun_star_uno_Uik_idl__
#include <com/sun/star/uno/Uik.idl>
#endif

//=============================================================================

module com {  module sun {  module star {  module reflection {

interface XIdlField;
interface XIdlMethod;
interface XIdlArray;

//=============================================================================

/** Provides information reflecting an UNO type.
*/
interface XIdlClass: com::sun::star::uno::XInterface
{
    /** Deprecated.  Do not call.
        @deprecated
    */
    sequence<XIdlClass> getClasses();
    /** Deprecated.  Do not call.
        @deprecated
    */
    XIdlClass getClass( [in] string aName );

    /** Tests whether two reflecting objects reflect the same type.

        @returns
                true, if the objects reflect the same type, false otherwise.
    */
    boolean equals( [in] XIdlClass Type );

    /** Tests whether values of this reflected type are assignable from values
        of a second one (<code>xType</code>).

        @param xType
               another reflected type
        @return
                true, if values of this reflected type are assignable
                from values of <code>xType</code>.
    */
    boolean isAssignableFrom( [in] XIdlClass xType );

    /** Returns the <type scope="com::sun::star::uno">TypeClass</type>
        of the reflected type.

        @returns
                  type class of the reflected type.
    */
    com::sun::star::uno::TypeClass getTypeClass();

    /** Returns the fully-qualified name of the reflected type.

        @returns
                  the fully-qualified name of the type
    */
    string getName();

    /** Deprecated.  Do not call.

        @deprecated
    */
    com::sun::star::uno::Uik getUik();

    /** If the reflected type is an interface, then the returned
        sequence of <type>XIdlClass</type> reflect the base interfaces.
        <br>
        If the reflected type is not an interface or an interface that is
        not derived from another, then an empty sequence is returned.

        @return
                all base interfaces of an interface type or an empty sequence.
    */
    sequence<XIdlClass> getSuperclasses();

    /** Deprecated.  Do not call.
        @deprecated
    */
    sequence<XIdlClass> getInterfaces();

    /** If the reflected type is an array or sequence, then this method
        returns a <type>XIdlClass</type> interface reflecting
        the element.

        @return
                reflection interface of the element type of an array or
                sequence type (null-reference otherwise).
    */
    XIdlClass getComponentType();

    /** If the reflected type is an interface, struct or union, then you
        get a <type>XIdlField</type> interface reflecting the demanded
        field (/interface attribute) by name.
        <br>
        If the reflected type is not an interface, struct or union or the
        interace, struct or union does not have a field (/interface attribute)
        with the demanded name, then a null-reference is returned.

        @param aName
               name of the demanded field reflection
        @return
                demanded field (/interface attribute) reflection (or null-reference)
    */
    XIdlField getField( [in] string aName );

    /** If the reflected type is an interface, struct or union, then you
        get a sequence of <type>XIdlField</type> interfaces reflecting all fields
        (/interface attributes).  This also includes all inherited
        fields (/interface attributes) of the interface, struct of union.
        <br>
        If the reflected type is not an interface, struct or union or the
        interface, struct or union does not have any field (/interface attribute),
        then an empty sequence is returned.

        @return
                all field (/interface attribute) reflections (or empty sequence)
    */
    sequence<XIdlField> getFields();

    /** If the reflected type is an interface, then you get
        a <type>XIdlMethod</type> interface reflecting the demanded method by name.
        <br>
        If the reflected type is not an interface or the interface does not have
        a method with the demanded name (including inherited methods),
        then a null-reference is returned.

        @param aName
               name of demanded method reflection
        @return
                demanded method reflection (or null-reference)
    */
    XIdlMethod getMethod( [in] string aName );

    /** If the reflected type is an interface, then you get
        a sequence of <type>XIdlMethod</type> interfaces reflecting all methods
        of the interface.  This also includes the inherited methods of the interface.
        <br>
        If the reflected type is not an interface or the interface
        does not have any methods, then a null-reference is returned.

        @return
                all method reflections (or empty sequence)
    */
    sequence<XIdlMethod> getMethods();

    /** If the reflected type is an array, then you get
        a <type>XIdlArray</type> interface to modify instances of the array type.
        <br>
        If the reflected type is not an array, then a null-reference is returned.

        @return
                inteface to modify array instances (or null-reference)
    */
    XIdlArray getArray();

    /** This method creates instances of the reflected type.

        @attention
        Instances of type <code>any</code> can not be passed using an <code>any</code>, because
        anys cannot be nested.  So if the reflected type is an <code>any</code>, then the
        returned value is empty.

        @param obj
               pure out parameter to pass the created instance
    */
    void createObject( [out] any obj );
};

//=============================================================================

}; }; }; };

/*=============================================================================

    $Log: not supported by cvs2svn $
    Revision 1.7  2001/11/16 15:02:57  mi
    proofing by Richard Holt

    Revision 1.6  2001/03/16 15:10:38  jsc
    remove interfaceheader with uik and remove [const] in method definitions

    Revision 1.5  2000/12/19 13:49:36  mi
    syntax errors in documentation fixed

    Revision 1.4  2000/11/08 12:28:46  mi
    moved from api

    Revision 1.1.1.1  2000/09/18 23:35:32  hjs
    initial import

    Revision 1.6  2000/09/11 11:52:36  mi
    documentation merged from XML

    Revision 1.4  2000/04/20 14:09:39  mm
    #74031# better documentation

    Revision 1.3  2000/02/17 18:30:24  mi
    proofreading in layouted version

    Revision 1.2  2000/02/07 11:24:44  mi
    zu #70728# missing documentation marked

    Revision 1.1.1.1  1999/11/11 09:48:44  jsc
    new


=============================================================================*/
#endif