Zero  0.1.0
Macros | Functions | Variables
w_okvl_inl.h File Reference
#include "w_okvl.h"
#include <ostream>

Go to the source code of this file.

Macros

#define T   true
 
#define F   false
 

Functions

const okvl_mode ALL_N_GAP_N (okvl_mode::N, okvl_mode::N)
 Pre-defines frequently used lock modes as const objects. More...
 
const okvl_mode ALL_S_GAP_N (okvl_mode::S, okvl_mode::N)
 
const okvl_mode ALL_X_GAP_N (okvl_mode::X, okvl_mode::N)
 
const okvl_mode ALL_N_GAP_S (okvl_mode::N, okvl_mode::S)
 
const okvl_mode ALL_S_GAP_S (okvl_mode::S, okvl_mode::S)
 
const okvl_mode ALL_X_GAP_S (okvl_mode::X, okvl_mode::S)
 
const okvl_mode ALL_N_GAP_X (okvl_mode::N, okvl_mode::X)
 
const okvl_mode ALL_S_GAP_X (okvl_mode::S, okvl_mode::X)
 
const okvl_mode ALL_X_GAP_X (okvl_mode::X, okvl_mode::X)
 
std::ostream & operator<< (std::ostream &o, const okvl_mode &v)
 

Variables

const char *const element_mode_names []
 
const bool compatibility_table [okvl_mode::COUNT][okvl_mode::COUNT]
 
const bool implication_table [okvl_mode::COUNT][okvl_mode::COUNT]
 
const okvl_mode::element_lock_mode parent_lock_mode []
 
const okvl_mode::element_lock_mode combined_lock_modes [okvl_mode::COUNT][okvl_mode::COUNT]
 

Detailed Description

This file contains the inline functions declared in w_okvl.h.

Macro Definition Documentation

§ F

#define F   false

§ T

#define T   true

Function Documentation

§ ALL_N_GAP_N()

const okvl_mode ALL_N_GAP_N ( okvl_mode::N  ,
okvl_mode::N   
)

Pre-defines frequently used lock modes as const objects.

This is for both convenience and performance. In many cases (most likely as a func param), we can just use these const static objects. These constants could be named like XX, SS, .. for short, but this lengthy name is more clear, so in long run it will help us.

§ ALL_N_GAP_S()

const okvl_mode ALL_N_GAP_S ( okvl_mode::N  ,
okvl_mode::S   
)

§ ALL_N_GAP_X()

const okvl_mode ALL_N_GAP_X ( okvl_mode::N  ,
okvl_mode::X   
)

§ ALL_S_GAP_N()

const okvl_mode ALL_S_GAP_N ( okvl_mode::S  ,
okvl_mode::N   
)

§ ALL_S_GAP_S()

const okvl_mode ALL_S_GAP_S ( okvl_mode::S  ,
okvl_mode::S   
)

§ ALL_S_GAP_X()

const okvl_mode ALL_S_GAP_X ( okvl_mode::S  ,
okvl_mode::X   
)

§ ALL_X_GAP_N()

const okvl_mode ALL_X_GAP_N ( okvl_mode::X  ,
okvl_mode::N   
)

§ ALL_X_GAP_S()

const okvl_mode ALL_X_GAP_S ( okvl_mode::X  ,
okvl_mode::S   
)

§ ALL_X_GAP_X()

const okvl_mode ALL_X_GAP_X ( okvl_mode::X  ,
okvl_mode::X   
)

§ operator<<()

std::ostream& operator<< ( std::ostream &  o,
const okvl_mode v 
)
inline

Variable Documentation

§ combined_lock_modes

Initial value:

combined_lock_mode[requested mode][granted mode] returns the lock mode after combining the two lock modes. e.g., X + S = X, S + IX = SIX, etc.

§ compatibility_table

const bool compatibility_table[okvl_mode::COUNT][okvl_mode::COUNT]
Initial value:
= {
{T, T, T, T, T, T,},
{T, T, T, T, T, F,},
{T, T, T, F, F, F,},
{T, T, F, T, F, F,},
{T, T, F, F, F, F,},
{T, F, F, F, F, F,},
}
#define F
Definition: w_okvl_inl.h:46
#define T
Definition: w_okvl_inl.h:45

compatibility_table[requested mode][granted mode] means whether the requested lock mode is allowed given the already existing lock in granted mode.

§ element_mode_names

const char* const element_mode_names[]
Initial value:
= {
"N", "IS", "IX", "S", "SIX", "X"
}

Pretty name for each lock mode.

§ implication_table

const bool implication_table[okvl_mode::COUNT][okvl_mode::COUNT]
Initial value:
= {
{T, T, T, T, T, T,},
{F, T, T, T, T, T,},
{F, F, T, F, T, T,},
{F, F, F, T, T, T,},
{F, F, F, F, T, T,},
{F, F, F, F, F, T,},
}
#define F
Definition: w_okvl_inl.h:46
#define T
Definition: w_okvl_inl.h:45

implication_table[left][right] means whether the left lock mode is implied by the right lock mode.

§ parent_lock_mode

const okvl_mode::element_lock_mode parent_lock_mode[]
Initial value:
= {
okvl_mode::IX
}
Definition: w_okvl.h:108
Definition: w_okvl.h:109
Definition: w_okvl.h:110

parent_lock_modes[i] is the lock mode of parent of i e.g. g_parent_lock_mode[X] is IX.