summaryrefslogtreecommitdiff
path: root/udkapi/com/sun/star/reflection/XIdlClass.idl
blob: 784736ec09133b48df06389191621e37ad417e95 (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
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef __com_sun_star_reflection_XIdlClass_idl__
#define __com_sun_star_reflection_XIdlClass_idl__

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

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

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

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

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

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */