trait AllTypeAnnotations[T] extends DepFn0 with Serializable
Provides all type annotations for 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. If
type T
is a sum type, its constructor types are looked for type annotations as well.
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 HNil
(no annotations for corresponding
field or constructor) or HLists
(list of annotations for corresponding field or constructor).
Method apply
provides an HList of type Out
made of HNil
(corresponding field or constructor not annotated)
or HList
(corresponding field or constructor has annotations).
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 Second(i: Int) case class CC(i: Int, s: String @First("a") @Second(0)) val ccFirsts = AllTypeAnnotations[CC] // ccFirsts.Out is HNil :: (First :: Second :: HNil) :: HNil // ccFirsts.apply() is // HNil :: (First("a") :: Second(0) :: HNil) :: HNil
This implementation is based on shapeless.Annotations by Alexandre Archambault.
- Alphabetic
- By Inheritance
- AllTypeAnnotations
- Serializable
- DepFn0
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract type Out <: HList
- Definition Classes
- AllTypeAnnotations → 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()