/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #ifndef __com_sun_star_reflection_TypeDescriptionManager_idl__ #define __com_sun_star_reflection_TypeDescriptionManager_idl__ #include #include #include #include #include module com { module sun { module star { module reflection { /** This service manages type descriptions and acts as a central access point to every type description. It delegates calls for demanded types to subsequent com::sun::star::reflection::TypeDescriptionProviders and may cache type descriptions.
Using cppuhelper's bootstrapping routines bootstrapping an initial component context, there is a singleton accessible via key "/singletons/com.sun.star.reflection.theTypeDescriptionManager". This singleton object is hooked into the C UNO runtime typelib and lives until the context is shut down.
@see com::sun::star::reflection::TypeDescriptionProvider @see com::sun::star::reflection::XTypeDescription */ published service TypeDescriptionManager { /** Interface to retrieve type descriptions. In addition to the semantics specified for the corresponding interface of the TypeDescriptionProvider service (which changed slightly for LibreOffice 4.1; see there), this interface allows to retrieve the following entities:
  • The simple types are accessible via "void", "boolean", "byte", "short", "unsigned short", "long", "unsigned long", "hyper", "unsigned hyper", "float", "double", "char", "string", "type", and "any".
  • Sequence types are accessible via "[]ComponentType"
  • Instantiated polymorphic struct types are accessible via "StructType<Parameter1,…,Parametern>".
  • Members of interface types are accessible via "InterfaceType::Member".

Even though the name of this interface suggests that the used type names are hierarchical, this doesn't need to be the case. (For example, consider the names of instantiated polymorphic struct types, like "Struct<long>".)

*/ interface com::sun::star::container::XHierarchicalNameAccess; /** You can manually add or remove a providers via this interface. */ interface com::sun::star::container::XSet; /** Interface to signal shutdown to the manager.
This signals all providers to shut down, because usually each provider references its manager, listening for disposing events. */ [optional] interface com::sun::star::lang::XComponent; /** Interface for creating enumerations for type descriptions supported by this TypeDescriptionManager @since OOo 1.1.2 */ [optional] interface XTypeDescriptionEnumerationAccess; }; }; }; }; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */