Guitar
charvec.h
Go to the documentation of this file.
1 
2 #ifndef CHARVEC_H
3 #define CHARVEC_H
4 
5 #include <vector>
6 #include <string>
7 #include <cstring>
8 
9 class VectorPrint {
10 public:
11  static void vecprint(std::vector<char> *out, char c)
12  {
13  out->push_back(c);
14  }
15 
16  static void vecprint(std::vector<char> *out, char const *begin, char const *end)
17  {
18  out->insert(out->end(), begin, end);
19  }
20 
21  static void vecprint(std::vector<char> *out, char const *ptr, size_t len)
22  {
23  vecprint(out, ptr, ptr + len);
24  }
25 
26  static void vecprint(std::vector<char> *out, char const *s)
27  {
28  vecprint(out, s, s + strlen(s));
29  }
30 
31  static void vecprint(std::vector<char> *out, std::string const &s)
32  {
33  vecprint(out, s.c_str(), s.size());
34  }
35 
36  static void vecprint(std::vector<char> *out, std::vector<char> const *in)
37  {
38  if (in && !in->empty()) {
39  char const *begin = &(*in)[0];
40  char const *end = begin + in->size();
41  vecprint(out, begin, end);
42  }
43  }
44 
45  static std::string to_stdstr(std::vector<char> const &vec)
46  {
47  if (!vec.empty()) {
48  char const *begin = &vec.at(0);
49  char const *end = begin + vec.size();
50  return std::string(begin, end);
51  }
52  return std::string();
53  }
54 };
55 
56 static inline void vecprint(std::vector<char> *out, char c)
57 {
58  VectorPrint::vecprint(out, c);
59 }
60 
61 static inline void vecprint(std::vector<char> *out, char const *begin, char const *end)
62 {
63  VectorPrint::vecprint(out, begin, end);
64 }
65 
66 static inline void vecprint(std::vector<char> *out, char const *ptr, size_t len)
67 {
68  VectorPrint::vecprint(out, ptr, len);
69 }
70 
71 static inline void vecprint(std::vector<char> *out, char const *s)
72 {
73  VectorPrint::vecprint(out, s);
74 }
75 
76 static inline void vecprint(std::vector<char> *out, std::string const &s)
77 {
78  VectorPrint::vecprint(out, s);
79 }
80 
81 static inline void vecprint(std::vector<char> *out, std::vector<char> const *in)
82 {
83  VectorPrint::vecprint(out, in);
84 }
85 
86 static inline std::string to_stdstr(std::vector<char> const &vec)
87 {
88  return VectorPrint::to_stdstr(vec);
89 }
90 
91 #endif
static std::string to_stdstr(std::vector< char > const &vec)
Definition: charvec.h:86
static void vecprint(std::vector< char > *out, char c)
Definition: charvec.h:56
Definition: charvec.h:9
static std::string to_stdstr(std::vector< char > const &vec)
Definition: charvec.h:45
static void vecprint(std::vector< char > *out, char const *begin, char const *end)
Definition: charvec.h:16
static void vecprint(std::vector< char > *out, char const *s)
Definition: charvec.h:26
static void vecprint(std::vector< char > *out, std::vector< char > const *in)
Definition: charvec.h:36
static void vecprint(std::vector< char > *out, char const *ptr, size_t len)
Definition: charvec.h:21
static void vecprint(std::vector< char > *out, std::string const &s)
Definition: charvec.h:31
static void vecprint(std::vector< char > *out, char c)
Definition: charvec.h:11