diff options
Diffstat (limited to 'build2/diagnostics')
-rw-r--r-- | build2/diagnostics | 40 |
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 ();} |