]> git.donarmstrong.com Git - lilypond.git/blob - flower/lib/data-file.cc
partial: 0.0.42.pre3.hanjan
[lilypond.git] / flower / lib / data-file.cc
1 #include <fstream.h>
2 #include <ctype.h>
3
4 #include "data-file.hh"
5
6 void 
7 Data_file::gobble_white()
8 {
9     char c;
10     
11     while ((c=data_get()) == ' ' ||c == '\t')
12         if (eof()) 
13             break;
14
15     data_unget(c);
16 }
17
18 String
19 Data_file::get_word() 
20 {// should handle escape seq's
21     String s;
22
23     while (1) 
24         {
25         char    c  = data_get();
26         
27         if (isspace(c) || eof()) 
28             {
29             data_unget(c);
30             break;
31             }
32         
33         
34         if (c == '\"')
35             {
36             rawmode= true;
37
38             while ((c  = data_get()) != '\"')
39                 if (eof())
40                     error("EOF in a string");           
41                 else
42                     s += c;
43             
44
45             rawmode= false;
46             }       
47         else
48             s += c;             
49         }
50     
51     return s;         
52 }
53
54 /**  get a char 
55    Only class member who uses text_file::get
56    */
57 char
58 Data_file::data_get() {
59     char c =  get(); 
60     if (!rawmode && c == '#') // gobble comment
61         {       
62         while ((c = get()) != '\n' && !eof()) 
63             ;
64             return '\n';
65         }    
66
67     return c;
68 }
69
70 /// read line, gobble '\n'    
71 String Data_file::get_line()     
72 {
73     char c; 
74     String s;
75
76     while ((c  = data_get()) != '\n' && !eof())
77         s += c;
78     return s;   
79 }
80
81 /// gobble stuff before first entry on a line.    
82 void
83 Data_file::gobble_leading_white() 
84 {
85     // eat blank lines.
86     while (!eof()) {
87         char c = data_get();                
88         if (!isspace(c)) {
89             data_unget(c);
90             break;
91         }
92     }
93 }
94
95