diff --git a/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift b/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift index 2a282a4d..2823e5a5 100644 --- a/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift @@ -57,9 +57,9 @@ public extension Array where Element == MoleculeModelProtocol { } } - func depthFirstTraverse(options: TreeTraversalOptions, depth: Int, callback: (Int, MoleculeModelProtocol)->Void) { + func depthFirstTraverse(options: TreeTraversalOptions, depth: Int, onVisit: (Int, MoleculeModelProtocol)->Void) { forEach { (molecule) in - molecule.depthFirstTraverse(options: options, depth: depth, onVisit: callback) + molecule.depthFirstTraverse(options: options, depth: depth, onVisit: onVisit) } } } diff --git a/MVMCoreUI/Atomic/Protocols/ModelProtocols/TemplateModelProtocol.swift b/MVMCoreUI/Atomic/Protocols/ModelProtocols/TemplateModelProtocol.swift index 31e5a131..1f9db75b 100644 --- a/MVMCoreUI/Atomic/Protocols/ModelProtocols/TemplateModelProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/ModelProtocols/TemplateModelProtocol.swift @@ -9,7 +9,7 @@ import Foundation -public protocol TemplateModelProtocol: PageModelProtocol, ModelProtocol { +public protocol TemplateModelProtocol: PageModelProtocol, ModelProtocol, MoleculeTreeTraversalProtocol { var template: String { get } var rootMolecules: [MoleculeModelProtocol] { get } } @@ -27,4 +27,12 @@ public extension TemplateModelProtocol { static var categoryName: String { return "\(TemplateModelProtocol.self)" } + + func reduceDepthFirstTraverse(options: TreeTraversalOptions, depth: Int, initialResult: Result, nextPartialResult: (Result, MoleculeModelProtocol, Int) -> Result) -> Result { + return rootMolecules.reduceDepthFirstTraverse(options: options, depth: depth, initialResult: initialResult, nextPartialResult: nextPartialResult) + } + + func depthFirstTraverse(options: TreeTraversalOptions, depth: Int, onVisit: (Int, MoleculeModelProtocol) -> Void) { + return rootMolecules.depthFirstTraverse(options: options, depth: depth, onVisit: onVisit) + } } diff --git a/MVMCoreUI/BaseControllers/ViewController.swift b/MVMCoreUI/BaseControllers/ViewController.swift index ce0221a7..84394a1a 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -337,12 +337,12 @@ import UIKit initialLoadFinished = true initialLoad() } - - print("total molecules in tree: \(model?.rootMolecules.countMolecules() ?? 0)") + + print("total molecules in tree: \(model?.countMolecules() ?? 0)") model?.rootMolecules.printMolecules() - let allVideoMolecules:[BGVideoImageMoleculeModel] = model?.rootMolecules.allMoleculesOfType() ?? [] + let allVideoMolecules:[BGVideoImageMoleculeModel] = model?.allMoleculesOfType() ?? [] print("video molecules: \(allVideoMolecules.count)") handleNewDataAndUpdateUI()