From cb2c42793accacd8474aeb18b20463849cedc238 Mon Sep 17 00:00:00 2001 From: Kyle Matthew Hedden Date: Mon, 29 Mar 2021 16:52:48 -0400 Subject: [PATCH] signature fix. template traversal conformance. --- .../ModelProtocols/MoleculeModelProtocol.swift | 4 ++-- .../ModelProtocols/TemplateModelProtocol.swift | 10 +++++++++- MVMCoreUI/BaseControllers/ViewController.swift | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift b/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift index 4b432c2e..a24422e0 100644 --- a/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift +++ b/MVMCoreUI/Atomic/Protocols/ModelProtocols/MoleculeModelProtocol.swift @@ -43,9 +43,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 701d0fb2..fea06227 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -335,12 +335,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()