File tree Expand file tree Collapse file tree 3 files changed +10
-21
lines changed Expand file tree Collapse file tree 3 files changed +10
-21
lines changed Original file line number Diff line number Diff line change 4
4
* SPDX-License-Identifier: BSD-3-Clause
5
5
*/
6
6
// ***********************************************************************************************
7
- // - REQ: this class is to enhance safety of shared_ptr:
8
- // . store any type data: eg for ObjAnywhere
9
- // * store same type data: eg for DataDomino
10
- // . mem safe by SafePtr
11
- // - Unique Value:
12
- // . store
7
+ // - REQ: this class is to
8
+ // . store data of any type: eg for ObjAnywhere
9
+ // * store multi-copy of data of the same type: eg for DataDomino
10
+ // . fetch data by unique key(eg string)
11
+ // . ensure mem safe of stored data by SafePtr
13
12
//
14
13
// - MT safe: NO
15
14
// - mem safe: yes
@@ -46,7 +45,7 @@ class DataStore
46
45
template <typename aDataKey>
47
46
void DataStore<aDataKey>::emplace(const aDataKey& aKey, SafePtr<void > aData)
48
47
{
49
- if (aData. get () == nullptr )
48
+ if (! aData )
50
49
{
51
50
HID (" (DataStore) erase key=" << aKey);
52
51
key_data_S_.erase (aKey);
@@ -76,7 +75,7 @@ SafePtr<aDataT> DataStore<aDataKey>::get(const aDataKey& aKey) const
76
75
template <typename aDataKey>
77
76
void DataStore<aDataKey>::replace(const aDataKey& aKey, SafePtr<void > aData)
78
77
{
79
- if (aData. get () == nullptr )
78
+ if (! aData )
80
79
{
81
80
HID (" (DataStore) erase key=" << aKey);
82
81
key_data_S_.erase (aKey);
Original file line number Diff line number Diff line change @@ -23,8 +23,8 @@ void ObjAnywhere::init(UniLog& oneLog)
23
23
WRN (" (ObjAnywhere) !!! Refuse dup init." )
24
24
else
25
25
{
26
- HID (" (ObjAnywhere) Succeed." );
27
26
name_obj_S_ = make_shared<DataStore<ObjName>>();
27
+ HID (" (ObjAnywhere) Succeed." );
28
28
}
29
29
}
30
30
} // namespace
Original file line number Diff line number Diff line change 13
13
//
14
14
// - more value:
15
15
// . ObjAnywhere not include any Obj.hpp so no cross-include conflict
16
- // * ObjAnywhere stores shared_ptr <Obj> - real store, correct destruct, lifespan mgr
16
+ // * ObjAnywhere stores SafePtr <Obj> - real store, correct destruct, lifespan management
17
17
//
18
18
// - core: name_obj_S_
19
19
//
20
20
// - mem-safe: true (when use SafePtr instead of shared_ptr)
21
- //
22
- // - note:
23
- // . Obj can be destructed by its own destructor when shared_ptr<Obj>.use_count()==0
24
- // . it's possible after deinit() that Obj still exists since its use_count()>0
25
- // . if req to store same Obj multiply, use DataDomino
26
- //
27
- // - can DataDomino replace ObjAnywhere?
28
- // . somewhat yes
29
- // . but ObjAnywhere will be more complex since ObjIndex is replaced by EvName
30
- // . and DataDomino will be more complex to manage sharing/static store_
31
- // . = merge DataDomino & ObjAnywhere, so now giveup
21
+ // - MT safe: false (only use in main-thread)
32
22
// ***********************************************************************************************
33
23
#pragma once
34
24
You can’t perform that action at this time.
0 commit comments