MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / LinePiper

Class LinePiper

src/main/java/trace/util/LinePiper.kt:3–37  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1package trace.util
2
3import field.graphics.FLine
4import field.utility.IdempotencyMap
5
6class LinePiper<T>(val head: T, val construct: () -> T, val duplicate: (T) -> T, LATENCY: Int) {
7
8 val stack = MutableList<T>(LATENCY, { construct() })
9
10 init {
11 stack.add(0, head)
12 }
13
14 fun update() {
15 // move head forward
16 for (x in stack.size - 1 downTo 2) {
17 stack[x] = stack[x - 1]
18 }
19
20 stack[1] = duplicate(stack[0])
21 }
22
23 fun read(): T {
24 return stack.last()
25 }
26
27 fun tail(): T {
28
29 return stack.last()
30
31 }
32
33 fun tailUpdate(): T {
34
35 update()
36 return stack.last()
37
38 }
39
40}

Callers 1

ShaderGroupClass · 0.85

Calls 1

addMethod · 0.45

Tested by

no test coverage detected