@@ -35,8 +35,8 @@ Author: Daniel Poetzl
35
35
36
36
#include " invariant.h"
37
37
#include " make_unique.h"
38
+ #include " small_shared_n_way_ptr.h"
38
39
#include " small_shared_ptr.h"
39
- #include " small_shared_two_way_ptr.h"
40
40
41
41
#ifdef SN_INTERNAL_CHECKS
42
42
#define SN_ASSERT (b ) INVARIANT(b, " Sharing node internal invariant" )
@@ -70,7 +70,7 @@ const T *as_const(T *t)
70
70
71
71
// Inner nodes (internal nodes or container nodes)
72
72
73
- typedef small_shared_two_way_pointeet< unsigned > d_baset;
73
+ typedef small_shared_n_way_pointee_baset< 2 , unsigned > d_baset;
74
74
75
75
SN_TYPE_PAR_DECL class sharing_node_innert ;
76
76
@@ -105,7 +105,7 @@ class sharing_node_baset
105
105
SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
106
106
{
107
107
public:
108
- typedef small_shared_two_way_ptrt <SN_PTR_TYPE_ARGS> datat;
108
+ typedef small_shared_n_way_ptrt <SN_PTR_TYPE_ARGS> datat;
109
109
typedef typename datat::use_countt use_countt;
110
110
111
111
typedef d_internalt<SN_TYPE_ARGS> d_it;
@@ -155,12 +155,12 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
155
155
156
156
bool is_internal () const
157
157
{
158
- return data.is_derived_u ();
158
+ return data.template is_derived < 0 > ();
159
159
}
160
160
161
161
bool is_container () const
162
162
{
163
- return data.is_derived_v ();
163
+ return data.template is_derived < 1 > ();
164
164
}
165
165
166
166
bool is_defined_internal () const
@@ -177,14 +177,14 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
177
177
{
178
178
SN_ASSERT (!empty ());
179
179
180
- return *data.get_derived_u ();
180
+ return *data.template get_derived < 0 > ();
181
181
}
182
182
183
183
const d_ct &read_container () const
184
184
{
185
185
SN_ASSERT (!empty ());
186
186
187
- return *data.get_derived_v ();
187
+ return *data.template get_derived < 1 > ();
188
188
}
189
189
190
190
// Accessors
@@ -334,32 +334,34 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
334
334
{
335
335
if (!data)
336
336
{
337
- data = make_shared_derived_u< SN_PTR_TYPE_ARGS>();
337
+ data = make_shared_2< 0 , SN_PTR_TYPE_ARGS>();
338
338
}
339
339
else if (data.use_count () > 1 )
340
340
{
341
- data = make_shared_derived_u<SN_PTR_TYPE_ARGS>(*data.get_derived_u ());
341
+ data =
342
+ make_shared_2<0 , SN_PTR_TYPE_ARGS>(*data.template get_derived <0 >());
342
343
}
343
344
344
345
SN_ASSERT (data.use_count () == 1 );
345
346
346
- return *data.get_derived_u ();
347
+ return *data.template get_derived < 0 > ();
347
348
}
348
349
349
350
d_ct &write_container ()
350
351
{
351
352
if (!data)
352
353
{
353
- data = make_shared_derived_v< SN_PTR_TYPE_ARGS>();
354
+ data = make_shared_2< 1 , SN_PTR_TYPE_ARGS>();
354
355
}
355
356
else if (data.use_count () > 1 )
356
357
{
357
- data = make_shared_derived_v<SN_PTR_TYPE_ARGS>(*data.get_derived_v ());
358
+ data =
359
+ make_shared_2<1 , SN_PTR_TYPE_ARGS>(*data.template get_derived <1 >());
358
360
}
359
361
360
362
SN_ASSERT (data.use_count () == 1 );
361
363
362
- return *data.get_derived_v ();
364
+ return *data.template get_derived < 1 > ();
363
365
}
364
366
365
367
datat data;
0 commit comments