#pragma once
#include <cstddef>
namespace risc0 {
struct SourceLoc {
public:
static constexpr SourceLoc current(const char* filename = __builtin_FILE(),
int line = __builtin_LINE(),
#ifdef __has_builtin
#if __has_builtin(__builtin_COLUMN)
#define COLUMN_EXPR __builtin_COLUMN()
#else
#define COLUMN_EXPR 0
#endif
#else
#define COLUMN_EXPR 0
#endif
int column = COLUMN_EXPR) noexcept {
SourceLoc loc;
loc.filename = filename;
loc.line = line;
loc.column = column;
return loc;
}
constexpr SourceLoc() noexcept : filename(""), line(0), column(0) {}
const char* filename;
size_t line;
size_t column;
};
}