@dittolive/ditto 4.5.0 → 4.5.1-experimental.aarch64-linux.1.aarch64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/node/ditto.cjs.js +2 -9620
- package/node/{ditto.linux-x64.node → ditto.linux-arm64.node} +0 -0
- package/package.json +38 -34
- package/types/ditto.d.ts +0 -2
- package/web/ditto.es6.js +1 -1
- package/web/ditto.umd.js +1 -1
- package/web/ditto.wasm +0 -0
- package/DittoReactNative.podspec +0 -27
- package/node/ditto.darwin-arm64.node +0 -0
- package/node/ditto.darwin-x64.node +0 -0
- package/node/ditto.linux-arm.node +0 -0
- package/node/ditto.win32-x64.node +0 -0
- package/node/transports.darwin-arm64.node +0 -0
- package/node/transports.darwin-x64.node +0 -0
- package/react-native/android/CMakeLists.txt +0 -37
- package/react-native/android/build.gradle +0 -203
- package/react-native/android/cpp-adapter.cpp +0 -254
- package/react-native/android/gradle.properties +0 -5
- package/react-native/android/src/main/AndroidManifest.xml +0 -4
- package/react-native/android/src/main/java/com/dittolive/rnsdk/DittoRNSDKModule.java +0 -85
- package/react-native/android/src/main/java/com/dittolive/rnsdk/DittoRNSDKPackage.java +0 -28
- package/react-native/boost/boost/assert.hpp +0 -85
- package/react-native/boost/boost/config/abi/borland_prefix.hpp +0 -27
- package/react-native/boost/boost/config/abi/borland_suffix.hpp +0 -12
- package/react-native/boost/boost/config/abi/msvc_prefix.hpp +0 -22
- package/react-native/boost/boost/config/abi/msvc_suffix.hpp +0 -8
- package/react-native/boost/boost/config/abi_prefix.hpp +0 -25
- package/react-native/boost/boost/config/abi_suffix.hpp +0 -25
- package/react-native/boost/boost/config/assert_cxx03.hpp +0 -211
- package/react-native/boost/boost/config/assert_cxx11.hpp +0 -209
- package/react-native/boost/boost/config/assert_cxx14.hpp +0 -47
- package/react-native/boost/boost/config/assert_cxx17.hpp +0 -62
- package/react-native/boost/boost/config/assert_cxx20.hpp +0 -59
- package/react-native/boost/boost/config/assert_cxx98.hpp +0 -23
- package/react-native/boost/boost/config/auto_link.hpp +0 -525
- package/react-native/boost/boost/config/compiler/borland.hpp +0 -339
- package/react-native/boost/boost/config/compiler/clang.hpp +0 -366
- package/react-native/boost/boost/config/compiler/clang_version.hpp +0 -83
- package/react-native/boost/boost/config/compiler/codegear.hpp +0 -385
- package/react-native/boost/boost/config/compiler/comeau.hpp +0 -59
- package/react-native/boost/boost/config/compiler/common_edg.hpp +0 -183
- package/react-native/boost/boost/config/compiler/compaq_cxx.hpp +0 -19
- package/react-native/boost/boost/config/compiler/cray.hpp +0 -446
- package/react-native/boost/boost/config/compiler/diab.hpp +0 -26
- package/react-native/boost/boost/config/compiler/digitalmars.hpp +0 -143
- package/react-native/boost/boost/config/compiler/gcc.hpp +0 -383
- package/react-native/boost/boost/config/compiler/gcc_xml.hpp +0 -114
- package/react-native/boost/boost/config/compiler/greenhills.hpp +0 -28
- package/react-native/boost/boost/config/compiler/hp_acc.hpp +0 -149
- package/react-native/boost/boost/config/compiler/intel.hpp +0 -577
- package/react-native/boost/boost/config/compiler/kai.hpp +0 -33
- package/react-native/boost/boost/config/compiler/metrowerks.hpp +0 -198
- package/react-native/boost/boost/config/compiler/mpw.hpp +0 -140
- package/react-native/boost/boost/config/compiler/nvcc.hpp +0 -61
- package/react-native/boost/boost/config/compiler/pathscale.hpp +0 -138
- package/react-native/boost/boost/config/compiler/pgi.hpp +0 -23
- package/react-native/boost/boost/config/compiler/sgi_mipspro.hpp +0 -29
- package/react-native/boost/boost/config/compiler/sunpro_cc.hpp +0 -222
- package/react-native/boost/boost/config/compiler/vacpp.hpp +0 -186
- package/react-native/boost/boost/config/compiler/visualc.hpp +0 -391
- package/react-native/boost/boost/config/compiler/xlcpp.hpp +0 -299
- package/react-native/boost/boost/config/compiler/xlcpp_zos.hpp +0 -173
- package/react-native/boost/boost/config/detail/cxx_composite.hpp +0 -203
- package/react-native/boost/boost/config/detail/posix_features.hpp +0 -95
- package/react-native/boost/boost/config/detail/select_compiler_config.hpp +0 -157
- package/react-native/boost/boost/config/detail/select_platform_config.hpp +0 -147
- package/react-native/boost/boost/config/detail/select_stdlib_config.hpp +0 -121
- package/react-native/boost/boost/config/detail/suffix.hpp +0 -1294
- package/react-native/boost/boost/config/header_deprecated.hpp +0 -26
- package/react-native/boost/boost/config/helper_macros.hpp +0 -37
- package/react-native/boost/boost/config/no_tr1/cmath.hpp +0 -28
- package/react-native/boost/boost/config/no_tr1/complex.hpp +0 -28
- package/react-native/boost/boost/config/no_tr1/functional.hpp +0 -28
- package/react-native/boost/boost/config/no_tr1/memory.hpp +0 -28
- package/react-native/boost/boost/config/no_tr1/utility.hpp +0 -28
- package/react-native/boost/boost/config/platform/aix.hpp +0 -33
- package/react-native/boost/boost/config/platform/amigaos.hpp +0 -15
- package/react-native/boost/boost/config/platform/beos.hpp +0 -26
- package/react-native/boost/boost/config/platform/bsd.hpp +0 -83
- package/react-native/boost/boost/config/platform/cloudabi.hpp +0 -18
- package/react-native/boost/boost/config/platform/cray.hpp +0 -18
- package/react-native/boost/boost/config/platform/cygwin.hpp +0 -71
- package/react-native/boost/boost/config/platform/haiku.hpp +0 -31
- package/react-native/boost/boost/config/platform/hpux.hpp +0 -87
- package/react-native/boost/boost/config/platform/irix.hpp +0 -31
- package/react-native/boost/boost/config/platform/linux.hpp +0 -106
- package/react-native/boost/boost/config/platform/macos.hpp +0 -87
- package/react-native/boost/boost/config/platform/qnxnto.hpp +0 -31
- package/react-native/boost/boost/config/platform/solaris.hpp +0 -31
- package/react-native/boost/boost/config/platform/symbian.hpp +0 -97
- package/react-native/boost/boost/config/platform/vms.hpp +0 -25
- package/react-native/boost/boost/config/platform/vxworks.hpp +0 -422
- package/react-native/boost/boost/config/platform/wasm.hpp +0 -23
- package/react-native/boost/boost/config/platform/win32.hpp +0 -90
- package/react-native/boost/boost/config/platform/zos.hpp +0 -32
- package/react-native/boost/boost/config/pragma_message.hpp +0 -31
- package/react-native/boost/boost/config/requires_threads.hpp +0 -92
- package/react-native/boost/boost/config/stdlib/dinkumware.hpp +0 -324
- package/react-native/boost/boost/config/stdlib/libcomo.hpp +0 -93
- package/react-native/boost/boost/config/stdlib/libcpp.hpp +0 -180
- package/react-native/boost/boost/config/stdlib/libstdcpp3.hpp +0 -482
- package/react-native/boost/boost/config/stdlib/modena.hpp +0 -79
- package/react-native/boost/boost/config/stdlib/msl.hpp +0 -98
- package/react-native/boost/boost/config/stdlib/roguewave.hpp +0 -208
- package/react-native/boost/boost/config/stdlib/sgi.hpp +0 -168
- package/react-native/boost/boost/config/stdlib/stlport.hpp +0 -258
- package/react-native/boost/boost/config/stdlib/vacpp.hpp +0 -74
- package/react-native/boost/boost/config/stdlib/xlcpp_zos.hpp +0 -61
- package/react-native/boost/boost/config/user.hpp +0 -133
- package/react-native/boost/boost/config/warning_disable.hpp +0 -47
- package/react-native/boost/boost/config/workaround.hpp +0 -305
- package/react-native/boost/boost/config.hpp +0 -67
- package/react-native/boost/boost/cstdint.hpp +0 -556
- package/react-native/boost/boost/intrusive_ptr.hpp +0 -18
- package/react-native/boost/boost/smart_ptr/detail/atomic_count.hpp +0 -103
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_nt.hpp +0 -66
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +0 -67
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
- package/react-native/boost/boost/smart_ptr/detail/atomic_count_win32.hpp +0 -70
- package/react-native/boost/boost/smart_ptr/detail/local_counted_base.hpp +0 -148
- package/react-native/boost/boost/smart_ptr/detail/local_sp_deleter.hpp +0 -91
- package/react-native/boost/boost/smart_ptr/detail/operator_bool.hpp +0 -64
- package/react-native/boost/boost/smart_ptr/detail/requires_cxx11.hpp +0 -23
- package/react-native/boost/boost/smart_ptr/detail/shared_count.hpp +0 -707
- package/react-native/boost/boost/smart_ptr/detail/sp_convertible.hpp +0 -92
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base.hpp +0 -92
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp +0 -119
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +0 -147
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp +0 -140
- package/react-native/boost/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -309
- package/react-native/boost/boost/smart_ptr/detail/sp_disable_deprecated.hpp +0 -40
- package/react-native/boost/boost/smart_ptr/detail/sp_forward.hpp +0 -52
- package/react-native/boost/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -27
- package/react-native/boost/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
- package/react-native/boost/boost/smart_ptr/detail/sp_interlocked.hpp +0 -173
- package/react-native/boost/boost/smart_ptr/detail/sp_noexcept.hpp +0 -48
- package/react-native/boost/boost/smart_ptr/detail/sp_nullptr_t.hpp +0 -45
- package/react-native/boost/boost/smart_ptr/detail/sp_obsolete.hpp +0 -32
- package/react-native/boost/boost/smart_ptr/detail/sp_thread_pause.hpp +0 -51
- package/react-native/boost/boost/smart_ptr/detail/sp_thread_sleep.hpp +0 -104
- package/react-native/boost/boost/smart_ptr/detail/sp_thread_yield.hpp +0 -100
- package/react-native/boost/boost/smart_ptr/detail/sp_typeinfo_.hpp +0 -58
- package/react-native/boost/boost/smart_ptr/detail/sp_win32_sleep.hpp +0 -49
- package/react-native/boost/boost/smart_ptr/intrusive_ptr.hpp +0 -409
- package/react-native/boost/boost/smart_ptr/intrusive_ref_counter.hpp +0 -188
- package/react-native/cpp/include/Attachment.h +0 -16
- package/react-native/cpp/include/Authentication.h +0 -23
- package/react-native/cpp/include/Collection.h +0 -13
- package/react-native/cpp/include/DQL.h +0 -21
- package/react-native/cpp/include/Document.h +0 -17
- package/react-native/cpp/include/Identity.h +0 -17
- package/react-native/cpp/include/Lifecycle.h +0 -16
- package/react-native/cpp/include/LiveQuery.h +0 -17
- package/react-native/cpp/include/Logger.h +0 -22
- package/react-native/cpp/include/Misc.h +0 -26
- package/react-native/cpp/include/Presence.h +0 -14
- package/react-native/cpp/include/RetainableState.h +0 -24
- package/react-native/cpp/include/SmallPeerInfo.h +0 -17
- package/react-native/cpp/include/Transports.h +0 -25
- package/react-native/cpp/include/TypedArray.hpp +0 -167
- package/react-native/cpp/include/Utils.h +0 -61
- package/react-native/cpp/include/main.h +0 -10
- package/react-native/cpp/src/Attachment.cpp +0 -86
- package/react-native/cpp/src/Authentication.cpp +0 -224
- package/react-native/cpp/src/Collection.cpp +0 -54
- package/react-native/cpp/src/DQL.cpp +0 -254
- package/react-native/cpp/src/Document.cpp +0 -146
- package/react-native/cpp/src/Identity.cpp +0 -123
- package/react-native/cpp/src/Lifecycle.cpp +0 -75
- package/react-native/cpp/src/LiveQuery.cpp +0 -64
- package/react-native/cpp/src/Logger.cpp +0 -200
- package/react-native/cpp/src/Misc.cpp +0 -271
- package/react-native/cpp/src/Presence.cpp +0 -77
- package/react-native/cpp/src/RetainableState.cpp +0 -15
- package/react-native/cpp/src/SmallPeerInfo.cpp +0 -108
- package/react-native/cpp/src/Transports.cpp +0 -270
- package/react-native/cpp/src/TypedArray.cpp +0 -303
- package/react-native/cpp/src/Utils.cpp +0 -138
- package/react-native/cpp/src/main.cpp +0 -149
- package/react-native/dittoffi/dittoffi.h +0 -4698
- package/react-native/dittoffi/ifaddrs.cpp +0 -385
- package/react-native/dittoffi/ifaddrs.h +0 -206
- package/react-native/ios/DittoRNSDK.h +0 -7
- package/react-native/ios/DittoRNSDK.mm +0 -107
- package/react-native/ios/YeetJSIUtils.h +0 -60
- package/react-native/ios/YeetJSIUtils.mm +0 -196
- package/react-native/lib/commonjs/ditto.rn.js +0 -93
- package/react-native/lib/commonjs/ditto.rn.js.map +0 -1
- package/react-native/lib/commonjs/index.js +0 -14
- package/react-native/lib/commonjs/index.js.map +0 -1
- package/react-native/lib/module/ditto.rn.js +0 -83
- package/react-native/lib/module/ditto.rn.js.map +0 -1
- package/react-native/lib/module/index.js +0 -13
- package/react-native/lib/module/index.js.map +0 -1
- package/react-native/lib/typescript/ditto.rn.d.ts +0 -15
- package/react-native/lib/typescript/ditto.rn.d.ts.map +0 -1
- package/react-native/lib/typescript/index.d.ts +0 -1
- package/react-native/lib/typescript/index.d.ts.map +0 -1
- package/react-native/scripts/ruby/include_local_boost.rb +0 -78
- package/react-native/src/ditto.rn.ts +0 -91
- package/react-native/src/environment/environment.fallback.ts +0 -4
- package/react-native/src/index.ts +0 -26
- package/react-native/src/sources/@cbor-redux.ts +0 -2
- package/react-native/src/sources/@ditto.core.ts +0 -1
- package/react-native/src/sources/@environment.ts +0 -2
- package/react-native/src/sources/attachment-fetch-event.ts +0 -54
- package/react-native/src/sources/attachment-fetcher-manager.ts +0 -129
- package/react-native/src/sources/attachment-fetcher.ts +0 -124
- package/react-native/src/sources/attachment-token.ts +0 -48
- package/react-native/src/sources/attachment.ts +0 -59
- package/react-native/src/sources/augment.ts +0 -89
- package/react-native/src/sources/authenticator.ts +0 -314
- package/react-native/src/sources/base-pending-cursor-operation.ts +0 -237
- package/react-native/src/sources/base-pending-id-specific-operation.ts +0 -109
- package/react-native/src/sources/bridge.ts +0 -549
- package/react-native/src/sources/build-time-constants.ts +0 -4
- package/react-native/src/sources/cbor.ts +0 -35
- package/react-native/src/sources/collection-interface.ts +0 -67
- package/react-native/src/sources/collection.ts +0 -212
- package/react-native/src/sources/collections-event.ts +0 -99
- package/react-native/src/sources/counter.ts +0 -77
- package/react-native/src/sources/ditto.ts +0 -945
- package/react-native/src/sources/document-id.ts +0 -159
- package/react-native/src/sources/document-path.ts +0 -303
- package/react-native/src/sources/document.ts +0 -192
- package/react-native/src/sources/epilogue.ts +0 -24
- package/react-native/src/sources/error-codes.ts +0 -52
- package/react-native/src/sources/error.ts +0 -203
- package/react-native/src/sources/essentials.ts +0 -53
- package/react-native/src/sources/ffi-error.ts +0 -117
- package/react-native/src/sources/ffi.ts +0 -1972
- package/react-native/src/sources/identity.ts +0 -163
- package/react-native/src/sources/init.ts +0 -70
- package/react-native/src/sources/internal.ts +0 -113
- package/react-native/src/sources/keep-alive.ts +0 -69
- package/react-native/src/sources/key-path.ts +0 -195
- package/react-native/src/sources/live-query-event.ts +0 -208
- package/react-native/src/sources/live-query-manager.ts +0 -101
- package/react-native/src/sources/live-query.ts +0 -164
- package/react-native/src/sources/logger.ts +0 -196
- package/react-native/src/sources/observer-manager.ts +0 -175
- package/react-native/src/sources/observer.ts +0 -77
- package/react-native/src/sources/pending-collections-operation.ts +0 -232
- package/react-native/src/sources/pending-cursor-operation.ts +0 -218
- package/react-native/src/sources/pending-id-specific-operation.ts +0 -216
- package/react-native/src/sources/presence-manager.ts +0 -160
- package/react-native/src/sources/presence.ts +0 -238
- package/react-native/src/sources/query-result-item.ts +0 -116
- package/react-native/src/sources/query-result.ts +0 -55
- package/react-native/src/sources/register.ts +0 -92
- package/react-native/src/sources/small-peer-info.ts +0 -176
- package/react-native/src/sources/static-tcp-client.ts +0 -6
- package/react-native/src/sources/store-observer.ts +0 -176
- package/react-native/src/sources/store.ts +0 -365
- package/react-native/src/sources/subscription-manager.ts +0 -98
- package/react-native/src/sources/subscription.ts +0 -88
- package/react-native/src/sources/sync-subscription.ts +0 -90
- package/react-native/src/sources/sync.ts +0 -495
- package/react-native/src/sources/test-helpers.ts +0 -24
- package/react-native/src/sources/transport-conditions-manager.ts +0 -104
- package/react-native/src/sources/transport-config.ts +0 -428
- package/react-native/src/sources/update-result.ts +0 -66
- package/react-native/src/sources/update-results-map.ts +0 -57
- package/react-native/src/sources/websocket-client.ts +0 -6
- package/react-native/src/sources/write-transaction-collection.ts +0 -122
- package/react-native/src/sources/write-transaction-pending-cursor-operation.ts +0 -101
- package/react-native/src/sources/write-transaction-pending-id-specific-operation.ts +0 -72
- package/react-native/src/sources/write-transaction.ts +0 -119
- package/react-native.config.js +0 -9
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_gcc.hpp
|
|
6
|
-
//
|
|
7
|
-
// atomic_count for GNU libstdc++ v3
|
|
8
|
-
//
|
|
9
|
-
// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html
|
|
10
|
-
//
|
|
11
|
-
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
|
12
|
-
// Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
|
|
13
|
-
// Copyright 2003-2005 Peter Dimov
|
|
14
|
-
//
|
|
15
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
16
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
17
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
#if __GNUC__ * 100 + __GNUC_MINOR__ >= 402
|
|
21
|
-
# include <ext/atomicity.h>
|
|
22
|
-
#else
|
|
23
|
-
# include <bits/atomicity.h>
|
|
24
|
-
#endif
|
|
25
|
-
|
|
26
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
27
|
-
|
|
28
|
-
#include <boost/config/pragma_message.hpp>
|
|
29
|
-
BOOST_PRAGMA_MESSAGE("Using libstdc++ atomic_count")
|
|
30
|
-
|
|
31
|
-
#endif
|
|
32
|
-
|
|
33
|
-
namespace boost
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
namespace detail
|
|
37
|
-
{
|
|
38
|
-
|
|
39
|
-
#if defined(__GLIBCXX__) // g++ 3.4+
|
|
40
|
-
|
|
41
|
-
using __gnu_cxx::__atomic_add;
|
|
42
|
-
using __gnu_cxx::__exchange_and_add;
|
|
43
|
-
|
|
44
|
-
#endif
|
|
45
|
-
|
|
46
|
-
class atomic_count
|
|
47
|
-
{
|
|
48
|
-
public:
|
|
49
|
-
|
|
50
|
-
explicit atomic_count( long v ) : value_( v ) {}
|
|
51
|
-
|
|
52
|
-
long operator++()
|
|
53
|
-
{
|
|
54
|
-
return __exchange_and_add( &value_, +1 ) + 1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
long operator--()
|
|
58
|
-
{
|
|
59
|
-
return __exchange_and_add( &value_, -1 ) - 1;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
operator long() const
|
|
63
|
-
{
|
|
64
|
-
return __exchange_and_add( &value_, 0 );
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private:
|
|
68
|
-
|
|
69
|
-
atomic_count(atomic_count const &);
|
|
70
|
-
atomic_count & operator=(atomic_count const &);
|
|
71
|
-
|
|
72
|
-
mutable _Atomic_word value_;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
} // namespace detail
|
|
76
|
-
|
|
77
|
-
} // namespace boost
|
|
78
|
-
|
|
79
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_ATOMIC_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_ATOMIC_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
// boost/detail/atomic_count_gcc_atomic.hpp
|
|
5
|
-
//
|
|
6
|
-
// atomic_count for g++ 4.7+
|
|
7
|
-
//
|
|
8
|
-
// Copyright 2007, 2020 Peter Dimov
|
|
9
|
-
//
|
|
10
|
-
// Distributed under the Boost Software License, Version 1.0.
|
|
11
|
-
// https://www.boost.org/LICENSE_1_0.txt
|
|
12
|
-
|
|
13
|
-
#include <boost/cstdint.hpp>
|
|
14
|
-
|
|
15
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
16
|
-
|
|
17
|
-
#include <boost/config/pragma_message.hpp>
|
|
18
|
-
BOOST_PRAGMA_MESSAGE("Using __atomic atomic_count")
|
|
19
|
-
|
|
20
|
-
#endif
|
|
21
|
-
|
|
22
|
-
namespace boost
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
namespace detail
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
class atomic_count
|
|
29
|
-
{
|
|
30
|
-
public:
|
|
31
|
-
|
|
32
|
-
explicit atomic_count( long v ): value_( static_cast< boost::int_least32_t >( v ) )
|
|
33
|
-
{
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
long operator++()
|
|
37
|
-
{
|
|
38
|
-
return __atomic_add_fetch( &value_, +1, __ATOMIC_ACQ_REL );
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
long operator--()
|
|
42
|
-
{
|
|
43
|
-
return __atomic_add_fetch( &value_, -1, __ATOMIC_ACQ_REL );
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
operator long() const
|
|
47
|
-
{
|
|
48
|
-
return __atomic_load_n( &value_, __ATOMIC_ACQUIRE );
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
private:
|
|
52
|
-
|
|
53
|
-
atomic_count(atomic_count const &);
|
|
54
|
-
atomic_count & operator=(atomic_count const &);
|
|
55
|
-
|
|
56
|
-
boost::int_least32_t value_;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
} // namespace detail
|
|
60
|
-
|
|
61
|
-
} // namespace boost
|
|
62
|
-
|
|
63
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_ATOMIC_HPP_INCLUDED
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_gcc_x86.hpp
|
|
6
|
-
//
|
|
7
|
-
// atomic_count for g++ on 486+/AMD64
|
|
8
|
-
//
|
|
9
|
-
// Copyright 2007 Peter Dimov
|
|
10
|
-
//
|
|
11
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
12
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
13
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
#include <boost/smart_ptr/detail/sp_obsolete.hpp>
|
|
17
|
-
|
|
18
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
19
|
-
|
|
20
|
-
#include <boost/config/pragma_message.hpp>
|
|
21
|
-
BOOST_PRAGMA_MESSAGE("Using g++/x86 atomic_count")
|
|
22
|
-
|
|
23
|
-
#endif
|
|
24
|
-
|
|
25
|
-
BOOST_SP_OBSOLETE()
|
|
26
|
-
|
|
27
|
-
namespace boost
|
|
28
|
-
{
|
|
29
|
-
|
|
30
|
-
namespace detail
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
class atomic_count
|
|
34
|
-
{
|
|
35
|
-
public:
|
|
36
|
-
|
|
37
|
-
explicit atomic_count( long v ) : value_( static_cast< int >( v ) ) {}
|
|
38
|
-
|
|
39
|
-
long operator++()
|
|
40
|
-
{
|
|
41
|
-
return atomic_exchange_and_add( &value_, +1 ) + 1;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
long operator--()
|
|
45
|
-
{
|
|
46
|
-
return atomic_exchange_and_add( &value_, -1 ) - 1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
operator long() const
|
|
50
|
-
{
|
|
51
|
-
return atomic_exchange_and_add( &value_, 0 );
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
private:
|
|
55
|
-
|
|
56
|
-
atomic_count(atomic_count const &);
|
|
57
|
-
atomic_count & operator=(atomic_count const &);
|
|
58
|
-
|
|
59
|
-
mutable int value_;
|
|
60
|
-
|
|
61
|
-
private:
|
|
62
|
-
|
|
63
|
-
static int atomic_exchange_and_add( int * pw, int dv )
|
|
64
|
-
{
|
|
65
|
-
// int r = *pw;
|
|
66
|
-
// *pw += dv;
|
|
67
|
-
// return r;
|
|
68
|
-
|
|
69
|
-
int r;
|
|
70
|
-
|
|
71
|
-
__asm__ __volatile__
|
|
72
|
-
(
|
|
73
|
-
"lock\n\t"
|
|
74
|
-
"xadd %1, %0":
|
|
75
|
-
"+m"( *pw ), "=r"( r ): // outputs (%0, %1)
|
|
76
|
-
"1"( dv ): // inputs (%2 == %1)
|
|
77
|
-
"memory", "cc" // clobbers
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
return r;
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
} // namespace detail
|
|
85
|
-
|
|
86
|
-
} // namespace boost
|
|
87
|
-
|
|
88
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_NT_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_NT_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_nt.hpp
|
|
6
|
-
//
|
|
7
|
-
// Trivial atomic_count for the single-threaded case
|
|
8
|
-
//
|
|
9
|
-
// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html
|
|
10
|
-
//
|
|
11
|
-
// Copyright 2013 Peter Dimov
|
|
12
|
-
//
|
|
13
|
-
// Distributed under the Boost Software License, Version 1.0.
|
|
14
|
-
// See accompanying file LICENSE_1_0.txt or copy at
|
|
15
|
-
// http://www.boost.org/LICENSE_1_0.txt
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
19
|
-
|
|
20
|
-
#include <boost/config/pragma_message.hpp>
|
|
21
|
-
BOOST_PRAGMA_MESSAGE("Using single-threaded, non-atomic atomic_count")
|
|
22
|
-
|
|
23
|
-
#endif
|
|
24
|
-
|
|
25
|
-
namespace boost
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
namespace detail
|
|
29
|
-
{
|
|
30
|
-
|
|
31
|
-
class atomic_count
|
|
32
|
-
{
|
|
33
|
-
public:
|
|
34
|
-
|
|
35
|
-
explicit atomic_count( long v ): value_( v )
|
|
36
|
-
{
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
long operator++()
|
|
40
|
-
{
|
|
41
|
-
return ++value_;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
long operator--()
|
|
45
|
-
{
|
|
46
|
-
return --value_;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
operator long() const
|
|
50
|
-
{
|
|
51
|
-
return value_;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
private:
|
|
55
|
-
|
|
56
|
-
atomic_count(atomic_count const &);
|
|
57
|
-
atomic_count & operator=(atomic_count const &);
|
|
58
|
-
|
|
59
|
-
long value_;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
} // namespace detail
|
|
63
|
-
|
|
64
|
-
} // namespace boost
|
|
65
|
-
|
|
66
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_NT_HPP_INCLUDED
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_pthreads.hpp
|
|
6
|
-
//
|
|
7
|
-
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
|
8
|
-
//
|
|
9
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
10
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
11
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
#include <boost/assert.hpp>
|
|
15
|
-
#include <pthread.h>
|
|
16
|
-
|
|
17
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
18
|
-
|
|
19
|
-
#include <boost/config/pragma_message.hpp>
|
|
20
|
-
BOOST_PRAGMA_MESSAGE("Using pthread_mutex atomic_count")
|
|
21
|
-
|
|
22
|
-
#endif
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
// The generic pthread_mutex-based implementation sometimes leads to
|
|
26
|
-
// inefficiencies. Example: a class with two atomic_count members
|
|
27
|
-
// can get away with a single mutex.
|
|
28
|
-
//
|
|
29
|
-
// Users can detect this situation by checking BOOST_AC_USE_PTHREADS.
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
namespace boost
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
namespace detail
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
class atomic_count
|
|
39
|
-
{
|
|
40
|
-
private:
|
|
41
|
-
|
|
42
|
-
class scoped_lock
|
|
43
|
-
{
|
|
44
|
-
public:
|
|
45
|
-
|
|
46
|
-
scoped_lock(pthread_mutex_t & m): m_(m)
|
|
47
|
-
{
|
|
48
|
-
BOOST_VERIFY( pthread_mutex_lock( &m_ ) == 0 );
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
~scoped_lock()
|
|
52
|
-
{
|
|
53
|
-
BOOST_VERIFY( pthread_mutex_unlock( &m_ ) == 0 );
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
private:
|
|
57
|
-
|
|
58
|
-
pthread_mutex_t & m_;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
public:
|
|
62
|
-
|
|
63
|
-
explicit atomic_count(long v): value_(v)
|
|
64
|
-
{
|
|
65
|
-
BOOST_VERIFY( pthread_mutex_init( &mutex_, 0 ) == 0 );
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
~atomic_count()
|
|
69
|
-
{
|
|
70
|
-
BOOST_VERIFY( pthread_mutex_destroy( &mutex_ ) == 0 );
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
long operator++()
|
|
74
|
-
{
|
|
75
|
-
scoped_lock lock(mutex_);
|
|
76
|
-
return ++value_;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
long operator--()
|
|
80
|
-
{
|
|
81
|
-
scoped_lock lock(mutex_);
|
|
82
|
-
return --value_;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
operator long() const
|
|
86
|
-
{
|
|
87
|
-
scoped_lock lock(mutex_);
|
|
88
|
-
return value_;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
private:
|
|
92
|
-
|
|
93
|
-
atomic_count(atomic_count const &);
|
|
94
|
-
atomic_count & operator=(atomic_count const &);
|
|
95
|
-
|
|
96
|
-
mutable pthread_mutex_t mutex_;
|
|
97
|
-
long value_;
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
} // namespace detail
|
|
101
|
-
|
|
102
|
-
} // namespace boost
|
|
103
|
-
|
|
104
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SPIN_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SPIN_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_spin.hpp
|
|
6
|
-
//
|
|
7
|
-
// Copyright (c) 2013 Peter Dimov
|
|
8
|
-
//
|
|
9
|
-
// Distributed under the Boost Software License, Version 1.0.
|
|
10
|
-
// See accompanying file LICENSE_1_0.txt or copy at
|
|
11
|
-
// http://www.boost.org/LICENSE_1_0.txt
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
#include <boost/smart_ptr/detail/spinlock_pool.hpp>
|
|
15
|
-
|
|
16
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
17
|
-
|
|
18
|
-
#include <boost/config/pragma_message.hpp>
|
|
19
|
-
BOOST_PRAGMA_MESSAGE("Using spinlock-based atomic_count")
|
|
20
|
-
|
|
21
|
-
#endif
|
|
22
|
-
|
|
23
|
-
namespace boost
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
namespace detail
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
class atomic_count
|
|
30
|
-
{
|
|
31
|
-
private:
|
|
32
|
-
|
|
33
|
-
public:
|
|
34
|
-
|
|
35
|
-
explicit atomic_count( long v ): value_( v )
|
|
36
|
-
{
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
long operator++()
|
|
40
|
-
{
|
|
41
|
-
spinlock_pool<0>::scoped_lock lock( &value_ );
|
|
42
|
-
return ++value_;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
long operator--()
|
|
46
|
-
{
|
|
47
|
-
spinlock_pool<0>::scoped_lock lock( &value_ );
|
|
48
|
-
return --value_;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
operator long() const
|
|
52
|
-
{
|
|
53
|
-
spinlock_pool<0>::scoped_lock lock( &value_ );
|
|
54
|
-
return value_;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
private:
|
|
58
|
-
|
|
59
|
-
atomic_count(atomic_count const &);
|
|
60
|
-
atomic_count & operator=(atomic_count const &);
|
|
61
|
-
|
|
62
|
-
long value_;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
} // namespace detail
|
|
66
|
-
|
|
67
|
-
} // namespace boost
|
|
68
|
-
|
|
69
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SPIN_HPP_INCLUDED
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_std_atomic.hpp
|
|
6
|
-
//
|
|
7
|
-
// atomic_count for std::atomic
|
|
8
|
-
//
|
|
9
|
-
// Copyright 2013 Peter Dimov
|
|
10
|
-
//
|
|
11
|
-
// Distributed under the Boost Software License, Version 1.0.
|
|
12
|
-
// See accompanying file LICENSE_1_0.txt or copy at
|
|
13
|
-
// http://www.boost.org/LICENSE_1_0.txt
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
#include <atomic>
|
|
17
|
-
#include <cstdint>
|
|
18
|
-
|
|
19
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
20
|
-
|
|
21
|
-
#include <boost/config/pragma_message.hpp>
|
|
22
|
-
BOOST_PRAGMA_MESSAGE("Using std::atomic atomic_count")
|
|
23
|
-
|
|
24
|
-
#endif
|
|
25
|
-
|
|
26
|
-
namespace boost
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
namespace detail
|
|
30
|
-
{
|
|
31
|
-
|
|
32
|
-
class atomic_count
|
|
33
|
-
{
|
|
34
|
-
public:
|
|
35
|
-
|
|
36
|
-
explicit atomic_count( long v ): value_( static_cast< std::int_least32_t >( v ) )
|
|
37
|
-
{
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
long operator++()
|
|
41
|
-
{
|
|
42
|
-
return value_.fetch_add( 1, std::memory_order_acq_rel ) + 1;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
long operator--()
|
|
46
|
-
{
|
|
47
|
-
return value_.fetch_sub( 1, std::memory_order_acq_rel ) - 1;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
operator long() const
|
|
51
|
-
{
|
|
52
|
-
return value_.load( std::memory_order_acquire );
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private:
|
|
56
|
-
|
|
57
|
-
atomic_count(atomic_count const &);
|
|
58
|
-
atomic_count & operator=(atomic_count const &);
|
|
59
|
-
|
|
60
|
-
std::atomic_int_least32_t value_;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
} // namespace detail
|
|
64
|
-
|
|
65
|
-
} // namespace boost
|
|
66
|
-
|
|
67
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_STD_ATOMIC_HPP_INCLUDED
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// boost/detail/atomic_count_sync.hpp
|
|
6
|
-
//
|
|
7
|
-
// atomic_count for g++ 4.1+
|
|
8
|
-
//
|
|
9
|
-
// http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html
|
|
10
|
-
//
|
|
11
|
-
// Copyright 2007 Peter Dimov
|
|
12
|
-
//
|
|
13
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
14
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
15
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
#include <boost/cstdint.hpp>
|
|
19
|
-
|
|
20
|
-
#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
|
|
21
|
-
# include <ia64intrin.h>
|
|
22
|
-
#endif
|
|
23
|
-
|
|
24
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
25
|
-
|
|
26
|
-
#include <boost/config/pragma_message.hpp>
|
|
27
|
-
BOOST_PRAGMA_MESSAGE("Using __sync atomic_count")
|
|
28
|
-
|
|
29
|
-
#endif
|
|
30
|
-
|
|
31
|
-
namespace boost
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
namespace detail
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
class atomic_count
|
|
38
|
-
{
|
|
39
|
-
public:
|
|
40
|
-
|
|
41
|
-
explicit atomic_count( long v ): value_( static_cast< boost::int_least32_t >( v ) )
|
|
42
|
-
{
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
long operator++()
|
|
46
|
-
{
|
|
47
|
-
return __sync_add_and_fetch( &value_, 1 );
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
long operator--()
|
|
51
|
-
{
|
|
52
|
-
return __sync_add_and_fetch( &value_, -1 );
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
operator long() const
|
|
56
|
-
{
|
|
57
|
-
return __sync_fetch_and_add( &value_, 0 );
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
private:
|
|
61
|
-
|
|
62
|
-
atomic_count(atomic_count const &);
|
|
63
|
-
atomic_count & operator=(atomic_count const &);
|
|
64
|
-
|
|
65
|
-
mutable boost::int_least32_t value_;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
} // namespace detail
|
|
69
|
-
|
|
70
|
-
} // namespace boost
|
|
71
|
-
|
|
72
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
// MS compatible compilers support #pragma once
|
|
5
|
-
|
|
6
|
-
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
|
7
|
-
# pragma once
|
|
8
|
-
#endif
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
// boost/detail/atomic_count_win32.hpp
|
|
12
|
-
//
|
|
13
|
-
// Copyright (c) 2001-2005 Peter Dimov
|
|
14
|
-
//
|
|
15
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
16
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
17
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
#include <boost/smart_ptr/detail/sp_interlocked.hpp>
|
|
21
|
-
|
|
22
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
23
|
-
|
|
24
|
-
#include <boost/config/pragma_message.hpp>
|
|
25
|
-
BOOST_PRAGMA_MESSAGE("Using Win32 atomic_count")
|
|
26
|
-
|
|
27
|
-
#endif
|
|
28
|
-
|
|
29
|
-
namespace boost
|
|
30
|
-
{
|
|
31
|
-
|
|
32
|
-
namespace detail
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
class atomic_count
|
|
36
|
-
{
|
|
37
|
-
public:
|
|
38
|
-
|
|
39
|
-
explicit atomic_count( long v ): value_( v )
|
|
40
|
-
{
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
long operator++()
|
|
44
|
-
{
|
|
45
|
-
return BOOST_SP_INTERLOCKED_INCREMENT( &value_ );
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
long operator--()
|
|
49
|
-
{
|
|
50
|
-
return BOOST_SP_INTERLOCKED_DECREMENT( &value_ );
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
operator long() const
|
|
54
|
-
{
|
|
55
|
-
return static_cast<long const volatile &>( value_ );
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
private:
|
|
59
|
-
|
|
60
|
-
atomic_count( atomic_count const & );
|
|
61
|
-
atomic_count & operator=( atomic_count const & );
|
|
62
|
-
|
|
63
|
-
long value_;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
} // namespace detail
|
|
67
|
-
|
|
68
|
-
} // namespace boost
|
|
69
|
-
|
|
70
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
|