OILS / mycpp / examples / varargs_preamble.h View on Github | oilshell.org

47 lines, 22 significant
1// examples/varargs_preamble.h
2
3#include <exception>
4
5#include "mycpp/runtime.h"
6
7//
8// Copied from cpp/core_error.h
9//
10
11namespace error {
12
13class _ErrorWithLocation : public std::exception {
14 public:
15 _ErrorWithLocation(BigStr* user_str, int span_id) {
16 }
17};
18
19class Parse : public _ErrorWithLocation {
20 public:
21 Parse(BigStr* user_str, int span_id) : _ErrorWithLocation(user_str, span_id) {
22 }
23};
24
25class FatalRuntime : public _ErrorWithLocation {
26 public:
27 FatalRuntime(BigStr* user_str) : _ErrorWithLocation(user_str, -1) {
28 }
29};
30
31};
32
33//
34// Copied from cpp/core_pyerror.h
35//
36
37[[noreturn]] inline void p_die(BigStr* s, int span_id) {
38 throw new error::Parse(s, span_id);
39}
40
41[[noreturn]] inline void e_die(BigStr* s) {
42 throw new error::FatalRuntime(s);
43}
44
45[[noreturn]] inline void e_die(BigStr* s, int span_id) {
46 throw new error::FatalRuntime(s);
47}