Stride Reference Manual  1.0
Infector.h
Go to the documentation of this file.
1 #pragma once
2 /*
3  * This is free software: you can redistribute it and/or modify it
4  * under the terms of the GNU General Public License as published by
5  * the Free Software Foundation, either version 3 of the License, or
6  * any later version.
7  * The software is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  * You should have received a copy of the GNU General Public License
12  * along with the software. If not, see <http://www.gnu.org/licenses/>.
13  *
14  * Copyright 2017, Willem L, Kuylen E, Stijven S & Broeckhove J
15  */
16 
24 
25 #include "core/DiseaseProfile.h"
26 #include "core/LogMode.h"
27 
28 #include <memory>
29 #include <spdlog/logger.h>
30 
31 namespace stride {
32 
33 class Cluster;
34 
35 class Calendar;
36 namespace util { class Random; }
37 
41 template<LogMode log_level, bool track_index_case, typename local_information_policy>
42 class Infector {
43 public:
44  static void execute(Cluster& cluster, DiseaseProfile disease_profile,
45  util::Random& contact_handler, std::shared_ptr<const Calendar> calendar,
46  spdlog::logger& logger);
47 };
48 
52 template<LogMode log_level, bool track_index_case>
53 class Infector<log_level, track_index_case, NoLocalInformation> {
54 public:
55  static void execute(Cluster& cluster, DiseaseProfile disease_profile,
56  util::Random& contact_handler, std::shared_ptr<const Calendar> calendar,
57  spdlog::logger& logger);
58 };
59 
63 template<bool track_index_case>
64 class Infector<LogMode::Contacts, track_index_case, NoLocalInformation> {
65 public:
66  static void execute(Cluster& cluster, DiseaseProfile disease_profile,
67  util::Random& contact_handler, std::shared_ptr<const Calendar> calendar,
68  spdlog::logger& logger);
69 };
70 
71 
73 extern template
75 
76 extern template
78 
79 extern template
81 
82 extern template
84 
85 extern template
87 
88 extern template
90 
91 extern template
93 
94 extern template
96 
97 extern template
99 
100 extern template
102 
103 extern template
105 
106 extern template
108 
109 
110 }
Time Dependent Person DataType.
Definition: NoBehaviour.h:17
Actual contacts and transmission in cluster (primary template).
Definition: Infector.h:42
LogMode
Enum specifiying the level of logging required:
Definition: LogMode.h:32
Header for the LogMode class.
Disease profile.
Represents a location for social contacts, an group of people.
Definition: Cluster.h:46
The random number generator.
Definition: Random.h:39