DISPLACE  1.0
A spatial model of fisheries to help sustainable fishing and maritime spatial planning
poptable.h
Go to the documentation of this file.
1 #ifndef POPTABLE_H
2 #define POPTABLE_H
3 
4 #include "commons_global.h"
5 #include "idtypes.h"
6 
7 #include <functional>
8 
9 #include "sqlitefielddef.h"
10 #include "sqlitetable.h"
11 using namespace sqlite;
12 
13 #include <vector>
14 #include <string>
15 #include <map>
16 
17 class Node;
18 
19 class COMMONSSHARED_EXPORT PopTable : public SQLiteTable
20 {
21  struct Impl;
22  std::unique_ptr<Impl> p;
23 
24  FieldDef<FieldType::Integer> fldTStep = makeFieldDef("TStep",FieldType::Integer()).notNull();
25  FieldDef<FieldType::Integer> fldNodeId = makeFieldDef("NodeId",FieldType::Integer()).notNull();
26  FieldDef<FieldType::Integer> fldPopId = makeFieldDef("PopId",FieldType::Integer()).notNull();
27 
28  FieldDef<FieldType::Real> fldTotNId = makeFieldDef("TotalN",FieldType::Real()).notNull();
29  FieldDef<FieldType::Real> fldTotWId = makeFieldDef("TotalW",FieldType::Real()).notNull();
30  FieldDef<FieldType::Real> fldCumCatches = makeFieldDef("CumCatches",FieldType::Real()).notNull();
31  FieldDef<FieldType::Real> fldCumDiscards = makeFieldDef("CumDiscards",FieldType::Real()).notNull();
32  FieldDef<FieldType::Real> fldImpact = makeFieldDef("Impact",FieldType::Real()).notNull();
33 
34  void init();
35 public:
36  PopTable(std::shared_ptr<sqlite::SQLiteStorage> db, std::string name);
37  ~PopTable() noexcept;
38  void dropAndCreate();
39 
40  bool insert(int tstep, Node *node, const std::multimap<int, double> &initstate);
41 
42  struct Stat {
43  int tstep;
45  int popId;
46 
47  double totNid, totWid, cumC, cumD, impact;
48  };
49  void queryAllNodesAtStep(int tstep, std::function<bool (Stat)> op);
50 
51  size_t getNbPops();
52 };
53 
54 #endif // POPTABLE_H
Definition: poptable.h:42
int tstep
Definition: poptable.h:43
Definition: Node.h:39
Definition: sqliteoutputstorage.h:33
Definition: idtypes.h:52
int tstep
Definition: main.cpp:205
int popId
Definition: poptable.h:45
Definition: poptable.h:19
Definition: poptable.cpp:10
double totWid
Definition: poptable.h:47
types::NodeId nodeId
Definition: poptable.h:44
#define COMMONSSHARED_EXPORT
Definition: commons_global.h:23