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 24*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_reflection_XTypeDescriptionEnumerationAccess_idl__ 25*b1cdbd2cSJim Jagielski#define __com_sun_star_reflection_XTypeDescriptionEnumerationAccess_idl__ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__ 28*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl> 29*b1cdbd2cSJim Jagielski#endif 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#ifndef __com_sun_star_reflection_XTypeDescriptionEnumeration_idl__ 34*b1cdbd2cSJim Jagielski#include <com/sun/star/reflection/XTypeDescriptionEnumeration.idl> 35*b1cdbd2cSJim Jagielski#endif 36*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_reflection_TypeDescriptionSearchDepth_idl__ 37*b1cdbd2cSJim Jagielski#include <com/sun/star/reflection/TypeDescriptionSearchDepth.idl> 38*b1cdbd2cSJim Jagielski#endif 39*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_reflection_NoSuchTypeNameException_idl__ 40*b1cdbd2cSJim Jagielski#include <com/sun/star/reflection/NoSuchTypeNameException.idl> 41*b1cdbd2cSJim Jagielski#endif 42*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_reflection_InvalidTypeNameException_idl__ 43*b1cdbd2cSJim Jagielski#include <com/sun/star/reflection/InvalidTypeNameException.idl> 44*b1cdbd2cSJim Jagielski#endif 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski//============================================================================= 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski module com { module sun { module star { module reflection { 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski//============================================================================= 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski/** Defines an interface for creating enumerations for type descriptions. 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski @since OpenOffice 1.1.2 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski */ 57*b1cdbd2cSJim Jagielskipublished interface XTypeDescriptionEnumerationAccess : com::sun::star::uno::XInterface 58*b1cdbd2cSJim Jagielski{ 59*b1cdbd2cSJim Jagielski /** Creates an enumeration for type descriptions. 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski <p>An enumeration is always created for an UNOIDL module. The 62*b1cdbd2cSJim Jagielski enumeration contents can be restricted by specifying type classes. 63*b1cdbd2cSJim Jagielski Only types that match one of the supplied type classes will be part of 64*b1cdbd2cSJim Jagielski the collection. Additionally, it is possible to specify the depth 65*b1cdbd2cSJim Jagielski for the search within the underlying type description tree. 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski @param moduleName 68*b1cdbd2cSJim Jagielski contains the name of an UNOIDL module. Modules are seperated by a 69*b1cdbd2cSJim Jagielski single '.' (i.e., "com.sun.star.reflection"). The root of the module 70*b1cdbd2cSJim Jagielski hierarchy is specified with an empty string. Module names are always 71*b1cdbd2cSJim Jagielski absolute, never relative. 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski @param types 74*b1cdbd2cSJim Jagielski restricts the contents of the enumeration. It will only contain 75*b1cdbd2cSJim Jagielski type descriptions that match one of the supplied type classes. An 76*b1cdbd2cSJim Jagielski empty sequence specifies that the enumeration shall contain all 77*b1cdbd2cSJim Jagielski type descriptions. 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski <p>Valid types classes are: 80*b1cdbd2cSJim Jagielski <ul> 81*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::MODULE</member> 82*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::INTERFACE</member> 83*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::SERVICE</member> 84*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::STRUCT</member> 85*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::ENUM</member> 86*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::EXCEPTION</member> 87*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::TYPEDEF</member> 88*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::CONSTANT</member> 89*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::CONSTANTS</member> 90*b1cdbd2cSJim Jagielski <li><member scope="com::sun::star::uno">TypeClass::SINGLETON</member> 91*b1cdbd2cSJim Jagielski </ul> 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski @param depth 94*b1cdbd2cSJim Jagielski specifies the depth of search in the underlying tree of type 95*b1cdbd2cSJim Jagielski descriptions. Clients should be aware of the fact that specifiying 96*b1cdbd2cSJim Jagielski <member>TypeDescriptionSearchDepth::INFINITE</member> can lead to 97*b1cdbd2cSJim Jagielski larger delays when constructing or using the 98*b1cdbd2cSJim Jagielski <type>XTypeDescriptionEnumeration</type> instance. 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski @returns 101*b1cdbd2cSJim Jagielski an enumeration of type descriptions. 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski <p>The enumeration returns implementations of 104*b1cdbd2cSJim Jagielski <type>XTypeDescription</type>. Following concrete UNOIDL parts 105*b1cdbd2cSJim Jagielski represented by specialized interfaces derived from 106*b1cdbd2cSJim Jagielski <type>XTypeDescription</type> can be returned by the enumerator: 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski <table border="1"> 109*b1cdbd2cSJim Jagielski <thead><tr><th>IDL</th><th>interface</th></tr></thead> 110*b1cdbd2cSJim Jagielski <tbody> 111*b1cdbd2cSJim Jagielski <tr> 112*b1cdbd2cSJim Jagielski <td>enum</td> 113*b1cdbd2cSJim Jagielski <td><type>XEnumTypeDescription</type></td> 114*b1cdbd2cSJim Jagielski </tr> 115*b1cdbd2cSJim Jagielski <tr> 116*b1cdbd2cSJim Jagielski <td>struct</td> 117*b1cdbd2cSJim Jagielski <td><type>XCompoundTypeDescription</type> (the returned 118*b1cdbd2cSJim Jagielski object should actually implement 119*b1cdbd2cSJim Jagielski <type>XStructTypeDescription</type>)</td> 120*b1cdbd2cSJim Jagielski </tr> 121*b1cdbd2cSJim Jagielski <tr> 122*b1cdbd2cSJim Jagielski <td>exception</td> 123*b1cdbd2cSJim Jagielski <td><type>XCompoundTypeDescription</type></td> 124*b1cdbd2cSJim Jagielski </tr> 125*b1cdbd2cSJim Jagielski <tr> 126*b1cdbd2cSJim Jagielski <td>interface</td> 127*b1cdbd2cSJim Jagielski <td><type>XInterfaceTypeDescription</type> (the returned 128*b1cdbd2cSJim Jagielski object should actually implement 129*b1cdbd2cSJim Jagielski <type>XInterfaceTypeDescription2</type>)</td> 130*b1cdbd2cSJim Jagielski </tr> 131*b1cdbd2cSJim Jagielski <tr> 132*b1cdbd2cSJim Jagielski <td>service</td> 133*b1cdbd2cSJim Jagielski <td><type>XServiceTypeDescription</type> (the returned 134*b1cdbd2cSJim Jagielski object should actually implement 135*b1cdbd2cSJim Jagielski <type>XServiceTypeDescription2</type>)</td> 136*b1cdbd2cSJim Jagielski </tr> 137*b1cdbd2cSJim Jagielski <tr> 138*b1cdbd2cSJim Jagielski <td>singleton</td> 139*b1cdbd2cSJim Jagielski <td><type>XSingletonTypeDescription</type> (the returned 140*b1cdbd2cSJim Jagielski object should actually implement 141*b1cdbd2cSJim Jagielski <type>XSingletonTypeDescription2</type>)</td> 142*b1cdbd2cSJim Jagielski </tr> 143*b1cdbd2cSJim Jagielski <tr> 144*b1cdbd2cSJim Jagielski <td>module</td> 145*b1cdbd2cSJim Jagielski <td><type>XModuleTypeDescription</type></td> 146*b1cdbd2cSJim Jagielski </tr> 147*b1cdbd2cSJim Jagielski <tr> 148*b1cdbd2cSJim Jagielski <td>typedef</td> 149*b1cdbd2cSJim Jagielski <td><type>XIndirectTypeDescription</type></td> 150*b1cdbd2cSJim Jagielski </tr> 151*b1cdbd2cSJim Jagielski <tr> 152*b1cdbd2cSJim Jagielski <td>constant</td> 153*b1cdbd2cSJim Jagielski <td><type>XConstantTypeDescription</type></td> 154*b1cdbd2cSJim Jagielski </tr> 155*b1cdbd2cSJim Jagielski <tr> 156*b1cdbd2cSJim Jagielski <td>constants</td> 157*b1cdbd2cSJim Jagielski <td><type>XConstantsTypeDescription</type></td> 158*b1cdbd2cSJim Jagielski </tr> 159*b1cdbd2cSJim Jagielski </tbody> 160*b1cdbd2cSJim Jagielski </table> 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski @throws NoSuchTypeNameException 163*b1cdbd2cSJim Jagielski in case that the given module name does not exist. This exception 164*b1cdbd2cSJim Jagielski will never be thrown in case moduleName is the empty string. 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski @throws InvalidTypeNameException 167*b1cdbd2cSJim Jagielski in case that the given module name does exist, but does not specify 168*b1cdbd2cSJim Jagielski an UNOIDL module. This exception will never be thrown in case 169*b1cdbd2cSJim Jagielski moduleName is the empty string. 170*b1cdbd2cSJim Jagielski */ 171*b1cdbd2cSJim Jagielski XTypeDescriptionEnumeration 172*b1cdbd2cSJim Jagielski createTypeDescriptionEnumeration( 173*b1cdbd2cSJim Jagielski [in] string moduleName, 174*b1cdbd2cSJim Jagielski [in] sequence< com::sun::star::uno::TypeClass > types, 175*b1cdbd2cSJim Jagielski [in] TypeDescriptionSearchDepth depth ) 176*b1cdbd2cSJim Jagielski raises( NoSuchTypeNameException, InvalidTypeNameException ); 177*b1cdbd2cSJim Jagielski}; 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski//============================================================================= 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski}; }; }; }; 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski#endif 184