summaryrefslogtreecommitdiff
path: root/udkapi/com/sun/star/reflection/XIdlClass.idl
blob: fd9048ce111cbe3f174ad857778ac3c552962c49 (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
/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * 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_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 {

 published interface XIdlField;
 published interface XIdlMethod;
 published interface XIdlArray;

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

/** Provides information reflecting an UNO type.
*/
published 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 );
};

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

}; }; }; };

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

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