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  using wrap_t = std::size_t;
29 
30 public:
36  Pointer( const std::size_t cap );
37 
38  Pointer( const std::size_t cap,
39  const wrap_t wrap_set );
47  Pointer( Pointer * const other,
48  const std::size_t new_cap );
49 
61  static std::size_t val( Pointer * const ptr ) ;
62 
68  static void inc( Pointer * const ptr ) ;
69 
77  static void incBy( const std::size_t in,
78  Pointer * const ptr ) ;
79 
80 
89  static std::size_t wrapIndicator( Pointer * const ptr ) ;
90 
91 private:
92  volatile std::uint64_t a = 0;
93  volatile std::uint64_t b = 0;
103  volatile wrap_t wrap_a = 0;
104  volatile wrap_t wrap_b = 0;
105  const std::size_t max_cap;
106 };
107 #endif /* END _POINTER_HPP_ */
Pointer(const std::size_t cap)
Definition: pointer.cpp:23
static std::size_t wrapIndicator(Pointer *const ptr)
Definition: pointer.cpp:81
Definition: pointer.hpp:27
static void incBy(const std::size_t in, Pointer *const ptr)
Definition: pointer.cpp:68
static void inc(Pointer *const ptr)
Definition: pointer.cpp:56
static std::size_t val(Pointer *const ptr)
Definition: pointer.cpp:42