trait TypeAnnotations[A, T] extends DepFn0 with Serializable
Provides the type annotations of type A
of the fields or constructors of case class-like or sum type T
.
If type T
is case class-like, this type class inspects its fields and provides their type annotations of type A
. If
type T
is a sum type, its constructor types are looked for type annotations.
Type Out
is an HList having the same number of elements as T
(number of fields of T
if T
is case class-like,
or number of constructors of T
if it is a sum type). It is made of None.type
(no annotation on corresponding
field or constructor) and Some[A]
(corresponding field or constructor is annotated).
Method apply
provides an HList of type Out
made of None
(corresponding field or constructor not annotated)
or Some(annotation)
(corresponding field or constructor has annotation annotation
).
Note that type annotations must be case class-like for this type class to take them into account.
Example:
case class First(s: String) case class CC(i: Int, s: String @First("a")) val ccFirsts = TypeAnnotations[First, CC] // ccFirsts.Out is None.type :: Some[First] :: HNil // ccFirsts.apply() is // None :: Some(First("a")) :: HNil
This implementation is based on shapeless.Annotations by Alexandre Archambault.
- Alphabetic
- By Inheritance
- TypeAnnotations
- Serializable
- DepFn0
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract type Out <: HList
- Definition Classes
- TypeAnnotations → DepFn0
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(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- 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(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()