aboutsummaryrefslogtreecommitdiff
path: root/bbot/diagnostics
diff options
context:
space:
mode:
Diffstat (limited to 'bbot/diagnostics')
-rw-r--r--bbot/diagnostics84
1 files changed, 19 insertions, 65 deletions
diff --git a/bbot/diagnostics b/bbot/diagnostics
index c849aae..6699c45 100644
--- a/bbot/diagnostics
+++ b/bbot/diagnostics
@@ -61,97 +61,49 @@ namespace bbot
const char* name_;
};
- class location
- {
- public:
- location () {}
- location (string f, uint64_t l, uint64_t c)
- : file (move (f)), line (l), column (c) {}
-
- string file;
- uint64_t line;
- uint64_t column;
- };
-
- struct location_prologue_base
- {
- location_prologue_base (const char* type,
- const char* name,
- const location& l)
- : type_ (type), name_ (name), loc_ (l) {}
-
- void
- operator() (const diag_record& r) const;
-
- private:
- const char* type_;
- const char* name_;
- const location loc_;
- };
-
struct basic_mark_base
{
- using simple_prologue = butl::diag_prologue<simple_prologue_base>;
- using location_prologue = butl::diag_prologue<location_prologue_base>;
+ using simple_prologue = butl::diag_prologue<simple_prologue_base>;
explicit
basic_mark_base (const char* type,
+ const char* indent = "\n ",
const char* name = nullptr,
const void* data = nullptr,
diag_epilogue* epilogue = nullptr)
- : type_ (type), name_ (name), data_ (data), epilogue_ (epilogue) {}
+ : type_ (type), name_ (name), data_ (data),
+ indent_ (indent), epilogue_ (epilogue) {}
simple_prologue
operator() () const
{
- return simple_prologue (epilogue_, type_, name_);
- }
-
- location_prologue
- operator() (const location& l) const
- {
- return location_prologue (epilogue_, type_, name_, l);
- }
-
- template <typename L>
- location_prologue
- operator() (const L& l) const
- {
- return location_prologue (
- epilogue_, type_, name_, get_location (l, data_));
+ return simple_prologue (indent_, epilogue_, type_, name_);
}
- template <typename F, typename L, typename C>
- location_prologue
- operator() (F&& f, L&& l, C&& c) const
- {
- return location_prologue (
- epilogue_,
- type_,
- name_,
- location (forward<F> (f), forward<L> (l), forward<C> (c)));
- }
-
- protected:
+ public:
const char* type_;
const char* name_;
const void* data_;
+
+ const char* indent_;
diag_epilogue* const epilogue_;
};
using basic_mark = butl::diag_mark<basic_mark_base>;
- extern const basic_mark error;
- extern const basic_mark warn;
- extern const basic_mark info;
- extern const basic_mark text;
+ extern basic_mark error;
+ extern basic_mark warn;
+ extern basic_mark info;
+ extern basic_mark text;
// trace
//
+ extern const char* trace_type;
+ extern const char* trace_indent;
+
struct trace_mark_base: basic_mark_base
{
explicit
- trace_mark_base (const char* name, const void* data = nullptr)
- : basic_mark_base ("trace", name, data) {}
+ trace_mark_base (const char* name, const void* data = nullptr);
};
using trace_mark = butl::diag_mark<trace_mark_base>;
using tracer = trace_mark;
@@ -162,8 +114,10 @@ namespace bbot
{
explicit
fail_mark_base (const char* type,
+ const char* indent = "\n ",
const void* data = nullptr)
: basic_mark_base (type,
+ indent,
nullptr,
data,
[](const diag_record& r)
@@ -189,7 +143,7 @@ namespace bbot
};
using fail_end = butl::diag_noreturn_end<fail_end_base>;
- extern const fail_mark fail;
+ extern fail_mark fail;
extern const fail_end endf;
}