PPL Assignment
IRM2015006
read_data.h
Go to the documentation of this file.
1 #ifndef READ_DATA_H
2 #define READ_DATA_H
3 
4 #define CSV_IO_NO_THREAD
5 #include "csv-parser/csv.h"
6 
7 #include "../girls/allgirls.h"
8 #include "../boys/allboys.h"
9 #include "../gifts/gift.h"
10 
11 /* Read all boys from filename (CSV)
12  * Return the vector of boys
13  */
14 std::vector<Boy*> readAllBoys(std::string filename)
15 {
16  io::CSVReader<6> in(filename.c_str());
17  in.read_header(io::ignore_extra_column,
18  "name",
19  "attractiveness",
20  "intelligence",
21  "budget",
22  "nature",
23  "min_attr_req");
24 
25  std::vector<Boy*> boys;
26  boys.clear();
27 
28  std::string name;
29  int attr, intel, budget, nature, min_attr;
30 
31  while (in.read_row(name, attr, intel, budget, nature, min_attr)) {
32  switch(nature) {
33  case BoyNature::miser:
34  boys.push_back(new MiserBoy(name, attr, intel, budget, min_attr));
35  break;
37  boys.push_back(new GenerousBoy(name, attr, intel, budget, min_attr));
38  break;
39  case BoyNature::geek:
40  boys.push_back(new GeekBoy(name, attr, intel, budget, min_attr));
41  break;
42  }
43  }
44  return boys;
45 }
46 
47 /* Read all girls from filename (CSV)
48  * Return the vector of Girls
49  */
50 std::vector<Girl*> readAllGirls(std::string filename)
51 {
52  io::CSVReader<6> in(filename.c_str());
53  in.read_header(io::ignore_extra_column,
54  "name",
55  "attractiveness",
56  "intelligence",
57  "budget",
58  "nature",
59  "boy_choice");
60 
61  std::vector<Girl*> girls;
62  girls.clear();
63 
64  std::string name;
65  int attr, intel, budget, nature, boy_nature;
66 
67  while (in.read_row(name, attr, intel, budget, nature, boy_nature)) {
68  switch (nature) {
69  case GirlNature::choosy:
70  girls.push_back(new ChoosyGirl(name, attr, intel, budget, static_cast<BoyType>(boy_nature)));
71  break;
73  girls.push_back(new DesperateGirl(name, attr, intel, budget, static_cast<BoyType>(boy_nature)));
74  break;
75  case GirlNature::normal:
76  girls.push_back(new NormalGirl(name, attr, intel, budget, static_cast<BoyType>(boy_nature)));
77  break;
78  }
79  }
80  return girls;
81 }
82 
83 /* Read all Gifts from filename (CSV)
84  * Returns the vector of Gifts
85  */
86 std::vector<Gift> readAllGifts(std::string filename)
87 {
88  io::CSVReader<4> in(filename.c_str());
89  in.read_header(io::ignore_extra_column,
90  "name",
91  "type",
92  "price",
93  "value");
94 
95  std::vector<Gift> gifts;
96  gifts.clear();
97 
98  std::string name;
99  int type, price, value;
100 
101  while (in.read_row(name, type, price, value)) {
102  gifts.push_back(Gift(name,
103  static_cast<GiftType>(type),
104  price,
105  value));
106  }
107  return gifts;
108 }
109 
110 #endif
std::vector< Gift > readAllGifts(std::string filename)
Definition: read_data.h:86
Definition: boy_type.h:6
std::vector< Girl * > readAllGirls(std::string filename)
Definition: read_data.h:50
std::vector< Boy * > readAllBoys(std::string filename)
Definition: read_data.h:14
Definition: gift.h:14
Definition: boy_type.h:8