RaftLib  0.3a
C++ Stream Processing Template Library
pointer.hpp
1 
20 #ifndef _POINTER_HPP_
21 #define _POINTER_HPP_ 1
22 
23 #include <cstdlib>
24 #include <cstdint>
25 #include <cstddef>
26 
27 class Pointer{
28 public:
34  Pointer( const size_t cap );
35 
36  Pointer( const std::size_t cap, const std::int8_t wrap_set );
44  Pointer( Pointer *other, const size_t new_cap );
45 
57  static size_t val( Pointer *ptr );
58 
64  static void inc( Pointer * const ptr );
65 
73  static void incBy( const size_t in, Pointer * const ptr );
74 
75 
84  static size_t wrapIndicator( Pointer *ptr );
85 
86 private:
87  volatile std::uint64_t a;
88  volatile std::uint64_t b;
98  volatile std::uint64_t wrap_a;
99  volatile std::uint64_t wrap_b;
100  const size_t max_cap;
101 };
102 #endif /* END _POINTER_HPP_ */
Pointer(const size_t cap)
Definition: pointer.cpp:23
static void incBy(const size_t in, Pointer *const ptr)
Definition: pointer.cpp:76
Definition: pointer.hpp:27
static void inc(Pointer *const ptr)
Definition: pointer.cpp:64
static size_t val(Pointer *ptr)
Definition: pointer.cpp:50
static size_t wrapIndicator(Pointer *ptr)
Definition: pointer.cpp:88