]> git.donarmstrong.com Git - lilypond.git/blob - lib/binary-source-file.cc
c2e3c152be363cf7035d9389e068a4147a0385ca
[lilypond.git] / lib / binary-source-file.cc
1 /*
2   binary-source-file.cc -- implement Binary_source_file
3
4   source file of the LilyPond music typesetter
5
6   (c) 1997 Jan Nieuwenhuizen
7 */
8
9
10 #include <limits.h>             // INT_MAX
11 #include <assert.h>
12
13 #include "proto.hh"
14 #include "plist.hh"
15 #include "string.hh"
16 #include "source-file.hh"
17 #include "binary-source-file.hh"
18 #include "string-convert.hh"
19
20 Binary_source_file::Binary_source_file( String& filename_str )
21         : Source_file( filename_str )
22 {
23 }
24
25 Binary_source_file::~Binary_source_file()
26 {
27 }
28
29 String
30 Binary_source_file::error_str( char const* pos_ch_c_l )
31 {
32     assert( this );
33     if ( !in_b( pos_ch_c_l ) )
34         return "";
35
36     char const* begin_ch_c_l = pos_ch_c_l - 8 >? ch_C();
37     char const* end_ch_c_l = pos_ch_c_l + 7 <? ch_C() + length_off();
38
39     String pre_str( (Byte const*)begin_ch_c_l, pos_ch_c_l - begin_ch_c_l );
40     pre_str = String_convert::bin2hex_str( pre_str );
41     for ( int i = 2; i < pre_str.length_i(); i += 3 )
42         pre_str = pre_str.left_str( i ) + " " + pre_str.mid_str( i, INT_MAX );
43     String post_str( (Byte const*)pos_ch_c_l, end_ch_c_l - pos_ch_c_l );
44     post_str = String_convert::bin2hex_str( post_str );
45     for ( int i = 2; i < post_str.length_i(); i += 3 )
46         post_str = post_str.left_str( i ) + " " + post_str.mid_str( i, INT_MAX );
47
48     String str = pre_str
49         + String( '\n' )
50         + String( ' ', pre_str.length_i() + 1 ) 
51         + post_str;
52     return str;
53 }
54
55 int
56 Binary_source_file::line_i( char const* pos_ch_c_l )
57 {
58     if ( !in_b( pos_ch_c_l ) )
59         return 0;
60
61     return pos_ch_c_l - ch_C();
62 }
63