71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
/*
|
|
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
Author: Gabriel Ebner
|
|
*/
|
|
#pragma once
|
|
#include <string>
|
|
#include <vector>
|
|
#include "util/output_channel.h"
|
|
#include "util/exception.h"
|
|
#include "util/name_set.h"
|
|
#include "library/messages.h"
|
|
#include "util/message_definitions.h"
|
|
|
|
namespace lean {
|
|
|
|
class info_manager;
|
|
|
|
class message_buffer {
|
|
public:
|
|
virtual ~message_buffer() {}
|
|
virtual void start_bucket(message_bucket_id const & bucket);
|
|
virtual void report(message_bucket_id const & bucket, message const & msg);
|
|
virtual void finish_bucket(message_bucket_id const & bucket, name_set const & children);
|
|
virtual void report_info_manager(message_bucket_id const & bucket, info_manager const & infom);
|
|
virtual bool is_bucket_valid(message_bucket_id const & bucket);
|
|
};
|
|
|
|
using null_message_buffer = message_buffer;
|
|
|
|
class stream_message_buffer : public message_buffer {
|
|
std::ostream & m_out;
|
|
public:
|
|
stream_message_buffer(std::ostream & out) : m_out(out) {}
|
|
void report(message_bucket_id const & bucket, message const & msg) override;
|
|
};
|
|
|
|
message_buffer & get_global_message_buffer();
|
|
class scoped_message_buffer {
|
|
message_buffer * m_old;
|
|
public:
|
|
scoped_message_buffer(message_buffer * msg_buf);
|
|
~scoped_message_buffer();
|
|
};
|
|
|
|
class scope_message_context {
|
|
scope_message_context * m_old;
|
|
message_bucket_id m_bucket;
|
|
name_set m_sub_buckets;
|
|
public:
|
|
scope_message_context(message_bucket_id const &);
|
|
scope_message_context(message_bucket_id const &, name_set const & sub_buckets_to_reuse);
|
|
scope_message_context(std::string const &, name_set const & sub_buckets_to_reuse);
|
|
scope_message_context(std::string const &);
|
|
scope_message_context();
|
|
~scope_message_context();
|
|
|
|
message_bucket_id get_bucket_id() const { return m_bucket; }
|
|
name_set get_sub_buckets() const { return m_sub_buckets; }
|
|
|
|
message_bucket_id new_sub_bucket();
|
|
message_bucket_id new_sub_bucket(std::string const &);
|
|
};
|
|
|
|
message_bucket_id get_global_msg_bucket_id();
|
|
scope_message_context & get_scope_message_context();
|
|
void report_message(message const &);
|
|
void report_info_manager(info_manager const &);
|
|
|
|
}
|