CIRCT 23.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
esiaccel.codegen.indented_writer.IndentedWriter Class Reference

Public Member Functions

None __init__ (self, TextIO out, int level=0)
 
None line (self, str text="")
 
None lines (self, *str texts)
 
None write (self, str text)
 
None access (self, str label)
 
Iterator[None] indented (self)
 
Iterator[None] block (self, str header, *str tail="")
 

Protected Attributes

 _out
 
 _level
 

Detailed Description

Stream indented source text to an output sink.

Wraps a `TextIO`-like `out` and tracks indentation as a stack of two-space
levels, so emit code never has to thread an `indent` string or hand-write
trailing newlines and doubled `{{` / `}}` braces. Every call writes through
to `out` immediately. The primitives are:

  * `line(text)` -- write one line at the current indent (blank if empty).
  * `block(header)` -- a context manager that writes `header {`, indents its
    body, then closes with `}` (plus an optional `tail`, e.g. `;`).
  * `access(label)` -- write an access specifier (`public:` / `private:`)
    one level out from the members it introduces.

`write(text)` streams `text` verbatim (no indentation); it mirrors
`TextIO.write` so an `IndentedWriter` can itself stand in for a sink.
`indented()` opens a bare indent (e.g. a single-statement loop body)
without braces.

Definition at line 16 of file indented_writer.py.

Constructor & Destructor Documentation

◆ __init__()

None esiaccel.codegen.indented_writer.IndentedWriter.__init__ (   self,
TextIO  out,
int   level = 0 
)

Member Function Documentation

◆ access()

None esiaccel.codegen.indented_writer.IndentedWriter.access (   self,
str  label 
)

◆ block()

Iterator[None] esiaccel.codegen.indented_writer.IndentedWriter.block (   self,
str  header,
*str   tail = "" 
)

◆ indented()

Iterator[None] esiaccel.codegen.indented_writer.IndentedWriter.indented (   self)

◆ line()

None esiaccel.codegen.indented_writer.IndentedWriter.line (   self,
str   text = "" 
)

◆ lines()

None esiaccel.codegen.indented_writer.IndentedWriter.lines (   self,
*str  texts 
)

◆ write()

None esiaccel.codegen.indented_writer.IndentedWriter.write (   self,
str  text 
)
Write `text` verbatim (no indentation). Mirrors `TextIO.write` so the
writer can be passed to emitters that build pre-indented strings.

Definition at line 47 of file indented_writer.py.

References esiaccel.codegen.indented_writer.IndentedWriter._out, and esiaccel.codegen.indented_writer.IndentedWriter.write().

Referenced by esiaccel.codegen.indented_writer.IndentedWriter.access(), esiaccel.codegen.indented_writer.IndentedWriter.line(), and esiaccel.codegen.indented_writer.IndentedWriter.write().

Member Data Documentation

◆ _level

esiaccel.codegen.indented_writer.IndentedWriter._level
protected

◆ _out

esiaccel.codegen.indented_writer.IndentedWriter._out
protected

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