Jpp  18.5.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JUUID.hh
Go to the documentation of this file.
1 #ifndef __JLANG__JUUID__
2 #define __JLANG__JUUID__
3 
4 #include <uuid/uuid.h>
5 #include <istream>
6 #include <ostream>
7 
8 #include "JLang/JComparable.hh"
9 
10 /**
11  * \author mdejong
12  */
13 
14 namespace JLANG {}
15 namespace JPP { using namespace JLANG; }
16 
17 namespace JLANG {
18 
19  /**
20  * Simple wrapper for UUID.
21  */
22  struct JUUID :
23  public JComparable<JUUID>
24  {
25 
26  static const int BUFFER_SIZE = 36; //!< number of characters for I/O of uuid_t without trailing '\0', see e.g.\ man uuid_parse
27 
28 
29  /**
30  * Default constructor.
31  */
33  {
34  clear();
35  }
36 
37 
38  /**
39  * Copy constructor.
40  *
41  * \param object UUID
42  */
43  JUUID(const uuid_t& object)
44  {
45  uuid_copy(this->uuid, object);
46  }
47 
48 
49  /**
50  * Copy constructor.
51  *
52  * \param object UUID
53  */
54  JUUID(const JUUID& object)
55  {
56  uuid_copy(this->uuid, object.uuid);
57  }
58 
59 
60  /**
61  * Randomizde this UUID.
62  *
63  * \return this UUID
64  */
65  const JUUID& operator()()
66  {
67  uuid_generate_random(this->uuid);
68 
69  return *this;
70  }
71 
72 
73  /**
74  * Generate random UUID.
75  *
76  * \return UUID
77  */
78  static inline const JUUID& rndm()
79  {
80  static JUUID id;
81 
82  return id();
83  }
84 
85 
86  /**
87  * Check validity.
88  *
89  * \return true if valid; else false
90  */
91  inline bool is_valid() const
92  {
93  return uuid_is_null(this->uuid) == 0;
94  }
95 
96 
97  /**
98  * Clear UUID.
99  */
100  inline void clear()
101  {
102  return uuid_clear(this->uuid);
103  }
104 
105 
106  /**
107  * Less than method.
108  *
109  * \param object UUID
110  * \return true if this UUID less than given UUID; else false
111  */
112  inline bool less(const JUUID& object) const
113  {
114  return uuid_compare(this->uuid, object.uuid) < 0;
115  }
116 
117 
118  /**
119  * Extract UUID.
120  *
121  * \param buffer UUID
122  * \return UUID
123  */
124  static JUUID valueOf(const std::string& buffer)
125  {
126  JUUID object;
127 
128  uuid_parse(buffer.c_str(), object.uuid);
129 
130  return object;
131  }
132 
133 
134  /**
135  * Read object identifier from input.
136  *
137  * \param in input stream
138  * \param object object identifier
139  * \return input stream
140  */
141  friend inline std::istream& operator>>(std::istream& in, JUUID& object)
142  {
143  char buffer[BUFFER_SIZE + 1];
144 
145  if (in.read(buffer, BUFFER_SIZE)) {
146 
147  buffer[BUFFER_SIZE] = '\0';
148 
149  uuid_parse(buffer, object.uuid);
150  }
151 
152  return in;
153  }
154 
155 
156  /**
157  * Write object identifier to output.
158  *
159  * \param out output stream
160  * \param object object identifier
161  * \return output stream
162  */
163  friend inline std::ostream& operator<<(std::ostream& out, const JUUID& object)
164  {
165  char buffer[BUFFER_SIZE + 1];
166 
167  uuid_unparse_lower(object.uuid, buffer);
168 
169  return out.write(buffer, BUFFER_SIZE);
170  }
171 
172  uuid_t uuid;
173  };
174 }
175 
176 #endif
void clear()
Clear UUID.
Definition: JUUID.hh:100
JUUID(const uuid_t &object)
Copy constructor.
Definition: JUUID.hh:43
const JUUID & operator()()
Randomizde this UUID.
Definition: JUUID.hh:65
static const JUUID & rndm()
Generate random UUID.
Definition: JUUID.hh:78
JUUID()
Default constructor.
Definition: JUUID.hh:32
then awk string
Template definition of auxiliary base class for comparison of data structures.
Definition: JComparable.hh:24
friend std::istream & operator>>(std::istream &in, JUUID &object)
Read object identifier from input.
Definition: JUUID.hh:141
bool is_valid() const
Check validity.
Definition: JUUID.hh:91
JUUID(const JUUID &object)
Copy constructor.
Definition: JUUID.hh:54
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:48
Simple wrapper for UUID.
Definition: JUUID.hh:22
static const int BUFFER_SIZE
number of characters for I/O of uuid_t without trailing &#39;\0&#39;, see e.g. man uuid_parse ...
Definition: JUUID.hh:26
static JUUID valueOf(const std::string &buffer)
Extract UUID.
Definition: JUUID.hh:124
bool less(const JUUID &object) const
Less than method.
Definition: JUUID.hh:112
uuid_t uuid
Definition: JUUID.hh:172
friend std::ostream & operator<<(std::ostream &out, const JUUID &object)
Write object identifier to output.
Definition: JUUID.hh:163