@@ -384,7 +384,25 @@ impl Serializer: serialization2::Serializer {
384
384
fail ~"Unimplemented : serializing a float";
385
385
}
386
386
387
- fn emit_str ( & self , v : & str ) { self . wr_tagged_str ( EsStr as uint , v) }
387
+ fn emit_char ( & self , _v : char ) {
388
+ fail ~"Unimplemented : serializing a char";
389
+ }
390
+
391
+ fn emit_borrowed_str ( & self , v : & str ) {
392
+ self . wr_tagged_str ( EsStr as uint , v)
393
+ }
394
+
395
+ fn emit_owned_str ( & self , v : & str ) {
396
+ self . emit_borrowed_str ( v)
397
+ }
398
+
399
+ fn emit_managed_str ( & self , v : & str ) {
400
+ self . emit_borrowed_str ( v)
401
+ }
402
+
403
+ fn emit_borrowed ( & self , f : fn ( ) ) { f ( ) }
404
+ fn emit_owned ( & self , f : fn ( ) ) { f ( ) }
405
+ fn emit_managed ( & self , f : fn ( ) ) { f ( ) }
388
406
389
407
fn emit_enum ( & self , name : & str , f : fn ( ) ) {
390
408
self . _emit_label ( name) ;
@@ -397,25 +415,33 @@ impl Serializer: serialization2::Serializer {
397
415
}
398
416
fn emit_enum_variant_arg ( & self , _idx : uint , f : fn ( ) ) { f ( ) }
399
417
400
- fn emit_vec ( & self , len : uint , f : fn ( ) ) {
418
+ fn emit_borrowed_vec ( & self , len : uint , f : fn ( ) ) {
401
419
do self . wr_tag ( EsVec as uint ) {
402
420
self . _emit_tagged_uint ( EsVecLen , len) ;
403
421
f ( )
404
422
}
405
423
}
406
424
425
+ fn emit_owned_vec ( & self , len : uint , f : fn ( ) ) {
426
+ self . emit_borrowed_vec ( len, f)
427
+ }
428
+
429
+ fn emit_managed_vec ( & self , len : uint , f : fn ( ) ) {
430
+ self . emit_borrowed_vec ( len, f)
431
+ }
432
+
407
433
fn emit_vec_elt ( & self , _idx : uint , f : fn ( ) ) {
408
434
self . wr_tag ( EsVecElt as uint , f)
409
435
}
410
436
411
- fn emit_box ( & self , f : fn ( ) ) { f ( ) }
412
- fn emit_uniq ( & self , f : fn ( ) ) { f ( ) }
413
437
fn emit_rec ( & self , f : fn ( ) ) { f ( ) }
414
- fn emit_rec_field ( & self , f_name : & str , _f_idx : uint , f : fn ( ) ) {
415
- self . _emit_label ( f_name) ;
438
+ fn emit_struct ( & self , _name : & str , f : fn ( ) ) { f ( ) }
439
+ fn emit_field ( & self , name : & str , _idx : uint , f : fn ( ) ) {
440
+ self . _emit_label ( name) ;
416
441
f ( )
417
442
}
418
- fn emit_tup ( & self , _sz : uint , f : fn ( ) ) { f ( ) }
443
+
444
+ fn emit_tup ( & self , _len : uint , f : fn ( ) ) { f ( ) }
419
445
fn emit_tup_elt ( & self , _idx : uint , f : fn ( ) ) { f ( ) }
420
446
}
421
447
@@ -525,9 +551,22 @@ impl Deserializer: serialization2::Deserializer {
525
551
fn read_f32 ( & self ) -> f32 { fail ~"read_f32 ( ) "; }
526
552
fn read_float ( & self ) -> float { fail ~"read_float ( ) "; }
527
553
528
- fn read_str ( & self ) -> ~str { doc_as_str ( self . next_doc ( EsStr ) ) }
554
+ fn read_char ( & self ) -> char { fail ~"read_char ( ) "; }
555
+
556
+ fn read_owned_str ( & self ) -> ~str { doc_as_str ( self . next_doc ( EsStr ) ) }
557
+ fn read_managed_str ( & self ) -> @str { fail ~"read_managed_str ( ) "; }
529
558
530
559
// Compound types:
560
+ fn read_owned < T > ( & self , f : fn ( ) -> T ) -> T {
561
+ debug ! ( "read_owned()" ) ;
562
+ f ( )
563
+ }
564
+
565
+ fn read_managed < T > ( & self , f : fn ( ) -> T ) -> T {
566
+ debug ! ( "read_managed()" ) ;
567
+ f ( )
568
+ }
569
+
531
570
fn read_enum < T > ( & self , name : & str , f : fn ( ) -> T ) -> T {
532
571
debug ! ( "read_enum(%s)" , name) ;
533
572
self . _check_label ( name) ;
@@ -548,8 +587,17 @@ impl Deserializer: serialization2::Deserializer {
548
587
f ( )
549
588
}
550
589
551
- fn read_vec < T > ( & self , f : fn ( uint ) -> T ) -> T {
552
- debug ! ( "read_vec()" ) ;
590
+ fn read_owned_vec < T > ( & self , f : fn ( uint ) -> T ) -> T {
591
+ debug ! ( "read_owned_vec()" ) ;
592
+ do self. push_doc ( self . next_doc ( EsVec ) ) {
593
+ let len = self . _next_uint ( EsVecLen ) ;
594
+ debug ! ( " len=%u" , len) ;
595
+ f ( len)
596
+ }
597
+ }
598
+
599
+ fn read_managed_vec < T > ( & self , f : fn ( uint ) -> T ) -> T {
600
+ debug ! ( "read_managed_vec()" ) ;
553
601
do self. push_doc ( self . next_doc ( EsVec ) ) {
554
602
let len = self . _next_uint ( EsVecLen ) ;
555
603
debug ! ( " len=%u" , len) ;
@@ -562,30 +610,24 @@ impl Deserializer: serialization2::Deserializer {
562
610
self . push_doc ( self . next_doc ( EsVecElt ) , f)
563
611
}
564
612
565
- fn read_box < T > ( & self , f : fn ( ) -> T ) -> T {
566
- debug ! ( "read_box ()" ) ;
613
+ fn read_rec < T > ( & self , f : fn ( ) -> T ) -> T {
614
+ debug ! ( "read_rec ()" ) ;
567
615
f ( )
568
616
}
569
617
570
- fn read_uniq < T > ( & self , f : fn ( ) -> T ) -> T {
571
- debug ! ( "read_uniq()" ) ;
618
+ fn read_struct < T > ( & self , name : & str , f : fn ( ) -> T ) -> T {
619
+ debug ! ( "read_struct(name=%s)" , name ) ;
572
620
f ( )
573
621
}
574
622
575
- fn read_rec < T > ( & self , f : fn ( ) -> T ) -> T {
576
- debug ! ( "read_rec()" ) ;
577
- f ( )
578
- }
579
-
580
- fn read_rec_field < T > ( & self , f_name : & str , f_idx : uint ,
581
- f : fn ( ) -> T ) -> T {
582
- debug ! ( "read_rec_field(%s, idx=%u)" , f_name, f_idx) ;
583
- self . _check_label ( f_name) ;
623
+ fn read_field < T > ( & self , name : & str , idx : uint , f : fn ( ) -> T ) -> T {
624
+ debug ! ( "read_field(name=%s, idx=%u)" , name, idx) ;
625
+ self . _check_label ( name) ;
584
626
f ( )
585
627
}
586
628
587
- fn read_tup < T > ( & self , sz : uint , f : fn ( ) -> T ) -> T {
588
- debug ! ( "read_tup(sz =%u)" , sz ) ;
629
+ fn read_tup < T > ( & self , len : uint , f : fn ( ) -> T ) -> T {
630
+ debug ! ( "read_tup(len =%u)" , len ) ;
589
631
f ( )
590
632
}
591
633
@@ -595,7 +637,6 @@ impl Deserializer: serialization2::Deserializer {
595
637
}
596
638
}
597
639
598
-
599
640
// ___________________________________________________________________________
600
641
// Testing
601
642
0 commit comments