LensesProcessor
This Processor generates automatically functions of lenses for all public properties of a data class, a sealed class or a sealed interface within theirs the companion objects.
Those functions are created during compile process within separate source files as extension functions of the companion object. That's why the user must provide a companion object within the @Lenses
annotated data class of his own. The processor will detect a missing definition and throw an error. The naming schema of the generated file is based upon the name of the data class with the appended suffix Lenses
.
We decided to model those generated lenses as functions, as the call to lensOf
has only a small impact to the overall rendering performance compared to other aspects but enables the support for generic data classes. So if a client suffers from a bad performance because of this approach, feel free to manually implement a lens with better performance.
Have a look at the unit tests in dev.fritz2.lens.LensesProcessorTests to get examples of the generated code.