GCC Middle and Back End API Reference
|
Public Member Functions | |
s_expr_writer () | |
void | write_new_line () |
void | write_any_indent (int leading_spaces) |
void | begin_s_expr (const char *tag) |
void | end_s_expr () |
Private Attributes | |
int | m_indent_amount |
int | m_had_recent_newline |
A class for writing out s-expressions, keeping track of newlines and nested indentation.
s_expr_writer::s_expr_writer | ( | ) |
class s_expr_writer's trivial constructor.
void s_expr_writer::begin_s_expr | ( | const char * | tag | ) |
Write the beginning of a new s-expresion e.g. "(!foo " The writer automatically adds whitespace to show the hierarchical structure of the expressions, so each one starts on a new line, and any within it will be at an increased indentation level.
Referenced by state_writer::write_state_array_type(), state_writer::write_state_param_structs(), state_writer::write_state_type(), and state_writer::write_state_typedefs().
void s_expr_writer::end_s_expr | ( | void | ) |
Write out the end of an s-expression: any necssessary indentation, a closing parenthesis, and a new line.
References fatal().
Referenced by state_writer::write_state_param_structs(), state_writer::write_state_type(), and state_writer::write_state_typedefs().
void s_expr_writer::write_any_indent | ( | int | leading_spaces | ) |
If we've just had a newline, write the indentation amount, potentially omitting some spaces.
LEADING_SPACES exists to support code that writes strings with leading spaces (e.g " foo") which might occur within a line, or could be the first thing on a line. By passing leading_spaces == 1, when such a string is the first thing on a line, write_any_indent () swallows the successive leading spaces into the indentation so that the "foo" begins at the expected column.
References m_indent_amount, and write_new_line().
Referenced by state_writer::write_state_array_type(), state_writer::write_state_fileloc(), state_writer::write_state_scalar_type(), state_writer::write_state_type(), state_writer::write_state_union_type(), and state_writer::write_state_version().
void s_expr_writer::write_new_line | ( | void | ) |
Write a newline to the output file, merging adjacent newlines.
Don't add a newline if we've just had one.
References m_had_recent_newline, and m_indent_amount.
Referenced by write_any_indent().
|
private |
Referenced by write_new_line().
|
private |
Referenced by write_any_indent(), and write_new_line().