s_mach.codetools.impl

ReflectPrintMacroBuilderImpl

class ReflectPrintMacroBuilderImpl extends ReflectPrintMacroBuilder with BlackboxHelper

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ReflectPrintMacroBuilderImpl
  2. BlackboxHelper
  3. BlackboxHelperImpl
  4. ReflectPrintMacroBuilder
  5. AnyRef
  6. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ReflectPrintMacroBuilderImpl(c: Context)

Type Members

  1. case class ProductType(productType: scala.reflect.macros.blackbox.Context.Type, oomField: List[Field]) 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.

    oomField

    one or more (Symbol,Type) pairs

    Definition Classes
    BlackboxHelper

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

    Definition Classes
    BlackboxHelperImpl
  5. object ProductType extends Serializable

    Definition Classes
    BlackboxHelper
  6. def abortIfFailure[A, X](r: Result[A]): A

    returns

    If Result is success the value of the Result. If Result is failure, c.abort is invoked ending the macro. All issues are logged to the Context

    Definition Classes
    BlackboxHelper
    Annotations
    @inline()
  7. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  8. def build[A]()(implicit arg0: scala.reflect.macros.blackbox.Context.WeakTypeTag[A]): scala.reflect.macros.blackbox.Context.Expr[ReflectPrint[A]]

  9. val c: Context

  10. def calcProductTypeFields(aType: scala.reflect.macros.blackbox.Context.Type): Result[List[(String, scala.reflect.macros.blackbox.Context.Type)]]

    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
    BlackboxHelper
    Annotations
    @inline()
  11. def clone(): AnyRef

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

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

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

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

    Definition Classes
    AnyRef → Any
  16. def getCompanionMethod(aType: scala.reflect.macros.blackbox.Context.Type, methodName: String): Result[scala.reflect.macros.Universe.MethodSymbol]

    returns

    if the method exists, the method symbol otherwise an error message

    Definition Classes
    BlackboxHelper
    Annotations
    @inline()
  17. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  18. def inferImplicit(aType: scala.reflect.macros.blackbox.Context.Type): Result[scala.reflect.macros.blackbox.Context.Tree]

    returns

    if inferred, a Tree representing the implicit otherwise an error message

    Definition Classes
    BlackboxHelper
    Annotations
    @inline()
  19. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  20. def isTupleType(aType: scala.reflect.macros.blackbox.Context.Type): Boolean

    returns

    TRUE if type is a tuple type (e.g. Tuple2[T1,T2], etc)

    Definition Classes
    BlackboxHelper
    Annotations
    @inline()
  21. def logIssues(zomIssue: List[Issue]): Unit

    Log all issues to the Context

    Log all issues to the Context

    Definition Classes
    BlackboxHelper
    Annotations
    @inline()
  22. final def ne(arg0: AnyRef): Boolean

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

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

    Definition Classes
    AnyRef
  25. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  26. def toString(): String

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

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from BlackboxHelper

Inherited from BlackboxHelperImpl

Inherited from ReflectPrintMacroBuilder

Inherited from AnyRef

Inherited from Any

Ungrouped