kotlin-algebraic-types-plugin / org.drx.plugin.algebraictypes.generate.optics

Package org.drx.plugin.algebraictypes.generate.optics

Types

PrismParameter

Helper typesdata class PrismParameter

PrismParameterOccurrence

data class PrismParameterOccurrence

SharedPrismParameter

data class SharedPrismParameter

Functions

buildAuxiliaryFunctions

fun buildAuxiliaryFunctions(packageName: String): String

buildAuxiliaryPrismFunctions

fun buildAuxiliaryPrismFunctions(packageName: String): String

buildDataClass

Build the data class

fun buildDataClass(dataClass: DataClass, algTypes: String): String

buildExtendedFunctionComposer

fun buildExtendedFunctionComposer(): String

buildFluentFunction

fun buildFluentFunction(): String

buildIdSetter

fun buildIdSetter(): String

buildSealedClassFileContent

fun buildSealedClassFileContent(sealedClass: SealedClass, algTypesFolder: String): String

buildSuspendedIdSetter

fun buildSuspendedIdSetter(): String

classGenerics

fun classGenerics(generics: String?): String

classRepresentation

Class representaions

fun classRepresentation(sealedClass: SealedClass, offset: String = ""): String

collectSharedPrismParameters

fun collectSharedPrismParameters(sealedClass: SealedClass): ArrayList<SharedPrismParameter>

dataClassRepresentation

Build the representation of the data class

fun dataClassRepresentation(dataClass: DataClass, generics: String?): String

file

fun file(dataClass: DataClass, project: Project): File
fun file(sealedClass: SealedClass, project: Project): File

functionGenerics

fun functionGenerics(generics: String?): String

generatePseudoLens

Generate pseudo lens

fun generatePseudoLens(dataClass: DataClass, algTypes: String, project: Project): Unit

generatePseudoLenses

Generate pseudo lenses

fun generatePseudoLenses(dataClasses: DataClasses, project: Project): Unit

generatePseudoPrism

Generate pseudo lens

fun generatePseudoPrism(sealedClass: SealedClass, algTypesFolder: String, project: Project): Unit

generatePseudoPrisms

fun generatePseudoPrisms(dataClasses: DataClasses, project: Project): Unit

generics

Data class may depend on generic parameters:

fun generics(dataClass: ClassRepresentation): String?

imports

fun imports(clazz: ClassRepresentation, collected: HashSet<String> = hashSetOf()): HashSet<String>

Data class may depend on types which need to be imported. Compute the imports of the data class.

fun imports(dataClass: DataClass, algTypes: String): String

Sealed class may depend on types which need to be imported. Compute the imports of the sealed class.

fun imports(dataClass: SealedClass, algTypesFolder: String): String

listGenerics

fun listGenerics(clazz: ClassRepresentation): HashSet<String>

modifiers

fun Parameter.modifiers(): String

overriddenParameters

fun SealedClass.overriddenParameters(): Set<String>
fun SubSealedClass.overriddenParameters(): Set<String>

packageName

Compute the package name

fun packageName(dataClass: DataClass): String
fun packageName(sealedClass: SealedClass): String

parameters

fun parameters(sealedClass: SealedClass, offset: String): List<String>
fun parameters(sealedClass: SubSealedClass, offset: String): List<String>

parameterSetter

Build parameter setter: Product2<Data, Product<...,T_i.()->T_i,...>>.param(setter: T_i.()->T_i): Product2<Data, Product<...,T_i.()->T_i,...>>

fun parameterSetter(parameterName: String, parameterType: String, parameterIndex: Int, dataClass: DataClass, dimension: Int, generics: String?): String

parameterSetters

Build parameter setters: One parameter setter for each parameter of the data class

fun parameterSetters(dataClass: DataClass, generics: String?): String

parameterSettersSuspended

Build suspended parameter setters: One suspended parameter setter for each parameter of the data class

fun parameterSettersSuspended(dataClass: DataClass, generics: String?): String

parameterSetterSuspended

Build suspended parameter setter: suspend Product2<Data, Product<..., suspend T_i.()->T_i,...>>.param(setter: suspend T_i.()->T_i): Product2<Data, Product<..., suspend T_i.()->T_i,...>>

fun parameterSetterSuspended(parameterName: String, parameterType: String, parameterIndex: Int, dataClass: DataClass, dimension: Int, generics: String?): String

prism

Prism structure

fun prism(sealedClass: SealedClass): String

prismParameterSetterFunctionGenerics

fun prismParameterSetterFunctionGenerics(sealedClass: SealedClass): String

prismParameterSetters

Prism parameter-setter functionsfun prismParameterSetters(sealedClass: SealedClass, suspended: Boolean = false): String

prismParameterSetterType

fun prismParameterSetterType(sealedClass: SealedClass, suspended: Boolean = false): String

prismSetter

Prism setter functionfun prismSetter(sealedClass: SealedClass, suspended: Boolean = false): String

prismSetterCase

fun prismSetterCase(representative: SubDataClass, index: Int, dimension: Int, suspended: Boolean = false): String

prismSetterCases

fun prismSetterCases(sealedClass: SealedClass, suspended: Boolean = false): String

prismSetterFunctionGenerics

fun prismSetterFunctionGenerics(sealedClass: SealedClass): String

prismSetterType

fun prismSetterType(sealedClass: SealedClass, suspended: Boolean = false): String

prismSummandType

fun prismSummandType(sealedClass: SealedClass, index: Int, suspended: Boolean = false): String

prismSumType

Prism relevant typesfun prismSumType(sealedClass: SealedClass, suspended: Boolean = false): String

prismTransaction

Prism transaction functionfun prismTransaction(sealedClass: SealedClass, suspended: Boolean = false): String

prismTransactionArgumentType

fun prismTransactionArgumentType(sealedClass: SealedClass, suspended: Boolean = false): String

prismTransactionCase

fun prismTransactionCase(representative: SubClass, index: Int, suspended: Boolean = false): String

prismTransactionCases

fun prismTransactionCases(sealedClass: SealedClass, suspended: Boolean = false): String

prismTransactionFunctionGenerics

fun prismTransactionFunctionGenerics(sealedClass: SealedClass): String

productSetterType

Build product setter type: Product<...,T_i.()->T_i,...>

fun productSetterType(dataClass: DataClass, generics: String?): String

productSetterTypeSuspended

Build suspended product setter type: Product<..., suspend T_i.()->T_i,...>

fun productSetterTypeSuspended(dataClass: DataClass, generics: String?): String

setter

Build the setter: Data.set(setter: Data.()->Product<..., T_i.()->T_i ,...>): Data

fun setter(dataClass: DataClass, generics: String?): String

Build setter: T.()->T

fun setter(type: String): String

setterSuspended

Build the suspended setter: suspend Data.set(setter: suspend Data.()->Product<..., suspend T_i.()->T_i ,...>): Data

fun setterSuspended(dataClass: DataClass, generics: String?): String

Build suspended setter: suspend T.()->T

fun setterSuspended(type: String): String

sharedPrismParameterSetter

fun sharedPrismParameterSetter(sealedClass: SealedClass, sharedPrismParameter: SharedPrismParameter, suspended: Boolean = false): String

sharedPrismParameterSetterCase

fun sharedPrismParameterSetterCase(occurrence: PrismParameterOccurrence, dimension: Int, suspended: Boolean): String

sharedPrismParameterSetterCases

fun sharedPrismParameterSetterCases(sealedClass: SealedClass, occurrences: ArrayList<PrismParameterOccurrence>, suspended: Boolean): String

simpleParameterSetter

fun simpleParameterSetter(parameterName: String, parameterType: String, parameterIndex: Int, dataClass: DataClass, dimension: Int, generics: String?): String

simpleParameterSetters

fun simpleParameterSetters(dataClass: DataClass, generics: String?): String

simpleParameterSettersSuspended

fun simpleParameterSettersSuspended(dataClass: DataClass, generics: String?): String

simpleParameterSetterSuspended

fun simpleParameterSetterSuspended(parameterName: String, parameterType: String, parameterIndex: Int, dataClass: DataClass, dimension: Int, generics: String?): String

subClassLens

fun subClassLens(subDataClass: SubDataClass, parentClassName: String): String

subClassLenses

Lenses of sub classes

fun subClassLenses(sealedClass: SealedClass): String

subClassRepresentation

fun subClassRepresentation(subClass: SubClass, offset: String = ""): String
fun subClassRepresentation(subClass: SubDataClass, offset: String = ""): String
fun subClassRepresentation(subClass: SubObject, offset: String = ""): String
fun subClassRepresentation(subClass: SubSealedClass, offset: String = ""): String

subClassRepresentations

fun subClassRepresentations(sealedClass: SealedClass, offset: String = ""): String

suspended

Helper functionsfun suspended(suspended: Boolean, postFix: String = " ", whenFalse: String = ""): String

transaction

Build the transaction function

fun transaction(dataClass: DataClass, dimension: Int, generics: String?): String

transactionSuspended

Build the suspended transaction function

fun transactionSuspended(dataClass: DataClass, dimension: Int, generics: String?): String