libwreport  2.4
Public Member Functions | Data Fields | Protected Member Functions
wreport::opcode::Printer Class Reference

opcode::Visitor that pretty-prints the opcodes using indentation to show structure More...

#include <opcode.h>

Inheritance diagram for wreport::opcode::Printer:
wreport::opcode::Visitor

Public Member Functions

virtual void b_variable (Varcode code)
 Notify of a B variable entry.
virtual void c_modifier (Varcode code)
 Notify of a C modifier.
virtual void c_change_data_width (Varcode code, int change)
 Notify a change of data width.
virtual void c_change_data_scale (Varcode code, int change)
 Notify a change of data scale.
virtual void c_associated_field (Varcode code, Varcode sig_code, unsigned nbits)
 Notify the declaration of an associated field for the next values.
virtual void c_char_data (Varcode code)
 Notify raw character data encoded via a C modifier.
virtual void c_char_data_override (Varcode code, unsigned new_length)
 Notify an override of character data length.
virtual void c_quality_information_bitmap (Varcode code)
 Notify a bitmap for quality information data.
virtual void c_substituted_value_bitmap (Varcode code)
 Notify a bitmap for substituted values.
virtual void c_substituted_value (Varcode code)
 Notify a substituted value.
virtual void c_local_descriptor (Varcode code, Varcode desc_code, unsigned nbits)
 Notify the length of the following local descriptor.
virtual void r_replication (Varcode code, Varcode delayed_code, const Opcodes &ops)
 Notify a replicated section.
virtual void d_group_begin (Varcode code)
 Notify the start of a D group.
virtual void d_group_end (Varcode code)
 Notify the end of a D group.

Data Fields

FILE * out
 Output stream.
const Vartablebtable
 Table used to get variable descriptions (optional).
unsigned indent
 Current indent level.
unsigned indent_step
 How many spaces in an indentation level.

Protected Member Functions

void print_lead (Varcode code)
 Print line lead (indentation and formatted code)

Detailed Description

opcode::Visitor that pretty-prints the opcodes using indentation to show structure


Member Function Documentation

virtual void wreport::opcode::Printer::b_variable ( Varcode  code) [virtual]

Notify of a B variable entry.

Parameters:
codeThe B variable code

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_associated_field ( Varcode  code,
Varcode  sig_code,
unsigned  nbits 
) [virtual]

Notify the declaration of an associated field for the next values.

Parameters:
codeThe C modifier code
sig_codeThe B code of the associated field significance opcode (or 0 to mark the end of the associated field encoding)
nbitsThe number of bits used for the associated field.

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_change_data_scale ( Varcode  code,
int  change 
) [virtual]

Notify a change of data scale.

Parameters:
codeThe C modifier code
changeThe scale change (positive or negative)

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_change_data_width ( Varcode  code,
int  change 
) [virtual]

Notify a change of data width.

Parameters:
codeThe C modifier code
changeThe width change (positive or negative)

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_char_data ( Varcode  code) [virtual]

Notify raw character data encoded via a C modifier.

Parameters:
codeThe C modifier code

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_char_data_override ( Varcode  code,
unsigned  new_length 
) [virtual]

Notify an override of character data length.

Parameters:
codeThe C modifier code
new_lengthNew length of all following character data (or 0 to reset to default)

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_local_descriptor ( Varcode  code,
Varcode  desc_code,
unsigned  nbits 
) [virtual]

Notify the length of the following local descriptor.

Parameters:
codeThe C modifier code
desc_codeLocal descriptor for which the length is provided
nbitsBit size of the data described by desc_code

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_modifier ( Varcode  code) [virtual]

Notify of a C modifier.

Whenever the modifier is a supported one, this is followed by an invocation of one of the specific c_* methods.

Parameters:
codeThe C modifier code

Reimplemented from wreport::opcode::Visitor.

Notify a bitmap for quality information data.

Parameters:
codeThe C modifier code

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::c_substituted_value ( Varcode  code) [virtual]

Notify a substituted value.

Parameters:
codeThe C modifier code

Reimplemented from wreport::opcode::Visitor.

Notify a bitmap for substituted values.

Parameters:
codeThe C modifier code

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::d_group_begin ( Varcode  code) [virtual]

Notify the start of a D group.

Parameters:
codeThe D code that is being expanded

Reimplemented from wreport::opcode::Visitor.

virtual void wreport::opcode::Printer::d_group_end ( Varcode  code) [virtual]

Notify the end of a D group.

Parameters:
codeThe D code that has just been expanded

Reimplemented from wreport::opcode::Visitor.

void wreport::opcode::Printer::print_lead ( Varcode  code) [protected]

Print line lead (indentation and formatted code)

Parameters:
codeCode to format in the line lead
virtual void wreport::opcode::Printer::r_replication ( Varcode  code,
Varcode  delayed_code,
const Opcodes ops 
) [virtual]

Notify a replicated section.

Parameters:
codeThe R replication code
delayed_codeThe delayed replication B code, or 0 if delayed replication is not used
opsThe replicated operators

Reimplemented from wreport::opcode::Visitor.


Field Documentation

Table used to get variable descriptions (optional).

It defaults to NULL, but if it is set, the output will contain descriptions of B variable entries

Current indent level.

It defaults to 0 in a newly created Printer. You can set it to some other value to indent all the output by the given amount of spaces

Output stream.

It defaults to stdout, but it can be set to any FILE* stream


The documentation for this class was generated from the following file: