L4Re Operating System Framework – Interface and Usage Documentation
Loading...
Searching...
No Matches
cxx::Bitfield< T, LSB, MSB > Class Template Reference

Definition for a member (part) of a bit field. More...

#include <bitfield>

+ Collaboration diagram for cxx::Bitfield< T, LSB, MSB >:

Data Structures

class  Value
 Internal helper type. More...
 
class  Value_base
 Internal helper type. More...
 
class  Value_unshifted
 Internal helper type. More...
 

Public Types

enum  { Bits = MSB + 1 - LSB , Lsb = LSB , Msb = MSB }
 
enum  Masks : T { Low_mask = ((T)~0ULL) >> (sizeof(T)*8 - Bits) , Mask = Low_mask << Lsb }
 Masks for bitswise operation on internal parts of a bitfield. More...
 
typedef Best_type< Bits >::Type Bits_type
 Type to hold at least Bits bits.
 
typedef Best_type< Bits+Lsb >::Type Shift_type
 Type to hold at least Bits + Lsb bits.
 
typedef Value< T & > Ref
 Reference type to access the bits inside a raw bit field.
 
typedef Value< T const > Val
 Value type to access the bits inside a raw bit field.
 
typedef Value_unshifted< T & > Ref_unshifted
 Reference type to access the bits inside a raw bit field (in place).
 
typedef Value_unshifted< T const > Val_unshifted
 Value type to access the bits inside a raw bit field (in place).
 

Static Public Member Functions

static Bits_type get (Shift_type val)
 Get the bits out of val.
 
static T get_unshifted (Shift_type val)
 Get the bits in place out of val.
 
static T set_dirty (T dest, Shift_type val)
 Set the bits corresponding to val.
 
static T set_unshifted_dirty (T dest, Shift_type val)
 Set the bits corresponding to val.
 
static T set (T dest, Bits_type val)
 Set the bits corresponding to val.
 
static T set_unshifted (T dest, Shift_type val)
 Set the bits corresponding to val.
 
static T val_dirty (Shift_type val)
 Get the shifted bits for val.
 
static T val (Bits_type val)
 Get the shifted bits for val.
 
static T val_unshifted (Shift_type val)
 Get the shifted bits for val.
 

Detailed Description

template<typename T, unsigned LSB, unsigned MSB>
class cxx::Bitfield< T, LSB, MSB >

Definition for a member (part) of a bit field.

Parameters
TThe underlying type of the bit field.
LSBThe least significant bit of our bits.
MSBThe most significant bit of our bits.

Definition at line 35 of file bitfield.

Member Typedef Documentation

◆ Bits_type

template<typename T , unsigned LSB, unsigned MSB>
typedef Best_type<Bits>::Type cxx::Bitfield< T, LSB, MSB >::Bits_type

Type to hold at least Bits bits.

This type can handle all values that can be stored in this part of the bit field.

Definition at line 83 of file bitfield.

◆ Shift_type

template<typename T , unsigned LSB, unsigned MSB>
typedef Best_type<Bits+Lsb>::Type cxx::Bitfield< T, LSB, MSB >::Shift_type

Type to hold at least Bits + Lsb bits.

This type can handle all values that can be stored in this part of the bit field when they are at the target location (Lsb bits shifted to the left).

Definition at line 91 of file bitfield.

Member Enumeration Documentation

◆ anonymous enum

template<typename T , unsigned LSB, unsigned MSB>
anonymous enum
Enumerator
Bits 

Number of bits.

Lsb 

index of the LSB

Msb 

index of the MSB

Definition at line 61 of file bitfield.

◆ Masks

template<typename T , unsigned LSB, unsigned MSB>
enum cxx::Bitfield::Masks : T

Masks for bitswise operation on internal parts of a bitfield.

Enumerator
Low_mask 

Mask value to get Bits bits.

Mask 

Mask value to the bits out of a T.

Definition at line 69 of file bitfield.

Member Function Documentation

◆ get()

template<typename T , unsigned LSB, unsigned MSB>
static Bits_type cxx::Bitfield< T, LSB, MSB >::get ( Shift_type  val)
inlinestatic

Get the bits out of val.

Parameters
valThe raw value of the whole bit field.
Returns
The bits form Lsb to Msb shifted to the right.

Definition at line 108 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Low_mask, cxx::Bitfield< T, LSB, MSB >::Lsb, and cxx::Bitfield< T, LSB, MSB >::val().

+ Here is the call graph for this function:

◆ get_unshifted()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::get_unshifted ( Shift_type  val)
inlinestatic

Get the bits in place out of val.

Parameters
valThe raw value of the whole bit field.
Returns
The bits from Lsb to Msb (unshifted).

This means other bits are masked out, however the result is not shifted to the right.

Definition at line 121 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Mask, and cxx::Bitfield< T, LSB, MSB >::val().

+ Here is the call graph for this function:

◆ set()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::set ( dest,
Bits_type  val 
)
inlinestatic

Set the bits corresponding to val.

Parameters
destThe current value of the whole bit field.
valThe value to set into the bits.
Returns
The new value of the whole bit field.

Definition at line 170 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Low_mask, cxx::Bitfield< T, LSB, MSB >::set_dirty(), and cxx::Bitfield< T, LSB, MSB >::val().

+ Here is the call graph for this function:

◆ set_dirty()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::set_dirty ( dest,
Shift_type  val 
)
inlinestatic

Set the bits corresponding to val.

Parameters
destThe current value of the whole bit field.
valThe value to set into the bits.
Returns
The new value of the whole bit field.
Precondition
val must not contain more than Bits bits.
Note
This function does not mask val to the right number of bits.

Definition at line 136 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Lsb, cxx::Bitfield< T, LSB, MSB >::Mask, and cxx::Bitfield< T, LSB, MSB >::val().

Referenced by cxx::Bitfield< T, LSB, MSB >::set().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set_unshifted()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::set_unshifted ( dest,
Shift_type  val 
)
inlinestatic

Set the bits corresponding to val.

Parameters
destThe current value of the whole bit field.
valThe value shifted Lsb bits to the left that shall be set into the bit field.
Returns
the new value of the whole bit field.

Definition at line 182 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Mask, cxx::Bitfield< T, LSB, MSB >::set_unshifted_dirty(), and cxx::Bitfield< T, LSB, MSB >::val().

+ Here is the call graph for this function:

◆ set_unshifted_dirty()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::set_unshifted_dirty ( dest,
Shift_type  val 
)
inlinestatic

Set the bits corresponding to val.

Parameters
destThe current value of the whole bit field.
valThe value shifted Lsb bits to the left that shall be set into the bits.
Returns
The new value of the whole bit field.
Precondition
val must not contain more than Bits bits shifted Lsb bits to the left.
Note
This function does not mask val to the right number of bits.

Definition at line 156 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Mask, and cxx::Bitfield< T, LSB, MSB >::val().

Referenced by cxx::Bitfield< T, LSB, MSB >::set_unshifted().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ val()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::val ( Bits_type  val)
inlinestatic

Get the shifted bits for val.

Parameters
valThe value to set into the bits.
Returns
The raw bit field value.

Definition at line 205 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Low_mask, cxx::Bitfield< T, LSB, MSB >::val(), and cxx::Bitfield< T, LSB, MSB >::val_dirty().

Referenced by cxx::Bitfield< T, LSB, MSB >::get(), cxx::Bitfield< T, LSB, MSB >::get_unshifted(), cxx::Bitfield< T, LSB, MSB >::set(), cxx::Bitfield< T, LSB, MSB >::set_dirty(), cxx::Bitfield< T, LSB, MSB >::set_unshifted(), cxx::Bitfield< T, LSB, MSB >::set_unshifted_dirty(), cxx::Bitfield< T, LSB, MSB >::val(), cxx::Bitfield< T, LSB, MSB >::val_dirty(), and cxx::Bitfield< T, LSB, MSB >::val_unshifted().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ val_dirty()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::val_dirty ( Shift_type  val)
inlinestatic

Get the shifted bits for val.

Parameters
valThe value to set into the bits.
Returns
The raw bit field value.
Precondition
val must not contain more than Bits bits.
Note
This function does not mask val to the right number of bits.

Definition at line 196 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Lsb, and cxx::Bitfield< T, LSB, MSB >::val().

Referenced by cxx::Bitfield< T, LSB, MSB >::val().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ val_unshifted()

template<typename T , unsigned LSB, unsigned MSB>
static T cxx::Bitfield< T, LSB, MSB >::val_unshifted ( Shift_type  val)
inlinestatic

Get the shifted bits for val.

Parameters
valThe value shifted Lsb bits to the left that shall be set into the bits.
Returns
The raw bit field value.

Definition at line 215 of file bitfield.

References cxx::Bitfield< T, LSB, MSB >::Mask, and cxx::Bitfield< T, LSB, MSB >::val().

+ Here is the call graph for this function:

The documentation for this class was generated from the following file: