]> git.donarmstrong.com Git - lilypond.git/blob - mi2mu/my-midi-lexer.cc
release: 0.0.78
[lilypond.git] / mi2mu / my-midi-lexer.cc
1 //
2 // my-midi-lexer.cc -- implement My_midi_lexer
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
5
6 #include "mi2mu.hh"
7
8 int
9 yylex() 
10 {
11     return midi_lexer_l_g->yylex();
12 }
13
14 My_midi_lexer* midi_lexer_l_g = 0;
15
16 My_midi_lexer::My_midi_lexer( String &filename_str, Sources * sources )
17 {
18     source_file_l_ =sources->get_file_l(filename_str);
19     switch_streams( source_file_l_->istream_l() ,0 );
20     errorlevel_i_ = 0;
21     char_count_ = 0;
22     running_status_i_ = 0;
23 }
24
25 My_midi_lexer::~My_midi_lexer()
26 {
27 //    delete source_file_p_;
28 }
29
30 void
31 My_midi_lexer::error( char const* sz_l )
32 {
33     if (1|| !source_file_l_ ) {
34         cerr << "error at EOF" << sz_l << '\n';
35     } else {
36         
37         // FIXME
38         #if 0
39         char const* ch_C = here_ch_C();
40         if ( ch_C ) {
41             ch_C--;
42             while ( ( *ch_C == ' ' ) || ( *ch_C == '\t' ) || ( *ch_C == '\n' ) )
43                 ch_C--;
44             ch_C++;
45         }
46         errorlevel_i_ |= 1;
47         error( sz_l);
48         #endif
49     }
50 }
51
52 char const*
53 My_midi_lexer::here_ch_C()
54 {
55     return source_file_l_->ch_C() + char_count_ ;
56 }
57
58 int
59 My_midi_lexer::varint2_i( String str )
60 {
61     int var_i = 0;
62
63     for ( int i = 0; i < str.length_i(); i++ ) {
64         Byte byte = str[ i ];
65         var_i <<= 7;
66         var_i += byte & 0x7f;
67         if ( ! ( byte & 0x80 ) )
68             return var_i;
69     }
70     cout << "\nvarint2_i:" << String_convert::bin2hex_str( str ) << endl;
71     assert( 0 ); // illegal varint
72     return 0;
73 }
74
75 int
76 My_midi_lexer::close_i()
77 {
78     return 0;
79 }
80