Fast map matching  0.1.0
util.hpp
1 
10 #ifndef FMM_UTIL_HPP
11 #define FMM_UTIL_HPP
12 
13 #include "mm/mm_type.hpp"
14 
15 #include <ogrsf_frmts.h> // C++ API for GDAL
16 #include <cfloat>
17 #include <iostream>
18 #include <string>
19 #include <sstream>
20 #include <sys/stat.h>
21 #include <cmath>
22 #include <chrono>
23 #include <vector>
24 #include <ctime>
25 
29 namespace std {
30 
38 template<typename T>
39 std::ostream &operator<<(std::ostream &os,
40  const std::vector<T> &vec) {
41  if (!vec.empty()) {
42  std::copy(vec.begin(), vec.end() - 1,
43  std::ostream_iterator<T>(os, ","));
44  os << vec.back();
45  }
46  return os;
47 }
48 
55 std::ostream &operator<<(std::ostream &os,
56  const FMM::MM::Traj_Candidates &tr_cs);
57 
64 std::ostream &operator<<(std::ostream &os,
65  const FMM::MM::OptCandidatePath &opath);
66 
73 std::ostream &operator<<(std::ostream &os,
74  const FMM::CORE::Point &geom);
75 
76 } // namespace std
77 
78 namespace FMM {
79 
83 namespace UTIL {
84 
88 typedef std::chrono::steady_clock::time_point TimePoint;
89 
95 bool file_exists(const char *filename);
101 bool file_exists(const std::string &filename);
107 bool folder_exist(const std::string &folder_name);
113 std::string get_file_directory(const std::string &fn);
114 
120 bool string2bool(const std::string &str);
121 
127 inline std::string bool2string(bool value) {
128  return (value ? "true" : "false");
129 }
130 
137 bool check_file_extension(const std::string &filename,
138  const std::string &extension_list_str);
139 
145 template<typename T>
146 std::string vec2string(
147  const std::vector<T> &vec) {
148  std::ostringstream vts;
149  if (!vec.empty()) {
150  std::copy(vec.begin(), vec.end() - 1,
151  std::ostream_iterator<T>(vts, ","));
152  vts << vec.back();
153  }
154  return vts.str();
155 }
156 
162 template<typename T>
163 std::vector<T> string2vec(
164  const std::string &str) {
165  std::vector<T> vec;
166  std::stringstream ss(str);
167  T i;
168  while (ss >> i) {
169  vec.push_back(i);
170  if (ss.peek() == ',')
171  ss.ignore();
172  }
173  return vec;
174 }
175 
181 std::vector<std::string> split_string(const std::string &str);
182 
187 std::chrono::time_point<std::chrono::system_clock> get_current_time();
188 
193 void print_time(
194  const std::chrono::time_point<std::chrono::system_clock> &start_time);
195 
202 double get_duration(
203  const std::chrono::time_point<std::chrono::system_clock> &start_time,
204  const std::chrono::time_point<std::chrono::system_clock> &end_time);
205 
206 } // Util
207 } // FMM
208 #endif /* FMM_UTIL_HPP */
FMM::UTIL::get_current_time
std::chrono::time_point< std::chrono::system_clock > get_current_time()
Get current timestamp.
Definition: util.cpp:88
FMM::MM::Traj_Candidates
std::vector< Point_Candidates > Traj_Candidates
trajectory candidates
Definition: mm_type.hpp:38
FMM::UTIL::bool2string
std::string bool2string(bool value)
Convert bool to string.
Definition: util.hpp:127
FMM::UTIL::split_string
std::vector< std::string > split_string(const std::string &str)
Split a string containing string separated by , into a vector of string.
Definition: util.cpp:73
FMM::UTIL::get_duration
double get_duration(const std::chrono::time_point< std::chrono::system_clock > &start_time, const std::chrono::time_point< std::chrono::system_clock > &end_time)
Calculate the duration between two time points.
Definition: util.cpp:99
FMM::UTIL::check_file_extension
bool check_file_extension(const std::string &filename, const std::string &extension_list_str)
Check if the filename has an extension in the list.
Definition: util.cpp:105
FMM
Fast map matching.
Definition: geom_algorithm.hpp:17
FMM::UTIL::folder_exist
bool folder_exist(const std::string &folder_name)
Check if folder exists or not.
Definition: util.cpp:120
std::operator<<
std::ostream & operator<<(std::ostream &os, const FMM::MM::Traj_Candidates &tr_cs)
Write trajectory candidate to a stream.
Definition: util.cpp:13
FMM::UTIL::string2vec
std::vector< T > string2vec(const std::string &str)
Convert string to vector.
Definition: util.hpp:163
FMM::UTIL::get_file_directory
std::string get_file_directory(const std::string &fn)
Get folder path from file path.
Definition: util.cpp:129
FMM::MM::OptCandidatePath
std::vector< const Candidate * > OptCandidatePath
Optimal candidates.
Definition: mm_type.hpp:41
FMM::UTIL::vec2string
std::string vec2string(const std::vector< T > &vec)
Convert a vector of type into a string with delimiter of ,.
Definition: util.hpp:146
std
Fast map matching.
Definition: util.cpp:11
FMM::UTIL::string2bool
bool string2bool(const std::string &str)
Convert string to bool.
Definition: util.cpp:84
FMM::CORE::Point
boost::geometry::model::point< double, 2, boost::geometry::cs::cartesian > Point
Point class.
Definition: geometry.hpp:28
FMM::UTIL::file_exists
bool file_exists(const char *filename)
Check if file exist or not.
Definition: util.cpp:61
FMM::UTIL::TimePoint
std::chrono::steady_clock::time_point TimePoint
Time point.
Definition: util.hpp:88
FMM::UTIL::print_time
void print_time(const std::chrono::time_point< std::chrono::system_clock > &start_time)
Print a timestamp.
Definition: util.cpp:93