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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
// translator output context
// Copyright (C) 2005-2013 Red Hat Inc.
// Copyright (C) 2005-2008 Intel Corporation.
// Copyright (C) 2010 Novell Corporation.
//
// This file is part of systemtap, and is free software. You can
// redistribute it and/or modify it under the terms of the GNU General
// Public License (GPL); either version 2, or (at your option) any
// later version.
#include "translator-output.h"
#include <string>
using namespace std;
translator_output::translator_output (ostream& f):
buf(0), o2 (0), o (f), tablevel (0), trailer_p(false), hdr (NULL)
{
}
translator_output::translator_output (const string& filename, size_t bufsize):
buf (new char[bufsize]),
o2 (new ofstream (filename.c_str ())),
o (*o2),
tablevel (0),
filename (filename),
trailer_p (false),
hdr (NULL)
{
o2->rdbuf()->pubsetbuf(buf, bufsize);
}
void
translator_output::new_common_header (ostream& f)
{
delete hdr;
hdr = new translator_output (f);
}
void
translator_output::new_common_header (const string& filename, size_t bufsize)
{
delete hdr;
hdr = new translator_output (filename, bufsize);
}
void
translator_output::close()
{
if (o2)
o2->close();
}
translator_output::~translator_output ()
{
delete o2;
delete [] buf;
}
ostream&
translator_output::newline (int indent)
{
if (! (indent > 0 || tablevel >= (unsigned)-indent)) o.flush ();
assert (indent > 0 || tablevel >= (unsigned)-indent);
tablevel += indent;
o << "\n";
for (unsigned i=0; i<tablevel; i++)
o << " ";
return o;
}
void
translator_output::indent (int indent)
{
if (! (indent > 0 || tablevel >= (unsigned)-indent)) o.flush ();
assert (indent > 0 || tablevel >= (unsigned)-indent);
tablevel += indent;
}
ostream&
translator_output::line ()
{
return o;
}
/* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */
|