typehandlers.codesink: classes that receive generated source code¶
Objects that receive generated C/C++ code lines, reindents them, and writes them to a file, memory, or another code sink object.
- class pybindgen.typehandlers.codesink.CodeSink¶
Bases: object
Abstract base class for code sinks
Constructor
>>> sink = MemoryCodeSink() >>> sink.writeln("foo();") >>> sink.writeln("if (true) {") >>> sink.indent() >>> sink.writeln("bar();") >>> sink.unindent() >>> sink.writeln("zbr();") >>> print sink.flush().rstrip() foo(); if (true) { bar(); zbr();
>>> sink = MemoryCodeSink() >>> sink.writeln("foo();") >>> sink.writeln() >>> sink.writeln("bar();") >>> print len(sink.flush().split("\n")) 4
- indent(level=4)¶
Add a certain ammount of indentation to all lines written from now on and until unindent() is called
- unindent()¶
Revert indentation level to the value before last indent() call
- writeln(line='')¶
Write one or more lines of code
- class pybindgen.typehandlers.codesink.FileCodeSink(file_)¶
Bases: pybindgen.typehandlers.codesink.CodeSink
A code sink that writes to a file-like object
Parameters: file – a file like object - writeln(line='')¶
Write one or more lines of code
- class pybindgen.typehandlers.codesink.MemoryCodeSink¶
Bases: pybindgen.typehandlers.codesink.CodeSink
A code sink that keeps the code in memory, and can later flush the code to another code sink
Constructor
- flush()¶
Flushes the code and returns the formatted output as a return value string
- flush_to(sink)¶
Flushes code to another code sink :param sink: another CodeSink instance
- writeln(line='')¶
Write one or more lines of code
- class pybindgen.typehandlers.codesink.NullCodeSink¶
Bases: pybindgen.typehandlers.codesink.CodeSink
A code sink that discards all content. Useful to ‘test’ if code generation would work without actually generating anything.
Constructor
- flush()¶
Flushes the code and returns the formatted output as a return value string
- flush_to(sink)¶
Flushes code to another code sink :param sink: another CodeSink instance
- writeln(line='')¶
Write one or more lines of code