DiaDes  0.1
DIAgnosis of Discrete-Event System
NullValue.hh
Go to the documentation of this file.
1 
9 #ifndef __DIADES__UTILS__NULLVALUE__HH__
10 #define __DIADES__UTILS__NULLVALUE__HH__
11 
12 namespace Diades
13 {
14  namespace Utils
15  {
16 
22  template<typename _Object>
24  {
25  public:
26  using Object = _Object;
27  virtual Object nullValue() const = 0;
28 
29  bool operator()(const Object & object) const
30  {
31  return object == nullValue();
32  }
33  };
34 
42  template<typename _Object>
43  class NullValue : public AbstractNullValue<_Object>
44  {
45  public:
46  using Object = _Object;
47 
48  virtual Object
49  nullValue() const
50  {
51  return Object();
52  }
53  };
54 
60  template<>
61  class NullValue<std::string> : public AbstractNullValue<std::string>
62  {
63  public:
64 
65  virtual std::string
66  nullValue() const
67  {
68  return "";
69  }
70  };
71 
78  template<>
79  class NullValue<unsigned> : public AbstractNullValue<unsigned>
80  {
81  public:
82 
83  virtual unsigned
84  nullValue() const
85  {
86  return std::numeric_limits<unsigned>::max();
87  }
88  };
89 
95  template<>
96  class NullValue<size_t> : public AbstractNullValue<size_t>
97  {
98  public:
99 
100  virtual size_t
101  nullValue() const
102  {
103  return std::numeric_limits<size_t>::max();
104  }
105  };
106  }
107 }
108 
109 
110 #endif /* __DIADES__UTILS__NULLVALUE__HH__ */
111 
STL namespace.
bool operator()(const Object &object) const
Definition: NullValue.hh:29
virtual Object nullValue() const
Definition: NullValue.hh:49
virtual unsigned nullValue() const
Definition: NullValue.hh:84
Namespace of the Diades project.
virtual std::string nullValue() const
Definition: NullValue.hh:66
virtual Object nullValue() const =0
virtual size_t nullValue() const
Definition: NullValue.hh:101