From: fred Date: Tue, 5 Nov 1996 17:35:42 +0000 (+0000) Subject: lilypond-0.0.9 X-Git-Tag: release/1.5.59~6894 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=94e8dee1bee26f71406b11f999f2de262d88f67e;p=lilypond.git lilypond-0.0.9 --- diff --git a/src/tstream.cc b/src/tstream.cc new file mode 100644 index 0000000000..05e2e9c93e --- /dev/null +++ b/src/tstream.cc @@ -0,0 +1,75 @@ +#include +#include +#include "tex.hh" +#include "main.hh" +#include "tstream.hh" +#include "debug.hh" + +Tex_stream::Tex_stream(String filename) +{ + os = new ofstream(filename); + if (!*os) + error("can't open `" + filename+"\'"); + nest_level = 0; + outputting_comment=false; + header(); +} +void +Tex_stream::header() +{ + *os << "% Creator: " << get_version(); + *os << "% Automatically generated, at "; + time_t t(time(0)); + *os << ctime(&t); +//*os << "% from input file ..\n"; +} +Tex_stream::~Tex_stream() +{ + delete os; + assert(nest_level == 0); +} + +// print string. don't forget indent. +Tex_stream & +Tex_stream::operator<<(String s) +{ + + for (const char *cp = s; *cp; cp++) { + if (outputting_comment) { + *os << *cp; + if (*cp == '\n') { + outputting_comment=false; + + } + continue; + } + switch(*cp) + { + case '%': + outputting_comment = true; + *os << *cp; + break; + case '{': + nest_level++; + *os << *cp; + break; + case '}': + nest_level--; + *os << *cp; + assert (nest_level >= 0); + /* FALTHROUGH */ + + case '\n': + *os << "%\n"; + *os << String(' ', nest_level); + break; + default: + *os << *cp; + break; + } + } + return *this; +} + + +/****************************************************************/