Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
copyable_atomic.h
Go to the documentation of this file.
1
// Copyright (c) 2006-2013, Andrey N. Sabelnikov, www.sabelnikov.net
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are met:
6
// * Redistributions of source code must retain the above copyright
7
// notice, this list of conditions and the following disclaimer.
8
// * Redistributions in binary form must reproduce the above copyright
9
// notice, this list of conditions and the following disclaimer in the
10
// documentation and/or other materials provided with the distribution.
11
// * Neither the name of the Andrey N. Sabelnikov nor the
12
// names of its contributors may be used to endorse or promote products
13
// derived from this software without specific prior written permission.
14
//
15
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER BE LIABLE FOR ANY
19
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
//
26
27
#pragma once
28
29
#include <atomic>
30
31
namespace
epee
32
{
33
class
copyable_atomic
:
public
std::atomic<uint32_t>
34
{
35
public
:
36
copyable_atomic
()
37
{};
38
copyable_atomic
(
uint32_t
value
)
39
{ store(
value
); }
40
copyable_atomic
(
const
copyable_atomic
&
a
):
std
::atomic<
uint32_t
>(
a
.load())
41
{}
42
copyable_atomic
&
operator=
(
const
copyable_atomic
&
a
)
43
{
44
store(
a
.load());
45
return
*
this
;
46
}
47
uint32_t
operator++
()
48
{
49
return
std::atomic<uint32_t>::operator++();
50
}
51
uint32_t
operator++
(
int
fake)
52
{
53
return
std::atomic<uint32_t>::operator++(fake);
54
}
55
};
56
}
epee::copyable_atomic::operator++
uint32_t operator++()
Definition
copyable_atomic.h:47
epee::copyable_atomic::copyable_atomic
copyable_atomic(uint32_t value)
Definition
copyable_atomic.h:38
epee::copyable_atomic::copyable_atomic
copyable_atomic(const copyable_atomic &a)
Definition
copyable_atomic.h:40
epee::copyable_atomic::copyable_atomic
copyable_atomic()
Definition
copyable_atomic.h:36
epee::copyable_atomic::operator=
copyable_atomic & operator=(const copyable_atomic &a)
Definition
copyable_atomic.h:42
epee::copyable_atomic::operator++
uint32_t operator++(int fake)
Definition
copyable_atomic.h:51
epee
Definition
ado_db_helper.h:67
std
STL namespace.
value
const GenericPointer< typename T::ValueType > T2 value
Definition
pointer.h:1225
a
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition
pointer.h:1124
uint32_t
unsigned int uint32_t
Definition
stdint.h:126
contrib
epee
include
copyable_atomic.h
Generated on
for Electroneum by
1.17.0