trait TupleBuilder extends AnyRef
A TupleBuilder
abstracts the work of constructing a tuple data structure such as a TupleN
or KList
and extracting values from it. The Instance
macro implementation will (roughly) traverse the tree of its argument
and ultimately obtain a list of expressions with type M[T]
for different types T
.
The macro constructs an Input
value for each of these expressions that contains the Type
for T
,
the Tree
for the expression, and a ValDef
that will hold the value for the input.
TupleBuilder.apply
is provided with the list of Input
s and is expected to provide three values in the returned BuilderResult.
First, it returns the constructed tuple data structure Tree in input
.
Next, it provides the type constructor representationC
that, when applied to M, gives the type of tuple data structure.
For example, a builder that constructs a Tuple3
for inputs M[Int]
, M[Boolean]
, and M[String]
would provide a Type representing [L[x]] (L[Int], L[Boolean], L[String])
. The input
method
would return a value whose type is that type constructor applied to M, or (M[Int], M[Boolean], M[String])
.
Finally, the extract
method provides a list of vals that extract information from the applied input.
The type of the applied input is the type constructor applied to Id
([X] X
).
The returned list of ValDefs should be the ValDefs from inputs
, but with non-empty right-hand sides.
- Alphabetic
- By Inheritance
- TupleBuilder
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
Abstract Value Members
-
abstract
def
make(c: Context)(tcType: scala.reflect.macros.blackbox.Context.Type, inputs: Inputs[universe.type]): BuilderResult[c.type]
Constructs a one-time use Builder for Context
c
and type constructortcType
.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()