1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_reflection_XIdlClass_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_reflection_XIdlClass_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__ 27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl> 28*b1cdbd2cSJim Jagielski#endif 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_TypeClass_idl__ 31*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/TypeClass.idl> 32*b1cdbd2cSJim Jagielski#endif 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_Uik_idl__ 35*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/Uik.idl> 36*b1cdbd2cSJim Jagielski#endif 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski//============================================================================= 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module reflection { 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski published interface XIdlField; 43*b1cdbd2cSJim Jagielski published interface XIdlMethod; 44*b1cdbd2cSJim Jagielski published interface XIdlArray; 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski//============================================================================= 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski/** Provides information reflecting an UNO type. 49*b1cdbd2cSJim Jagielski*/ 50*b1cdbd2cSJim Jagielskipublished interface XIdlClass: com::sun::star::uno::XInterface 51*b1cdbd2cSJim Jagielski{ 52*b1cdbd2cSJim Jagielski /** Deprecated. Do not call. 53*b1cdbd2cSJim Jagielski @deprecated 54*b1cdbd2cSJim Jagielski */ 55*b1cdbd2cSJim Jagielski sequence<XIdlClass> getClasses(); 56*b1cdbd2cSJim Jagielski /** Deprecated. Do not call. 57*b1cdbd2cSJim Jagielski @deprecated 58*b1cdbd2cSJim Jagielski */ 59*b1cdbd2cSJim Jagielski XIdlClass getClass( [in] string aName ); 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski /** Tests whether two reflecting objects reflect the same type. 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski @returns 64*b1cdbd2cSJim Jagielski true, if the objects reflect the same type, false otherwise. 65*b1cdbd2cSJim Jagielski */ 66*b1cdbd2cSJim Jagielski boolean equals( [in] XIdlClass Type ); 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski /** Tests whether values of this reflected type are assignable from values 69*b1cdbd2cSJim Jagielski of a second one (<code>xType</code>). 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski @param xType 72*b1cdbd2cSJim Jagielski another reflected type 73*b1cdbd2cSJim Jagielski @return 74*b1cdbd2cSJim Jagielski true, if values of this reflected type are assignable 75*b1cdbd2cSJim Jagielski from values of <code>xType</code>. 76*b1cdbd2cSJim Jagielski */ 77*b1cdbd2cSJim Jagielski boolean isAssignableFrom( [in] XIdlClass xType ); 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski /** Returns the <type scope="com::sun::star::uno">TypeClass</type> 80*b1cdbd2cSJim Jagielski of the reflected type. 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski @returns 83*b1cdbd2cSJim Jagielski type class of the reflected type. 84*b1cdbd2cSJim Jagielski */ 85*b1cdbd2cSJim Jagielski com::sun::star::uno::TypeClass getTypeClass(); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski /** Returns the fully-qualified name of the reflected type. 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski @returns 90*b1cdbd2cSJim Jagielski the fully-qualified name of the type 91*b1cdbd2cSJim Jagielski */ 92*b1cdbd2cSJim Jagielski string getName(); 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski /** Deprecated. Do not call. 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski @deprecated 97*b1cdbd2cSJim Jagielski */ 98*b1cdbd2cSJim Jagielski com::sun::star::uno::Uik getUik(); 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski /** If the reflected type is an interface, then the returned 101*b1cdbd2cSJim Jagielski sequence of <type>XIdlClass</type> reflect the base interfaces. 102*b1cdbd2cSJim Jagielski <br> 103*b1cdbd2cSJim Jagielski If the reflected type is not an interface or an interface that is 104*b1cdbd2cSJim Jagielski not derived from another, then an empty sequence is returned. 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski @return 107*b1cdbd2cSJim Jagielski all base interfaces of an interface type or an empty sequence. 108*b1cdbd2cSJim Jagielski */ 109*b1cdbd2cSJim Jagielski sequence<XIdlClass> getSuperclasses(); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski /** Deprecated. Do not call. 112*b1cdbd2cSJim Jagielski @deprecated 113*b1cdbd2cSJim Jagielski */ 114*b1cdbd2cSJim Jagielski sequence<XIdlClass> getInterfaces(); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski /** If the reflected type is an array or sequence, then this method 117*b1cdbd2cSJim Jagielski returns a <type>XIdlClass</type> interface reflecting 118*b1cdbd2cSJim Jagielski the element. 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski @return 121*b1cdbd2cSJim Jagielski reflection interface of the element type of an array or 122*b1cdbd2cSJim Jagielski sequence type (null-reference otherwise). 123*b1cdbd2cSJim Jagielski */ 124*b1cdbd2cSJim Jagielski XIdlClass getComponentType(); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski /** If the reflected type is an interface, struct or union, then you 127*b1cdbd2cSJim Jagielski get a <type>XIdlField</type> interface reflecting the demanded 128*b1cdbd2cSJim Jagielski field (/interface attribute) by name. 129*b1cdbd2cSJim Jagielski <br> 130*b1cdbd2cSJim Jagielski If the reflected type is not an interface, struct or union or the 131*b1cdbd2cSJim Jagielski interace, struct or union does not have a field (/interface attribute) 132*b1cdbd2cSJim Jagielski with the demanded name, then a null-reference is returned. 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski @param aName 135*b1cdbd2cSJim Jagielski name of the demanded field reflection 136*b1cdbd2cSJim Jagielski @return 137*b1cdbd2cSJim Jagielski demanded field (/interface attribute) reflection (or null-reference) 138*b1cdbd2cSJim Jagielski */ 139*b1cdbd2cSJim Jagielski XIdlField getField( [in] string aName ); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski /** If the reflected type is an interface, struct or union, then you 142*b1cdbd2cSJim Jagielski get a sequence of <type>XIdlField</type> interfaces reflecting all fields 143*b1cdbd2cSJim Jagielski (/interface attributes). This also includes all inherited 144*b1cdbd2cSJim Jagielski fields (/interface attributes) of the interface, struct of union. 145*b1cdbd2cSJim Jagielski <br> 146*b1cdbd2cSJim Jagielski If the reflected type is not an interface, struct or union or the 147*b1cdbd2cSJim Jagielski interface, struct or union does not have any field (/interface attribute), 148*b1cdbd2cSJim Jagielski then an empty sequence is returned. 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski @return 151*b1cdbd2cSJim Jagielski all field (/interface attribute) reflections (or empty sequence) 152*b1cdbd2cSJim Jagielski */ 153*b1cdbd2cSJim Jagielski sequence<XIdlField> getFields(); 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski /** If the reflected type is an interface, then you get 156*b1cdbd2cSJim Jagielski a <type>XIdlMethod</type> interface reflecting the demanded method by name. 157*b1cdbd2cSJim Jagielski <br> 158*b1cdbd2cSJim Jagielski If the reflected type is not an interface or the interface does not have 159*b1cdbd2cSJim Jagielski a method with the demanded name (including inherited methods), 160*b1cdbd2cSJim Jagielski then a null-reference is returned. 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski @param aName 163*b1cdbd2cSJim Jagielski name of demanded method reflection 164*b1cdbd2cSJim Jagielski @return 165*b1cdbd2cSJim Jagielski demanded method reflection (or null-reference) 166*b1cdbd2cSJim Jagielski */ 167*b1cdbd2cSJim Jagielski XIdlMethod getMethod( [in] string aName ); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski /** If the reflected type is an interface, then you get 170*b1cdbd2cSJim Jagielski a sequence of <type>XIdlMethod</type> interfaces reflecting all methods 171*b1cdbd2cSJim Jagielski of the interface. This also includes the inherited methods of the interface. 172*b1cdbd2cSJim Jagielski <br> 173*b1cdbd2cSJim Jagielski If the reflected type is not an interface or the interface 174*b1cdbd2cSJim Jagielski does not have any methods, then a null-reference is returned. 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski @return 177*b1cdbd2cSJim Jagielski all method reflections (or empty sequence) 178*b1cdbd2cSJim Jagielski */ 179*b1cdbd2cSJim Jagielski sequence<XIdlMethod> getMethods(); 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski /** If the reflected type is an array, then you get 182*b1cdbd2cSJim Jagielski a <type>XIdlArray</type> interface to modify instances of the array type. 183*b1cdbd2cSJim Jagielski <br> 184*b1cdbd2cSJim Jagielski If the reflected type is not an array, then a null-reference is returned. 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski @return 187*b1cdbd2cSJim Jagielski inteface to modify array instances (or null-reference) 188*b1cdbd2cSJim Jagielski */ 189*b1cdbd2cSJim Jagielski XIdlArray getArray(); 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski /** This method creates instances of the reflected type. 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski @attention 194*b1cdbd2cSJim Jagielski Instances of type <code>any</code> can not be passed using an <code>any</code>, because 195*b1cdbd2cSJim Jagielski anys cannot be nested. So if the reflected type is an <code>any</code>, then the 196*b1cdbd2cSJim Jagielski returned value is empty. 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski @param obj 199*b1cdbd2cSJim Jagielski pure out parameter to pass the created instance 200*b1cdbd2cSJim Jagielski */ 201*b1cdbd2cSJim Jagielski void createObject( [out] any obj ); 202*b1cdbd2cSJim Jagielski}; 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski//============================================================================= 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski}; }; }; }; 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski/*============================================================================= 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski=============================================================================*/ 211*b1cdbd2cSJim Jagielski#endif 212