1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// EBML enum definitions and utils shared by the encoder and decoder
const tag_items: uint = 0x02u;
const tag_paths_data_name: uint = 0x04u;
const tag_def_id: uint = 0x07u;
const tag_items_data: uint = 0x08u;
const tag_items_data_item: uint = 0x09u;
const tag_items_data_item_family: uint = 0x0au;
const tag_items_data_item_ty_param_bounds: uint = 0x0bu;
const tag_items_data_item_type: uint = 0x0cu;
const tag_items_data_item_symbol: uint = 0x0du;
const tag_items_data_item_variant: uint = 0x0eu;
const tag_items_data_parent_item: uint = 0x0fu;
const tag_index: uint = 0x11u;
const tag_index_buckets: uint = 0x12u;
const tag_index_buckets_bucket: uint = 0x13u;
const tag_index_buckets_bucket_elt: uint = 0x14u;
const tag_index_table: uint = 0x15u;
const tag_meta_item_name_value: uint = 0x18u;
const tag_meta_item_name: uint = 0x19u;
const tag_meta_item_value: uint = 0x20u;
const tag_attributes: uint = 0x21u;
const tag_attribute: uint = 0x22u;
const tag_meta_item_word: uint = 0x23u;
const tag_meta_item_list: uint = 0x24u;
// The list of crates that this crate depends on
const tag_crate_deps: uint = 0x25u;
// A single crate dependency
const tag_crate_dep: uint = 0x26u;
const tag_crate_hash: uint = 0x28u;
const tag_parent_item: uint = 0x29u;
const tag_crate_dep_name: uint = 0x2au;
const tag_crate_dep_hash: uint = 0x2bu;
const tag_crate_dep_vers: uint = 0x2cu;
const tag_mod_impl: uint = 0x30u;
const tag_item_trait_method: uint = 0x31u;
const tag_impl_trait: uint = 0x32u;
// discriminator value for variants
const tag_disr_val: uint = 0x34u;
// used to encode ast_map::path and ast_map::path_elt
const tag_path: uint = 0x40u;
const tag_path_len: uint = 0x41u;
const tag_path_elt_mod: uint = 0x42u;
const tag_path_elt_name: uint = 0x43u;
const tag_item_field: uint = 0x44u;
const tag_struct_mut: uint = 0x45u;
const tag_region_param: uint = 0x46u;
const tag_mod_impl_trait: uint = 0x47u;
/*
trait items contain tag_item_trait_method elements,
impl items contain tag_item_impl_method elements, and classes
have both. That's because some code treats classes like traits,
and other code treats them like impls. Because classes can contain
both, tag_item_trait_method and tag_item_impl_method have to be two
different tags.
*/
const tag_item_impl_method: uint = 0x48u;
const tag_item_dtor: uint = 0x49u;
const tag_item_trait_method_self_ty: uint = 0x4b;
const tag_item_trait_method_self_ty_region: uint = 0x4c;
// Reexports are found within module tags. Each reexport contains def_ids
// and names.
const tag_items_data_item_reexport: uint = 0x4d;
const tag_items_data_item_reexport_def_id: uint = 0x4e;
const tag_items_data_item_reexport_name: uint = 0x4f;
// used to encode crate_ctxt side tables
enum astencode_tag { // Reserves 0x50 -- 0x6f
tag_ast = 0x50,
tag_tree = 0x51,
tag_id_range = 0x52,
tag_table = 0x53,
tag_table_id = 0x54,
tag_table_val = 0x55,
tag_table_def = 0x56,
tag_table_node_type = 0x57,
tag_table_node_type_subst = 0x58,
tag_table_freevars = 0x59,
tag_table_tcache = 0x5a,
tag_table_param_bounds = 0x5b,
tag_table_inferred_modes = 0x5c,
tag_table_mutbl = 0x5d,
tag_table_last_use = 0x5e,
tag_table_spill = 0x5f,
tag_table_method_map = 0x60,
tag_table_vtable_map = 0x61,
tag_table_adjustments = 0x62,
tag_table_legacy_boxed_trait = 0x63,
tag_table_value_mode = 0x64
}
const tag_item_trait_method_sort: uint = 0x70;
const tag_item_impl_type_basename: uint = 0x71;
type link_meta = {name: ~str, vers: ~str, extras_hash: ~str};
|