IBR-DTNSuite  0.10
Number.h
Go to the documentation of this file.
1 /*
2  * Number.h
3  *
4  * Copyright (C) 2013 IBR, TU Braunschweig
5  *
6  * Written-by: Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 
22 #ifndef NUMBER_H_
23 #define NUMBER_H_
24 
25 #include "ibrdtn/data/SDNV.h"
26 #include <stdint.h>
27 #include <sys/types.h>
28 
29 namespace dtn
30 {
31  namespace data
32  {
33  typedef size_t Length;
34  typedef size_t Size;
35  typedef size_t Timeout;
36 
37  typedef unsigned char block_t;
42 
43  template<typename E>
44  class Bitset : public dtn::data::SDNV<Size> {
45  public:
46  Bitset(Size initial) : dtn::data::SDNV<Size>(initial) {
47  }
48 
49  Bitset() {
50  }
51 
52  ~Bitset() { }
53 
54  void setBit(E flag, const bool &value)
55  {
56  if (value)
57  {
58  (dtn::data::SDNV<Size>&)(*this) |= flag;
59  }
60  else
61  {
62  (dtn::data::SDNV<Size>&)(*this) &= ~(flag);
63  }
64  }
65 
66  bool getBit(E flag) const
67  {
68  return ((const dtn::data::SDNV<Size>&)(*this) & flag);
69  }
70  };
71  }
72 }
73 
74 
75 #endif /* NUMBER_H_ */