2
2
3
3
import std:: { io, ebml, map, list} ;
4
4
import io:: writer_util;
5
+ import ebml:: writer_util;
5
6
import syntax:: ast:: * ;
6
7
import syntax:: ast_util;
7
8
import syntax:: ast_util:: local_def;
@@ -21,15 +22,22 @@ type encode_ctxt = {ccx: @crate_ctxt, type_abbrevs: abbrev_map};
21
22
22
23
// Path table encoding
23
24
fn encode_name ( ebml_w : ebml:: writer , name : str ) {
24
- ebml :: start_tag ( ebml_w, tag_paths_data_name) ;
25
- ebml_w. writer . write ( str :: bytes ( name) ) ;
26
- ebml :: end_tag ( ebml_w ) ;
25
+ ebml_w. wr_tag ( tag_paths_data_name) { ||
26
+ ebml_w. wr_str ( name) ;
27
+ }
27
28
}
28
29
29
30
fn encode_def_id ( ebml_w : ebml:: writer , id : def_id ) {
30
- ebml:: start_tag ( ebml_w, tag_def_id) ;
31
- ebml_w. writer . write ( str:: bytes ( def_to_str ( id) ) ) ;
32
- ebml:: end_tag ( ebml_w) ;
31
+ ebml_w. wr_tag ( tag_def_id) { ||
32
+ ebml_w. wr_str ( def_to_str ( id) ) ;
33
+ }
34
+ }
35
+
36
+ fn encode_named_def_id ( ebml_w : ebml:: writer , name : str , id : def_id ) {
37
+ ebml_w. wr_tag ( tag_paths_data_item) { ||
38
+ encode_name ( ebml_w, name) ;
39
+ encode_def_id ( ebml_w, id) ;
40
+ }
33
41
}
34
42
35
43
type entry < T > = { val : T , pos : uint } ;
@@ -38,10 +46,10 @@ fn encode_enum_variant_paths(ebml_w: ebml::writer, variants: [variant],
38
46
path : [ str ] , & index: [ entry < str > ] ) {
39
47
for variant: variant in variants {
40
48
add_to_index ( ebml_w, path, index, variant. node . name ) ;
41
- ebml :: start_tag ( ebml_w, tag_paths_data_item) ;
42
- encode_name ( ebml_w, variant. node . name ) ;
43
- encode_def_id ( ebml_w, local_def ( variant. node . id ) ) ;
44
- ebml :: end_tag ( ebml_w ) ;
49
+ ebml_w. wr_tag ( tag_paths_data_item) { ||
50
+ encode_name ( ebml_w, variant. node . name ) ;
51
+ encode_def_id ( ebml_w, local_def ( variant. node . id ) ) ;
52
+ }
45
53
}
46
54
}
47
55
@@ -56,10 +64,7 @@ fn encode_native_module_item_paths(ebml_w: ebml::writer, nmod: native_mod,
56
64
path : [ str ] , & index: [ entry < str > ] ) {
57
65
for nitem: @native_item in nmod. items {
58
66
add_to_index ( ebml_w, path, index, nitem. ident ) ;
59
- ebml:: start_tag ( ebml_w, tag_paths_data_item) ;
60
- encode_name ( ebml_w, nitem. ident ) ;
61
- encode_def_id ( ebml_w, local_def ( nitem. id ) ) ;
62
- ebml:: end_tag ( ebml_w) ;
67
+ encode_named_def_id ( ebml_w, nitem. ident , local_def ( nitem. id ) ) ;
63
68
}
64
69
}
65
70
@@ -71,17 +76,11 @@ fn encode_module_item_paths(ebml_w: ebml::writer, module: _mod, path: [str],
71
76
alt it. node {
72
77
item_const ( _, _) {
73
78
add_to_index ( ebml_w, path, index, it. ident ) ;
74
- ebml:: start_tag ( ebml_w, tag_paths_data_item) ;
75
- encode_name ( ebml_w, it. ident ) ;
76
- encode_def_id ( ebml_w, local_def ( it. id ) ) ;
77
- ebml:: end_tag ( ebml_w) ;
79
+ encode_named_def_id ( ebml_w, it. ident , local_def ( it. id ) ) ;
78
80
}
79
81
item_fn ( _, tps, _) {
80
82
add_to_index ( ebml_w, path, index, it. ident ) ;
81
- ebml:: start_tag ( ebml_w, tag_paths_data_item) ;
82
- encode_name ( ebml_w, it. ident ) ;
83
- encode_def_id ( ebml_w, local_def ( it. id ) ) ;
84
- ebml:: end_tag ( ebml_w) ;
83
+ encode_named_def_id ( ebml_w, it. ident , local_def ( it. id ) ) ;
85
84
}
86
85
item_mod ( _mod) {
87
86
add_to_index ( ebml_w, path, index, it. ident ) ;
0 commit comments