UDK 3.2.7 C/C++ API Reference
cppuhelper/implbase_ex.hxx
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /*************************************************************************
00003  *
00004  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
00005  *
00006  * Copyright 2000, 2010 Oracle and/or its affiliates.
00007  *
00008  * OpenOffice.org - a multi-platform office productivity suite
00009  *
00010  * This file is part of OpenOffice.org.
00011  *
00012  * OpenOffice.org is free software: you can redistribute it and/or modify
00013  * it under the terms of the GNU Lesser General Public License version 3
00014  * only, as published by the Free Software Foundation.
00015  *
00016  * OpenOffice.org is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU Lesser General Public License version 3 for more details
00020  * (a copy is included in the LICENSE file that accompanied this code).
00021  *
00022  * You should have received a copy of the GNU Lesser General Public License
00023  * version 3 along with OpenOffice.org.  If not, see
00024  * <http://www.openoffice.org/license.html>
00025  * for a copy of the LGPLv3 License.
00026  *
00027  ************************************************************************/
00028 #ifndef _CPPUHELPER_IMPLBASE_EX_HXX_
00029 #define _CPPUHELPER_IMPLBASE_EX_HXX_
00030 
00031 #include <cppuhelper/weak.hxx>
00032 #include <cppuhelper/weakagg.hxx>
00033 #include <com/sun/star/lang/XTypeProvider.hpp>
00034 
00035 // Despite the fact that the following include is not used in this header, it has to remain,
00036 // because it is expected by files including cppuhelper/implbaseN.hxx.
00037 // So maybe we can omit it some time in the future...
00038 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
00039 
00040 /* If you need to define implementation helper classes that deal with more than
00041    12 interfaces, then use macros as follows, e.g. for 3 interfaces:
00042 
00043 #include <cppuhelper/implbase_ex_pre.hxx>
00044 #define __IFC_EX_TYPE_INIT3( class_cast ) \
00045     __IFC_EX_TYPE_INIT( class_cast, 1 ), __IFC_EX_TYPE_INIT( class_cast, 2 ), \
00046     __IFC_EX_TYPE_INIT( class_cast, 3 )
00047 #include <cppuhelper/implbase_ex_post.hxx>
00048 __DEF_IMPLHELPER_EX( 3 )
00049 */
00050 
00052 
00053 namespace cppu
00054 {
00055 
00058 typedef ::com::sun::star::uno::Type const & (SAL_CALL * fptr_getCppuType)( void * ) SAL_THROW(());
00059 
00062 struct type_entry
00063 {
00068     union
00069     {
00070         fptr_getCppuType getCppuType;
00071         typelib_TypeDescriptionReference * typeRef;
00072     } m_type;
00075     sal_IntPtr m_offset;
00076 };
00077 
00080 struct class_data
00081 {
00084     sal_Int16 m_nTypes;
00085 
00088     sal_Bool m_storedTypeRefs;
00089 
00092     sal_Bool m_createdId;
00093 
00096     sal_Int8 m_id[ 16 ];
00097 
00100     type_entry m_typeEntries[ 1 ];
00101 };
00102 
00105 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Any SAL_CALL ImplHelper_query(
00106     ::com::sun::star::uno::Type const & rType,
00107     class_data * cd,
00108     void * that )
00109     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00112 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Any SAL_CALL ImplHelper_queryNoXInterface(
00113     ::com::sun::star::uno::Type const & rType,
00114     class_data * cd,
00115     void * that )
00116     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00119 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >
00120 SAL_CALL ImplHelper_getTypes(
00121     class_data * cd )
00122     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00125 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >
00126 SAL_CALL ImplInhHelper_getTypes(
00127     class_data * cd,
00128     ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > const & rAddTypes )
00129     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00132 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Sequence< sal_Int8 >
00133 SAL_CALL ImplHelper_getImplementationId(
00134     class_data * cd )
00135     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00136 
00139 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Any SAL_CALL WeakImplHelper_query(
00140     ::com::sun::star::uno::Type const & rType,
00141     class_data * cd,
00142     void * that,
00143     ::cppu::OWeakObject * pBase )
00144     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00147 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >
00148 SAL_CALL WeakImplHelper_getTypes(
00149     class_data * cd )
00150     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00151 
00154 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Any
00155 SAL_CALL WeakAggImplHelper_queryAgg(
00156     ::com::sun::star::uno::Type const & rType,
00157     class_data * cd,
00158     void * that,
00159     ::cppu::OWeakAggObject * pBase )
00160     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00163 CPPUHELPER_DLLPUBLIC ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type >
00164 SAL_CALL WeakAggImplHelper_getTypes(
00165     class_data * cd )
00166     SAL_THROW( (::com::sun::star::uno::RuntimeException) );
00167 
00168 }
00169 
00171 
00172 #endif
00173 
00174 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines