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_THREADHELP_THREADHELPBASE_HXX_ 29 #define __FRAMEWORK_THREADHELP_THREADHELPBASE_HXX_ 30 31 //_________________________________________________________________________________________________________________ 32 // my own includes 33 //_________________________________________________________________________________________________________________ 34 35 #include <threadhelp/lockhelper.hxx> 36 37 //_________________________________________________________________________________________________________________ 38 // interface includes 39 //_________________________________________________________________________________________________________________ 40 41 //_________________________________________________________________________________________________________________ 42 // other includes 43 //_________________________________________________________________________________________________________________ 44 45 //_________________________________________________________________________________________________________________ 46 // namespace 47 //_________________________________________________________________________________________________________________ 48 49 namespace framework{ 50 51 //_________________________________________________________________________________________________________________ 52 // const 53 //_________________________________________________________________________________________________________________ 54 55 //_________________________________________________________________________________________________________________ 56 // declarations 57 //_________________________________________________________________________________________________________________ 58 59 /*-************************************************************************************************************//** 60 @short "baseclass" to make own classes threadsafe 61 @descr Sometimes you must share your lock- or mutex member with any other baseclasses. 62 And baseclasses are initialized erlier then members! That's why you should use 63 this struct as first of your baseclasses!!! 64 Then you will get a public member "m_aLock" which can be used by special guard implementations 65 to make your code threadsafe. 66 67 @seealso class LockHelper 68 69 @implements - 70 @base - 71 72 @devstatus ready to use 73 *//*-*************************************************************************************************************/ 74 struct ThreadHelpBase 75 { 76 //------------------------------------------------------------------------------------------------------------- 77 // public methods 78 //------------------------------------------------------------------------------------------------------------- 79 public: 80 ThreadHelpBase( ::vos::IMutex* pSolarMutex = NULL ) 81 : m_aLock( pSolarMutex ) 82 { 83 } 84 85 //------------------------------------------------------------------------------------------------------------- 86 // public member 87 // Make it mutable for using in const functions! 88 //------------------------------------------------------------------------------------------------------------- 89 public: 90 91 mutable LockHelper m_aLock; 92 }; 93 94 } // namespace framework 95 96 #endif // #ifndef __FRAMEWORK_THREADHELP_THREADHELPBASE_HXX_ 97