Skip to content

Commit e0c4f2d

Browse files
committed
put codelink resolver types under UCF namespace
1 parent f26ac27 commit e0c4f2d

37 files changed

+332
-354
lines changed

Sources/LinkResolution/Codelinks/CodelinkResolutionError.swift

Lines changed: 0 additions & 54 deletions
This file was deleted.

Sources/LinkResolution/Codelinks/CodelinkResolutionPath.swift

Lines changed: 0 additions & 39 deletions
This file was deleted.

Sources/LinkResolution/Codelinks/Codelink.Filter (ext).swift renamed to Sources/LinkResolution/Codelinks/UCF.KeywordFilter (ext).swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import UCF
22
import Symbols
33

4-
extension Codelink.Filter
4+
extension UCF.KeywordFilter
55
{
66
static
77
func ~= (self:Self, phylum:Phylum.Decl?) -> Bool

Sources/LinkResolution/Codelinks/Codelink.Suffix.Legacy.Filter (ext).swift renamed to Sources/LinkResolution/Codelinks/UCF.LegacyFilter (ext).swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import UCF
22
import Symbols
33

4-
extension Codelink.Suffix.Legacy.Filter
4+
extension UCF.LegacyFilter
55
{
66
static
77
func ~= (self:Self, phylum:Phylum.Decl?) -> Bool

Sources/LinkResolution/Codelinks/CodelinkResolver.Overloads.swift renamed to Sources/LinkResolution/Codelinks/UCF.Overload.Group.swift

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1-
extension CodelinkResolver
1+
import UCF
2+
3+
extension UCF.Overload
24
{
35
@frozen public
4-
enum Overloads:Equatable, Hashable
6+
enum Group:Equatable, Hashable
57
{
6-
case one (Overload)
7-
case some([Overload])
8+
case one (UCF.Overload<Scalar>)
9+
case some([UCF.Overload<Scalar>])
810
}
911
}
10-
extension CodelinkResolver.Overloads:Sendable where Scalar:Sendable
12+
extension UCF.Overload.Group:Sendable where Scalar:Sendable
1113
{
1214
}
13-
extension CodelinkResolver.Overloads
15+
extension UCF.Overload.Group
1416
{
1517
var isEmpty:Bool
1618
{
@@ -21,13 +23,13 @@ extension CodelinkResolver.Overloads
2123
}
2224
}
2325
}
24-
extension CodelinkResolver.Overloads
26+
extension UCF.Overload.Group
2527
{
26-
init(filtering overloads:[CodelinkResolver<Scalar>.Overload],
27-
where predicate:(CodelinkResolver<Scalar>.Overload) throws -> Bool) rethrows
28+
init(filtering overloads:[UCF.Overload<Scalar>],
29+
where predicate:(UCF.Overload<Scalar>) throws -> Bool) rethrows
2830
{
2931
self = .some([])
30-
for overload:CodelinkResolver<Scalar>.Overload in overloads where
32+
for overload:UCF.Overload<Scalar> in overloads where
3133
try predicate(overload)
3234
{
3335
self.overload(with: overload)
@@ -58,7 +60,7 @@ extension CodelinkResolver.Overloads
5860
}
5961

6062
@inlinable public mutating
61-
func overload(with overload:CodelinkResolver<Scalar>.Overload)
63+
func overload(with overload:UCF.Overload<Scalar>)
6264
{
6365
switch self
6466
{

Sources/LinkResolution/Codelinks/CodelinkResolver.swift renamed to Sources/LinkResolution/Codelinks/UCF.Overload.Resolver.swift

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,44 @@ import UCF
22
import Symbols
33
import Unidoc
44

5-
@frozen public
6-
struct CodelinkResolver<Scalar> where Scalar:Hashable
5+
extension UCF.Overload
76
{
8-
public
9-
let table:Table
10-
public
11-
let scope:Scope
12-
13-
@inlinable public
14-
init(table:Table, scope:Scope)
7+
@frozen public
8+
struct Resolver
159
{
16-
self.table = table
17-
self.scope = scope
10+
public
11+
let table:Table
12+
public
13+
let scope:UCF.ResolutionScope
14+
15+
@inlinable public
16+
init(table:Table, scope:UCF.ResolutionScope)
17+
{
18+
self.table = table
19+
self.scope = scope
20+
}
1821
}
1922
}
20-
extension CodelinkResolver
23+
extension UCF.Overload.Resolver
2124
{
2225
@_specialize(where Scalar == Int32)
2326
@_specialize(where Scalar == Unidoc.Scalar)
2427
public
25-
func resolve(_ link:Codelink) -> Overloads
28+
func resolve(_ selector:UCF.Selector) -> UCF.Overload<Scalar>.Group
2629
{
27-
switch link.base
30+
switch selector.base
2831
{
2932
case .relative:
3033
if let namespace:Symbol.Module = self.scope.namespace
3134
{
3235
for index:Int in
3336
(self.scope.path.startIndex ... self.scope.path.endIndex).reversed()
3437
{
35-
let overloads:Overloads = self.table.query(
38+
let overloads:UCF.Overload<Scalar>.Group = self.table.query(
3639
qualified: ["\(namespace)"]
3740
+ self.scope.path[..<index]
38-
+ link.path.components,
39-
suffix: link.suffix)
41+
+ selector.path.components,
42+
suffix: selector.suffix)
4043

4144
guard overloads.isEmpty
4245
else
@@ -48,9 +51,9 @@ extension CodelinkResolver
4851
for namespace:Symbol.Module in self.scope.imports where
4952
namespace != self.scope.namespace
5053
{
51-
let overloads:Overloads = self.table.query(
52-
qualified: ["\(namespace)"] + link.path.components,
53-
suffix: link.suffix)
54+
let overloads:UCF.Overload<Scalar>.Group = self.table.query(
55+
qualified: ["\(namespace)"] + selector.path.components,
56+
suffix: selector.suffix)
5457

5558
guard overloads.isEmpty
5659
else
@@ -62,7 +65,8 @@ extension CodelinkResolver
6265
fallthrough
6366

6467
case .qualified:
65-
return self.table.query(qualified: link.path.components, suffix: link.suffix)
68+
return self.table.query(qualified: selector.path.components,
69+
suffix: selector.suffix)
6670
}
6771
}
6872
}

Sources/LinkResolution/Codelinks/CodelinkResolver.Table.swift renamed to Sources/LinkResolution/Codelinks/UCF.Overload.Table.swift

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import FNV1
33
import LexicalPaths
44
import Symbols
55

6-
extension CodelinkResolver
6+
extension UCF.Overload
77
{
88
@frozen public
99
struct Table
1010
{
1111
@usableFromInline internal
12-
var entries:[CodelinkResolutionPath: Overloads]
12+
var entries:[UCF.ResolutionPath: Group]
1313

1414
@inlinable public
1515
init()
@@ -18,10 +18,10 @@ extension CodelinkResolver
1818
}
1919
}
2020
}
21-
extension CodelinkResolver.Table:Sendable where Scalar:Sendable
21+
extension UCF.Overload.Table:Sendable where Scalar:Sendable
2222
{
2323
}
24-
extension CodelinkResolver.Table
24+
extension UCF.Overload.Table
2525
{
2626
public
2727
func caseless() -> Self
@@ -38,10 +38,10 @@ extension CodelinkResolver.Table
3838
return copy
3939
}
4040
}
41-
extension CodelinkResolver.Table
41+
extension UCF.Overload.Table
4242
{
4343
@inlinable public
44-
subscript(namespace:Symbol.Module) -> CodelinkResolver<Scalar>.Overloads
44+
subscript(namespace:Symbol.Module) -> UCF.Overload<Scalar>.Group
4545
{
4646
_read
4747
{
@@ -54,7 +54,7 @@ extension CodelinkResolver.Table
5454
}
5555
@inlinable public
5656
subscript(namespace:Symbol.Module,
57-
path:UnqualifiedPath) -> CodelinkResolver<Scalar>.Overloads
57+
path:UnqualifiedPath) -> UCF.Overload<Scalar>.Group
5858
{
5959
_read
6060
{
@@ -68,7 +68,7 @@ extension CodelinkResolver.Table
6868
@inlinable public
6969
subscript(namespace:Symbol.Module,
7070
path:UnqualifiedPath,
71-
last:String) -> CodelinkResolver<Scalar>.Overloads
71+
last:String) -> UCF.Overload<Scalar>.Group
7272
{
7373
_read
7474
{
@@ -80,37 +80,33 @@ extension CodelinkResolver.Table
8080
}
8181
}
8282
}
83-
extension CodelinkResolver.Table
83+
extension UCF.Overload.Table
8484
{
8585
func query(
8686
qualified path:[String],
87-
suffix:Codelink.Suffix?) -> CodelinkResolver<Scalar>.Overloads
87+
suffix:UCF.Selector.Suffix?) -> UCF.Overload<Scalar>.Group
8888
{
8989
guard
90-
let overloads:CodelinkResolver<Scalar>.Overloads = self.entries[.join(path)]
90+
let overloads:UCF.Overload<Scalar>.Group = self.entries[.join(path)]
9191
else
9292
{
9393
return .some([])
9494
}
9595

9696
guard
9797
case .some(let overloads) = overloads,
98-
let suffix:Codelink.Suffix
98+
let suffix:UCF.Selector.Suffix
9999
else
100100
{
101101
return overloads
102102
}
103103

104104
switch suffix
105105
{
106-
case .legacy(let suffix):
107-
guard
108-
let hash:FNV24 = suffix.hash
109-
else
110-
{
111-
return .init(filtering: overloads) { suffix.filter ~= $0.phylum }
112-
}
106+
case .legacy(let filter, nil):
107+
return .init(filtering: overloads) { filter ~= $0.phylum }
113108

109+
case .legacy(_, let hash?):
114110
return .init(filtering: overloads) { hash == $0.hash }
115111

116112
case .hash(let hash):
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
extension CodelinkResolver.Overload
1+
import UCF
2+
3+
extension UCF.Overload
24
{
35
@frozen public
46
enum Target:Equatable, Hashable
@@ -7,6 +9,6 @@ extension CodelinkResolver.Overload
79
case vector(Scalar, self:Scalar)
810
}
911
}
10-
extension CodelinkResolver.Overload.Target:Sendable where Scalar:Sendable
12+
extension UCF.Overload.Target:Sendable where Scalar:Sendable
1113
{
1214
}

Sources/LinkResolution/Codelinks/CodelinkResolver.Overload.swift renamed to Sources/LinkResolution/Codelinks/UCF.Overload.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
import UCF
12
import FNV1
23
import Symbols
34

4-
extension CodelinkResolver
5+
extension UCF
56
{
67
@frozen public
7-
struct Overload:Equatable, Hashable
8+
struct Overload<Scalar>:Equatable, Hashable where Scalar:Hashable
89
{
910
public
1011
let target:Target
@@ -24,6 +25,6 @@ extension CodelinkResolver
2425
}
2526
}
2627
}
27-
extension CodelinkResolver.Overload:Sendable where Scalar:Sendable
28+
extension UCF.Overload:Sendable where Scalar:Sendable
2829
{
2930
}

0 commit comments

Comments
 (0)