activemq-cpp-3.9.5
AtomicInteger.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef _DECAF_UTIL_CONCURRENT_ATOMIC_ATOMICINTEGER_H_
19#define _DECAF_UTIL_CONCURRENT_ATOMIC_ATOMICINTEGER_H_
20
21#include <decaf/util/Config.h>
22#include <decaf/lang/Number.h>
23#include <string>
24
25namespace decaf {
26namespace util {
27namespace concurrent {
28namespace atomic {
29
37 class DECAF_API AtomicInteger : public decaf::lang::Number {
38 private:
39
40 volatile int value;
41
42 private:
43
44 AtomicInteger(const AtomicInteger&);
45 AtomicInteger& operator= (const AtomicInteger&);
46
47 public:
48
53
58 AtomicInteger( int initialValue );
59
60 virtual ~AtomicInteger() {}
61
66 int get() const {
67 return this->value;
68 }
69
74 void set( int newValue ) {
75 this->value = newValue;
76 }
77
83 int getAndSet( int newValue );
84
94 bool compareAndSet( int expect, int update );
95
101
107
113 int getAndAdd( int delta );
114
120
126
132 int addAndGet( int delta );
133
138 std::string toString() const;
139
147 int intValue() const;
148
156 long long longValue() const;
157
165 float floatValue() const;
166
174 double doubleValue() const;
175
176 };
177
178}}}}
179
180#endif /*_DECAF_UTIL_CONCURRENT_ATOMIC_ATOMICINTEGER_H_ */
The abstract class Number is the superclass of classes Byte, Double, Float, Integer,...
Definition Number.h:35
int getAndSet(int newValue)
Atomically sets to the given value and returns the old value.
float floatValue() const
Description copied from class: Number Returns the value of the specified number as a float.
int addAndGet(int delta)
Atomically adds the given value to the current value.
AtomicInteger()
Create a new AtomicInteger with an initial value of 0.
int get() const
Gets the current value.
Definition AtomicInteger.h:66
int getAndAdd(int delta)
Atomically adds the given value to the current value.
int incrementAndGet()
Atomically increments by one the current value.
double doubleValue() const
Description copied from class: Number Returns the value of the specified number as a double.
long long longValue() const
Description copied from class: Number Returns the value of the specified number as a long.
AtomicInteger(int initialValue)
Create a new AtomicInteger with the given initial value.
virtual ~AtomicInteger()
Definition AtomicInteger.h:60
int intValue() const
Description copied from class: Number Returns the value of the specified number as an int.
int getAndDecrement()
Atomically decrements by one the current value.
int getAndIncrement()
Atomically increments by one the current value.
int decrementAndGet()
Atomically decrements by one the current value.
std::string toString() const
Returns the String representation of the current value.
bool compareAndSet(int expect, int update)
Atomically sets the value to the given updated value if the current value == the expected value.
void set(int newValue)
Sets to the given value.
Definition AtomicInteger.h:74
#define DECAF_API
Definition Config.h:29
Definition AtomicBoolean.h:27
Definition AbstractExecutorService.h:28
Definition AbstractCollection.h:33
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
Definition AprPool.h:25