@@ -74,69 +74,71 @@ impl<T: Reader> T : ReaderUtil {
74
74
impl Reader {
75
75
fn read_chars ( n : uint ) -> ~[ char ] {
76
76
// returns the (consumed offset, n_req), appends characters to &chars
77
- fn chars_from_bytes ( buf : ~[ u8 ] , & chars: ~[ char ] ) -> ( uint , uint ) {
78
- let mut i = 0 u;
79
- while i < vec:: len ( buf) {
77
+ fn chars_from_bytes ( buf : & ~[ u8 ] , chars : & mut ~[ char ] )
78
+ -> ( uint , uint ) {
79
+ let mut i = 0 ;
80
+ let buf_len = buf. len ( ) ;
81
+ while i < buf_len {
80
82
let b0 = buf[ i] ;
81
83
let w = str:: utf8_char_width ( b0) ;
82
84
let end = i + w;
83
- i += 1 u ;
84
- assert ( w > 0 u ) ;
85
- if w == 1 u {
86
- vec:: push ( chars, b0 as char ) ;
85
+ i += 1 ;
86
+ assert ( w > 0 ) ;
87
+ if w == 1 {
88
+ vec:: push ( * chars, b0 as char ) ;
87
89
loop ;
88
90
}
89
91
// can't satisfy this char with the existing data
90
- if end > vec :: len ( buf ) {
91
- return ( i - 1 u , end - vec :: len ( buf ) ) ;
92
+ if end > buf_len {
93
+ return ( i - 1 , end - buf_len ) ;
92
94
}
93
- let mut val = 0 u ;
95
+ let mut val = 0 ;
94
96
while i < end {
95
97
let next = buf[ i] as int ;
96
- i += 1 u ;
98
+ i += 1 ;
97
99
assert ( next > -1 ) ;
98
100
assert ( next & 192 == 128 ) ;
99
- val <<= 6 u ;
101
+ val <<= 6 ;
100
102
val += ( next & 63 ) as uint ;
101
103
}
102
104
// See str::char_at
103
- val += ( ( b0 << ( ( w + 1 u ) as u8 ) ) as uint )
104
- << ( w - 1 u ) * 6 u - w - 1 u;
105
- vec:: push ( chars, val as char ) ;
105
+ val += ( ( b0 << ( ( w + 1 ) as u8 ) ) as uint )
106
+ << ( w - 1 ) * 6 - w - 1 u;
107
+ vec:: push ( * chars, val as char ) ;
106
108
}
107
- return ( i, 0 u ) ;
109
+ return ( i, 0 ) ;
108
110
}
109
111
let mut buf: ~[ u8 ] = ~[ ] ;
110
112
let mut chars: ~[ char ] = ~[ ] ;
111
113
// might need more bytes, but reading n will never over-read
112
114
let mut nbread = n;
113
- while nbread > 0 u {
115
+ while nbread > 0 {
114
116
let data = self . read_bytes ( nbread) ;
115
- if vec :: len ( data) == 0 u {
117
+ if data. is_empty ( ) {
116
118
// eof - FIXME (#2004): should we do something if
117
119
// we're split in a unicode char?
118
120
break ;
119
121
}
120
122
vec:: push_all ( buf, data) ;
121
- let ( offset, nbreq) = chars_from_bytes ( buf, chars) ;
122
- let ncreq = n - vec :: len ( chars ) ;
123
+ let ( offset, nbreq) = chars_from_bytes ( & buf, & mut chars) ;
124
+ let ncreq = n - chars . len ( ) ;
123
125
// again we either know we need a certain number of bytes
124
126
// to complete a character, or we make sure we don't
125
127
// over-read by reading 1-byte per char needed
126
128
nbread = if ncreq > nbreq { ncreq } else { nbreq } ;
127
- if nbread > 0 u {
128
- buf = vec:: slice ( buf, offset, vec :: len ( buf ) ) ;
129
+ if nbread > 0 {
130
+ buf = vec:: slice ( buf, offset, buf . len ( ) ) ;
129
131
}
130
132
}
131
133
move chars
132
134
}
133
135
134
136
fn read_char ( ) -> char {
135
- let c = self . read_chars ( 1 u ) ;
136
- if vec:: len ( c) == 0 u {
137
+ let c = self . read_chars ( 1 ) ;
138
+ if vec:: len ( c) == 0 {
137
139
return -1 as char ; // FIXME will this stay valid? // #2004
138
140
}
139
- assert ( vec:: len ( c) == 1 u ) ;
141
+ assert ( vec:: len ( c) == 1 ) ;
140
142
return c[ 0 ] ;
141
143
}
142
144
@@ -195,7 +197,7 @@ impl Reader {
195
197
}
196
198
}
197
199
198
- fn each_line ( it : fn ( ~ str ) -> bool ) {
200
+ fn each_line ( it : fn ( s : & str ) -> bool ) {
199
201
while !self . eof ( ) {
200
202
if !it ( self . read_line ( ) ) { break ; }
201
203
}
@@ -440,7 +442,7 @@ fn fd_writer(fd: fd_t, cleanup: bool) -> Writer {
440
442
}
441
443
442
444
443
- fn mk_file_writer ( path : & Path , flags : ~ [ FileFlag ] )
445
+ fn mk_file_writer ( path : & Path , flags : & [ FileFlag ] )
444
446
-> Result < Writer , ~str > {
445
447
446
448
#[ cfg( windows) ]
@@ -644,7 +646,7 @@ impl<T: Writer> T : WriterUtil {
644
646
}
645
647
646
648
#[ allow( non_implicitly_copyable_typarams) ]
647
- fn file_writer ( path : & Path , flags : ~ [ FileFlag ] ) -> Result < Writer , ~str > {
649
+ fn file_writer ( path : & Path , flags : & [ FileFlag ] ) -> Result < Writer , ~str > {
648
650
mk_file_writer ( path, flags) . chain ( |w| result:: Ok ( w) )
649
651
}
650
652
@@ -786,7 +788,7 @@ mod fsync {
786
788
787
789
788
790
// Artifacts that need to fsync on destruction
789
- struct Res < t > {
791
+ struct Res < t : Copy > {
790
792
arg : Arg < t > ,
791
793
drop {
792
794
match self . arg. opt_level {
@@ -799,7 +801,7 @@ mod fsync {
799
801
}
800
802
}
801
803
802
- fn Res <t> ( - arg: Arg <t>) -> Res <t>{
804
+ fn Res <t: Copy > ( + arg: Arg <t>) -> Res <t>{
803
805
Res {
804
806
arg : move arg
805
807
}
@@ -808,28 +810,28 @@ mod fsync {
808
810
type Arg <t> = {
809
811
val: t,
810
812
opt_level: Option <Level >,
811
- fsync_fn: fn @( t, Level ) -> int
813
+ fsync_fn: fn @( +f : t, Level ) -> int
812
814
} ;
813
815
814
816
// fsync file after executing blk
815
817
// FIXME (#2004) find better way to create resources within lifetime of
816
818
// outer res
817
- fn FILE_res_sync ( && file: FILERes , opt_level: Option <Level >,
818
- blk : fn ( & & v: Res <* libc:: FILE >) ) {
819
- blk ( Res ( {
819
+ fn FILE_res_sync ( file: & FILERes , opt_level: Option <Level >,
820
+ blk: fn ( + v: Res <* libc:: FILE >) ) {
821
+ blk ( move Res ( {
820
822
val: file. f , opt_level: opt_level,
821
- fsync_fn: fn @( & & file: * libc:: FILE , l: Level ) -> int {
823
+ fsync_fn: fn @( + file: * libc:: FILE , l: Level ) -> int {
822
824
return os:: fsync_fd ( libc:: fileno ( file) , l) as int ;
823
825
}
824
826
} ) ) ;
825
827
}
826
828
827
829
// fsync fd after executing blk
828
- fn fd_res_sync ( & & fd: FdRes , opt_level : Option < Level > ,
829
- blk : fn ( & & v: Res < fd_t > ) ) {
830
- blk ( Res ( {
830
+ fn fd_res_sync ( fd : & FdRes , opt_level : Option < Level > ,
831
+ blk : fn ( + v : Res < fd_t > ) ) {
832
+ blk ( move Res ( {
831
833
val: fd. fd , opt_level: opt_level,
832
- fsync_fn: fn @( & & fd: fd_t, l: Level ) -> int {
834
+ fsync_fn: fn @( + fd: fd_t, l: Level ) -> int {
833
835
return os:: fsync_fd ( fd, l) as int ;
834
836
}
835
837
} ) ) ;
@@ -839,11 +841,11 @@ mod fsync {
839
841
trait FSyncable { fn fsync ( l : Level ) -> int ; }
840
842
841
843
// Call o.fsync after executing blk
842
- fn obj_sync ( & & o: FSyncable , opt_level : Option < Level > ,
843
- blk : fn ( & & v: Res < FSyncable > ) ) {
844
+ fn obj_sync ( + o : FSyncable , opt_level : Option < Level > ,
845
+ blk : fn ( + v : Res < FSyncable > ) ) {
844
846
blk ( Res ( {
845
847
val: o, opt_level: opt_level,
846
- fsync_fn: fn @( & & o: FSyncable , l: Level ) -> int {
848
+ fsync_fn: fn @( + o: FSyncable , l: Level ) -> int {
847
849
return o. fsync ( l) ;
848
850
}
849
851
} ) ) ;
0 commit comments