22 #ifndef WREPORT_BULLETIN_BUFFERS_H
23 #define WREPORT_BULLETIN_BUFFERS_H
112 void reset(
const std::string& in);
147 return (
unsigned)
data[pos];
153 inline unsigned read_byte(
unsigned section,
unsigned pos)
const
155 return (
unsigned)
data[
sec[section] + pos];
161 unsigned read_number(
unsigned pos,
unsigned byte_len)
const;
167 inline unsigned read_number(
unsigned section,
unsigned pos,
unsigned byte_len)
const
188 void parse_error(
unsigned section,
unsigned pos, const
char* fmt, ...) const WREPORT_THROWF_ATTRS(4, 5);
218 void check_available_data(
unsigned section,
unsigned pos,
size_t datalen, const
char* expected);
279 bool decode_string(
unsigned bit_len,
char* str,
size_t& len);
347 BufrOutput(std::string& out);
352 void add_bits(uint32_t val,
int n);
360 out.append(str, len);
378 add_bits(0xffffffff, len_bits);
382 void append_string(
const Var& var,
unsigned len_bits);
385 void append_string(
const char* val,
unsigned len_bits);
388 void append_binary(
const unsigned char* val,
unsigned len_bits);
391 void append_var(
Varinfo info,
const Var& var);
394 void append_missing(
Varinfo info);
459 unsigned remaining()
const;
472 void check_eof(const
char* expected) const;
490 void skip_data_and_spaces(
unsigned datalen);
501 void mark_section_start(
unsigned num);
516 void read_word(
char* buf,
size_t len);
530 void parse_value(
int len,
int is_signed, const
char** d_start, const
char** d_end);
533 void debug_dump_next(const
char* desc) const;
557 CrexOutput(std::string& buf);
560 void raw_append(
const char* str,
int len);
563 void raw_appendf(
const char* fmt, ...) __attribute__ ((format(printf, 2, 3)));
566 void encode_check_digit();
569 void append_missing(
Varinfo info);
572 void append_var(
Varinfo info, const
Var& var);