File indexing completed on 2024-04-28 05:42:10
0001 /* 0002 * Port for usage with qt-framework and development for kdesvn 0003 * Copyright (C) 2005-2009 by Rajko Albrecht (ral@alwins-world.de) 0004 * https://kde.org/applications/development/org.kde.kdesvn 0005 */ 0006 /* 0007 * ==================================================================== 0008 * Copyright (c) 2002-2005 The RapidSvn Group. All rights reserved. 0009 * dev@rapidsvn.tigris.org 0010 * 0011 * This library is free software; you can redistribute it and/or 0012 * modify it under the terms of the GNU Lesser General Public 0013 * License as published by the Free Software Foundation; either 0014 * version 2.1 of the License, or (at your option) any later version. 0015 * 0016 * This library is distributed in the hope that it will be useful, 0017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0019 * Lesser General Public License for more details. 0020 * 0021 * You should have received a copy of the GNU Lesser General Public 0022 * License along with this library (in the file LGPL.txt); if not, 0023 * write to the Free Software Foundation, Inc., 51 Franklin St, 0024 * Fifth Floor, Boston, MA 02110-1301 USA 0025 * 0026 * This software consists of voluntary contributions made by many 0027 * individuals. For exact contribution history, see the revision 0028 * history and logs, available at http://rapidsvn.tigris.org/. 0029 * ==================================================================== 0030 */ 0031 0032 #ifndef SVNQT_POOL_H 0033 #define SVNQT_POOL_H 0034 0035 // subversion api 0036 #include <svn_pools.h> 0037 0038 namespace svn 0039 { 0040 /** 0041 * Class for encapsulation of apr/subversion pools 0042 */ 0043 class Pool 0044 { 0045 public: 0046 /** 0047 * creates a subpool new pool to an existing pool 0048 * 0049 * @param parent NULL -> global pool 0050 */ 0051 explicit Pool(apr_pool_t *parent = nullptr); 0052 Pool &operator=(const Pool &) = delete; 0053 Pool(const Pool &) = delete; 0054 0055 ~Pool(); 0056 0057 /** 0058 * @return apr handle to the pool 0059 */ 0060 apr_pool_t *pool() const; 0061 0062 /** 0063 * operator to return apr handle to the pool 0064 */ 0065 operator apr_pool_t *() const 0066 { 0067 return m_pool; 0068 } 0069 0070 /** 0071 * release pool and create a new one 0072 */ 0073 void renew(); 0074 0075 private: 0076 apr_pool_t *m_parent; 0077 apr_pool_t *m_pool; 0078 0079 static bool s_initialized; 0080 static apr_pool_t *pool_create(apr_pool_t *parent); 0081 }; 0082 } 0083 0084 #endif 0085 0086 /* ----------------------------------------------------------------- 0087 * local variables: 0088 * eval: (load-file "../../rapidsvn-dev.el") 0089 * end: 0090 */