@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,92 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_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
|
-
// detail/sp_convertible.hpp
|
|
11
|
-
//
|
|
12
|
-
// Copyright 2008 Peter Dimov
|
|
13
|
-
//
|
|
14
|
-
// Distributed under the Boost Software License, Version 1.0.
|
|
15
|
-
// See accompanying file LICENSE_1_0.txt or copy at
|
|
16
|
-
// http://www.boost.org/LICENSE_1_0.txt
|
|
17
|
-
|
|
18
|
-
#include <boost/config.hpp>
|
|
19
|
-
#include <cstddef>
|
|
20
|
-
|
|
21
|
-
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_NO_SFINAE )
|
|
22
|
-
# define BOOST_SP_NO_SP_CONVERTIBLE
|
|
23
|
-
#endif
|
|
24
|
-
|
|
25
|
-
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ < 303 )
|
|
26
|
-
# define BOOST_SP_NO_SP_CONVERTIBLE
|
|
27
|
-
#endif
|
|
28
|
-
|
|
29
|
-
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_BORLANDC ) && ( BOOST_BORLANDC < 0x630 )
|
|
30
|
-
# define BOOST_SP_NO_SP_CONVERTIBLE
|
|
31
|
-
#endif
|
|
32
|
-
|
|
33
|
-
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
|
|
34
|
-
|
|
35
|
-
namespace boost
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
namespace detail
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
template< class Y, class T > struct sp_convertible
|
|
42
|
-
{
|
|
43
|
-
typedef char (&yes) [1];
|
|
44
|
-
typedef char (&no) [2];
|
|
45
|
-
|
|
46
|
-
static yes f( T* );
|
|
47
|
-
static no f( ... );
|
|
48
|
-
|
|
49
|
-
enum _vt { value = sizeof( (f)( static_cast<Y*>(0) ) ) == sizeof(yes) };
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
template< class Y, class T > struct sp_convertible< Y, T[] >
|
|
53
|
-
{
|
|
54
|
-
enum _vt { value = false };
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
template< class Y, class T > struct sp_convertible< Y[], T[] >
|
|
58
|
-
{
|
|
59
|
-
enum _vt { value = sp_convertible< Y[1], T[1] >::value };
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
template< class Y, std::size_t N, class T > struct sp_convertible< Y[N], T[] >
|
|
63
|
-
{
|
|
64
|
-
enum _vt { value = sp_convertible< Y[1], T[1] >::value };
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
struct sp_empty
|
|
68
|
-
{
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
template< bool > struct sp_enable_if_convertible_impl;
|
|
72
|
-
|
|
73
|
-
template<> struct sp_enable_if_convertible_impl<true>
|
|
74
|
-
{
|
|
75
|
-
typedef sp_empty type;
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
template<> struct sp_enable_if_convertible_impl<false>
|
|
79
|
-
{
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
template< class Y, class T > struct sp_enable_if_convertible: public sp_enable_if_convertible_impl< sp_convertible< Y, T >::value >
|
|
83
|
-
{
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
} // namespace detail
|
|
87
|
-
|
|
88
|
-
} // namespace boost
|
|
89
|
-
|
|
90
|
-
#endif // !defined( BOOST_SP_NO_SP_CONVERTIBLE )
|
|
91
|
-
|
|
92
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_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
|
-
// detail/sp_counted_base.hpp
|
|
12
|
-
//
|
|
13
|
-
// Copyright 2005-2013 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_has_gcc_intrinsics.hpp>
|
|
21
|
-
#include <boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp>
|
|
22
|
-
#include <boost/config.hpp>
|
|
23
|
-
|
|
24
|
-
#if defined( BOOST_SP_DISABLE_THREADS )
|
|
25
|
-
# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
|
|
26
|
-
|
|
27
|
-
#elif defined( BOOST_SP_USE_STD_ATOMIC )
|
|
28
|
-
# include <boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp>
|
|
29
|
-
|
|
30
|
-
#elif defined( BOOST_SP_USE_SPINLOCK )
|
|
31
|
-
# include <boost/smart_ptr/detail/sp_counted_base_spin.hpp>
|
|
32
|
-
|
|
33
|
-
#elif defined( BOOST_SP_USE_PTHREADS )
|
|
34
|
-
# include <boost/smart_ptr/detail/sp_counted_base_pt.hpp>
|
|
35
|
-
|
|
36
|
-
#elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 )
|
|
37
|
-
# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
|
|
38
|
-
|
|
39
|
-
#elif defined( BOOST_SP_HAS_GCC_INTRINSICS )
|
|
40
|
-
# include <boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp>
|
|
41
|
-
|
|
42
|
-
#elif !defined( BOOST_NO_CXX11_HDR_ATOMIC )
|
|
43
|
-
# include <boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp>
|
|
44
|
-
|
|
45
|
-
#elif defined( __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 )
|
|
46
|
-
# include <boost/smart_ptr/detail/sp_counted_base_sync.hpp>
|
|
47
|
-
|
|
48
|
-
#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) ) && !defined(__PATHSCALE__)
|
|
49
|
-
# include <boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp>
|
|
50
|
-
|
|
51
|
-
#elif defined( BOOST_SP_HAS_SYNC_INTRINSICS )
|
|
52
|
-
# include <boost/smart_ptr/detail/sp_counted_base_sync.hpp>
|
|
53
|
-
|
|
54
|
-
#elif defined( __SNC__ )
|
|
55
|
-
# include <boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp>
|
|
56
|
-
|
|
57
|
-
#elif defined(__HP_aCC) && defined(__ia64)
|
|
58
|
-
# include <boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp>
|
|
59
|
-
|
|
60
|
-
#elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER ) && !defined(__PATHSCALE__)
|
|
61
|
-
# include <boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp>
|
|
62
|
-
|
|
63
|
-
#elif defined( __IBMCPP__ ) && defined( __powerpc )
|
|
64
|
-
# include <boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp>
|
|
65
|
-
|
|
66
|
-
#elif defined( __MWERKS__ ) && defined( __POWERPC__ )
|
|
67
|
-
# include <boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp>
|
|
68
|
-
|
|
69
|
-
#elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) ) && !defined(__PATHSCALE__) && !defined( _AIX )
|
|
70
|
-
# include <boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp>
|
|
71
|
-
|
|
72
|
-
#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) ) && !defined(__PATHSCALE__) && !defined( __mips16 )
|
|
73
|
-
# include <boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp>
|
|
74
|
-
|
|
75
|
-
#elif defined(__GNUC__) && ( defined( __sparcv9 ) || ( defined( __sparcv8 ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 ) ) )
|
|
76
|
-
# include <boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp>
|
|
77
|
-
|
|
78
|
-
#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__)
|
|
79
|
-
# include <boost/smart_ptr/detail/sp_counted_base_w32.hpp>
|
|
80
|
-
|
|
81
|
-
#elif defined( _AIX )
|
|
82
|
-
# include <boost/smart_ptr/detail/sp_counted_base_aix.hpp>
|
|
83
|
-
|
|
84
|
-
#elif !defined( BOOST_HAS_THREADS )
|
|
85
|
-
# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
|
|
86
|
-
|
|
87
|
-
#else
|
|
88
|
-
# include <boost/smart_ptr/detail/sp_counted_base_spin.hpp>
|
|
89
|
-
|
|
90
|
-
#endif
|
|
91
|
-
|
|
92
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// detail/sp_counted_base_acc_ia64.hpp - aC++ on HP-UX IA64
|
|
6
|
-
//
|
|
7
|
-
// Copyright 2007 Baruch Zilber
|
|
8
|
-
// Copyright 2007 Boris Gubenko
|
|
9
|
-
//
|
|
10
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
11
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
12
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
// Lock-free algorithm by Alexander Terekhov
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
#include <boost/smart_ptr/detail/sp_typeinfo_.hpp>
|
|
19
|
-
#include <boost/smart_ptr/detail/sp_obsolete.hpp>
|
|
20
|
-
#include <boost/config.hpp>
|
|
21
|
-
#include <machine/sys/inline.h>
|
|
22
|
-
|
|
23
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
24
|
-
|
|
25
|
-
#include <boost/config/pragma_message.hpp>
|
|
26
|
-
BOOST_PRAGMA_MESSAGE("Using HP aCC++/HP-UX/IA64 sp_counted_base")
|
|
27
|
-
|
|
28
|
-
#endif
|
|
29
|
-
|
|
30
|
-
BOOST_SP_OBSOLETE()
|
|
31
|
-
|
|
32
|
-
namespace boost
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
namespace detail
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
inline void atomic_increment( int * pw )
|
|
39
|
-
{
|
|
40
|
-
// ++*pw;
|
|
41
|
-
|
|
42
|
-
_Asm_fetchadd(_FASZ_W, _SEM_REL, pw, +1, _LDHINT_NONE);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
inline int atomic_decrement( int * pw )
|
|
46
|
-
{
|
|
47
|
-
// return --*pw;
|
|
48
|
-
|
|
49
|
-
int r = static_cast<int>(_Asm_fetchadd(_FASZ_W, _SEM_REL, pw, -1, _LDHINT_NONE));
|
|
50
|
-
if (1 == r)
|
|
51
|
-
{
|
|
52
|
-
_Asm_mf();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return r - 1;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
inline int atomic_conditional_increment( int * pw )
|
|
59
|
-
{
|
|
60
|
-
// if( *pw != 0 ) ++*pw;
|
|
61
|
-
// return *pw;
|
|
62
|
-
|
|
63
|
-
int v = *pw;
|
|
64
|
-
|
|
65
|
-
for (;;)
|
|
66
|
-
{
|
|
67
|
-
if (0 == v)
|
|
68
|
-
{
|
|
69
|
-
return 0;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
_Asm_mov_to_ar(_AREG_CCV,
|
|
73
|
-
v,
|
|
74
|
-
(_UP_CALL_FENCE | _UP_SYS_FENCE | _DOWN_CALL_FENCE | _DOWN_SYS_FENCE));
|
|
75
|
-
int r = static_cast<int>(_Asm_cmpxchg(_SZ_W, _SEM_ACQ, pw, v + 1, _LDHINT_NONE));
|
|
76
|
-
if (r == v)
|
|
77
|
-
{
|
|
78
|
-
return r + 1;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
v = r;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
class BOOST_SYMBOL_VISIBLE sp_counted_base
|
|
86
|
-
{
|
|
87
|
-
private:
|
|
88
|
-
|
|
89
|
-
sp_counted_base( sp_counted_base const & );
|
|
90
|
-
sp_counted_base & operator= ( sp_counted_base const & );
|
|
91
|
-
|
|
92
|
-
int use_count_; // #shared
|
|
93
|
-
int weak_count_; // #weak + (#shared != 0)
|
|
94
|
-
|
|
95
|
-
public:
|
|
96
|
-
|
|
97
|
-
sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
|
|
98
|
-
{
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
virtual ~sp_counted_base() // nothrow
|
|
102
|
-
{
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// dispose() is called when use_count_ drops to zero, to release
|
|
106
|
-
// the resources managed by *this.
|
|
107
|
-
|
|
108
|
-
virtual void dispose() = 0; // nothrow
|
|
109
|
-
|
|
110
|
-
// destroy() is called when weak_count_ drops to zero.
|
|
111
|
-
|
|
112
|
-
virtual void destroy() // nothrow
|
|
113
|
-
{
|
|
114
|
-
delete this;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0;
|
|
118
|
-
virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0;
|
|
119
|
-
virtual void * get_untyped_deleter() = 0;
|
|
120
|
-
|
|
121
|
-
void add_ref_copy()
|
|
122
|
-
{
|
|
123
|
-
atomic_increment( &use_count_ );
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
bool add_ref_lock() // true on success
|
|
127
|
-
{
|
|
128
|
-
return atomic_conditional_increment( &use_count_ ) != 0;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
void release() // nothrow
|
|
132
|
-
{
|
|
133
|
-
if( atomic_decrement( &use_count_ ) == 0 )
|
|
134
|
-
{
|
|
135
|
-
dispose();
|
|
136
|
-
weak_release();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
void weak_add_ref() // nothrow
|
|
141
|
-
{
|
|
142
|
-
atomic_increment( &weak_count_ );
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
void weak_release() // nothrow
|
|
146
|
-
{
|
|
147
|
-
if( atomic_decrement( &weak_count_ ) == 0 )
|
|
148
|
-
{
|
|
149
|
-
destroy();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
long use_count() const // nothrow
|
|
154
|
-
{
|
|
155
|
-
return static_cast<int const volatile &>( use_count_ ); // TODO use ld.acq here
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
} // namespace detail
|
|
160
|
-
|
|
161
|
-
} // namespace boost
|
|
162
|
-
|
|
163
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
// detail/sp_counted_base_aix.hpp
|
|
6
|
-
// based on: detail/sp_counted_base_w32.hpp
|
|
7
|
-
//
|
|
8
|
-
// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
|
|
9
|
-
// Copyright 2004-2005 Peter Dimov
|
|
10
|
-
// Copyright 2006 Michael van der Westhuizen
|
|
11
|
-
//
|
|
12
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
13
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
14
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
// Lock-free algorithm by Alexander Terekhov
|
|
18
|
-
//
|
|
19
|
-
// Thanks to Ben Hitchings for the #weak + (#shared != 0)
|
|
20
|
-
// formulation
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
#include <boost/smart_ptr/detail/sp_typeinfo_.hpp>
|
|
24
|
-
#include <boost/config.hpp>
|
|
25
|
-
#include <builtins.h>
|
|
26
|
-
#include <sys/atomic_op.h>
|
|
27
|
-
|
|
28
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
29
|
-
|
|
30
|
-
#include <boost/config/pragma_message.hpp>
|
|
31
|
-
BOOST_PRAGMA_MESSAGE("Using AIX sp_counted_base")
|
|
32
|
-
|
|
33
|
-
#endif
|
|
34
|
-
|
|
35
|
-
namespace boost
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
namespace detail
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
inline void atomic_increment( int32_t* pw )
|
|
42
|
-
{
|
|
43
|
-
// ++*pw;
|
|
44
|
-
|
|
45
|
-
fetch_and_add( pw, 1 );
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
inline int32_t atomic_decrement( int32_t * pw )
|
|
49
|
-
{
|
|
50
|
-
// return --*pw;
|
|
51
|
-
|
|
52
|
-
int32_t originalValue;
|
|
53
|
-
|
|
54
|
-
__lwsync();
|
|
55
|
-
originalValue = fetch_and_add( pw, -1 );
|
|
56
|
-
__isync();
|
|
57
|
-
|
|
58
|
-
return (originalValue - 1);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
inline int32_t atomic_conditional_increment( int32_t * pw )
|
|
62
|
-
{
|
|
63
|
-
// if( *pw != 0 ) ++*pw;
|
|
64
|
-
// return *pw;
|
|
65
|
-
|
|
66
|
-
int32_t tmp = fetch_and_add( pw, 0 );
|
|
67
|
-
for( ;; )
|
|
68
|
-
{
|
|
69
|
-
if( tmp == 0 ) return 0;
|
|
70
|
-
if( compare_and_swap( pw, &tmp, tmp + 1 ) ) return (tmp + 1);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
class BOOST_SYMBOL_VISIBLE sp_counted_base
|
|
75
|
-
{
|
|
76
|
-
private:
|
|
77
|
-
|
|
78
|
-
sp_counted_base( sp_counted_base const & );
|
|
79
|
-
sp_counted_base & operator= ( sp_counted_base const & );
|
|
80
|
-
|
|
81
|
-
int32_t use_count_; // #shared
|
|
82
|
-
int32_t weak_count_; // #weak + (#shared != 0)
|
|
83
|
-
|
|
84
|
-
public:
|
|
85
|
-
|
|
86
|
-
sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
|
|
87
|
-
{
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
virtual ~sp_counted_base() // nothrow
|
|
91
|
-
{
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// dispose() is called when use_count_ drops to zero, to release
|
|
95
|
-
// the resources managed by *this.
|
|
96
|
-
|
|
97
|
-
virtual void dispose() = 0; // nothrow
|
|
98
|
-
|
|
99
|
-
// destroy() is called when weak_count_ drops to zero.
|
|
100
|
-
|
|
101
|
-
virtual void destroy() // nothrow
|
|
102
|
-
{
|
|
103
|
-
delete this;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0;
|
|
107
|
-
virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0;
|
|
108
|
-
virtual void * get_untyped_deleter() = 0;
|
|
109
|
-
|
|
110
|
-
void add_ref_copy()
|
|
111
|
-
{
|
|
112
|
-
atomic_increment( &use_count_ );
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
bool add_ref_lock() // true on success
|
|
116
|
-
{
|
|
117
|
-
return atomic_conditional_increment( &use_count_ ) != 0;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
void release() // nothrow
|
|
121
|
-
{
|
|
122
|
-
if( atomic_decrement( &use_count_ ) == 0 )
|
|
123
|
-
{
|
|
124
|
-
dispose();
|
|
125
|
-
weak_release();
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
void weak_add_ref() // nothrow
|
|
130
|
-
{
|
|
131
|
-
atomic_increment( &weak_count_ );
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
void weak_release() // nothrow
|
|
135
|
-
{
|
|
136
|
-
if( atomic_decrement( &weak_count_ ) == 0 )
|
|
137
|
-
{
|
|
138
|
-
destroy();
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
long use_count() const // nothrow
|
|
143
|
-
{
|
|
144
|
-
return fetch_and_add( const_cast<int32_t*>(&use_count_), 0 );
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
} // namespace detail
|
|
149
|
-
|
|
150
|
-
} // namespace boost
|
|
151
|
-
|
|
152
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_AIX_HPP_INCLUDED
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
|
|
2
|
-
#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_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
|
-
// detail/sp_counted_base_cw_ppc.hpp - CodeWarrior on PowerPC
|
|
12
|
-
//
|
|
13
|
-
// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
|
|
14
|
-
// Copyright 2004-2005 Peter Dimov
|
|
15
|
-
//
|
|
16
|
-
// Distributed under the Boost Software License, Version 1.0. (See
|
|
17
|
-
// accompanying file LICENSE_1_0.txt or copy at
|
|
18
|
-
// http://www.boost.org/LICENSE_1_0.txt)
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
// Lock-free algorithm by Alexander Terekhov
|
|
22
|
-
//
|
|
23
|
-
// Thanks to Ben Hitchings for the #weak + (#shared != 0)
|
|
24
|
-
// formulation
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
#include <boost/smart_ptr/detail/sp_typeinfo_.hpp>
|
|
28
|
-
#include <boost/smart_ptr/detail/sp_obsolete.hpp>
|
|
29
|
-
#include <boost/config.hpp>
|
|
30
|
-
|
|
31
|
-
#if defined(BOOST_SP_REPORT_IMPLEMENTATION)
|
|
32
|
-
|
|
33
|
-
#include <boost/config/pragma_message.hpp>
|
|
34
|
-
BOOST_PRAGMA_MESSAGE("Using CodeWarrior/PowerPC sp_counted_base")
|
|
35
|
-
|
|
36
|
-
#endif
|
|
37
|
-
|
|
38
|
-
namespace boost
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
namespace detail
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
inline void atomic_increment( register long * pw )
|
|
45
|
-
{
|
|
46
|
-
register int a;
|
|
47
|
-
|
|
48
|
-
asm
|
|
49
|
-
{
|
|
50
|
-
loop:
|
|
51
|
-
|
|
52
|
-
lwarx a, 0, pw
|
|
53
|
-
addi a, a, 1
|
|
54
|
-
stwcx. a, 0, pw
|
|
55
|
-
bne- loop
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
inline long atomic_decrement( register long * pw )
|
|
60
|
-
{
|
|
61
|
-
register int a;
|
|
62
|
-
|
|
63
|
-
asm
|
|
64
|
-
{
|
|
65
|
-
#if defined(__PPCZen__) || defined(__PPCe500__) || defined(__PPCe500v2__)
|
|
66
|
-
msync
|
|
67
|
-
#else
|
|
68
|
-
sync
|
|
69
|
-
#endif
|
|
70
|
-
|
|
71
|
-
loop:
|
|
72
|
-
|
|
73
|
-
lwarx a, 0, pw
|
|
74
|
-
addi a, a, -1
|
|
75
|
-
stwcx. a, 0, pw
|
|
76
|
-
bne- loop
|
|
77
|
-
|
|
78
|
-
isync
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return a;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
inline long atomic_conditional_increment( register long * pw )
|
|
85
|
-
{
|
|
86
|
-
register int a;
|
|
87
|
-
|
|
88
|
-
asm
|
|
89
|
-
{
|
|
90
|
-
loop:
|
|
91
|
-
|
|
92
|
-
lwarx a, 0, pw
|
|
93
|
-
cmpwi a, 0
|
|
94
|
-
beq store
|
|
95
|
-
|
|
96
|
-
addi a, a, 1
|
|
97
|
-
|
|
98
|
-
store:
|
|
99
|
-
|
|
100
|
-
stwcx. a, 0, pw
|
|
101
|
-
bne- loop
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return a;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
class BOOST_SYMBOL_VISIBLE sp_counted_base
|
|
108
|
-
{
|
|
109
|
-
private:
|
|
110
|
-
|
|
111
|
-
sp_counted_base( sp_counted_base const & );
|
|
112
|
-
sp_counted_base & operator= ( sp_counted_base const & );
|
|
113
|
-
|
|
114
|
-
long use_count_; // #shared
|
|
115
|
-
long weak_count_; // #weak + (#shared != 0)
|
|
116
|
-
|
|
117
|
-
public:
|
|
118
|
-
|
|
119
|
-
sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
|
|
120
|
-
{
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
virtual ~sp_counted_base() // nothrow
|
|
124
|
-
{
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// dispose() is called when use_count_ drops to zero, to release
|
|
128
|
-
// the resources managed by *this.
|
|
129
|
-
|
|
130
|
-
virtual void dispose() = 0; // nothrow
|
|
131
|
-
|
|
132
|
-
// destroy() is called when weak_count_ drops to zero.
|
|
133
|
-
|
|
134
|
-
virtual void destroy() // nothrow
|
|
135
|
-
{
|
|
136
|
-
delete this;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
virtual void * get_deleter( sp_typeinfo_ const & ti ) = 0;
|
|
140
|
-
virtual void * get_local_deleter( sp_typeinfo_ const & ti ) = 0;
|
|
141
|
-
virtual void * get_untyped_deleter() = 0;
|
|
142
|
-
|
|
143
|
-
void add_ref_copy()
|
|
144
|
-
{
|
|
145
|
-
atomic_increment( &use_count_ );
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
bool add_ref_lock() // true on success
|
|
149
|
-
{
|
|
150
|
-
return atomic_conditional_increment( &use_count_ ) != 0;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
void release() // nothrow
|
|
154
|
-
{
|
|
155
|
-
if( atomic_decrement( &use_count_ ) == 0 )
|
|
156
|
-
{
|
|
157
|
-
dispose();
|
|
158
|
-
weak_release();
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
void weak_add_ref() // nothrow
|
|
163
|
-
{
|
|
164
|
-
atomic_increment( &weak_count_ );
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
void weak_release() // nothrow
|
|
168
|
-
{
|
|
169
|
-
if( atomic_decrement( &weak_count_ ) == 0 )
|
|
170
|
-
{
|
|
171
|
-
destroy();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
long use_count() const // nothrow
|
|
176
|
-
{
|
|
177
|
-
return static_cast<long const volatile &>( use_count_ );
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
} // namespace detail
|
|
182
|
-
|
|
183
|
-
} // namespace boost
|
|
184
|
-
|
|
185
|
-
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
|