ppap4lmp  0.7.2
updater.h
Go to the documentation of this file.
1 
9 #ifndef UPDATER_H
10 #define UPDATER_H
11 
12 #include <omp.h>
13 
14 #include <core/generators.h>
15 
16 
18 using JsonToVoidFunc = std::function<void(const Json &)>;
20 using JsonToBoolFunc = std::function<bool(const Json &)>;
21 
34 class Updater : public std::enable_shared_from_this<Updater> {
53  const int elementid);
54  protected:
81  virtual void compute_body(
82  const ElPtr &elem,
83  Json &data) = 0;
97  virtual void compute_common(
98  const ElPtr &elem,
99  Json &data);
117  virtual void compute_impl(
118  Json &data,
119  JsonToVoidFunc check_required_keys,
120  JsonToBoolFunc check_optional_keys) = 0;
121  public:
131  Updater() = default;
132  virtual ~Updater() = default;
149  void compute(
150  const ElPtr &elem, const int elementid, Json &data);
164  const int elementid);
173 };
174 
175 #endif
virtual void compute_body(const ElPtr &elem, Json &data)=0
Managing computation to update Element::data.
ShPtr< Element > ElPtr
An alias for a shared pointer of Element class.
Definition: element.h:378
void remove_from_skippable_elementids(const int elementid)
Remove Element::elementid from skippable_elementids.
Definition: updater.cpp:75
This file includes all the header files of subclasses of Generator class.
Updater is an abstract class to update data held by an Element object.
Definition: updater.h:34
std::function< bool(const Json &)> JsonToBoolFunc
An alias for a function accepts a Json object and returns a bool.
Definition: updater.h:20
const ShPtr< Generator > & get_ext_generator()
Get ext_generator of this object.
Definition: updater.cpp:86
nlohmann::json Json
Json is an alias for nlohmann::json.
Definition: json.h:22
bool check_compute_request_for(const int elementid)
Definition: updater.cpp:13
std::unordered_set< T > Set
Set is an alias for unordered set (same as set in Python).
Definition: std.h:49
Set< int > skippable_elementids
Definition: updater.h:41
ShPtr< Generator > ext_generator
Definition: updater.h:64
virtual void compute_impl(Json &data, JsonToVoidFunc check_required_keys, JsonToBoolFunc check_optional_keys)=0
Implementation of computation updating Element::data.
Updater()=default
Constructor of Updater class.
std::function< void(const Json &)> JsonToVoidFunc
An alias for a function accepts a Json object.
Definition: updater.h:18
std::shared_ptr< T > ShPtr
ShPtr is an alias for shared pointer.
Definition: std.h:16
void compute(const ElPtr &elem, const int elementid, Json &data)
Managing computation to update Element::data.
Definition: updater.cpp:34
virtual void compute_common(const ElPtr &elem, Json &data)
Common part of compute_body.
Definition: updater.cpp:47