1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef __FRAMEWORK_MACROS_DEBUG_MUTEX_HXX_ 29 #define __FRAMEWORK_MACROS_DEBUG_MUTEX_HXX_ 30 31 //***************************************************************************************************************** 32 // special macros for mutex handling 33 //***************************************************************************************************************** 34 35 #ifdef ENABLE_MUTEXDEBUG 36 37 //_____________________________________________________________________________________________________________ 38 // includes 39 //_____________________________________________________________________________________________________________ 40 41 #ifndef _RTL_STRBUF_HXX_ 42 #include <rtl/strbuf.hxx> 43 #endif 44 45 /*_____________________________________________________________________________________________________________ 46 LOGFILE_MUTEX 47 48 For follow macros we need a special log file. If user forget to specify anyone, we must do it for him! 49 _____________________________________________________________________________________________________________*/ 50 51 #ifndef LOGFILE_MUTEX 52 #define LOGFILE_MUTEX "mutex.log" 53 #endif 54 55 /*_____________________________________________________________________________________________________________ 56 LOG_LOCKTYPE( _EFALLBACK, _ECURRENT ) 57 58 Write informations about current set lock type for whole framework project to special file. 59 _____________________________________________________________________________________________________________*/ 60 61 #define LOG_LOCKTYPE( _EFALLBACK, _ECURRENT ) \ 62 /* new scope to prevent us against multiple definitions of variables ... */ \ 63 { \ 64 ::rtl::OStringBuffer _sBuffer( 256 ); \ 65 _sBuffer.append( "Set framework lock type to fallback: \"" ); \ 66 switch( _EFALLBACK ) \ 67 { \ 68 case E_NOTHING : _sBuffer.append( "E_NOTHING" ); \ 69 break; \ 70 case E_OWNMUTEX : _sBuffer.append( "E_OWNMUTEX" ); \ 71 break; \ 72 case E_SOLARMUTEX : _sBuffer.append( "E_SOLARMUTEX" ); \ 73 break; \ 74 case E_FAIRRWLOCK : _sBuffer.append( "E_FAIRRWLOCK" ); \ 75 break; \ 76 } \ 77 _sBuffer.append( "\"\n" ); \ 78 if( _EFALLBACK != _ECURRENT ) \ 79 { \ 80 _sBuffer.append( "... environment overwrite framework lock type with: \"" ); \ 81 switch( _ECURRENT ) \ 82 { \ 83 case E_NOTHING : _sBuffer.append( "E_NOTHING" ); \ 84 break; \ 85 case E_OWNMUTEX : _sBuffer.append( "E_OWNMUTEX" ); \ 86 break; \ 87 case E_SOLARMUTEX : _sBuffer.append( "E_SOLARMUTEX" ); \ 88 break; \ 89 case E_FAIRRWLOCK : _sBuffer.append( "E_FAIRRWLOCK" ); \ 90 break; \ 91 } \ 92 _sBuffer.append( "\"\n" ); \ 93 } \ 94 else \ 95 { \ 96 _sBuffer.append( "... use fallback, because user don't set another value!\n" ); \ 97 } \ 98 WRITE_LOGFILE( LOGFILE_MUTEX, _sBuffer.makeStringAndClear() ) \ 99 } 100 101 #else // #ifdef ENABLE_MUTEXDEBUG 102 103 /*_____________________________________________________________________________________________________________ 104 If right testmode is'nt set - implements these macro with normal functionality! 105 We need the guard but not the log mechanism. 106 _____________________________________________________________________________________________________________*/ 107 108 #undef LOGFILE_MUTEX 109 #define LOG_LOCKTYPE( _EFALLBACK, _ECURRENT ) 110 111 #endif // #ifdef ENABLE_MUTEXDEBUG 112 113 //***************************************************************************************************************** 114 // end of file 115 //***************************************************************************************************************** 116 117 #endif // #ifndef __FRAMEWORK_MACROS_DEBUG_MUTEX_HXX_ 118