/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ Ċ package Ġsoftware . amazon . smithy . rust . codegen . smithy . customize Ċ Ċ import Ġsoftware . amazon . smithy . rust . codegen . rust lang . Rust Writer Ċ import Ġsoftware . amazon . smithy . rust . codegen . rust lang . Writable Ċ import Ġsoftware . amazon . smithy . rust . codegen . rust lang . writable Ċ Ċ /** Ċ Ġ* ĠAn Ġoverride able Ġsection Ġfor Ġcode Ġgeneration . ĠUsage : Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġsealed Ġclass ĠOperation Custom ization ( name : ĠString ) Ġ: ĠSection ( name ) Ġ{ Ċ Ġ* ĠĠĠĠĠ Ġ// ĠSe ctions Ġcan Ġbe Ġstate - carry ing Ġto Ġallow Ġimplementations Ġto Ġmake Ġdifferent Ġchoices Ġbased Ġon Ċ Ġ* ĠĠĠĠĠ Ġ// Ġdifferent Ġoperations Ċ Ġ* ĠĠĠĠĠ Ġdata Ġclass ĠRequest Creation ( protocol Config : ĠProtocol Config , Ġoperation : ĠOperation Shape ) Ġ: ĠSection (" Request Creation ") Ċ Ġ* ĠĠĠĠĠ Ġ// ĠSe ctions Ġcan Ġbe Ġstate less , Ġe . g . Ġthis Ġsection Ġthat Ġcould Ġwrite Ġcode Ġinto Ġthe Ċ Ġ* ĠĠĠĠĠ Ġ// Ġtop Ġlevel Ġoperation Ġmodule Ċ Ġ* ĠĠĠĠĠ Ġobject ĠOperation Module Ġ: ĠService Config (" Operation TopLevel ") Ċ Ġ* Ġ} Ċ Ġ*/ Ċ abstract Ġclass ĠSection ( val Ġname : ĠString ) Ċ Ċ /** Ċ Ġ* ĠA Ġnamed Ġsection Ġgenerator Ġallows Ġcustomization Ġvia Ġa Ġpredefined Ġset Ġof Ġnamed Ġsections . Ċ Ġ* Ċ Ġ* ĠImplement ors ĠMUST Ġoverride Ġsection Ġand Ġuse Ġa Ġ` when ` Ġclause Ġto Ġhandle Ġeach Ġsection Ġindividually Ċ Ġ*/ Ċ abstract Ġclass ĠNamed Section Generator < T Ġ: ĠSection > Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġsection ( section : ĠT ): ĠWrit able ĊĠĠĠ Ġprotected Ġval Ġempty Section Ġ= Ġwritable Ġ{ Ġ} Ċ } Ċ Ċ /** ĠConvenience Ġfor Ġrendering Ġa Ġlist Ġof Ġcustom izations Ġfor Ġa Ġgiven Ġsection Ġ*/ Ċ fun Ġ< T Ġ: ĠSection > ĠRust Writer . write Custom izations ( custom izations : ĠList < Named Section Generator < T >>, Ġsection : ĠT ) Ġ{ ĊĠĠĠ Ġfor Ġ( custom ization Ġin Ġcustom izations ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcustomization . section ( section )( this ) ĊĠĠĠ Ġ} Ċ } Ċ