@@ -221,11 +221,9 @@ impl core::fmt::Debug for ShortFileName {
221
221
}
222
222
223
223
/// Used to store a Long File Name
224
- ///
225
- /// The const generic specifies the maximum capacity in bytes.
226
- pub struct LfnBuffer < const N : usize > {
224
+ pub struct LfnBuffer < ' a > {
227
225
/// We fill this buffer in from the back
228
- inner : [ u8 ; N ] ,
226
+ inner : & ' a mut [ u8 ] ,
229
227
/// How many bytes are free.
230
228
///
231
229
/// This is also the byte index the string starts from.
@@ -234,19 +232,20 @@ pub struct LfnBuffer<const N: usize> {
234
232
overflow : bool ,
235
233
}
236
234
237
- impl < const N : usize > LfnBuffer < N > {
238
- /// Create a new, empty, LFN Buffer
239
- pub fn new ( ) -> LfnBuffer < N > {
235
+ impl < ' a > LfnBuffer < ' a > {
236
+ /// Create a new, empty, LFN Buffer using the given mutable slice as its storage.
237
+ pub fn new ( storage : & ' a mut [ u8 ] ) -> LfnBuffer < ' a > {
238
+ let len = storage. len ( ) ;
240
239
LfnBuffer {
241
- inner : [ 0u8 ; N ] ,
242
- free : N ,
240
+ inner : storage ,
241
+ free : len ,
243
242
overflow : false ,
244
243
}
245
244
}
246
245
247
246
/// Empty out this buffer
248
247
pub fn clear ( & mut self ) {
249
- self . free = N ;
248
+ self . free = self . inner . len ( ) ;
250
249
self . overflow = false ;
251
250
}
252
251
@@ -291,12 +290,6 @@ impl<const N: usize> LfnBuffer<N> {
291
290
}
292
291
}
293
292
294
- impl < const N : usize > core:: default:: Default for LfnBuffer < N > {
295
- fn default ( ) -> Self {
296
- LfnBuffer :: new ( )
297
- }
298
- }
299
-
300
293
// ****************************************************************************
301
294
//
302
295
// Unit Tests
@@ -402,7 +395,8 @@ mod test {
402
395
403
396
#[ test]
404
397
fn one_piece ( ) {
405
- let mut buf: LfnBuffer < 64 > = LfnBuffer :: new ( ) ;
398
+ let mut storage = [ 0u8 ; 64 ] ;
399
+ let mut buf: LfnBuffer = LfnBuffer :: new ( & mut storage) ;
406
400
buf. push ( & [
407
401
0x0030 , 0x0031 , 0x0032 , 0x0033 , 0x2202 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
408
402
0xFFFF , 0xFFFF ,
@@ -412,7 +406,8 @@ mod test {
412
406
413
407
#[ test]
414
408
fn two_piece ( ) {
415
- let mut buf: LfnBuffer < 64 > = LfnBuffer :: new ( ) ;
409
+ let mut storage = [ 0u8 ; 64 ] ;
410
+ let mut buf: LfnBuffer = LfnBuffer :: new ( & mut storage) ;
416
411
buf. push ( & [
417
412
0x0030 , 0x0031 , 0x0032 , 0x0033 , 0x2202 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
418
413
0xFFFF , 0xFFFF ,
0 commit comments