@@ -17,29 +17,23 @@ const EOF = -1
17
17
// Reader implements a seekable buffered io.Reader.
18
18
type Reader struct {
19
19
f * os.File
20
- r * bufio.Reader
20
+ * bufio.Reader
21
21
}
22
22
23
23
// Writer implements a seekable buffered io.Writer.
24
24
type Writer struct {
25
25
f * os.File
26
- w * bufio.Writer
26
+ * bufio.Writer
27
27
}
28
28
29
- // Reader returns this Reader's underlying bufio.Reader.
30
- func (r * Reader ) Reader () * bufio.Reader { return r .r }
31
-
32
- // Writer returns this Writer's underlying bufio.Writer.
33
- func (w * Writer ) Writer () * bufio.Writer { return w .w }
34
-
35
29
// Create creates the file named name and returns a Writer
36
30
// for that file.
37
31
func Create (name string ) (* Writer , error ) {
38
32
f , err := os .Create (name )
39
33
if err != nil {
40
34
return nil , err
41
35
}
42
- return & Writer {f : f , w : bufio .NewWriter (f )}, nil
36
+ return & Writer {f : f , Writer : bufio .NewWriter (f )}, nil
43
37
}
44
38
45
39
// Open returns a Reader for the file named name.
@@ -48,31 +42,23 @@ func Open(name string) (*Reader, error) {
48
42
if err != nil {
49
43
return nil , err
50
44
}
51
- return & Reader {f : f , r : bufio .NewReader (f )}, nil
52
- }
53
-
54
- func (w * Writer ) Write (p []byte ) (int , error ) {
55
- return w .w .Write (p )
56
- }
57
-
58
- func (w * Writer ) WriteString (p string ) (int , error ) {
59
- return w .w .WriteString (p )
45
+ return & Reader {f : f , Reader : bufio .NewReader (f )}, nil
60
46
}
61
47
62
48
func (r * Reader ) Seek (offset int64 , whence int ) int64 {
63
49
if whence == 1 {
64
- offset -= int64 (r .r . Buffered ())
50
+ offset -= int64 (r .Buffered ())
65
51
}
66
52
off , err := r .f .Seek (offset , whence )
67
53
if err != nil {
68
54
log .Fatalf ("seeking in output: %v" , err )
69
55
}
70
- r .r . Reset (r .f )
56
+ r .Reset (r .f )
71
57
return off
72
58
}
73
59
74
60
func (w * Writer ) Seek (offset int64 , whence int ) int64 {
75
- if err := w .w . Flush (); err != nil {
61
+ if err := w .Flush (); err != nil {
76
62
log .Fatalf ("writing output: %v" , err )
77
63
}
78
64
off , err := w .f .Seek (offset , whence )
@@ -87,12 +73,12 @@ func (r *Reader) Offset() int64 {
87
73
if err != nil {
88
74
log .Fatalf ("seeking in output [0, 1]: %v" , err )
89
75
}
90
- off -= int64 (r .r . Buffered ())
76
+ off -= int64 (r .Buffered ())
91
77
return off
92
78
}
93
79
94
80
func (w * Writer ) Offset () int64 {
95
- if err := w .w . Flush (); err != nil {
81
+ if err := w .Flush (); err != nil {
96
82
log .Fatalf ("writing output: %v" , err )
97
83
}
98
84
off , err := w .f .Seek (0 , 1 )
@@ -102,16 +88,8 @@ func (w *Writer) Offset() int64 {
102
88
return off
103
89
}
104
90
105
- func (w * Writer ) Flush () error {
106
- return w .w .Flush ()
107
- }
108
-
109
- func (w * Writer ) WriteByte (c byte ) error {
110
- return w .w .WriteByte (c )
111
- }
112
-
113
91
func Bread (r * Reader , p []byte ) int {
114
- n , err := io .ReadFull (r . r , p )
92
+ n , err := io .ReadFull (r , p )
115
93
if n == 0 {
116
94
if err != nil && err != io .EOF {
117
95
n = - 1
@@ -121,7 +99,7 @@ func Bread(r *Reader, p []byte) int {
121
99
}
122
100
123
101
func Bgetc (r * Reader ) int {
124
- c , err := r .r . ReadByte ()
102
+ c , err := r .ReadByte ()
125
103
if err != nil {
126
104
if err != io .EOF {
127
105
log .Fatalf ("reading input: %v" , err )
@@ -131,16 +109,8 @@ func Bgetc(r *Reader) int {
131
109
return int (c )
132
110
}
133
111
134
- func (r * Reader ) Read (p []byte ) (int , error ) {
135
- return r .r .Read (p )
136
- }
137
-
138
- func (r * Reader ) Peek (n int ) ([]byte , error ) {
139
- return r .r .Peek (n )
140
- }
141
-
142
112
func Brdline (r * Reader , delim int ) string {
143
- s , err := r .r . ReadBytes (byte (delim ))
113
+ s , err := r .ReadBytes (byte (delim ))
144
114
if err != nil {
145
115
log .Fatalf ("reading input: %v" , err )
146
116
}
@@ -152,7 +122,7 @@ func (r *Reader) Close() error {
152
122
}
153
123
154
124
func (w * Writer ) Close () error {
155
- err := w .w . Flush ()
125
+ err := w .Flush ()
156
126
err1 := w .f .Close ()
157
127
if err == nil {
158
128
err = err1
0 commit comments