1 #ifndef code_generator_h
2 #define code_generator_h
7 //////////////////////////////////////////////////////////////////////////////
8 // Code Generator base class.
9 //////////////////////////////////////////////////////////////////////////////
11 CodeGen(const CodeGen
&); // no copy constructor
12 void operator = (const CodeGen
&); // no assignment
14 ostream
* output
; // output stream
15 Bool anchored
; // is the current output character newline
16 int tabbing
, tab_unit
; // tabbing counters
19 ///////////////////////////////////////////////////////////////////////////
20 // Constructor and destructor
21 ///////////////////////////////////////////////////////////////////////////
25 ///////////////////////////////////////////////////////////////////////////
26 // Methods to emit code.
27 ///////////////////////////////////////////////////////////////////////////
28 void set_stream (ostream
&);
29 ostream
& pr (const char *, ...);
30 ostream
& outv (const char *, va_list);
33 ///////////////////////////////////////////////////////////////////////////
35 ///////////////////////////////////////////////////////////////////////////
36 void gen_code (const char *);
37 virtual va_list printer (char, va_list) = 0; // extra printer