scalan
package scalan
- Alphabetic
- By Inheritance
- scalan
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
final
class
AVHashMap[K, V] extends AnyVal
Allocation free alternative to scala.collection.mutable.Map with similar interface.
Allocation free alternative to scala.collection.mutable.Map with similar interface. This simplifies optimization of performance critical code.
-
abstract
class
Base extends AnyRef
The Base trait houses common AST nodes.
The Base trait houses common AST nodes. It also manages a list of encountered definitions which allows for common sub-expression elimination (CSE).
- class Builtin extends Annotation with Annotation with ClassfileAnnotation
- class Constructor extends Annotation with Annotation with ClassfileAnnotation
- class ContainerType extends Annotation with Annotation with ClassfileAnnotation
- class Convertible extends Annotation with Annotation with ClassfileAnnotation
-
abstract
class
DFunc[A, B] extends AnyRef
Function interface which support specialization and thus unboxed invocations.
-
class
DFuncAdapter[A, B] extends DFunc[A, B]
Convenient but SLOW adapter to be used in tests.
- trait DefRewriting extends AnyRef
-
class
DelayInvokeException extends Exception
Can be thrown in staged method body to prevent body unfolding.
Can be thrown in staged method body to prevent body unfolding. When this exception is thrown, the caller can catch it and reify this invocation as MethodCall graph node.
-
class
Enforcer extends AnyRef
This file is necessary to make this module non-empty.
This file is necessary to make this module non-empty. Otherwise, the compilation doesn't happen and TargetModulePipeline is not executed.
- trait Entities extends TypeDescs
-
trait
ExactIntegral[T] extends Integral[T]
Integral operations with overflow checks.
Integral operations with overflow checks. Raise exception when overflow is detected. Each instance of this typeclass overrides three methods
plus
,minus
,times
. All other methods are implemented by delegating to the corresponding Integral instance from standard Scala library. This trait is used in core IR to avoid implicitly using standard scala implementations. -
trait
ExactNumeric[T] extends AnyRef
Numeric operations with overflow checks.
Numeric operations with overflow checks. Raise exception when overflow is detected. Each instance of this typeclass overrides three methods
plus
,minus
,times
. All other methods are implemented by delegating to the corresponding Numeric instance from standard Scala library. This trait is used in core IR to avoid implicitly using standard scala implementations -
trait
ExactOrdering[T] extends Ordering[T]
Ordering operations to be used with other Exact traits.
Ordering operations to be used with other Exact traits. All methods are implemented by delegating to the corresponding Ordering instance from standard Scala library. This trait is used in core IR to avoid implicitly using standard scala implementations.
- class ExactOrderingImpl[T] extends ExactOrdering[T]
- class External extends Annotation with Annotation with ClassfileAnnotation
- class FunctorType extends Annotation with Annotation with ClassfileAnnotation
- class InlineAt extends Annotation with Annotation with ClassfileAnnotation
- class Internal extends Annotation with Annotation with ClassfileAnnotation
- class Isospec extends Annotation with Annotation with ClassfileAnnotation
-
class
Lazy[A] extends AnyRef
Non-thread safe (but efficient on single thread) immutable lazy value.
Non-thread safe (but efficient on single thread) immutable lazy value. The
block
is executed only once. - trait Library extends Scalan with WrappersModule with WrappersSpecModule with CollsModule with SizesModule with CostsModule with ConcreteSizesModule with ConcreteCostsModule with MonoidsModule with MonoidInstancesModule with CostedOptionsModule
- class Liftable extends Annotation with Annotation with ClassfileAnnotation
- trait MethodCalls extends Base with GraphVizExport
-
case class
ModuleInfo(packageName: String, moduleName: String, extension: String = ".scalan") extends Product with Serializable
Information about generated Special library module.
Information about generated Special library module. Instances are created in generated code.
- See also
*Impl.scala files
- trait Modules extends Base
-
final
class
MutableLazy[A] extends AnyRef
Non-thread safe (but efficient on single thread) immutable lazy value with reset.
Non-thread safe (but efficient on single thread) immutable lazy value with reset. The
block
may execute potentially many times, but only once before each reset. - class NeverInline extends Annotation with Annotation with ClassfileAnnotation
-
final
class
Nullable[+T] extends AnyVal
Allocation free alternative to scala.Option with similar interface.
Allocation free alternative to scala.Option with similar interface. Using this in recognizers allows: 1) to avoid allocation of Some(x) 2) reading random memory location (where Some is stored) to access x
- class OverloadId extends Annotation with Annotation with ClassfileAnnotation
-
abstract
class
RType[A] extends AnyRef
Base type for all runtime type descriptors.
Base type for all runtime type descriptors.
- Annotations
- @implicitNotFound( "No Elem available for ${A}." )
- class Reified extends Annotation with Annotation with ClassfileAnnotation
-
class
Scalan extends TypeDescs with MethodCalls with Tuples with NumericOps with UnBinOps with LogicalOps with OrderingOps with Equal with UniversalOps with Functions with IfThenElse with Transforming with Thunks with Entities with Modules with DefRewriting
Aggregate cake with all inter-dependent modules assembled together.
Aggregate cake with all inter-dependent modules assembled together. Each instance of this class contains independent IR context, thus many instances can be created simultaneously. However, the inner types declared in the traits are path-dependant. This in particular means that ctx1.Ref[_] and ctx2.Ref[_] are different types. The typical usage is to create
val ctx = new Scalan
and then import inner declarations usingimport ctx._
. This way the declaration will be directly available as if they were global declarations. At the same time cake design pattern allow tooverride
many methods and values in classed derived fromScalan
, this is significant benefit over *everything is global* design. - trait SigmaLibrary extends Scalan with Library with WrappersModule with SigmaDslModule with CostedObjectsModule
- abstract class TypeDescs extends Base
- class Typeclass extends Annotation with StaticAnnotation
- class WithMethodCallRecognizers extends Annotation with Annotation with ClassfileAnnotation
-
trait
WrapSpec extends AnyRef
Base type for all wrapper specification classes.
Base type for all wrapper specification classes.
- See also
OptionWrapSpec as an example
Value Members
-
implicit
def
rtypeToClassTag[A](implicit t: RType[A]): ClassTag[A]
Allows implicit resolution to find appropriate instance of ClassTag in the scope where RType is implicitly available.
- object AVHashMap
-
object
ExactIntegral extends Serializable
ExactNumeric instances for all types.
-
object
ExactNumeric
ExactNumeric instances for all types.
-
object
ExactOrdering extends Serializable
ExactOrdering instances for all types.
- object Lazy
- object MutableLazy
- object Nullable
-
object
OverloadHack
Scala specific trick to appease erasure of methods argument types.
Scala specific trick to appease erasure of methods argument types. Example usage: def m1(l: List[Int])(implicit o: Overloaded1) def m2(l: List[String])(implicit o: Overloaded2) Without the implicit arguments the methods would have identical signatures after erasure, which is a compilation time error.
- object RType