17#ifndef ACTIONENGINE_UTIL_SOURCE_LOCATION_H_ 
   18#define ACTIONENGINE_UTIL_SOURCE_LOCATION_H_ 
   26class source_location {
 
   29  constexpr source_location() : line_(0), file_name_(nullptr) {}
 
   33  static constexpr source_location DoNotInvokeDirectly(std::uint_least32_t line,
 
   34                                                       const char* file_name) {
 
   35    return source_location(line, file_name);
 
   39  [[nodiscard]] 
constexpr std::uint_least32_t line()
 const { 
return line_; }
 
   42  [[nodiscard]] 
constexpr const char* file_name()
 const { 
return file_name_; }
 
   53  constexpr source_location(std::uint_least32_t line, 
const char* file_name)
 
   54      : line_(line), file_name_(file_name) {}
 
   56  std::uint_least32_t line_;
 
   57  const char* file_name_;
 
   63#define ACTIONENGINE_LOC \ 
   64  act::util::source_location::DoNotInvokeDirectly(__LINE__, __FILE__)