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