Simbody  3.5
AtomicInteger.h
Go to the documentation of this file.
1 #ifndef SimTK_SimTKCOMMON_ATOMIC_INTEGER_H_
2 #define SimTK_SimTKCOMMON_ATOMIC_INTEGER_H_
3 
4 /* -------------------------------------------------------------------------- *
5  * Simbody(tm): SimTKcommon *
6  * -------------------------------------------------------------------------- *
7  * This is part of the SimTK biosimulation toolkit originating from *
8  * Simbios, the NIH National Center for Physics-Based Simulation of *
9  * Biological Structures at Stanford, funded under the NIH Roadmap for *
10  * Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody. *
11  * *
12  * Portions copyright (c) 2008-12 Stanford University and the Authors. *
13  * Authors: Peter Eastman *
14  * Contributors: *
15  * *
16  * Licensed under the Apache License, Version 2.0 (the "License"); you may *
17  * not use this file except in compliance with the License. You may obtain a *
18  * copy of the License at http://www.apache.org/licenses/LICENSE-2.0. *
19  * *
20  * Unless required by applicable law or agreed to in writing, software *
21  * distributed under the License is distributed on an "AS IS" BASIS, *
22  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
23  * See the License for the specific language governing permissions and *
24  * limitations under the License. *
25  * -------------------------------------------------------------------------- */
26 
28 
29 namespace SimTK {
30 
45 public:
46  AtomicInteger();
47  AtomicInteger(int value);
48  ~AtomicInteger();
49  AtomicInteger& operator=(int value);
50  operator int() const;
51  int operator++();
52  int operator++(int);
53  int operator--();
54  int operator--(int);
55  AtomicInteger& operator+=(int value);
56  AtomicInteger& operator-=(int value);
57  AtomicInteger& operator*=(int value);
58  AtomicInteger& operator/=(int value);
59  AtomicInteger& operator%=(int value);
60  AtomicInteger& operator&=(int value);
61  AtomicInteger& operator|=(int value);
62  AtomicInteger& operator^=(int value);
63  AtomicInteger& operator<<=(int value);
64  AtomicInteger& operator>>=(int value);
65  bool operator==(int value) const;
66  bool operator!=(int value) const;
67 private:
68  void* atomic;
69 };
70 
71 std::ostream& operator<<(std::ostream& stream, const AtomicInteger& value);
72 
73 } // namespace SimTK
74 
75 #endif // SimTK_SimTKCOMMON_ATOMIC_INTEGER_H_
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:218
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
bool operator==(const PhiMatrix &p1, const PhiMatrix &p2)
Definition: SpatialAlgebra.h:774
This class functions exactly like an int, except that the following operators are atomic: ++...
Definition: AtomicInteger.h:44
std::ostream & operator<<(std::ostream &o, const ContactForce &f)
Definition: CompliantContactSubsystem.h:387
bool operator!=(const conjugate< R > &a, const float &b)
Definition: conjugate.h:859
Mandatory first inclusion for any Simbody source or header file.