/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . library Ċ Ċ import Ġorg . jetbrains . kotlin . kon an . properties . Properties Ċ Ċ interface ĠBase Writer Ġ{ ĊĠĠĠ Ġval Ġversions : ĠKotlin Library Version ing ĊĠĠĠ Ġfun Ġadd Link Dependencies ( libraries : ĠList < Kotlin Library >) ĊĠĠĠ Ġfun Ġadd Manifest Add end ( properties : ĠProperties ) ĊĠĠĠ Ġfun Ġcommit () Ċ } Ċ Ċ interface ĠMetadata Writer Ġ{ ĊĠĠĠ Ġfun Ġadd Metadata ( metadata : ĠSerialized Metadata ) Ċ } Ċ Ċ interface ĠIr Writer Ġ{ ĊĠĠĠ Ġfun Ġadd Ir ( ir : ĠSerialized Ir Module ) ĊĠĠĠ Ġfun Ġadd Data Flow Graph ( data Flow Graph : ĠByteArray ) Ċ } Ċ Ċ interface ĠKotlin Library Writer Ġ: ĠMetadata Writer , ĠBase Writer , ĠIr Writer Ċ Ċ // ĠTODO : ĠMove ĠSerialized Ir Ġhere Ġtoo Ġto Ġeliminate Ġdependency Ġon Ġbackend . common . serialization Ċ class ĠSerialized Metadata ( ĊĠĠĠ Ġval Ġmodule : ĠByteArray , ĊĠĠĠ Ġval Ġfragments : ĠList < List < ByteArray >>, ĊĠĠĠ Ġval Ġfragment Names : ĠList < String > Ċ ) Ċ Ċ sealed Ġclass ĠSerialized Declaration Ġ{ ĊĠĠĠ Ġabstract Ġval Ġid : ĠInt ĊĠĠĠ Ġabstract Ġval Ġsize : ĠInt ĊĠĠĠ Ġabstract Ġval Ġbytes : ĠByteArray ĊĊĠĠĠ Ġabstract Ġval Ġdeclaration Name : ĠString Ċ } Ċ Ċ class ĠTop Level Declaration ( override Ġval Ġid : ĠInt , Ġoverride Ġval Ġdeclaration Name : ĠString , Ġoverride Ġval Ġbytes : ĠByteArray ) Ġ: ĊĠĠĠ ĠSerialized Declaration () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġsize Ġ= Ġbytes . size Ċ } Ċ Ċ object ĠSk ipped Declaration Ġ: ĠSerialized Declaration () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġid Ġ= Ġ- 1 ĊĠĠĠ Ġoverride Ġval Ġsize Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġval Ġbytes Ġ= ĠByteArray ( 0 ) ĊĠĠĠ Ġoverride Ġval Ġdeclaration Name : ĠString Ġ= Ġ"< SKIP PED >" Ċ } Ċ Ċ class ĠSerialized Ir File ( ĊĠĠĠ Ġval Ġfile Data : ĠByteArray , ĊĠĠĠ Ġval Ġfq Name : ĠString , ĊĠĠĠ Ġval Ġpath : ĠString , ĊĠĠĠ Ġval Ġtypes : ĠByteArray , ĊĠĠĠ Ġval Ġsignatures : ĠByteArray , ĊĠĠĠ Ġval Ġstrings : ĠByteArray , ĊĠĠĠ Ġval Ġbodies : ĠByteArray , ĊĠĠĠ Ġval Ġdeclarations : ĠByteArray , ĊĠĠĠ Ġval Ġdebug Info : ĠByteArray ? Ċ ) Ċ Ċ class ĠSerialized Ir Module ( val Ġfiles : ĠCollection < Serialized Ir File >)