ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/utils/Counter.hpp
Revision: 1492
Committed: Mon Aug 16 18:07:50 2010 UTC (14 years, 8 months ago) by chuckv
File size: 1758 byte(s)
Log Message:
Adding exception and reporting mechanism from ProtoMol to OpenMD.

File Contents

# User Rev Content
1 chuckv 1492 /*******************************************************************\
2    
3     Copyright (C) 2003 Joseph Coffland
4    
5     This program is free software; you can redistribute it and/or
6     modify it under the terms of the GNU General Public License
7     as published by the Free Software Foundation; either version 2
8     of the License, or (at your option) any later version.
9    
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13     GNU General Public License for more details.
14    
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18     02111-1307, USA.
19    
20     For information regarding this software email
21     jcofflan@users.sourceforge.net
22    
23     \*******************************************************************/
24    
25     #ifndef UTILS_COUNTER_H
26     #define UTILS_COUNTER_H
27    
28     namespace OpenMD {
29     /**
30     * This class is used by SmartPointer to count
31     * pointer references.
32     */
33     class Counter {
34     long count;
35    
36     public:
37     Counter(const Counter &counter) : count(counter.count) {}
38     Counter(const long initialCount) : count(initialCount) {}
39     Counter() : count(0) {}
40    
41     /**
42     * Increment.
43     */
44     void inc() {count++;}
45    
46     /**
47     * Decrement.
48     *
49     * @return true if count != 0, false otherwise
50     */
51     bool dec() {count--; return count != 0;}
52    
53     /**
54     * Get the current count.
55     *
56     * @return The count.
57     */
58     long getCount() const {return count;}
59     };
60     }
61     #endif