trait Annotations[A, T] extends DepFn0 with Serializable
Provides the 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 annotations of type A
. If
type T
is a sum type, its constructor types are looked for 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 annotation types 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, @First("a") s: String) sealed trait Base @First("b") case class BaseI(i: Int) extends Base case class BaseS(s: String) extends Base val ccFirsts = Annotations[First, CC] val baseFirsts = Annotations[First, Base] // ccFirsts.Out is None.type :: Some[First] :: HNil // ccFirsts.apply() is // None :: Some(First("a")) :: HNil // baseFirsts.Out is Some[First] :: None.type :: HNil // baseFirsts.apply() is // Some(First("b")) :: None :: HNil
- Alphabetic
- By Inheritance
- Annotations
- Serializable
- Serializable
- DepFn0
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
abstract
type
Out <: HList
- Definition Classes
- Annotations → 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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.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
- @native() @throws( ... )