2 binary-source-file.cc -- implement Binary_source_file
4 source file of the LilyPond music typesetter
6 (c) 1997--2004 Jan Nieuwenhuizen
10 #include "binary-source-file.hh"
12 #include <climits> // INT_MAX
14 #include "string-convert.hh"
16 Binary_source_file::Binary_source_file (String& file_name_string)
17 : Source_file (file_name_string)
21 Binary_source_file::~Binary_source_file ()
26 Binary_source_file::error_string (char const* pos_str0) const
29 if (!contains (pos_str0))
32 char const* begin_str0 = pos_str0 - 8 >? to_str0 ();
33 char const* end_str0 = pos_str0 + 7 <? to_str0 () + length ();
35 String pre_string ((Byte const*)begin_str0, pos_str0 - begin_str0);
36 pre_string = String_convert::bin2hex (pre_string);
37 for (int i = 2; i < pre_string.length (); i += 3)
38 pre_string = pre_string.left_string (i) + " " + pre_string.cut_string (i, INT_MAX);
39 String post_string ((Byte const*)pos_str0, end_str0 - pos_str0);
40 post_string = String_convert::bin2hex (post_string);
41 for (int i = 2; i < post_string.length (); i += 3)
42 post_string = post_string.left_string (i) + " " + post_string.cut_string (i, INT_MAX);
44 String str = pre_string
46 + to_string (' ', pre_string.length () + 1)
52 Binary_source_file::get_line (char const* pos_str0) const
54 if (!contains (pos_str0))
57 return pos_str0 - to_str0 ();
61 Binary_source_file::get_U8 ()
63 return * (U8*)forward_str0 (1);
68 Binary_source_file::get_U16 ()
79 naming is wrong. This is a UNIX-endian-32 (as opposed to xinu or ixun)
83 Binary_source_file::get_U32 ()