aboutsummaryrefslogtreecommitdiff
path: root/build2/diagnostics
diff options
context:
space:
mode:
Diffstat (limited to 'build2/diagnostics')
-rw-r--r--build2/diagnostics40
1 files changed, 29 insertions, 11 deletions
diff --git a/build2/diagnostics b/build2/diagnostics
index 8aedf13..5441df1 100644
--- a/build2/diagnostics
+++ b/build2/diagnostics
@@ -259,14 +259,18 @@ namespace build2
struct simple_prologue_base
{
explicit
- simple_prologue_base (const char* type, const char* name, uint16_t sverb)
- : type_ (type), name_ (name), sverb_ (sverb) {}
+ simple_prologue_base (const char* type,
+ const char* mod,
+ const char* name,
+ uint16_t sverb)
+ : type_ (type), mod_ (mod), name_ (name), sverb_ (sverb) {}
void
operator() (const diag_record& r) const;
private:
const char* type_;
+ const char* mod_;
const char* name_;
const uint16_t sverb_;
};
@@ -290,16 +294,18 @@ namespace build2
struct location_prologue_base
{
location_prologue_base (const char* type,
+ const char* mod,
const char* name,
const location& l,
uint16_t sverb)
- : type_ (type), name_ (name), loc_ (l), sverb_ (sverb) {}
+ : type_ (type), mod_ (mod), name_ (name), loc_ (l), sverb_ (sverb) {}
void
operator() (const diag_record& r) const;
private:
const char* type_;
+ const char* mod_;
const char* name_;
const location loc_;
const uint16_t sverb_;
@@ -311,23 +317,24 @@ namespace build2
explicit
basic_mark_base (uint16_t (*sverb) (),
const char* type,
+ const char* mod = nullptr,
const char* name = nullptr,
const void* data = nullptr,
diag_epilogue epilogue = nullptr)
: sverb_ (sverb),
- type_ (type), name_ (name), data_ (data),
+ type_ (type), mod_ (mod), name_ (name), data_ (data),
epilogue_ (epilogue) {}
simple_prologue
operator() () const
{
- return simple_prologue (epilogue_, type_, name_, sverb_ ());
+ return simple_prologue (epilogue_, type_, mod_, name_, sverb_ ());
}
location_prologue
operator() (const location& l) const
{
- return location_prologue (epilogue_, type_, name_, l, sverb_ ());
+ return location_prologue (epilogue_, type_, mod_, name_, l, sverb_ ());
}
template <typename L>
@@ -335,12 +342,13 @@ namespace build2
operator() (const L& l) const
{
return location_prologue (
- epilogue_, type_, name_, get_location (l, data_), sverb_ ());
+ epilogue_, type_, mod_, name_, get_location (l, data_), sverb_ ());
}
protected:
uint16_t (*sverb_) ();
const char* type_;
+ const char* mod_;
const char* name_;
const void* data_;
const diag_epilogue epilogue_;
@@ -358,8 +366,15 @@ namespace build2
{
explicit
trace_mark_base (const char* name, const void* data = nullptr)
- : basic_mark_base ([]() {return stream_verb_max;}, "trace", name, data)
- {}
+ : trace_mark_base (nullptr, name, data) {}
+
+ trace_mark_base (const char* mod,
+ const char* name,
+ const void* data = nullptr)
+ : basic_mark_base ([]() {return stream_verb_max;},
+ "trace",
+ mod, name,
+ data) {}
};
typedef diag_mark<trace_mark_base> trace_mark;
@@ -372,8 +387,11 @@ namespace build2
{
explicit
fail_mark_base (const void* data = nullptr)
- : basic_mark_base (&stream_verb_map, "error", nullptr, data, &epilogue)
- {}
+ : basic_mark_base (&stream_verb_map,
+ "error",
+ nullptr, nullptr,
+ data,
+ &epilogue) {}
static void
epilogue (const diag_record&) {throw E ();}