]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tex-stream.cc
release: 0.1.31
[lilypond.git] / lily / tex-stream.cc
index ee08205c10c5d3252c6f03831f5846b66c0a6f60..02c33a8707a9bc5c860002e49fd6ba1f50e5cc4f 100644 (file)
@@ -4,12 +4,7 @@
   source file of the GNU LilyPond music typesetter
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-  
-  TODO
 
-  make an abstract interface to output, operations: 
-
-  move (x,y), put (symbol).
 */
 
 #include <fstream.h>
 
 const int MAXLINELEN = 200;
 
-Tex_stream::Tex_stream (String filename) 
+Tex_stream::Tex_stream (String filename)
 {
-    os = new ofstream (filename);
-    if (!*os)
-       error ("can't open `" + filename+"\'");
-    nest_level = 0;
-    line_len_i_ = 0;
-    outputting_comment=false;
-    header();
+  os = new ofstream (filename.ch_C ());
+  if (!*os)
+       error (_("can't open `") + filename+"\'");
+  nest_level = 0;
+  line_len_i_ = 0;
+  outputting_comment=false;
+  header();
 }
 void
 Tex_stream::header()
 {
-    *os << "% Creator: " << get_version_str() << "\n";
-    *os << "% Automatically generated, at ";
-    time_t t (time (0));
-    *os << ctime (&t)<<"\n";
+  *os << _("% Creator: ") << get_version_str() << "\n";
+  *os << _("% Automatically generated, at ");
+  time_t t (time (0));
+  *os << ctime (&t)<<"\n";
 }
 Tex_stream::~Tex_stream()
 {
-    delete os;
-    assert (nest_level == 0);
+  *os << flush;
+  if (!*os)
+    {
+      warning(_("error syncing file (disk full?)"));
+      exit_status_i_ = 1;
+    }
+  delete os;
+  assert (nest_level == 0);
 }
 
 // print string. don't forget indent.
 Tex_stream &
 Tex_stream::operator<<(String s)
 {
-    
-    for (char const *cp = s; *cp; cp++) {
-       if (outputting_comment) {
+
+  for (char const *cp = s.ch_C (); *cp; cp++)
+    {
+       if (outputting_comment)
+         {
            *os << *cp;
-           if (*cp == '\n') {
+           if (*cp == '\n')
+             {
                outputting_comment=false;
 
-           }
+             }
            continue;
-       }
+         }
        line_len_i_ ++;
-       switch (*cp) 
+       switch (*cp)
            {
            case '%':
                outputting_comment = true;
@@ -69,41 +73,40 @@ Tex_stream::operator<<(String s)
                break;
            case '{':
                nest_level++;
-               *os << *cp;             
+               *os << *cp;
                break;
            case '}':
-               nest_level--;           
+               nest_level--;
                *os << *cp;
-               
-               if (nest_level < 0) {
+
+               if (nest_level < 0)
+                 {
                    delete os;  // we want to see the remains.
                    assert (nest_level>=0);
-               }
+                 }
                /* FALLTHROUGH */
-               
+
            case '\n':
                break_line();
-               break;        
+               break;
            case ' ':
                *os <<  ' ';
-               if (line_len_i_ > MAXLINELEN) 
-                  break_line(); 
-               
+               if (line_len_i_ > MAXLINELEN)
+                  break_line();
+
                break;
            default:
                *os << *cp;
                break;
-           }
+             }
     }
-    return *this;
+  return *this;
 }
 
 void
 Tex_stream::break_line()
 {
-    *os << "%\n";
-    *os << String (' ', nest_level);
-    line_len_i_ = 0;
+  *os << "%\n";
+  *os << String (' ', nest_level);
+  line_len_i_ = 0;
 }
-
-/* *************************************************************** */