1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
/*
* File: message.cc
* Summary: Functions used to print messages.
* Written by: Linley Henzell
*/
#ifndef MESSAGE_H
#define MESSAGE_H
#include <string>
#include <streambuf>
#include <iostream>
#include "enum.h"
#include "mpr.h"
void mesclr(bool force = false);
void flush_prev_message();
void more(bool user_forced = false);
class formatted_string;
void formatted_mpr(const formatted_string& fs,
msg_channel_type channel = MSGCH_PLAIN, int param = 0);
void formatted_message_history(const std::string &st,
msg_channel_type channel = MSGCH_PLAIN,
int param = 0,
int wrap_col = 0);
// mpr() an arbitrarily long list of strings
void mpr_comma_separated_list(const std::string prefix,
const std::vector<std::string> list,
const std::string &andc = ", and ",
const std::string &comma = ", ",
const msg_channel_type channel = MSGCH_PLAIN,
const int param = 0);
class no_messages
{
public:
no_messages();
~no_messages();
private:
bool msuppressed;
};
void save_messages(writer& outf);
void load_messages(reader& inf);
bool any_messages();
void replay_messages();
void set_colour(char set_message_colour);
void set_more_autoclear(bool on);
std::string get_last_messages(int mcount);
std::vector<std::string> get_recent_messages(int &message_pos,
bool dumpworthy_only = true,
std::vector<int> *channels = NULL);
int channel_to_colour( msg_channel_type channel, int param = 0 );
namespace msg
{
extern std::ostream stream;
std::ostream& streams(msg_channel_type chan = MSGCH_PLAIN);
struct setparam
{
setparam(int param);
int m_param;
};
struct mute
{
mute(bool value = true);
bool m_value;
};
class mpr_stream_buf : public std::streambuf
{
public:
mpr_stream_buf(msg_channel_type chan);
virtual ~mpr_stream_buf() {};
void set_param(int p);
void set_muted(bool m);
protected:
int overflow(int c);
private:
static const int INTERNAL_LENGTH = 500;
char internal_buf[500]; // if your terminal is wider than this, too bad
int internal_count;
int param;
bool muted;
msg_channel_type channel;
};
void initialise_mpr_streams();
void deinitialise_mpr_streams();
}
std::ostream& operator<<(std::ostream& os, const msg::setparam& sp);
void set_msg_dump_file(FILE* file);
#endif
|