コード例 #1
0
ファイル: IEntityDefn.java プロジェクト: phil-rice/fastorm
 public static <From, To> To aggregate(
     IEntityDefn primary,
     IEntityDefnFoldVisitor<From, To> visitor,
     IAggregator<From, To> aggregator) {
   aggregator.add(visitor.acceptPrimary(primary));
   visitChildren(primary, visitor, aggregator);
   return aggregator.result();
 }
コード例 #2
0
ファイル: IEntityDefn.java プロジェクト: phil-rice/fastorm
 public static <From, To> To fold(
     IEntityDefn primary,
     To initial,
     IEntityDefnFoldVisitor<From, To> visitor,
     IFoldFunction<From, To> foldFunction) {
   To accumulator = foldFunction.apply(visitor.acceptPrimary(primary), initial);
   return visitChildren(primary, accumulator, visitor, foldFunction);
 }
コード例 #3
0
ファイル: IEntityDefn.java プロジェクト: phil-rice/fastorm
 private static <To, From> void visitChildren(
     IEntityDefn parent,
     IEntityDefnFoldVisitor<From, To> visitor,
     IAggregator<From, To> aggregator) {
   for (IEntityDefn child : parent.getChildren()) {
     aggregator.add(visitor.acceptChild(parent, child));
     visitChildren(child, visitor, aggregator);
   }
 }
コード例 #4
0
ファイル: IEntityDefn.java プロジェクト: phil-rice/fastorm
 private static <To, From> To visitChildren(
     IEntityDefn parent,
     To initial,
     IEntityDefnFoldVisitor<From, To> visitor,
     IFoldFunction<From, To> foldFunction) {
   To accumulator = initial;
   for (IEntityDefn child : parent.getChildren()) {
     accumulator = foldFunction.apply(visitor.acceptChild(parent, child), accumulator);
     accumulator = visitChildren(parent, accumulator, visitor, foldFunction);
   }
   return accumulator;
 }