s_mach.codetools.impl

BlackboxHelperImpl

trait BlackboxHelperImpl extends ProductTypeHelper

Linear Supertypes
ProductTypeHelper, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. BlackboxHelperImpl
  2. ProductTypeHelper
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. case class ProductType(_type: scala.reflect.macros.blackbox.Context.Type, oomField: List[Field], applyMethod: scala.reflect.macros.Universe.MethodSymbol, unapplyMethod: scala.reflect.macros.Universe.MethodSymbol, allFieldsAreMembers: Boolean) extends Product with Serializable

    A case class that represents the fields for a product type.

    A case class that represents the fields for a product type.

    _type

    the product type

    oomField

    the fields of the product type (computed from the arguments in the apply method)

    applyMethod

    the matched apply method

    unapplyMethod

    the matched unapply method

    allFieldsAreMembers

    TRUE if all fields correspond to a public no arg member method with the same name and type in the product type (e.g. this is true for all case classes and tuple types)

    Definition Classes
    ProductTypeHelper

Abstract Value Members

  1. abstract val c: Context

    Definition Classes
    BlackboxHelperImplProductTypeHelper
  2. abstract def calcProductType(aType: scala.reflect.macros.blackbox.Context.Type): Result[ProductType]

    Try to compute the product type fields for a type.

    Try to compute the product type fields for a type.

    The product type fields are computed by finding the first unapply/apply method pair in the type's companion object with matching type signatures. The type signature of apply methods is equal to the sequence of the types of its arguments. Unapply methods may have one or two type signatures based on its return type. First, the inner type parameter of the Option return type is extracted. If the inner type parameter is a tuple type, then both the tuple type and the list of tuple type parameters form possible type signatures. Otherwise, if the inner type parameter is not a tuple type then the type signature is equal to the single type parameter. Once an apply/unapply match is made, the symbols of the apply method's argument list are returned as the product type fields for the type. For tuple types and case classes, this will be the list of it's fields.

    Example1: class A(...) { ... } object A { def apply(i: Int, s: String) : A = ??? def apply(i: Int, s: String, f: Float) : A = ??? def unapply(a: A) : Option[(Int,String)] = ??? } The first apply method's type signature = List(Int,String) The unapply method's type signature = List(List((Int,String)),Int,String) Product type fields = List(i:Int,s:String)

    Example2: class B(...) { ... } object B { def apply(tuple: (String,Int)) : A = ??? def apply(i: Int, s: String) : A = ??? def unapply(b: B) : Option[(Int,String)] = ??? } The first apply method's type signature = List((String,Int)) The unapply method's type signature = List(List((String,Int)), List(String,Int)) Product type fields = List(tuple: (String, Int))

    Example3: class Enum(...) { ... } object Enum { def apply(value: String) : A = ??? def unapply(e: Enum) : Option[String] = ??? } The first apply method's type signature = List(String) The unapply method's type signature = List(List(String)) Product type fields = List(value: String)

    Example4: case class CaseClass(i: Int, s: String) The first apply method's type signature = List(Int,String) The unapply method's type signature = List(List((Int,String)), List(Int,String)) Product type fields = List(i:Int,s:String)

    Example5: class Tuple2[T1,T2](val _1: T1,val _2 : T2) The first apply method's type signature = List(T1,T2) The unapply method's type signature = List(T1,T2) Product type fields = List(_1:T1,_2:T2)

    If no product type can be computed, None is returned and an error message is logged to logger

    aType

    type whose companion object should be searched for apply and unapply methods

    returns

    if successful, Some(product type) otherwise None

    Definition Classes
    ProductTypeHelper

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. object Impl

  5. object ProductType extends Serializable

    Definition Classes
    ProductTypeHelper
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  15. final def notify(): Unit

    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  17. val showDebug: Boolean

    Override to show debug messages

    Override to show debug messages

    Definition Classes
    ProductTypeHelper
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  19. def toString(): String

    Definition Classes
    AnyRef → Any
  20. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  21. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from ProductTypeHelper

Inherited from AnyRef

Inherited from Any

Ungrouped