fancadescala/tagless/src/main/scala/tf/bug/fancadetagless/Fancade.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])
}