diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:07:58 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:07:58 +0200 |
| commit | 967be9e750221ab2ab783f95df79bb26d290a45e (patch) | |
| tree | 6802900a5e975f9f68b169f0f503f040056d6952 /tiger-compiler/tcsh/src/tiger_common.i | |
Diffstat (limited to 'tiger-compiler/tcsh/src/tiger_common.i')
| -rw-r--r-- | tiger-compiler/tcsh/src/tiger_common.i | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/tiger-compiler/tcsh/src/tiger_common.i b/tiger-compiler/tcsh/src/tiger_common.i new file mode 100644 index 0000000..ff43652 --- /dev/null +++ b/tiger-compiler/tcsh/src/tiger_common.i @@ -0,0 +1,73 @@ +// -*- C++ -*- + +%module tiger_common + +%include std_string.i + +%{ + #include <fstream> + #include <sstream> + #include <iostream> + #include <cassert> + #include <string> + #include <misc/timer.hh> +%} + +// Warning 454: Setting a pointer/reference variable may leak memory. +%warnfilter(454) Cout; +%warnfilter(454) Cerr; +%warnfilter(454) Clog; + +// Ofstream. +%inline %{ + struct Ofstream + { + Ofstream (const std::string& filename) : closed_ (false) + { + stream_ = new std::ofstream (filename.c_str ()); + } + + ~Ofstream () + { + if (!closed_) + close (); + } + + std::ostream& + to () + { + assert (stream_); + return *stream_; + } + + void + close () + { + assert (stream_); + stream_->close (); + delete stream_; + closed_ = true; + } + + std::ofstream* stream_; + bool closed_; + }; + + std::ostream& + get_cout() + { + return std::cout; + } + + std::ostream& + get_cerr() + { + return std::cerr; + } + + std::ostream* Cout = &std::cout; + std::ostream* Cerr = &std::cerr; + std::ostream* Clog = &std::clog; + + misc::timer timer; +%} |
