/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 ĠK Math Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġspace . k science . k math . chains Ċ Ċ import Ġspace . k science . k math . structures . Double Buffer Ċ Ċ /** Ċ Ġ* ĠChunk ed , Ġspecialized Ġchain Ġfor Ġdouble Ġvalues , Ġwhich Ġsupports Ġblocking Ġ[ next Blocking ] Ġoperation Ċ Ġ*/ Ċ public Ġinterface ĠBlock ing Double Chain Ġ: ĠBlock ing Buffer Chain < Double > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġ[ Double Array ] Ġchunk Ġof Ġ[ size ] Ġvalues Ġof Ġ[ next ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġnext Buffer Blocking ( size : ĠInt ): ĠDouble Buffer ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfork (): ĠBlock ing Double Chain ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ċ } Ċ Ċ public Ġfun ĠBlock ing Double Chain . map ( transform : Ġ( Double ) Ġ-> ĠDouble ): ĠBlock ing Double Chain Ġ= Ġobject Ġ: ĠBlock ing Double Chain Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġnext Buffer Blocking ( size : ĠInt ): ĠDouble Buffer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblock Ġ= Ġthis @ map . next Buffer Blocking ( size ) ĊĠĠĠĠĠĠĠ Ġreturn ĠDouble Buffer ( size ) Ġ{ Ġtransform ( block [ it ]) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfork (): ĠBlock ing Double Chain Ġ= Ġthis @ map . fork (). map ( transform ) Ċ }