Simple SFML GUI  0.2a
PtrStringCovertible.hpp
1 #ifndef PTRSTRINGCOVERTIBLE_HPP
2 #define PTRSTRINGCOVERTIBLE_HPP
3 
4 #include "StringConvertible.hpp"
5 #include "StringConvertions.hpp"
6 #include <algorithm>
7 #include <SFML/System/String.hpp>
8 
9 template <class T>
11 public:
12  virtual ~PtrStringConvertible() {}
13 
14  PtrStringConvertible(T* ptr) {
15  this->ptr = ptr;
16  }
17 
18  std::string toString() {
19  std::string str;
20  return str << *ptr;
21  }
22 
23  bool fromString(const std::string& str) {
24  try {
25  ptr << str;
26  } catch(std::exception&) {
27  return false;
28  }
29  return true;
30  }
31 
32 protected:
33  T* ptr;
34 };
35 
36 
37 template<>
38 class PtrStringConvertible<sf::String> : public StringConvertible {
39 public:
40  virtual ~PtrStringConvertible() {}
41 
42  PtrStringConvertible(sf::String* ptr) {
43  this->ptr = ptr;
44  }
45 
46  std::string toString() {
47  return ptr->toAnsiString();
48  }
49 
50  bool fromString(const std::string& str) {
51  *ptr = str;
52  return true;
53  }
54 
55 protected:
56  sf::String* ptr;
57 };
58 
59 template<>
60 class PtrStringConvertible<std::string> : public StringConvertible {
61 public:
62  virtual ~PtrStringConvertible() {}
63 
64  PtrStringConvertible(std::string* ptr) {
65  this->ptr = ptr;
66  }
67 
68  std::string toString() {
69  return *ptr;
70  }
71 
72  bool fromString(const std::string& str) {
73  *ptr = str;
74  return true;
75  }
76 
77 protected:
78  std::string* ptr;
79 };
80 
81 #endif // PTRSTRINGCOVERTIBLE_HPP
Definition: PtrStringCovertible.hpp:10
Definition: StringConvertible.hpp:7