36 lines
788 B
Scala
36 lines
788 B
Scala
package tf.bug.fancadetagless
|
|
|
|
import tf.bug.fancadegraph.Level
|
|
import tf.bug.fancadegraph.BlockDefinition
|
|
import tf.bug.fancadegraph.PinDefinition
|
|
import tf.bug.fancadegraph.Block
|
|
import tf.bug.fancadescodec.Position
|
|
import scalax.collection.Graph
|
|
import tf.bug.fancadegraph.Argument
|
|
|
|
sealed trait Fancade {
|
|
val pins: Vector[PinDefinition]
|
|
|
|
def render: Level
|
|
}
|
|
|
|
object Fancade {
|
|
|
|
final case class Capture[T](newBlock: BlockDefinition[T], args: T, pins: Vector[PinDefinition])(implicit arg: Argument[T]) extends Fancade {
|
|
override def render: Level = {
|
|
Level(
|
|
Set(
|
|
Block(
|
|
Position(0, 0, 0),
|
|
newBlock,
|
|
args
|
|
)
|
|
),
|
|
Graph.empty
|
|
)
|
|
}
|
|
}
|
|
final case class Use(inputs: Vector[Fancade])
|
|
|
|
}
|