00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 00002 /* 00003 * This file is part of the LibreOffice project. 00004 * 00005 * This Source Code Form is subject to the terms of the Mozilla Public 00006 * License, v. 2.0. If a copy of the MPL was not distributed with this 00007 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 00008 * 00009 * This file incorporates work covered by the following license notice: 00010 * 00011 * Licensed to the Apache Software Foundation (ASF) under one or more 00012 * contributor license agreements. See the NOTICE file distributed 00013 * with this work for additional information regarding copyright 00014 * ownership. The ASF licenses this file to you under the Apache 00015 * License, Version 2.0 (the "License"); you may not use this file 00016 * except in compliance with the License. You may obtain a copy of 00017 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 00018 */ 00019 #ifndef _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_ 00020 #define _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_ 00021 00022 #include <cppuhelper/factory.hxx> 00023 #include "cppuhelperdllapi.h" 00024 00025 // MinGW wants it the one way around while MSVC wants it the other (cf. 00026 // <sourceforge.net/support/tracker.php?aid=3514133> "Syntactic __cdecl 00027 // incompatibility with MSVC"; and everywhere else, SAL_CALL is empty, so 00028 // doesn't matter): 00029 #if defined __GNUC__ 00030 #define MY_FN_PTR(name) SAL_CALL (* name) 00031 #else 00032 #define MY_FN_PTR(name) (SAL_CALL * name) 00033 #endif 00034 00035 namespace cppu 00036 { 00040 struct ImplementationEntry 00041 { 00044 ComponentFactoryFunc create; 00045 00049 rtl::OUString MY_FN_PTR( getImplementationName )(); 00050 00054 com::sun::star::uno::Sequence< rtl::OUString > MY_FN_PTR( getSupportedServiceNames ) (); 00055 00058 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleComponentFactory > 00059 MY_FN_PTR( createFactory )( 00060 ComponentFactoryFunc fptr, 00061 ::rtl::OUString const & rImplementationName, 00062 ::com::sun::star::uno::Sequence< ::rtl::OUString > const & rServiceNames, 00063 rtl_ModuleCount * pModCount ); 00064 00068 rtl_ModuleCount * moduleCounter; 00069 00073 sal_Int32 nFlags; 00074 }; 00075 00090 CPPUHELPER_DLLPUBLIC sal_Bool component_writeInfoHelper( 00091 void *pServiceManager, void *pRegistryKey , const struct ImplementationEntry entries[] ); 00092 00109 CPPUHELPER_DLLPUBLIC void *component_getFactoryHelper( 00110 const sal_Char * pImplName, 00111 void * pServiceManager, 00112 void * pRegistryKey, 00113 const struct ImplementationEntry entries[] ); 00114 00115 } 00116 #endif 00117 00118 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */