diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/ebml.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs index d29727046d8..8dbb39d1831 100644 --- a/src/libstd/ebml.rs +++ b/src/libstd/ebml.rs @@ -27,6 +27,8 @@ export serializer; export ebml_deserializer; export deserializer; export with_doc_data; +export get_doc; +export extensions; type ebml_tag = {id: uint, size: uint}; @@ -40,6 +42,24 @@ type doc = {data: @~[u8], start: uint, end: uint}; type tagged_doc = {tag: uint, doc: doc}; +trait get_doc { + fn [](tag: uint) -> doc; +} + +impl extensions of get_doc for doc { + fn [](tag: uint) -> doc { + get_doc(self, tag) + } +} + +impl extensions of ops::index<uint,doc> for doc { + pure fn index(&&tag: uint) -> doc { + unchecked { + get_doc(self, tag) + } + } +} + fn vuint_at(data: &[u8], start: uint) -> {val: uint, next: uint} { let a = data[start]; if a & 0x80u8 != 0u8 { |
