public MultiDimOutStream(IIOFactory ioFactory, OutputAttribute attribute) { FDataContainer = ioFactory.CreateIOContainer <IOutStream <T> >(attribute.DecreaseBinSizeWrapCount(), false); FBinSizeContainer = ioFactory.CreateIOContainer <IOutStream <int> >(attribute.GetBinSizeOutputAttribute(FDataContainer), false); FDataStream = FDataContainer.IOObject; FBinSizeStream = FBinSizeContainer.IOObject; Length = 1; }
public OutputBinSpreadStream(IIOFactory ioFactory, OutputAttribute attribute, Func <IIOContainer, IIOContainer <IOutStream <int> > > binSizeIOContainerFactory) { if (attribute.IsBinSizeEnabled) { var container = ioFactory.CreateIOContainer <ISpread <T> >(attribute.DecreaseBinSizeWrapCount(), false); // Ask for a spread, otherwise we lose track of bin size wrapping FDataContainer = container; FDataStream = container.IOObject.Stream; } else { var container = ioFactory.CreateIOContainer <IOutStream <T> >(attribute, false); // No need for another indirection, access the node output directly FDataContainer = container; FDataStream = container.IOObject; } FBinSizeContainer = binSizeIOContainerFactory(FDataContainer); FBinSizeStream = FBinSizeContainer.IOObject; Length = 1; }