author jdiaz5513
  import initTrace from "debug" ; import { ListElementSize } from "../list-element-size" ; import { _ListCtor , List , ListCtor } from "./list" ; import { Struct , StructCtor } from "./struct" ; import { copyFrom } from "./pointer" ; const trace = initTrace ( "capnp:list:composite" ) ; trace ( "load" ) ; export function CompositeList < T extends Struct > ( CompositeClass ) { return class extends List < T > { static readonly _capnp : _ListCtor = { compositeSize : CompositeClass . _capnp . size , displayName : `List<${ CompositeClass . _capnp . displayName }>` , size : ListElementSize . COMPOSITE , } ; get ( index ) { return new CompositeClass ( this . segment , this . byteOffset , this . _capnp . depthLimit - 1 , index ) ; } set ( index , value ) { copyFrom ( value , this . get ( index ) ) ; } toString ( ) { return `Composite_${ super . toString ( ) },cls:${ CompositeClass . toString ( ) }` ; } } ; }