Extension
A collection of values with their associate identifier Id.
// An extension is just a InstanceModel where entities are at least IdEntity[R].
trait ExtensionRoot[
+R,
+E <: IdEntity[R],
+InstMem <: InstanceMemoryRoot[E]
] extends Any with InstanceRoot[E, InstMem]
trait Extension[
+R,
+E <: IdEntity[R],
+InstMemImplParam[A] <: InstMemImplicitParam[A, InstanceMemory, InstMemImplParam],
+InstMem[A] <: InstanceMemory[A] with InstanceMemoryOps[A, InstMem, InstMem[A], InstMemImplParam]
] extends Any
with ExtensionRoot[R, E, InstMem[E]]
with CMInstance[E, InstMemImplParam, InstMem]
with ExtensionOps[R, E, InstMemImplParam, InstMem, CMInstance[*, InstMemImplParam, InstMem], Extension[R, E, InstMemImplParam, InstMem]]
EntityExtension
trait EntityExtension[
+R,
+E <: HasEntity[R] with HasId
] extends Any
with Extension[R, E, InstanceImplicitParam, InstanceMemory]
with Instance[E]
with ExtensionOps[R, E, InstanceImplicitParam, InstanceMemory, Instance, EntityExtension[R, E]]
// Entity before Local. The rule is that the nature of carried InstanceMemory entities comes before the nature of the collection (i.e. Local, Array, RDD, ...)
trait EntityLocalExtension[
+R,
+E <: HasEntity[R] with HasId
] extends Any
with LocalExtension[R, E, LocalInstanceImplicitParam, LocalInstanceMemory]
with EntityExtension[R, E]
with LocalInstance[HasEntity[R] with HasId]
with LocalExtensionOps[R, E, LocalInstanceImplicitParam, LocalInstanceMemory, LocalInstance, EntityLocalExtension[R, E]]
RepExtension
First apparition of prefix Rep
trait RepExtension[+R] extends Any
with EntityExtension[R, HasEntity[R] with HasId]
with Instance[HasEntity[R] with HasId]
with ExtensionOps[R, HasEntity[R] with HasId, InstanceImplicitParam, InstanceMemory, Instance, RepExtension[R]]
trait RepLocalExtension[+R] extends Any
with EntityLocalExtension[R, HasEntity[R] with HasId]
with RepExtension[R]
with LocalExtensionOps[R, HasEntity[R] with HasId, LocalInstanceImplicitParam, LocalInstanceMemory, LocalInstance, RepLocalExtension[R]]