github.com/searKing/golang/go@v1.2.117/runtime/cgosymbolizer/include/boost/assert/source_location.hpp (about)

     1  #ifndef BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED
     2  #define BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED
     3  
     4  //  http://www.boost.org/libs/assert
     5  //
     6  //  Copyright 2019 Peter Dimov
     7  //  Distributed under the Boost Software License, Version 1.0.
     8  //  http://www.boost.org/LICENSE_1_0.txt
     9  
    10  #include <boost/current_function.hpp>
    11  #include <boost/config.hpp>
    12  #include <boost/cstdint.hpp>
    13  #include <iosfwd>
    14  
    15  namespace boost
    16  {
    17  
    18  struct source_location
    19  {
    20  private:
    21  
    22      char const * file_;
    23      char const * function_;
    24      boost::uint_least32_t line_;
    25      boost::uint_least32_t column_;
    26  
    27  public:
    28  
    29      BOOST_CONSTEXPR source_location() BOOST_NOEXCEPT: file_( "(unknown)" ), function_( "(unknown)" ), line_( 0 ), column_( 0 )
    30      {
    31      }
    32  
    33      BOOST_CONSTEXPR source_location( char const * file, boost::uint_least32_t ln, char const * function, boost::uint_least32_t col = 0 ) BOOST_NOEXCEPT: file_( file ), function_( function ), line_( ln ), column_( col )
    34      {
    35      }
    36  
    37      BOOST_CONSTEXPR char const * file_name() const BOOST_NOEXCEPT
    38      {
    39          return file_;
    40      }
    41  
    42      BOOST_CONSTEXPR char const * function_name() const BOOST_NOEXCEPT
    43      {
    44          return function_;
    45      }
    46  
    47      BOOST_CONSTEXPR boost::uint_least32_t line() const BOOST_NOEXCEPT
    48      {
    49          return line_;
    50      }
    51  
    52      BOOST_CONSTEXPR boost::uint_least32_t column() const BOOST_NOEXCEPT
    53      {
    54          return column_;
    55      }
    56  };
    57  
    58  template<class E, class T> std::basic_ostream<E, T> & operator<<( std::basic_ostream<E, T> & os, source_location const & loc )
    59  {
    60      os.width( 0 );
    61  
    62      if( loc.line() == 0 )
    63      {
    64          os << "(unknown source location)";
    65      }
    66      else
    67      {
    68          os << loc.file_name() << ':' << loc.line();
    69  
    70          if( loc.column() )
    71          {
    72              os << ':' << loc.column();
    73          }
    74  
    75          os << ": in function '" << loc.function_name() << '\'';
    76      }
    77  
    78      return os;
    79  }
    80  
    81  } // namespace boost
    82  
    83  #if defined( BOOST_DISABLE_CURRENT_LOCATION )
    84  
    85  #  define BOOST_CURRENT_LOCATION ::boost::source_location()
    86  
    87  #else
    88  
    89  #  define BOOST_CURRENT_LOCATION ::boost::source_location(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION)
    90  
    91  #endif
    92  
    93  #endif // #ifndef BOOST_ASSERT_SOURCE_LOCATION_HPP_INCLUDED