| /************************************************************** |
| * |
| * 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_XStructTypeDescription_idl__ |
| #define __com_sun_star_reflection_XStructTypeDescription_idl__ |
| |
| #include "com/sun/star/reflection/XCompoundTypeDescription.idl" |
| |
| module com { module sun { module star { module reflection { |
| |
| interface XTypeDescription; |
| |
| /** |
| Reflects a struct type, supporting polymorphic struct types. |
| |
| <p>This type supersedes <type>XCompoundTypeDescription</type>, which only |
| supports plain struct types.</p> |
| |
| <p>This type is used to reflect all of the following:</p> |
| <ul> |
| <li>Polymorphic struct type templates, like |
| <code>Struct<T, U></code>. For these, |
| <member scope="com::sun::star::reflection"><!-- |
| -->XStructTypeDescription::getTypeParameters</member> returns a non-empty |
| sequence, while <member scope="com::sun::star::reflection"><!-- |
| -->XStructTypeDescription::getTypeArguments</member> returns an empty |
| sequence.</li> |
| |
| <li>Instantiated polymorphic struct types, like <code>Struct<long, |
| hyper></code>. For these, |
| <member scope="com::sun::star::reflection"><!-- |
| -->XStructTypeDescription::getTypeParameters</member> returns an empty |
| sequence, while <member scope="com::sun::star::reflection"><!-- |
| -->XStructTypeDescription::getTypeArguments</member> returns a non-empty |
| sequence.</li> |
| |
| <li>Plain struct types. For these, both |
| <member scope="com::sun::star::reflection"><!-- |
| -->XStructTypeDescription::getTypeParameters</member> and |
| <member scope="com::sun::star::reflection"><!-- |
| -->XStructTypeDescription::getTypeArguments</member> return an empty |
| sequence.</li> |
| </ul> |
| |
| @since OpenOffice 2.0 |
| */ |
| interface XStructTypeDescription: XCompoundTypeDescription { |
| /** |
| Returns the type parameters of a polymorphic struct type template. |
| |
| @return a sequence of the names of all type parameters, in the correct |
| order; for a plain struct type, or an instantiated polymorphic struct |
| type, an empty sequence is returned |
| */ |
| sequence<string> getTypeParameters(); |
| |
| /** |
| Returns the type arguments of an instantiated polymorphic struct type. |
| |
| @return a sequence of all type arguments, in the correct order; for a |
| plain struct type, or a polymorphic struct type template, an empty |
| sequence is returned |
| */ |
| sequence<XTypeDescription> getTypeArguments(); |
| }; |
| |
| }; }; }; }; |
| |
| #endif |