ANNA Suite  2020b
Multipurpose development suite for Telco applications
String.hpp
Go to the documentation of this file.
1 // ANNA - Anna is Not Nothingness Anymore //
2 // //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
4 // //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7 
8 
9 #ifndef anna_core_util_String_hpp
10 #define anna_core_util_String_hpp
11 
12 #include <string>
13 
14 #include <stdio.h>
15 
17 
18 namespace anna {
19 
20 class DataBlock;
21 
25 class String : public std::string {
26 public:
32  struct Flag { enum _v { None, ShowNull }; };
33 
38  String(const Flag::_v flag = Flag::None) : a_flags(flag) {;}
39 
45  explicit String(const char* str, const Flag::_v flag = Flag::None) :
46  std::string((str == NULL) ? ((flag & Flag::ShowNull) ? "<null>" : "") : str),
47  a_flags(flag)
48  {;}
49 
54  String(const String &other) : std::string(other), a_flags(other.a_flags) {;}
55 
56 
62  explicit String(const std::string& other, const Flag::_v flag = Flag::None) : std::string(other), a_flags(flag) {;}
63 
67  void toUpper() ;
68 
72  void toLower() ;
73 
74  String& operator = (const char* vv) { std::string::clear(); return operator<< (vv); }
75  String& operator = (const int vv) { std::string::clear(); return operator<< (vv); }
76  String& operator = (const unsigned int vv) { std::string::clear(); return operator<< (vv); }
77  String& operator = (const bool vv) { std::string::clear(); return operator<< (vv); }
78  String& operator = (const S64 vv) { std::string::clear(); return operator<< (vv); }
79  String& operator = (const U64 vv) { std::string::clear(); return operator<< (vv); }
80  String& operator = (const float vv) { std::string::clear(); return operator<< (vv); }
81  String& operator = (const double vv) { std::string::clear(); return operator<< (vv); }
82  String& operator = (const std::string& vv) { std::string::operator= (vv); return *this; }
83  String& operator = (const DataBlock& vv) { std::string::clear(); return operator<< (vv); }
84 
85  String& operator += (const char* vv) { return operator<< (vv); }
86  String& operator += (const int vv) { return operator<< (vv); }
87  String& operator += (const unsigned int vv) { return operator<< (vv); }
88  String& operator += (const bool vv) { return operator<< (vv); }
89  String& operator += (const S64 vv) { return operator<< (vv); }
90  String& operator += (const U64 vv) { return operator<< (vv); }
91  String& operator += (const float vv) { return operator<< (vv); }
92  String& operator += (const double vv) { return operator<< (vv); }
93  String& operator += (const std::string& vv) { return *this << vv; }
94  String& operator += (const DataBlock& vv) { return *this << vv; }
95 
96  String& operator << (const char* vv) ;
97  String& operator << (const int vv) ;
98  String& operator << (const unsigned int vv) ;
99  String& operator << (const bool vv) { std::string::operator+= ((vv == true) ? "true" : "false"); return *this; }
100  String& operator << (const S64 vv) ;
101  String& operator << (const U64 vv) ;
102  String& operator << (const float vv) ;
103  String& operator << (const double vv) ;
104  String& operator << (const std::string& vv) { std::string::operator+= (vv); return *this; }
105  String& operator << (const DataBlock& vv) ;
106 
114  static String format(const float vv, const char* format) { return __format(vv, format); }
115 
123  static String format(const double vv, const char* format) { return __format(vv, format); }
124 
131  static String format(const DataBlock& vv, const int characterByLine) ;
132 
138  static String hex(const int vv) { return __format(vv, "0x%x"); }
139 
145  static String hex(const unsigned int vv) { return __format(vv, "0x%x"); }
146 
152  static String hex(const S64 vv) {
153  return __format(vv, "0x%llx");
154  /*#ifdef __anna64__
155  return __format (vv, "0x%lx");
156  #else
157  return __format (vv, "0x%llx");
158  #endif
159  */
160  }
161 
162 private:
163  Flag::_v a_flags;
164 
165  template <typename T> static String __format(const T vv, const char* format) {
166  char aux [64];
167  sprintf(aux, format, vv);
168  return String(aux);
169  }
170 };
171 
172 }
173 
174 #endif
Definition: String.hpp:32
static String format(const double vv, const char *format)
Definition: String.hpp:123
String & operator<<(const char *vv)
static String hex(const S64 vv)
Definition: String.hpp:152
String(const String &other)
Definition: String.hpp:54
Definition: String.hpp:32
int64_t S64
Definition: defines.hpp:84
_v
Definition: String.hpp:32
String(const Flag::_v flag=Flag::None)
Definition: String.hpp:38
String & operator+=(const char *vv)
Definition: String.hpp:85
Definition: String.hpp:25
String & operator=(const char *vv)
Definition: String.hpp:74
String(const char *str, const Flag::_v flag=Flag::None)
Definition: String.hpp:45
static String format(const float vv, const char *format)
Definition: String.hpp:114
void toLower()
Definition: app.hpp:12
uint64_t U64
Definition: defines.hpp:81
Definition: String.hpp:32
static String hex(const int vv)
Definition: String.hpp:138
static String hex(const unsigned int vv)
Definition: String.hpp:145
String(const std::string &other, const Flag::_v flag=Flag::None)
Definition: String.hpp:62
Definition: DataBlock.hpp:24
void toUpper()