GCC Middle and Back End API Reference
s_expr_writer Class Reference
Inheritance diagram for s_expr_writer:

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

Detailed Description

   A class for writing out s-expressions, keeping track of newlines and
   nested indentation.  

Constructor & Destructor Documentation

s_expr_writer::s_expr_writer ( )
   class s_expr_writer's trivial constructor.  

Member Function Documentation

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

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().

Field Documentation

int s_expr_writer::m_had_recent_newline

Referenced by write_new_line().

int s_expr_writer::m_indent_amount

Referenced by write_any_indent(), and write_new_line().

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