(index<- )        ./librustc/metadata/common.rs

    git branch:    * master           5200215 auto merge of #14035 : alexcrichton/rust/experimental, r=huonw
    modified:    Fri May  9 13:02:28 2014
   1  // Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
   2  // file at the top-level directory of this distribution and at
   3  // http://rust-lang.org/COPYRIGHT.
   4  //
   5  // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
   6  // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
   7  // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
   8  // option. This file may not be copied, modified, or distributed
   9  // except according to those terms.
  10  
  11  #![allow(non_camel_case_types)]
  12  
  13  use std::cast;
  14  use syntax::crateid::CrateId;
  15  use back::svh::Svh;
  16  
  17  // EBML enum definitions and utils shared by the encoder and decoder
  18  
  19  pub static tag_items: uint = 0x00;
  20  
  21  pub static tag_paths_data_name: uint = 0x01;
  22  
  23  pub static tag_def_id: uint = 0x02;
  24  
  25  pub static tag_items_data: uint = 0x03;
  26  
  27  pub static tag_items_data_item: uint = 0x04;
  28  
  29  pub static tag_items_data_item_family: uint = 0x05;
  30  
  31  pub static tag_items_data_item_ty_param_bounds: uint = 0x06;
  32  
  33  pub static tag_items_data_item_type: uint = 0x07;
  34  
  35  pub static tag_items_data_item_symbol: uint = 0x08;
  36  
  37  pub static tag_items_data_item_variant: uint = 0x09;
  38  
  39  pub static tag_items_data_parent_item: uint = 0x0a;
  40  
  41  pub static tag_items_data_item_is_tuple_struct_ctor: uint = 0x0b;
  42  
  43  pub static tag_index: uint = 0x0c;
  44  
  45  pub static tag_index_buckets: uint = 0x0d;
  46  
  47  pub static tag_index_buckets_bucket: uint = 0x0e;
  48  
  49  pub static tag_index_buckets_bucket_elt: uint = 0x0f;
  50  
  51  pub static tag_index_table: uint = 0x10;
  52  
  53  pub static tag_meta_item_name_value: uint = 0x11;
  54  
  55  pub static tag_meta_item_name: uint = 0x12;
  56  
  57  pub static tag_meta_item_value: uint = 0x13;
  58  
  59  pub static tag_attributes: uint = 0x14;
  60  
  61  pub static tag_attribute: uint = 0x15;
  62  
  63  pub static tag_meta_item_word: uint = 0x16;
  64  
  65  pub static tag_meta_item_list: uint = 0x17;
  66  
  67  // The list of crates that this crate depends on
  68  pub static tag_crate_deps: uint = 0x18;
  69  
  70  // A single crate dependency
  71  pub static tag_crate_dep: uint = 0x19;
  72  
  73  pub static tag_crate_hash: uint = 0x1a;
  74  pub static tag_crate_crateid: uint = 0x1b;
  75  
  76  pub static tag_crate_dep_crateid: uint = 0x1d;
  77  pub static tag_crate_dep_hash: uint = 0x1e;
  78  
  79  pub static tag_mod_impl: uint = 0x1f;
  80  
  81  pub static tag_item_trait_method: uint = 0x20;
  82  
  83  pub static tag_item_trait_ref: uint = 0x21;
  84  pub static tag_item_super_trait_ref: uint = 0x22;
  85  
  86  // discriminator value for variants
  87  pub static tag_disr_val: uint = 0x23;
  88  
  89  // used to encode ast_map::PathElem
  90  pub static tag_path: uint = 0x24;
  91  pub static tag_path_len: uint = 0x25;
  92  pub static tag_path_elem_mod: uint = 0x26;
  93  pub static tag_path_elem_name: uint = 0x27;
  94  pub static tag_item_field: uint = 0x28;
  95  pub static tag_item_field_origin: uint = 0x29;
  96  
  97  pub static tag_item_variances: uint = 0x2a;
  98  /*
  99    trait items contain tag_item_trait_method elements,
 100    impl items contain tag_item_impl_method elements, and classes
 101    have both. That's because some code treats classes like traits,
 102    and other code treats them like impls. Because classes can contain
 103    both, tag_item_trait_method and tag_item_impl_method have to be two
 104    different tags.
 105   */
 106  pub static tag_item_impl_method: uint = 0x30;
 107  pub static tag_item_trait_method_explicit_self: uint = 0x31;
 108  
 109  
 110  // Reexports are found within module tags. Each reexport contains def_ids
 111  // and names.
 112  pub static tag_items_data_item_reexport: uint = 0x38;
 113  pub static tag_items_data_item_reexport_def_id: uint = 0x39;
 114  pub static tag_items_data_item_reexport_name: uint = 0x3a;
 115  
 116  // used to encode crate_ctxt side tables
 117  #[deriving(Eq)]
 118  #[repr(uint)]
 119  pub enum astencode_tag { // Reserves 0x40 -- 0x5f
 120      tag_ast = 0x40,
 121  
 122      tag_tree = 0x41,
 123  
 124      tag_id_range = 0x42,
 125  
 126      tag_table = 0x43,
 127      tag_table_id = 0x44,
 128      tag_table_val = 0x45,
 129      tag_table_def = 0x46,
 130      tag_table_node_type = 0x47,
 131      tag_table_node_type_subst = 0x48,
 132      tag_table_freevars = 0x49,
 133      tag_table_tcache = 0x4a,
 134      tag_table_param_defs = 0x4b,
 135      tag_table_mutbl = 0x4c,
 136      tag_table_last_use = 0x4d,
 137      tag_table_spill = 0x4e,
 138      tag_table_method_map = 0x4f,
 139      tag_table_vtable_map = 0x50,
 140      tag_table_adjustments = 0x51,
 141      tag_table_moves_map = 0x52,
 142      tag_table_capture_map = 0x53
 143  }
 144  static first_astencode_tag: uint = tag_ast as uint;
 145  static last_astencode_tag: uint = tag_table_capture_map as uint;
 146  impl astencode_tag {
 147      pub fn from_uint(value : uint) -> Option<astencode_tag> {
 148          let is_a_tag = first_astencode_tag <= value && value <= last_astencode_tag;
 149          if !is_a_tag { None } else {
 150              Some(unsafe { cast::transmute(value) })
 151          }
 152      }
 153  }
 154  
 155  pub static tag_item_trait_method_sort: uint = 0x60;
 156  
 157  pub static tag_item_impl_type_basename: uint = 0x61;
 158  
 159  // Language items are a top-level directory (for speed). Hierarchy:
 160  //
 161  // tag_lang_items
 162  // - tag_lang_items_item
 163  //   - tag_lang_items_item_id: u32
 164  //   - tag_lang_items_item_node_id: u32
 165  
 166  pub static tag_lang_items: uint = 0x70;
 167  pub static tag_lang_items_item: uint = 0x71;
 168  pub static tag_lang_items_item_id: uint = 0x72;
 169  pub static tag_lang_items_item_node_id: uint = 0x73;
 170  
 171  pub static tag_item_unnamed_field: uint = 0x74;
 172  pub static tag_items_data_item_visibility: uint = 0x76;
 173  pub static tag_items_data_item_sized: uint = 0x77;
 174  
 175  pub static tag_item_method_tps: uint = 0x79;
 176  pub static tag_item_method_fty: uint = 0x7a;
 177  
 178  pub static tag_mod_child: uint = 0x7b;
 179  pub static tag_misc_info: uint = 0x7c;
 180  pub static tag_misc_info_crate_items: uint = 0x7d;
 181  
 182  pub static tag_item_method_provided_source: uint = 0x7e;
 183  pub static tag_item_impl_vtables: uint = 0x7f;
 184  
 185  pub static tag_impls: uint = 0x80;
 186  pub static tag_impls_impl: uint = 0x81;
 187  
 188  pub static tag_items_data_item_inherent_impl: uint = 0x82;
 189  pub static tag_items_data_item_extension_impl: uint = 0x83;
 190  
 191  pub static tag_region_param_def: uint = 0x84;
 192  pub static tag_region_param_def_ident: uint = 0x85;
 193  pub static tag_region_param_def_def_id: uint = 0x86;
 194  
 195  pub static tag_native_libraries: uint = 0x87;
 196  pub static tag_native_libraries_lib: uint = 0x88;
 197  pub static tag_native_libraries_name: uint = 0x89;
 198  pub static tag_native_libraries_kind: uint = 0x8a;
 199  
 200  pub static tag_macro_registrar_fn: uint = 0x8b;
 201  pub static tag_exported_macros: uint = 0x8c;
 202  pub static tag_macro_def: uint = 0x8d;
 203  
 204  pub static tag_crate_triple: uint = 0x66;
 205  
 206  pub static tag_dylib_dependency_formats: uint = 0x67;
 207  
 208  #[deriving(Clone, Show)]
 209  pub struct LinkMeta {
 210      pub crateid: CrateId,
 211      pub crate_hash: Svh,
 212  }


librustc/metadata/common.rs:118:14-118:14 -enum- definition:
pub enum astencode_tag { // Reserves 0x40 -- 0x5f
    tag_ast = 0x40,
    tag_tree = 0x41,
references:- 9
116: // used to encode crate_ctxt side tables
--
145: static last_astencode_tag: uint = tag_table_capture_map as uint;
146: impl astencode_tag {
147:     pub fn from_uint(value : uint) -> Option<astencode_tag> {
librustc/middle/astencode.rs:
879: trait write_tag_and_id {
880:     fn tag(&mut self, tag_id: c::astencode_tag, f: |&mut Self|);
881:     fn id(&mut self, id: ast::NodeId);
--
1061:     fn as_int(&self) -> int;
1062:     fn opt_child(&self, tag: c::astencode_tag) -> Option<Self>;
1063: }
--
1066:     fn as_int(&self) -> int { reader::doc_as_u64(*self) as int }
1067:     fn opt_child(&self, tag: c::astencode_tag) -> Option<ebml::Doc<'a>> {
1068:         reader::maybe_get_doc(*self, tag as uint)
librustc/metadata/common.rs:
146: impl astencode_tag {
147:     pub fn from_uint(value : uint) -> Option<astencode_tag> {
148:         let is_a_tag = first_astencode_tag <= value && value <= last_astencode_tag;


librustc/metadata/common.rs:208:25-208:25 -struct- definition:
pub struct LinkMeta {
    pub crateid: CrateId,
    pub crate_hash: Svh,
references:- 14
209: pub struct LinkMeta {
librustc/metadata/encoder.rs:
85:     pub non_inlineable_statics: &'a RefCell<NodeSet>,
86:     pub link_meta: &'a LinkMeta,
87:     pub cstore: &'a cstore::CStore,
librustc/driver/driver.rs:
393:     pub metadata_module: ModuleRef,
394:     pub link: LinkMeta,
395:     pub metadata: Vec<u8>,
librustc/middle/trans/context.rs:
132:                symbol_hasher: Sha256,
133:                link_meta: LinkMeta,
134:                reachable: NodeSet)
librustc/back/link.rs:
562:                t: ty::t,
563:                link_meta: &LinkMeta)
564:                -> ~str {