Skip to content

Commit 3800284

Browse files
committed
Remove the empty_data static field of sharing_node_innert/sharing_node_leaft
A sharing node is now considered empty when its contained shared pointer is empty.
1 parent 2614c5b commit 3800284

File tree

1 file changed

+9
-21
lines changed

1 file changed

+9
-21
lines changed

src/util/sharing_node.h

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,18 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
113113
typedef typename d_ct::leaft leaft;
114114
typedef typename d_ct::leaf_listt leaf_listt;
115115

116-
sharing_node_innert() : data(empty_data)
116+
sharing_node_innert()
117117
{
118118
}
119119

120120
bool empty() const
121121
{
122-
return data == empty_data;
122+
return !data;
123123
}
124124

125125
void clear()
126126
{
127-
data = empty_data;
127+
data.reset();
128128
}
129129

130130
bool shares_with(const sharing_node_innert &other) const
@@ -153,7 +153,7 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
153153

154154
d_it &write_internal()
155155
{
156-
if(data == empty_data)
156+
if(!data)
157157
{
158158
data = make_shared_derived_u<SN_PTR_TYPE_ARGS>();
159159
}
@@ -176,7 +176,7 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
176176

177177
d_ct &write_container()
178178
{
179-
if(data == empty_data)
179+
if(!data)
180180
{
181181
data = make_shared_derived_v<SN_PTR_TYPE_ARGS>();
182182
}
@@ -339,13 +339,8 @@ SN_TYPE_PAR_DEF class sharing_node_innert : public sharing_node_baset
339339
}
340340

341341
small_shared_two_way_ptrt<SN_PTR_TYPE_ARGS> data;
342-
static small_shared_two_way_ptrt<SN_PTR_TYPE_ARGS> empty_data;
343342
};
344343

345-
SN_TYPE_PAR_DEF small_shared_two_way_ptrt<SN_PTR_TYPE_ARGS>
346-
sharing_node_innert<SN_TYPE_ARGS>::empty_data =
347-
small_shared_two_way_ptrt<SN_PTR_TYPE_ARGS>();
348-
349344
// Leafs
350345

351346
SN_TYPE_PAR_DECL class d_leaft : public small_shared_pointeet<unsigned>
@@ -364,7 +359,7 @@ SN_TYPE_PAR_DEF class sharing_node_leaft : public sharing_node_baset
364359
public:
365360
typedef d_leaft<SN_TYPE_ARGS> d_lt;
366361

367-
sharing_node_leaft(const keyT &k, const valueT &v) : data(empty_data)
362+
sharing_node_leaft(const keyT &k, const valueT &v)
368363
{
369364
SN_ASSERT(empty());
370365

@@ -384,12 +379,12 @@ SN_TYPE_PAR_DEF class sharing_node_leaft : public sharing_node_baset
384379

385380
bool empty() const
386381
{
387-
return data == empty_data;
382+
return !data;
388383
}
389384

390385
void clear()
391386
{
392-
data = empty_data;
387+
data.reset();
393388
}
394389

395390
bool shares_with(const sharing_node_leaft &other) const
@@ -404,9 +399,7 @@ SN_TYPE_PAR_DEF class sharing_node_leaft : public sharing_node_baset
404399

405400
d_lt &write()
406401
{
407-
SN_ASSERT(data.use_count() > 0);
408-
409-
if(data == empty_data)
402+
if(!data)
410403
{
411404
data = make_small_shared_ptr<d_lt>();
412405
}
@@ -453,11 +446,6 @@ SN_TYPE_PAR_DEF class sharing_node_leaft : public sharing_node_baset
453446
}
454447

455448
small_shared_ptrt<SN_PTR_TYPE_ARG> data;
456-
static small_shared_ptrt<SN_PTR_TYPE_ARG> empty_data;
457449
};
458450

459-
SN_TYPE_PAR_DEF small_shared_ptrt<SN_PTR_TYPE_ARG>
460-
sharing_node_leaft<SN_TYPE_ARGS>::empty_data =
461-
make_small_shared_ptr<SN_PTR_TYPE_ARG>();
462-
463451
#endif

0 commit comments

Comments
 (0)