blob: ff43652b0d0571c1b38ce605136c06449f61a7c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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;
%}
|