public MultiDimInStream(IIOFactory factory, InputAttribute attribute) { FDataContainer = factory.CreateIOContainer <IInStream <T> >(attribute.DecreaseBinSizeWrapCount(), false); FBinSizeContainer = factory.CreateIOContainer <IInStream <int> >(attribute.GetBinSizeInputAttribute(FDataContainer), false); FDataStream = FDataContainer.IOObject; FBinSizeStream = FBinSizeContainer.IOObject; }
public InputBinSpreadStream(IIOFactory ioFactory, InputAttribute attribute, bool checkIfChanged, Func <IIOContainer, IIOContainer <IInStream <int> > > binSizeIOContainerFactory) { // Don't do this, as spread max won't get computed for this pin // attribute.AutoValidate = false; attribute.CheckIfChanged = checkIfChanged; 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 <IInStream <T> >(attribute, false); // No need for another indirection, access the node input directly FDataContainer = container; FDataStream = container.IOObject; } FBinSizeContainer = binSizeIOContainerFactory(FDataContainer); FBinSizeStream = FBinSizeContainer.IOObject; FDataIO = FDataContainer.GetPluginIO(); }