Scarab  v2.1.0
Project 8 C++ Utility Library
Macros
_member_variables.hh File Reference
#include "macros.hh"
Include dependency graph for _member_variables.hh:

Go to the source code of this file.

Macros

#define get_fcn(x_variable)   PASTE( get_prefix, x_variable )
 
#define set_fcn(x_variable)   PASTE( set_prefix, x_variable )
 
#define var_name(x_variable)   PASTE( var_prefix, x_variable )
 
#define static_var_name(x_variable)   PASTE( static_prefix, x_variable )
 
#define mv_accessible_noset(x_type, x_variable)
 
#define mv_accessible(x_type, x_variable)
 
#define mv_accessible_static_noset(x_type, x_variable)
 
#define mv_accessible_static(x_type, x_variable)
 
#define mv_accessible_mutable_noset(x_type, x_variable)
 
#define mv_accessible_mutable(x_type, x_variable)
 
#define mv_referrable_const(x_type, x_variable)
 
#define mv_referrable(x_type, x_variable)
 
#define mv_referrable_static(x_type, x_variable)
 
#define mv_referrable_mutable(x_type, x_variable)
 
#define mv_assignable_noset(x_type, x_variable)
 
#define mv_assignable(x_type, x_variable)
 
#define mv_assignable_static_noset(x_type, x_variable)
 
#define mv_assignable_static(x_type, x_variable)
 
#define mv_assignable_mutable_noset(x_type, x_variable)
 
#define mv_assignable_mutable(x_type, x_variable)
 
#define mv_shared_ptr_const(x_type, x_variable)
 
#define mv_shared_ptr(x_type, x_variable)
 
#define mv_shared_ptr_static(x_type, x_variable)
 
#define mv_shared_ptr_mutable(x_type, x_variable)
 
#define mv_atomic_noset(x_type, x_variable)
 
#define mv_atomic(x_type, x_variable)
 
#define mv_atomic_static_noset(x_type, x_variable)
 
#define mv_atomic_static(x_type, x_variable)
 
#define mv_atomic_mutable_noset(x_type, x_variable)
 
#define mv_atomic_mutable(x_type, x_variable)
 

Macro Definition Documentation

#define get_fcn (   x_variable)    PASTE( get_prefix, x_variable )

Templates for macros for class member variables

Types of variables:

  • "normal"
  • referrable (i.e. accessed by reference)
  • pointers
  • std::shared_ptr
  • std::atomic

Variations:

  • no set (non-const) accessor
  • static
  • mutable

How to use this file:

  1. Create the include file that will be used (see e.g. member_variables.hh)
  2. Add include guards
  3. Define set_prefix, get_prefix, var_prefix, and static_prefix
  4. #include this file

Macros that must be defined to use this file:

  • set_prefix: the prefix for set accessor functions (e.g. set_)
  • get_prefix: the prefix for get accessor functions (e.g. get_)
  • var_prefix: the prefix for variables (e.g. f_)
  • static_prefix: the prefix for static variables (e.g. s_)

Accessors for normal variables, pointers, and atomics are of the form [set_prefix][variable name] and [get_prefix][variable_name]. Accessors for referrable variables and shared_ptr's are of the form [variable name], both const and non-const

Definition at line 44 of file _member_variables.hh.

#define mv_accessible (   x_type,
  x_variable 
)
Value:
public:\
void set_fcn( x_variable )( x_type p_variable )\
{\
var_name( x_variable ) = p_variable;\
return;\
}\
mv_accessible_noset( x_type, x_variable )
#define var_name(x_variable)
#define mv_accessible_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 62 of file _member_variables.hh.

#define mv_accessible_mutable (   x_type,
  x_variable 
)
Value:
public:\
void set_fcn( x_variable )( x_type p_variable ) const\
{\
var_name( x_variable ) = p_variable;\
return;\
}\
mv_accessible_mutable_noset( x_type, x_variable )
#define var_name(x_variable)
#define mv_accessible_mutable_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 98 of file _member_variables.hh.

#define mv_accessible_mutable_noset (   x_type,
  x_variable 
)
Value:
public:\
x_type get_fcn( x_variable )() const\
{\
return var_name( x_variable );\
}\
protected:\
mutable x_type var_name( x_variable );
#define var_name(x_variable)
#define get_fcn(x_variable)

Definition at line 89 of file _member_variables.hh.

#define mv_accessible_noset (   x_type,
  x_variable 
)
Value:
public:\
x_type get_fcn( x_variable )() const\
{\
return var_name( x_variable );\
}\
protected:\
x_type var_name( x_variable );
#define var_name(x_variable)
#define get_fcn(x_variable)

Definition at line 53 of file _member_variables.hh.

#define mv_accessible_static (   x_type,
  x_variable 
)
Value:
public:\
static void set_fcn( x_variable )( x_type p_variable )\
{\
static_var_name( x_variable ) = p_variable;\
return;\
}\
mv_accessible_static_noset( x_type, x_variable )
#define static_var_name(x_variable)
#define mv_accessible_static_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 80 of file _member_variables.hh.

#define mv_accessible_static_noset (   x_type,
  x_variable 
)
Value:
public:\
static x_type get_fcn( x_variable )()\
{\
return static_var_name( x_variable );\
}\
protected:\
static x_type static_var_name( x_variable );
#define get_fcn(x_variable)
#define static_var_name(x_variable)

Definition at line 71 of file _member_variables.hh.

#define mv_assignable (   x_type,
  x_variable 
)
Value:
public:\
void set_fcn( x_variable )( x_type* p_variable )\
{\
delete var_name( x_variable );\
var_name( x_variable ) = p_variable;\
return;\
}\
mv_assignable_noset( x_type, x_variable )
#define var_name(x_variable)
#define mv_assignable_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 161 of file _member_variables.hh.

#define mv_assignable_mutable (   x_type,
  x_variable 
)
Value:
public:\
void set_fcn( x_variable )( x_type* p_variable ) const\
{\
delete var_name( x_variable );\
var_name( x_variable ) = p_variable;\
return;\
}\
mv_assignable_mutable_noset( x_type, x_variable )
#define var_name(x_variable)
#define mv_assignable_mutable_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 199 of file _member_variables.hh.

#define mv_assignable_mutable_noset (   x_type,
  x_variable 
)
Value:
public:\
x_type* get_fcn( x_variable )() const\
{\
return var_name( x_variable );\
}\
protected:\
mutable x_type* var_name( x_variable );
#define var_name(x_variable)
#define get_fcn(x_variable)

Definition at line 190 of file _member_variables.hh.

#define mv_assignable_noset (   x_type,
  x_variable 
)
Value:
public:\
x_type* get_fcn( x_variable )() const\
{\
return var_name( x_variable );\
}\
protected:\
x_type* var_name( x_variable );
#define var_name(x_variable)
#define get_fcn(x_variable)

Definition at line 152 of file _member_variables.hh.

#define mv_assignable_static (   x_type,
  x_variable 
)
Value:
public:\
static void set_fcn( x_variable )( x_type* p_variable )\
{\
delete static_var_name( x_variable );\
static_var_name( x_variable ) = p_variable;\
return;\
}\
mv_assignable_static_noset( x_type, x_variable )
#define static_var_name(x_variable)
#define mv_assignable_static_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 180 of file _member_variables.hh.

#define mv_assignable_static_noset (   x_type,
  x_variable 
)
Value:
public:\
static x_type* get_fcn( x_variable )()\
{\
return static_var_name( x_variable );\
}\
protected:\
static x_type* static_var_name( x_variable );
#define get_fcn(x_variable)
#define static_var_name(x_variable)

Definition at line 171 of file _member_variables.hh.

#define mv_atomic (   x_type,
  x_variable 
)
Value:
public:\
void set_fcn( x_variable )( x_type p_variable )\
{\
var_name( x_variable ).store( p_variable );\
return;\
}\
mv_atomic_noset( x_type, x_variable )
#define var_name(x_variable)
#define mv_atomic_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 263 of file _member_variables.hh.

#define mv_atomic_mutable (   x_type,
  x_variable 
)
Value:
public:\
void set_fcn( x_variable )( x_type p_variable ) const\
{\
var_name( x_variable ).store( p_variable );\
return;\
}\
mv_atomic_mutable_noset( x_type, x_variable )
#define var_name(x_variable)
#define mv_atomic_mutable_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 299 of file _member_variables.hh.

#define mv_atomic_mutable_noset (   x_type,
  x_variable 
)
Value:
public:\
x_type get_fcn( x_variable )() const\
{\
return var_name( x_variable ).load();\
}\
protected:\
mutable std::atomic< x_type > var_name( x_variable );
#define var_name(x_variable)
#define get_fcn(x_variable)

Definition at line 290 of file _member_variables.hh.

#define mv_atomic_noset (   x_type,
  x_variable 
)
Value:
public:\
x_type get_fcn( x_variable )() const\
{\
return var_name( x_variable ).load();\
}\
protected:\
std::atomic< x_type > var_name( x_variable );
#define var_name(x_variable)
#define get_fcn(x_variable)

Definition at line 254 of file _member_variables.hh.

#define mv_atomic_static (   x_type,
  x_variable 
)
Value:
public:\
static void set_fcn( x_variable )( x_type p_variable )\
{\
static_var_name( x_variable ).store( p_variable );\
return;\
}\
mv_atomic_static_noset( x_type, x_variable )
#define static_var_name(x_variable)
#define mv_atomic_static_noset(x_type, x_variable)
#define set_fcn(x_variable)

Definition at line 281 of file _member_variables.hh.

#define mv_atomic_static_noset (   x_type,
  x_variable 
)
Value:
public:\
static x_type get_fcn( x_variable )()\
{\
return static_var_name( x_variable ).load();\
}\
protected:\
static std::atomic< x_type > static_var_name( x_variable );
#define get_fcn(x_variable)
#define static_var_name(x_variable)

Definition at line 272 of file _member_variables.hh.

#define mv_referrable (   x_type,
  x_variable 
)
Value:
public:\
x_type& x_variable()\
{\
return var_name( x_variable );\
}\
mv_referrable_const( x_type, x_variable )
#define var_name(x_variable)
#define mv_referrable_const(x_type, x_variable)

Definition at line 121 of file _member_variables.hh.

#define mv_referrable_const (   x_type,
  x_variable 
)
Value:
public:\
const x_type& x_variable() const\
{\
return var_name( x_variable );\
}\
protected:\
x_type var_name( x_variable );
#define var_name(x_variable)

Definition at line 112 of file _member_variables.hh.

#define mv_referrable_mutable (   x_type,
  x_variable 
)
Value:
public:\
x_type& x_variable() const\
{\
return var_name( x_variable );\
}\
protected:\
mutable x_type var_name( x_variable );
#define var_name(x_variable)

Definition at line 138 of file _member_variables.hh.

#define mv_referrable_static (   x_type,
  x_variable 
)
Value:
public:\
static x_type& x_variable()\
{\
return static_var_name( x_variable );\
}\
protected:\
static x_type static_var_name( x_variable );
#define static_var_name(x_variable)

Definition at line 129 of file _member_variables.hh.

#define mv_shared_ptr (   x_type,
  x_variable 
)
Value:
public:\
std::shared_ptr< x_type > x_variable()\
{\
return var_name( x_variable );\
}\
mv_shared_ptr_const( x_type, x_variable )
#define var_name(x_variable)
#define mv_shared_ptr_const(x_type, x_variable)

Definition at line 223 of file _member_variables.hh.

#define mv_shared_ptr_const (   x_type,
  x_variable 
)
Value:
public:\
const std::shared_ptr< x_type > x_variable() const\
{\
return var_name( x_variable );\
}\
protected:\
std::shared_ptr< x_type > var_name( x_variable );
#define var_name(x_variable)

Definition at line 214 of file _member_variables.hh.

#define mv_shared_ptr_mutable (   x_type,
  x_variable 
)
Value:
public:\
std::shared_ptr< x_type > x_variable() const\
{\
return var_name( x_variable );\
}\
protected:\
mutable std::shared_ptr< x_type > var_name( x_variable );
#define var_name(x_variable)

Definition at line 240 of file _member_variables.hh.

#define mv_shared_ptr_static (   x_type,
  x_variable 
)
Value:
public:\
static std::shared_ptr< x_type > x_variable()\
{\
return static_var_name( x_variable );\
}\
protected:\
static std::shared_ptr< x_type > static_var_name( x_variable );
#define static_var_name(x_variable)

Definition at line 231 of file _member_variables.hh.

#define set_fcn (   x_variable)    PASTE( set_prefix, x_variable )

Definition at line 45 of file _member_variables.hh.

#define static_var_name (   x_variable)    PASTE( static_prefix, x_variable )

Definition at line 47 of file _member_variables.hh.

#define var_name (   x_variable)    PASTE( var_prefix, x_variable )

Definition at line 46 of file _member_variables.hh.