5 #ifndef ROADRUNNER_RRROADRUNNERMAP_H
6 #define ROADRUNNER_RRROADRUNNERMAP_H
8 #include "rrRoadRunner.h"
9 #include <unordered_map>
11 #include "thread_pool.hpp"
22 static std::mutex rrMapMtx;
30 using ThreadSafeUnorderedMap = phmap::parallel_node_hash_map<std::string, std::unique_ptr<RoadRunner>>;
51 explicit RoadRunnerMap(
const std::vector<std::string> &sbmlStringsOrFiles,
unsigned int numThreads);
57 std::vector<std::string>
getKeys()
const;
64 std::vector<RoadRunner *>
getValues()
const;
70 std::vector<std::pair<std::string, RoadRunner *>>
getItems()
const;
82 void insert(std::unique_ptr<RoadRunner> roadRunner);
91 void insert(
const std::string &key, std::unique_ptr<RoadRunner> roadRunner);
101 void insert(
const std::string &sbmlOrFile);
112 void insert(
const std::string &key,
const std::string &sbmlOrFile);
123 void insert(
const std::vector<std::string> &sbmlStringsOrFiles);
129 void erase(
const std::string &key);
147 ThreadSafeUnorderedMap::iterator
begin();
148 ThreadSafeUnorderedMap::const_iterator
begin()
const;
159 ThreadSafeUnorderedMap::iterator
end();
160 ThreadSafeUnorderedMap::const_iterator
end()
const;
166 ThreadSafeUnorderedMap::iterator
find(
const std::string &key);
172 ThreadSafeUnorderedMap::const_iterator
find(
const std::string &key)
const;
182 unsigned int size()
const;
213 size_t count(
const std::string &key);
238 unsigned int numThreads_ = 1;
244 void loadParallel(
const std::vector<std::string> &sbmlFilesOrStrings);
249 void loadSerial(
const std::vector<std::string> &sbmlFilesOrStrings);
254 ThreadSafeUnorderedMap rrMap_{};
259 std::unique_ptr<thread_pool> pool =
nullptr;
Hash table designed for storing RoadRunner models.
Definition: rrRoadRunnerMap.h:39
void clear()
empty the map so that there are 0 elements left
Definition: rrRoadRunnerMap.cpp:120
std::vector< std::string > getKeys() const
Returns the keys of the map in order of insertion.
Definition: rrRoadRunnerMap.cpp:36
void wait_for_tasks()
wait for all tasks to finish before allowing program execution to continue
Definition: rrRoadRunnerMap.cpp:164
size_t count(const std::string &key)
count the number of keys with value
Definition: rrRoadRunnerMap.cpp:124
ThreadSafeUnorderedMap::iterator find(const std::string &key)
find item with key equal to
Definition: rrRoadRunnerMap.cpp:206
ThreadSafeUnorderedMap::iterator end()
Definition: rrRoadRunnerMap.cpp:198
ThreadSafeUnorderedMap::iterator begin()
map iterator
Definition: rrRoadRunnerMap.cpp:191
void erase(const std::string &key)
remove an element with
Definition: rrRoadRunnerMap.cpp:107
unsigned int getNumThreads() const
get the number of threds in the thread_pool
Definition: rrRoadRunnerMap.cpp:160
std::vector< RoadRunner * > getValues() const
return values of the map as a RoadRunnervector.
Definition: rrRoadRunnerMap.cpp:45
bool empty() const
return true if the map is empty
Definition: rrRoadRunnerMap.cpp:112
RoadRunnerMap()=default
Default construct a RoadRunnerMap.
RoadRunner * at(const std::string &key)
get borrowed reference from map for roadrunner model with key equal to
Definition: rrRoadRunnerMap.cpp:218
void setNumThreads(unsigned int n)
Reset the number of threads in the pool.
Definition: rrRoadRunnerMap.cpp:128
void insert(std::unique_ptr< RoadRunner > roadRunner)
Insert a.
Definition: rrRoadRunnerMap.cpp:63
std::vector< std::pair< std::string, RoadRunner * > > getItems() const
get items of this map as vector of std::pair<std::string, RoadRuner*> types.
Definition: rrRoadRunnerMap.cpp:54
RoadRunner * operator[](const std::string &key)
Getter operator.
Definition: rrRoadRunnerMap.cpp:214
unsigned int size() const
returns the number of elements in the map
Definition: rrRoadRunnerMap.cpp:116
The main RoadRunner class.
Definition: rrRoadRunner.h:59