Can now change graph into a struct

This commit is contained in:
2025-07-11 20:50:12 +10:00
parent 1ba8e14ef4
commit b265f4b846
3 changed files with 5 additions and 5 deletions

View File

@ -5,7 +5,7 @@
import Foundation import Foundation
public class ApkPackageGraph { public struct ApkPackageGraph: ~Copyable {
private var _nodes = [ApkPackageGraphNode]() private var _nodes = [ApkPackageGraphNode]()
public var nodes: [ApkPackageGraphNode] { self._nodes } public var nodes: [ApkPackageGraphNode] { self._nodes }
@ -14,7 +14,7 @@ public class ApkPackageGraph {
public init() {} public init() {}
public func buildGraphNode(index pkgIndex: ApkIndex, providers: ApkIndexProviderCache) { public mutating func buildGraphNode(index pkgIndex: ApkIndex, providers: ApkIndexProviderCache) {
for (packageID, package) in pkgIndex.packages.enumerated() { for (packageID, package) in pkgIndex.packages.enumerated() {
let children: [ApkPackageGraphNode.ChildRef] = package.dependencies.compactMap { dependency in let children: [ApkPackageGraphNode.ChildRef] = package.dependencies.compactMap { dependency in
guard let providerID = providers.resolve(index: pkgIndex, requirement: dependency.requirement) else { guard let providerID = providers.resolve(index: pkgIndex, requirement: dependency.requirement) else {
@ -27,7 +27,7 @@ public class ApkPackageGraph {
} }
return .init(constraint: .installIf, packageID: prvID, versionSpec: installIf.requirement.versionSpec) return .init(constraint: .installIf, packageID: prvID, versionSpec: installIf.requirement.versionSpec)
} */ } */
self._nodes.append(.init(self, self._nodes.append(.init(
id: packageID, id: packageID,
children: children children: children
)) ))

View File

@ -13,7 +13,7 @@ public class ApkPackageGraphNode {
@inlinable public var isShallow: Bool { self.parentIDs.isEmpty } @inlinable public var isShallow: Bool { self.parentIDs.isEmpty }
@inlinable public var isDeep: Bool { self.children.isEmpty } @inlinable public var isDeep: Bool { self.children.isEmpty }
internal init(_ graph: ApkPackageGraph, id: Int, children: [ChildRef]) { internal init(id: Int, children: [ChildRef]) {
self.packageID = id self.packageID = id
self.children = children self.children = children
} }

View File

@ -21,7 +21,7 @@ struct DpkGraphCommand: AsyncParsableCommand {
timerStart = DispatchTime.now() timerStart = DispatchTime.now()
let providerCache = ApkIndexProviderCache(index: pkgIndex) let providerCache = ApkIndexProviderCache(index: pkgIndex)
let graph = ApkPackageGraph() var graph = ApkPackageGraph()
graph.buildGraphNode(index: pkgIndex, providers: providerCache) graph.buildGraphNode(index: pkgIndex, providers: providerCache)
print("Graph build took \(timerStart.distance(to: .now()).seconds) seconds") print("Graph build took \(timerStart.distance(to: .now()).seconds) seconds")