https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
VecStore Class Reference
Inheritance diagram for VecStore:
[legend]

Public Member Functions

virtual void add (std::size_t obj_id, std::vector< std::unique_ptr< Attribute > > attribs) override
 
virtual std::vector< std::size_t > query (const std::vector< std::unique_ptr< Attribute > > &conds) override
 
virtual void set (std::size_t obj_id, std::vector< std::unique_ptr< Attribute > > attribs) override
 

Private Attributes

std::mutex _mutex
 
std::vector< std::vector< std::unique_ptr< Attribute > > > _data
 

Detailed Description

Definition at line 56 of file TheWarehouse.C.

Member Function Documentation

◆ add()

virtual void VecStore::add ( std::size_t  obj_id,
std::vector< std::unique_ptr< Attribute > >  attribs 
)
inlineoverridevirtual

Implements WarehouseStorage.

Definition at line 59 of file TheWarehouse.C.

60 {
61 std::lock_guard<std::mutex> l(_mutex);
62 if (obj_id != _data.size())
63 throw std::runtime_error("object with id " + std::to_string(obj_id) + " already added");
64 _data.push_back(std::move(attribs));
65 }
std::vector< std::vector< std::unique_ptr< Attribute > > > _data
std::mutex _mutex

◆ query()

virtual std::vector< std::size_t > VecStore::query ( const std::vector< std::unique_ptr< Attribute > > &  conds)
inlineoverridevirtual

Implements WarehouseStorage.

Definition at line 68 of file TheWarehouse.C.

69 {
70 std::vector<std::size_t> ids;
71 std::lock_guard<std::mutex> l(_mutex);
72 for (std::size_t i = 0; i < _data.size(); i++)
73 {
74 auto & data = _data[i];
75 bool ismatch = true;
76 for (auto & cond : conds)
77 {
78 if (!data[cond->id()]->isMatch(*cond))
79 {
80 ismatch = false;
81 break;
82 }
83 }
84 if (ismatch)
85 {
86 mooseAssert(std::find(ids.begin(), ids.end(), i) == ids.end(), "Duplicate object");
87 ids.push_back(i);
88 }
89 }
90 return ids;
91 }

◆ set()

virtual void VecStore::set ( std::size_t  obj_id,
std::vector< std::unique_ptr< Attribute > >  attribs 
)
inlineoverridevirtual

Implements WarehouseStorage.

Definition at line 93 of file TheWarehouse.C.

94 {
95 if (obj_id > _data.size())
96 throw std::runtime_error("unknown object id " + std::to_string(obj_id));
97
98 std::lock_guard<std::mutex> l(_mutex);
99
100 auto & dst = _data[obj_id];
101 for (auto & attrib : attribs)
102 dst[attrib->id()] = std::move(attrib);
103 }

Member Data Documentation

◆ _data

std::vector<std::vector<std::unique_ptr<Attribute> > > VecStore::_data
private

Definition at line 107 of file TheWarehouse.C.

Referenced by add(), query(), and set().

◆ _mutex

std::mutex VecStore::_mutex
private

Definition at line 106 of file TheWarehouse.C.

Referenced by add(), query(), and set().


The documentation for this class was generated from the following file: