/************************************************************** * * 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 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the 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