diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-26 22:38:35 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-26 22:43:08 -0800 |
| commit | 59d6ec8bd95091658a47eda23a6d7878777a6bb6 (patch) | |
| tree | f5dc58be889f28c7547b89adf51ac02df2d7e289 | |
| parent | 4675f860849c5d064d1279b2eff324a271024254 (diff) | |
| download | rust-59d6ec8bd95091658a47eda23a6d7878777a6bb6.tar.gz rust-59d6ec8bd95091658a47eda23a6d7878777a6bb6.zip | |
rustdoc: Refactor some of the map code
| -rw-r--r-- | src/rustdoc/fold.rs | 51 | ||||
| -rw-r--r-- | src/rustdoc/util.rs | 10 |
2 files changed, 43 insertions, 18 deletions
diff --git a/src/rustdoc/fold.rs b/src/rustdoc/fold.rs index 6cacb7d0d48..fe1225ffa59 100644 --- a/src/rustdoc/fold.rs +++ b/src/rustdoc/fold.rs @@ -79,6 +79,23 @@ fn mk_fold<T:copy>( }) } +fn default_any_fold<T:send>(ctxt: T) -> fold<T> { + mk_fold( + ctxt, + {|f, d| default_seq_fold_crate(f, d)}, + {|f, d| default_seq_fold_item(f, d)}, + {|f, d| default_any_fold_mod(f, d)}, + {|f, d| default_seq_fold_nmod(f, d)}, + {|f, d| default_seq_fold_fn(f, d)}, + {|f, d| default_seq_fold_const(f, d)}, + {|f, d| default_seq_fold_enum(f, d)}, + {|f, d| default_seq_fold_res(f, d)}, + {|f, d| default_seq_fold_iface(f, d)}, + {|f, d| default_seq_fold_impl(f, d)}, + {|f, d| default_seq_fold_type(f, d)} + ) +} + fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> { mk_fold( ctxt, @@ -113,12 +130,6 @@ fn default_par_fold<T:send>(ctxt: T) -> fold<T> { ) } -// Just a convenient wrapper to convert back and forth between -// parallel and sequential folds for perf testing -fn default_any_fold<T:send>(ctxt: T) -> fold<T> { - default_seq_fold(ctxt) -} - fn default_seq_fold_crate<T>( fold: fold<T>, doc: doc::cratedoc @@ -135,27 +146,27 @@ fn default_seq_fold_item<T>( doc } -fn default_seq_fold_mod<T>( +fn default_any_fold_mod<T:send>( fold: fold<T>, doc: doc::moddoc ) -> doc::moddoc { { item: fold.fold_item(fold, doc.item), - items: vec::map(doc.items) {|itemtag| + items: util::anymap(doc.items) {|itemtag| fold_itemtag(fold, itemtag) } with doc } } -fn default_seq_fold_nmod<T>( +fn default_seq_fold_mod<T>( fold: fold<T>, - doc: doc::nmoddoc -) -> doc::nmoddoc { + doc: doc::moddoc +) -> doc::moddoc { { item: fold.fold_item(fold, doc.item), - fns: vec::map(doc.fns) {|fndoc| - fold.fold_fn(fold, fndoc) + items: util::seqmap(doc.items) {|itemtag| + fold_itemtag(fold, itemtag) } with doc } @@ -174,11 +185,17 @@ fn default_par_fold_mod<T:send>( } } -fn default_any_fold_mod<T:send>( +fn default_seq_fold_nmod<T>( fold: fold<T>, - doc: doc::moddoc -) -> doc::moddoc { - default_seq_fold_mod(fold, doc) + doc: doc::nmoddoc +) -> doc::nmoddoc { + { + item: fold.fold_item(fold, doc.item), + fns: vec::map(doc.fns) {|fndoc| + fold.fold_fn(fold, fndoc) + } + with doc + } } fn fold_itemtag<T>(fold: fold<T>, doc: doc::itemtag) -> doc::itemtag { diff --git a/src/rustdoc/util.rs b/src/rustdoc/util.rs index dbc143bcc87..861dea83bc6 100644 --- a/src/rustdoc/util.rs +++ b/src/rustdoc/util.rs @@ -1,4 +1,12 @@ -export parmap; +export anymap, seqmap, parmap; + +fn anymap<T:send, U:send>(v: [T], f: fn(T) -> U) -> [U] { + seqmap(v, f) +} + +fn seqmap<T, U>(v: [T], f: fn(T) -> U) -> [U] { + vec::map(v, f) +} fn parmap<T:send, U:send>(v: [T], f: fn~(T) -> U) -> [U] unsafe { let futures = vec::map(v) {|elt| |
