4
4
use core:: Option ;
5
5
use option:: { Some , None } ;
6
6
7
- export Doc ;
8
- export doc_at;
9
- export maybe_get_doc;
10
- export get_doc;
11
- export docs;
12
- export tagged_docs;
13
- export doc_data;
14
- export doc_as_str;
15
- export doc_as_u8;
16
- export doc_as_u16;
17
- export doc_as_u32;
18
- export doc_as_u64;
19
- export doc_as_i8;
20
- export doc_as_i16;
21
- export doc_as_i32;
22
- export doc_as_i64;
23
- export Writer ;
24
- export serializer;
25
- export ebml_deserializer;
26
- export EbmlDeserializer ;
27
- export deserializer;
28
- export with_doc_data;
29
- export get_doc;
30
- export extensions;
31
-
32
7
type EbmlTag = { id : uint , size : uint } ;
33
8
34
9
type EbmlState = { ebml_tag : EbmlTag , tag_pos : uint , data_pos : uint } ;
@@ -37,7 +12,7 @@ type EbmlState = {ebml_tag: EbmlTag, tag_pos: uint, data_pos: uint};
37
12
// separate modules within this file.
38
13
39
14
// ebml reading
40
- type Doc = { data : @~[ u8 ] , start : uint , end : uint } ;
15
+ pub type Doc = { data : @~[ u8 ] , start : uint , end : uint } ;
41
16
42
17
type TaggedDoc = { tag : uint , doc : Doc } ;
43
18
@@ -72,19 +47,19 @@ fn vuint_at(data: &[u8], start: uint) -> {val: uint, next: uint} {
72
47
} else { error ! ( "vint too big" ) ; fail; }
73
48
}
74
49
75
- fn Doc ( data : @~[ u8 ] ) -> Doc {
50
+ pub fn Doc ( data : @~[ u8 ] ) -> Doc {
76
51
return { data: data, start: 0 u, end: vec:: len :: < u8 > ( * data) } ;
77
52
}
78
53
79
- fn doc_at ( data : @~[ u8 ] , start : uint ) -> TaggedDoc {
54
+ pub fn doc_at ( data : @~[ u8 ] , start : uint ) -> TaggedDoc {
80
55
let elt_tag = vuint_at ( * data, start) ;
81
56
let elt_size = vuint_at ( * data, elt_tag. next ) ;
82
57
let end = elt_size. next + elt_size. val ;
83
58
return { tag: elt_tag. val ,
84
59
doc : { data : data, start : elt_size. next , end : end} } ;
85
60
}
86
61
87
- fn maybe_get_doc ( d : Doc , tg : uint ) -> Option < Doc > {
62
+ pub fn maybe_get_doc ( d : Doc , tg : uint ) -> Option < Doc > {
88
63
let mut pos = d. start ;
89
64
while pos < d. end {
90
65
let elt_tag = vuint_at ( * d. data , pos) ;
@@ -101,7 +76,7 @@ fn maybe_get_doc(d: Doc, tg: uint) -> Option<Doc> {
101
76
return None :: < Doc > ;
102
77
}
103
78
104
- fn get_doc ( d : Doc , tg : uint ) -> Doc {
79
+ pub fn get_doc ( d : Doc , tg : uint ) -> Doc {
105
80
match maybe_get_doc ( d, tg) {
106
81
Some ( d) => return d,
107
82
None => {
@@ -111,7 +86,7 @@ fn get_doc(d: Doc, tg: uint) -> Doc {
111
86
}
112
87
}
113
88
114
- fn docs ( d : Doc , it : fn ( uint , Doc ) -> bool ) {
89
+ pub fn docs ( d : Doc , it : fn ( uint , Doc ) -> bool ) {
115
90
let mut pos = d. start ;
116
91
while pos < d. end {
117
92
let elt_tag = vuint_at ( * d. data , pos) ;
@@ -123,7 +98,7 @@ fn docs(d: Doc, it: fn(uint, Doc) -> bool) {
123
98
}
124
99
}
125
100
126
- fn tagged_docs ( d : Doc , tg : uint , it : fn ( Doc ) -> bool ) {
101
+ pub fn tagged_docs ( d : Doc , tg : uint , it : fn ( Doc ) -> bool ) {
127
102
let mut pos = d. start ;
128
103
while pos < d. end {
129
104
let elt_tag = vuint_at ( * d. data , pos) ;
@@ -137,43 +112,43 @@ fn tagged_docs(d: Doc, tg: uint, it: fn(Doc) -> bool) {
137
112
}
138
113
}
139
114
140
- fn doc_data ( d : Doc ) -> ~[ u8 ] { vec:: slice :: < u8 > ( * d. data , d. start , d. end ) }
115
+ pub fn doc_data ( d : Doc ) -> ~[ u8 ] { vec:: slice :: < u8 > ( * d. data , d. start , d. end ) }
141
116
142
- fn with_doc_data < T > ( d : Doc , f : fn ( x : & [ u8 ] ) -> T ) -> T {
117
+ pub fn with_doc_data < T > ( d : Doc , f : fn ( x : & [ u8 ] ) -> T ) -> T {
143
118
return f ( vec:: view ( * d. data , d. start , d. end ) ) ;
144
119
}
145
120
146
- fn doc_as_str ( d : Doc ) -> ~str { return str:: from_bytes ( doc_data ( d) ) ; }
121
+ pub fn doc_as_str ( d : Doc ) -> ~str { return str:: from_bytes ( doc_data ( d) ) ; }
147
122
148
- fn doc_as_u8 ( d : Doc ) -> u8 {
123
+ pub fn doc_as_u8 ( d : Doc ) -> u8 {
149
124
assert d. end == d. start + 1 u;
150
125
return ( * d. data ) [ d. start ] ;
151
126
}
152
127
153
- fn doc_as_u16 ( d : Doc ) -> u16 {
128
+ pub fn doc_as_u16 ( d : Doc ) -> u16 {
154
129
assert d. end == d. start + 2 u;
155
130
return io:: u64_from_be_bytes ( * d. data , d. start , 2 u) as u16 ;
156
131
}
157
132
158
- fn doc_as_u32 ( d : Doc ) -> u32 {
133
+ pub fn doc_as_u32 ( d : Doc ) -> u32 {
159
134
assert d. end == d. start + 4 u;
160
135
return io:: u64_from_be_bytes ( * d. data , d. start , 4 u) as u32 ;
161
136
}
162
137
163
- fn doc_as_u64 ( d : Doc ) -> u64 {
138
+ pub fn doc_as_u64 ( d : Doc ) -> u64 {
164
139
assert d. end == d. start + 8 u;
165
140
return io:: u64_from_be_bytes ( * d. data , d. start , 8 u) ;
166
141
}
167
142
168
- fn doc_as_i8 ( d : Doc ) -> i8 { doc_as_u8 ( d) as i8 }
169
- fn doc_as_i16 ( d : Doc ) -> i16 { doc_as_u16 ( d) as i16 }
170
- fn doc_as_i32 ( d : Doc ) -> i32 { doc_as_u32 ( d) as i32 }
171
- fn doc_as_i64 ( d : Doc ) -> i64 { doc_as_u64 ( d) as i64 }
143
+ pub fn doc_as_i8 ( d : Doc ) -> i8 { doc_as_u8 ( d) as i8 }
144
+ pub fn doc_as_i16 ( d : Doc ) -> i16 { doc_as_u16 ( d) as i16 }
145
+ pub fn doc_as_i32 ( d : Doc ) -> i32 { doc_as_u32 ( d) as i32 }
146
+ pub fn doc_as_i64 ( d : Doc ) -> i64 { doc_as_u64 ( d) as i64 }
172
147
173
148
// ebml writing
174
149
type Writer_ = { writer : io:: Writer , mut size_positions : ~[ uint ] } ;
175
150
176
- enum Writer {
151
+ pub enum Writer {
177
152
Writer_ ( Writer_ )
178
153
}
179
154
@@ -197,7 +172,7 @@ fn write_vuint(w: io::Writer, n: uint) {
197
172
fail fmt ! ( "vint to write too big: %?" , n) ;
198
173
}
199
174
200
- fn Writer ( w : io:: Writer ) -> Writer {
175
+ pub fn Writer ( w : io:: Writer ) -> Writer {
201
176
let size_positions: ~[ uint ] = ~[ ] ;
202
177
return Writer_ ( { writer: w, mut size_positions: size_positions} ) ;
203
178
}
@@ -409,11 +384,11 @@ impl ebml::Writer: serialization::Serializer {
409
384
type EbmlDeserializer_ = { mut parent : ebml:: Doc ,
410
385
mut pos : uint } ;
411
386
412
- enum EbmlDeserializer {
387
+ pub enum EbmlDeserializer {
413
388
EbmlDeserializer_ ( EbmlDeserializer_ )
414
389
}
415
390
416
- fn ebml_deserializer ( d : ebml:: Doc ) -> EbmlDeserializer {
391
+ pub fn ebml_deserializer ( d : ebml:: Doc ) -> EbmlDeserializer {
417
392
EbmlDeserializer_ ( { mut parent: d, mut pos: d. start } )
418
393
}
419
394
0 commit comments