package Ġm ary k . core . protobuf Ċ Ċ import Ġm ary k . core . properties . Is Property Context Ċ Ċ /** Ċ Ġ* ĠCache Ġto Ġstore Ġcalculated Ġlengths Ġand Ġcontexts Ġin Ġfor Ġlater ĠProto Buf Ġwriting Ġphase Ċ Ġ*/ Ċ class ĠWrite Cache Ġ: ĠWrite Cache Reader , ĠWrite Cache Writer Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlengths Ġ= Ġmutable ListOf < Byte Length Container >() ĊĠĠĠ Ġprivate Ġvar Ġlength Cache Index Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġval Ġcontexts Ġ= Ġmutable ListOf < Is Property Context >() ĊĠĠĠ Ġprivate Ġvar Ġcontext Cache Index Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġadd Length To Cache ( item : ĠByte Length Container ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlengths Ġ+= Ġitem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< CX Ġ: ĠIs Property Context > Ġadd Context To Cache ( item : ĠCX ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontexts Ġ+= Ġitem ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext Length From Cache () Ġ= Ġlengths [ length Cache Index ++ ]. length ĊĠĠĠ Ġoverride Ġfun Ġnext Context From Cache () Ġ= Ġcontexts [ context Cache Index ++] Ċ } Ċ Ċ interface ĠWrite Cache Writer Ġ{ ĊĠĠĠ Ġfun Ġadd Length To Cache ( item : ĠByte Length Container ) ĊĠĠĠ Ġfun Ġ< CX Ġ: ĠIs Property Context > Ġadd Context To Cache ( item : ĠCX ) Ċ } Ċ Ċ interface ĠWrite Cache Reader Ġ{ ĊĠĠĠ Ġfun Ġnext Length From Cache (): ĠInt ĊĠĠĠ Ġfun Ġnext Context From Cache (): ĠIs Property Context Ċ } Ċ