2 binary-source-file.cc -- implement Binary_source_file
4 source file of the LilyPond music typesetter
6 (c) 1997 Jan Nieuwenhuizen
10 #include <limits.h> // INT_MAX
17 #include "source-file.hh"
18 #include "binary-source-file.hh"
19 #include "string-convert.hh"
21 Binary_source_file::Binary_source_file( String
& filename_str
)
22 : Source_file( filename_str
)
26 Binary_source_file::~Binary_source_file()
31 Binary_source_file::error_str( char const* pos_ch_c_l
)
34 if ( !in_b( pos_ch_c_l
) )
37 char const* begin_ch_c_l
= pos_ch_c_l
- 8 >? ch_c_l();
38 char const* end_ch_c_l
= pos_ch_c_l
+ 7 <? ch_c_l() + length_off();
40 String
pre_str( (Byte
const*)begin_ch_c_l
, pos_ch_c_l
- begin_ch_c_l
);
41 pre_str
= String_convert::bin2hex_str( pre_str
);
42 for ( int i
= 2; i
< pre_str
.length_i(); i
+= 3 )
43 pre_str
= pre_str
.left_str( i
) + " " + pre_str
.mid_str( i
+ 1, INT_MAX
);
44 String
post_str( (Byte
const*)pos_ch_c_l
, end_ch_c_l
- pos_ch_c_l
);
45 post_str
= String_convert::bin2hex_str( post_str
);
46 for ( int i
= 2; i
< post_str
.length_i(); i
+= 3 )
47 post_str
= post_str
.left_str( i
) + " " + post_str
.mid_str( i
+ 1, INT_MAX
);
51 + String( ' ', pre_str
.length_i() + 1 )
57 Binary_source_file::line_i( char const* pos_ch_c_l
)
59 if ( !in_b( pos_ch_c_l
) )
62 return pos_ch_c_l
- ch_c_l();