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 package com.sun.star.uno; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski /** 27*b1cdbd2cSJim Jagielski * The <code>ITypeDescription</code> allows to examine a type 28*b1cdbd2cSJim Jagielski * in detail (e.g. it is used for marshaling/unmarshaling). 29*b1cdbd2cSJim Jagielski * 30*b1cdbd2cSJim Jagielski * @deprecated This interface does not cover all the features supported by the 31*b1cdbd2cSJim Jagielski * corresponding (unpublished) implementation. But no client code should need 32*b1cdbd2cSJim Jagielski * to access this functionality, anyway. 33*b1cdbd2cSJim Jagielski */ 34*b1cdbd2cSJim Jagielski public interface ITypeDescription { 35*b1cdbd2cSJim Jagielski /** 36*b1cdbd2cSJim Jagielski * Gets the <code>ITypeDescription</code> of the 37*b1cdbd2cSJim Jagielski * super, if it exists. 38*b1cdbd2cSJim Jagielski * <p> 39*b1cdbd2cSJim Jagielski * @return the <code>ITypeDescription</code>. 40*b1cdbd2cSJim Jagielski */ getSuperType()41*b1cdbd2cSJim Jagielski ITypeDescription getSuperType(); 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski /** 44*b1cdbd2cSJim Jagielski * Gets the <code>IMethodDescription</code> for every 45*b1cdbd2cSJim Jagielski * method, if this type is an interface. Otherwise 46*b1cdbd2cSJim Jagielski * returns <code>null</code>. 47*b1cdbd2cSJim Jagielski * <p> 48*b1cdbd2cSJim Jagielski * @return the <code>IMethodDescription[]</code>. 49*b1cdbd2cSJim Jagielski */ getMethodDescriptions()50*b1cdbd2cSJim Jagielski IMethodDescription []getMethodDescriptions(); 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski /** 53*b1cdbd2cSJim Jagielski * Gets the <code>IMethodDescription</code> for the 54*b1cdbd2cSJim Jagielski * method with index methodId, if it exists, otherwise 55*b1cdbd2cSJim Jagielski * returns <code>null</code>. 56*b1cdbd2cSJim Jagielski * <p> 57*b1cdbd2cSJim Jagielski * @return the <code>IMethodDescription</code>. 58*b1cdbd2cSJim Jagielski */ getMethodDescription(int methodId)59*b1cdbd2cSJim Jagielski IMethodDescription getMethodDescription(int methodId); 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski /** 62*b1cdbd2cSJim Jagielski * Gets the <code>IMethodDescription</code> for the 63*b1cdbd2cSJim Jagielski * method with the name <code>name</code>, if it exists, 64*b1cdbd2cSJim Jagielski * otherwise returns <code>null</code>. 65*b1cdbd2cSJim Jagielski * <p> 66*b1cdbd2cSJim Jagielski * @return the <code>IMethodDescription</code>. 67*b1cdbd2cSJim Jagielski */ getMethodDescription(String name)68*b1cdbd2cSJim Jagielski IMethodDescription getMethodDescription(String name); 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski /** 71*b1cdbd2cSJim Jagielski * Gets the <code>IFieldDescription</code> for every 72*b1cdbd2cSJim Jagielski * field, if this type is an interface. Otherwise 73*b1cdbd2cSJim Jagielski * returns <code>null</code>. 74*b1cdbd2cSJim Jagielski * <p> 75*b1cdbd2cSJim Jagielski * @return the <code>IFieldDescription[]</code>. 76*b1cdbd2cSJim Jagielski */ getFieldDescriptions()77*b1cdbd2cSJim Jagielski IFieldDescription []getFieldDescriptions(); 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski /** 80*b1cdbd2cSJim Jagielski * Gets the <code>IFieldDescription</code> for the 81*b1cdbd2cSJim Jagielski * field with the name <code>name</code>, if it exists, 82*b1cdbd2cSJim Jagielski * otherwise returns <code>null</code>. 83*b1cdbd2cSJim Jagielski * <p> 84*b1cdbd2cSJim Jagielski * @return the <code>IFieldDescription</code>. 85*b1cdbd2cSJim Jagielski */ getFieldDescription(String name)86*b1cdbd2cSJim Jagielski IFieldDescription getFieldDescription(String name); 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski /** 89*b1cdbd2cSJim Jagielski * Gets the IDL <code>TypeClass</code> of the type. 90*b1cdbd2cSJim Jagielski * <p> 91*b1cdbd2cSJim Jagielski * @return the <code>TypeClass</code>. 92*b1cdbd2cSJim Jagielski */ getTypeClass()93*b1cdbd2cSJim Jagielski TypeClass getTypeClass(); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski /** 96*b1cdbd2cSJim Jagielski * Gets the component <code>ITypeDescription</code> if 97*b1cdbd2cSJim Jagielski * this is an array type, otherwise returns <code>null</code>. 98*b1cdbd2cSJim Jagielski * <p> 99*b1cdbd2cSJim Jagielski * @return the <code>ITypeDescription</code> 100*b1cdbd2cSJim Jagielski */ getComponentType()101*b1cdbd2cSJim Jagielski ITypeDescription getComponentType(); 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski /** 104*b1cdbd2cSJim Jagielski * Gets the (UNO) type name. 105*b1cdbd2cSJim Jagielski * 106*b1cdbd2cSJim Jagielski * <table> 107*b1cdbd2cSJim Jagielski * <caption>The following table lists how UNO types map to type names:</caption> 108*b1cdbd2cSJim Jagielski * <thead> 109*b1cdbd2cSJim Jagielski * <tr><th>UNO type</th><th>type name</th></tr> 110*b1cdbd2cSJim Jagielski * </thead> 111*b1cdbd2cSJim Jagielski * <tbody> 112*b1cdbd2cSJim Jagielski * <tr><td>VOID</td><td><code>"void"</code></td></tr> 113*b1cdbd2cSJim Jagielski * <tr><td>BOOLEAN</td><td><code>"boolean"</code></td></tr> 114*b1cdbd2cSJim Jagielski * <tr><td>CHAR</td><td><code>"char"</code></td></tr> 115*b1cdbd2cSJim Jagielski * <tr><td>BYTE</td><td><code>"byte"</code></td></tr> 116*b1cdbd2cSJim Jagielski * <tr><td>SHORT</td><td><code>"short"</code></td></tr> 117*b1cdbd2cSJim Jagielski * <tr> 118*b1cdbd2cSJim Jagielski * <td>UNSIGNED SHORT</td><td><code>"unsigned short"</code></td> 119*b1cdbd2cSJim Jagielski * </tr> 120*b1cdbd2cSJim Jagielski * <tr><td>LONG</td><td><code>"long"</code></td></tr> 121*b1cdbd2cSJim Jagielski * <tr><td>UNSIGNED LONG</td><td><code>"unsigned long"</code></td></tr> 122*b1cdbd2cSJim Jagielski * <tr><td>HYPER</td><td><code>"hyper"</code></td></tr> 123*b1cdbd2cSJim Jagielski * <tr> 124*b1cdbd2cSJim Jagielski * <td>UNSIGNED HYPER</td><td><code>"unsigned hyper"</code></td> 125*b1cdbd2cSJim Jagielski * </tr> 126*b1cdbd2cSJim Jagielski * <tr><td>FLOAT</td><td><code>"float"</code></td></tr> 127*b1cdbd2cSJim Jagielski * <tr><td>DOUBLE</td><td><code>"double"</code></td></tr> 128*b1cdbd2cSJim Jagielski * <tr><td>STRING</td><td><code>"string"</code></td></tr> 129*b1cdbd2cSJim Jagielski * <tr><td>TYPE</td><td><code>"type"</code></td></tr> 130*b1cdbd2cSJim Jagielski * <tr><td>ANY</td><td><code>"any"</code></td></tr> 131*b1cdbd2cSJim Jagielski * <tr> 132*b1cdbd2cSJim Jagielski * <td>sequence type of base type <var>T</var></td> 133*b1cdbd2cSJim Jagielski * <td><code>"[]"</code> followed by type name for <var>T</var></td> 134*b1cdbd2cSJim Jagielski * </tr> 135*b1cdbd2cSJim Jagielski * <tr> 136*b1cdbd2cSJim Jagielski * <td>enum type named <var>N</var></td> 137*b1cdbd2cSJim Jagielski * <td><var>N</var> (see below)</td> 138*b1cdbd2cSJim Jagielski * </tr> 139*b1cdbd2cSJim Jagielski * <tr> 140*b1cdbd2cSJim Jagielski * <td>struct type named <var>N</var></td> 141*b1cdbd2cSJim Jagielski * <td><var>N</var> (see below)</td> 142*b1cdbd2cSJim Jagielski * </tr> 143*b1cdbd2cSJim Jagielski * <tr> 144*b1cdbd2cSJim Jagielski * <td>exception type named <var>N</var> 145*b1cdbd2cSJim Jagielski * </td><td><var>N</var> (see below)</td> 146*b1cdbd2cSJim Jagielski * </tr> 147*b1cdbd2cSJim Jagielski * <tr> 148*b1cdbd2cSJim Jagielski * <td>interface type named <var>N</var></td> 149*b1cdbd2cSJim Jagielski * <td><var>N</var> (see below)</td> 150*b1cdbd2cSJim Jagielski * </tr> 151*b1cdbd2cSJim Jagielski * </tbody> 152*b1cdbd2cSJim Jagielski * </table> 153*b1cdbd2cSJim Jagielski * <p>For a UNO type named <var>N</var>, consisting of a sequence of module 154*b1cdbd2cSJim Jagielski * names <var>M<sub>1</sub></var>, ..., <var>M<sub>n</sub></var> followed by 155*b1cdbd2cSJim Jagielski * a simple name <var>S</var>, the corresponding type name consists of the 156*b1cdbd2cSJim Jagielski * same sequence of module names and simple name, with <code>"."</code> 157*b1cdbd2cSJim Jagielski * seperating the individual elements.</p> 158*b1cdbd2cSJim Jagielski * 159*b1cdbd2cSJim Jagielski * @return the type name. 160*b1cdbd2cSJim Jagielski */ getTypeName()161*b1cdbd2cSJim Jagielski String getTypeName(); 162*b1cdbd2cSJim Jagielski 163*b1cdbd2cSJim Jagielski /** 164*b1cdbd2cSJim Jagielski * Gets the (Java) array type name. 165*b1cdbd2cSJim Jagielski * 166*b1cdbd2cSJim Jagielski * <p>The array type name is defined to be the Java class name (as returned 167*b1cdbd2cSJim Jagielski * by <code>Class.forName</code>) of the Java array class that corresponds 168*b1cdbd2cSJim Jagielski * to the UNO sequence type with this type (the UNO type represented by this 169*b1cdbd2cSJim Jagielski * <code>ITypeDescription</code> instance) as base type. For an 170*b1cdbd2cSJim Jagielski * <code>ITypeDescription</code> instance representing the UNO type VOID, 171*b1cdbd2cSJim Jagielski * the array type name is defined to be 172*b1cdbd2cSJim Jagielski * <code>"[Ljava.lang.Void;"</code>.</p> 173*b1cdbd2cSJim Jagielski * 174*b1cdbd2cSJim Jagielski * @return the array type name. 175*b1cdbd2cSJim Jagielski */ getArrayTypeName()176*b1cdbd2cSJim Jagielski String getArrayTypeName(); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski /** 179*b1cdbd2cSJim Jagielski * Gets the corresponding java class for the type. 180*b1cdbd2cSJim Jagielski * <p> 181*b1cdbd2cSJim Jagielski * @return the corresponding java class. 182*b1cdbd2cSJim Jagielski */ getZClass()183*b1cdbd2cSJim Jagielski Class getZClass(); 184*b1cdbd2cSJim Jagielski } 185