Loading...
Searching...
No Matches
when.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "core/common/dep.hpp"
5
6namespace by {
7
8 class errReport;
9 class node;
10
11#undef __WHEN_OBJECT__
12#define __WHEN_OBJECT__ __core_when__
13
18 class _nout __WHEN_OBJECT__: public __clog_when__ {
19 BY(ME(__WHEN_OBJECT__, __clog_when__))
20
21 public:
22 static const me& get();
23
24 template <typename... Ts> const me& exErr(int code, const Ts&... args) const {
25 _addNewErr(errLv::ERR, code, &_getDefault(), __convert__((const Ts&) args).unwrap()...);
26 return *this;
27 }
28
29 template <typename... Ts> const me& exErr(const point& src, int code, const Ts&... args) const {
30 _addNewErr(errLv::ERR, src, code, &_getDefault(), __convert__((const Ts&) args).unwrap()...);
31 return *this;
32 }
33
34 template <typename... Ts> const me& exErr(const node& src, int code, const Ts&... args) const {
35 _addNewErr(errLv::ERR, _getPosFrom(src), code, &_getDefault(), __convert__((const Ts&) args).unwrap()...);
36 return *this;
37 }
38
39 template <typename... Ts> const me& exErr(int code, errReport& rpt, const Ts&... args) const {
40 _addNewErr(errLv::ERR, code, &rpt, __convert__((const Ts&) args).unwrap()...);
41 return *this;
42 }
43
44 template <typename... Ts> const me& exErr(const point& src, int code, errReport& rpt, const Ts&... args) const {
45 _addNewErr(errLv::ERR, src, code, &rpt, __convert__((const Ts&) args).unwrap()...);
46 return *this;
47 }
48
49 template <typename... Ts> const me& exErr(const node& src, int code, errReport& rpt, const Ts&... args) const {
50 _addNewErr(errLv::ERR, _getPosFrom(src), code, &rpt, __convert__((const Ts&) args).unwrap()...);
51 return *this;
52 }
53
54 template <typename... Ts> const me& exWarn(int code, const Ts&... args) const {
55 _addNewErr(errLv::ERR, code, &_getDefault(), __convert__((const Ts&) args).unwrap()...);
56 return *this;
57 }
58
59 template <typename... Ts> const me& exWarn(const point& src, int code, const Ts&... args) const {
60 _addNewErr(errLv::WARN, src, code, &_getDefault(), __convert__((const Ts&) args).unwrap()...);
61 return *this;
62 }
63
64 template <typename... Ts> const me& exWarn(const node& src, int code, const Ts&... args) const {
65 _addNewErr(errLv::WARN, _getPosFrom(src), code, &_getDefault(), __convert__((const Ts&) args).unwrap()...);
66 return *this;
67 }
68
69 template <typename... Ts> const me& exWarn(int code, errReport& rpt, const Ts&... args) const {
70 _addNewErr(errLv::WARN, code, &rpt, __convert__((const Ts&) args).unwrap()...);
71 return *this;
72 }
73
74 template <typename... Ts>
75 const me& exWarn(const point& src, int code, errReport& rpt, const Ts&... args) const {
76 _addNewErr(errLv::WARN, src, code, &rpt, __convert__((const Ts&) args).unwrap()...);
77 return *this;
78 }
79
80 template <typename... Ts> const me& exWarn(const node& src, int code, errReport& rpt, const Ts&... args) const {
81 _addNewErr(errLv::WARN, _getPosFrom(src), code, &rpt, __convert__((const Ts&) args).unwrap()...);
82 return *this;
83 }
84
85 private:
86 errReport& _getDefault() const;
87 const point& _getPosFrom(const node& src) const;
88 const point& _getPosFrom(const node* src) const;
89 void _addNewErr(errLv::level lv, int code, errReport* rpt, ...) const;
90 void _addNewErr(errLv::level lv, const point& src, int code, errReport* rpt, ...) const;
91 };
92} // namespace by
Enhanced error handling for core module.
Definition when.hpp:18
Function or object evaluation arguments.
Definition args.hpp:22
Error report collector.
Definition errReport.hpp:24
Base class for all AST nodes in the byeol language.
Definition node.hpp:195
Source location information.
Definition src.hpp:15
Definition tnarr.hpp:9
to Top