From 0f054dfaeeedeb393715345b1739ad0e451ad08e Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 26 Feb 2012 22:58:24 -0800 Subject: [PATCH] rustdoc: Add parallel folds for native mods --- src/rustdoc/fold.rs | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/rustdoc/fold.rs b/src/rustdoc/fold.rs index fe1225ffa593..5bb156cc59e6 100644 --- a/src/rustdoc/fold.rs +++ b/src/rustdoc/fold.rs @@ -14,8 +14,10 @@ export default_seq_fold_impl; export default_seq_fold_type; export default_par_fold; export default_par_fold_mod; +export default_par_fold_nmod; export default_any_fold; export default_any_fold_mod; +export default_any_fold_nmod; enum fold = t; @@ -85,7 +87,7 @@ fn default_any_fold(ctxt: T) -> fold { {|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_any_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)}, @@ -119,7 +121,7 @@ fn default_par_fold(ctxt: T) -> fold { {|f, d| default_seq_fold_crate(f, d)}, {|f, d| default_seq_fold_item(f, d)}, {|f, d| default_par_fold_mod(f, d)}, - {|f, d| default_seq_fold_nmod(f, d)}, + {|f, d| default_par_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)}, @@ -185,13 +187,39 @@ fn default_par_fold_mod( } } +fn default_any_fold_nmod( + fold: fold, + doc: doc::nmoddoc +) -> doc::nmoddoc { + { + item: fold.fold_item(fold, doc.item), + fns: util::anymap(doc.fns) {|fndoc| + fold.fold_fn(fold, fndoc) + } + with doc + } +} + fn default_seq_fold_nmod( fold: fold, doc: doc::nmoddoc ) -> doc::nmoddoc { { item: fold.fold_item(fold, doc.item), - fns: vec::map(doc.fns) {|fndoc| + fns: util::seqmap(doc.fns) {|fndoc| + fold.fold_fn(fold, fndoc) + } + with doc + } +} + +fn default_par_fold_nmod( + fold: fold, + doc: doc::nmoddoc +) -> doc::nmoddoc { + { + item: fold.fold_item(fold, doc.item), + fns: util::parmap(doc.fns) {|fndoc| fold.fold_fn(fold, fndoc) } with doc