2 binary-source-file.cc -- implement Binary_source_file
4 source file of the LilyPond music typesetter
6 (c) 1997--2003 Jan Nieuwenhuizen
10 #include <limits.h> // INT_MAX
13 #include "flower-proto.hh"
15 #include "source-file.hh"
16 #include "binary-source-file.hh"
17 #include "string-convert.hh"
19 Binary_source_file::Binary_source_file (String
& filename_string
)
20 : Source_file (filename_string
)
24 Binary_source_file::~Binary_source_file ()
29 Binary_source_file::error_string (char const* pos_str0
) const
35 char const* begin_str0
= pos_str0
- 8 >? to_str0 ();
36 char const* end_str0
= pos_str0
+ 7 <? to_str0 () + length ();
38 String
pre_string ((Byte
const*)begin_str0
, pos_str0
- begin_str0
);
39 pre_string
= String_convert::bin2hex (pre_string
);
40 for (int i
= 2; i
< pre_string
.length (); i
+= 3)
41 pre_string
= pre_string
.left_string (i
) + " " + pre_string
.cut_string (i
, INT_MAX
);
42 String
post_string ((Byte
const*)pos_str0
, end_str0
- pos_str0
);
43 post_string
= String_convert::bin2hex (post_string
);
44 for (int i
= 2; i
< post_string
.length (); i
+= 3)
45 post_string
= post_string
.left_string (i
) + " " + post_string
.cut_string (i
, INT_MAX
);
47 String str
= pre_string
49 + to_string (' ', pre_string
.length () + 1)
55 Binary_source_file::get_line (char const* pos_str0
) const
60 return pos_str0
- to_str0 ();
64 Binary_source_file::get_U8 ()
66 return * (U8
*)forward_str0 (1);
71 Binary_source_file::get_U16 ()
82 naming is wrong. This is a UNIX-endian-32 (as opposed to xinu or ixun)
86 Binary_source_file::get_U32 ()