1#ifndef __MC_MACRO_HPP__ 
    2#define __MC_MACRO_HPP__ 
    4#define CHECK_MODEL(name)                                                      \ 
    5  static_assert(ModelType<name>, #name);                                       \ 
    6  static_assert(FloatingPointType<name::FloatType>, " floatl" #name); 
    8#define MODEL_CONSTANT static constexpr 
   11#define INDEX_FROM_ENUM(e) static_cast<std::size_t>((e)) 
   14#define CHECK_BOUND(__index__, __array_name__)                                 \ 
   15  static_assert(INDEX_FROM_ENUM(__index__) < __array_name__.static_extent(1),  \ 
   16                "Index out of model bound"); 
   19#define GET_PROPERTY_FROM(__index__, __array_name__, enum_name)                \ 
   20  __array_name__(__index__, INDEX_FROM_ENUM(enum_name)) 
   22#define GET_PROPERTY(enum_name) GET_PROPERTY_FROM(idx, arr, enum_name) 
   24#define GET_INDEX(size)                                                        \ 
   25  std::size_t idx = (team_handle.league_rank() * team_handle.team_size()) +    \ 
   26                    team_handle.team_rank();                                   \