| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | using System;using System.IO;namespace SharpCifs.Util.Sharpen{    public class OutputStream : IDisposable	{		protected Stream Wrapped;		public static implicit operator OutputStream (Stream s)		{			return Wrap (s);		}		public static implicit operator Stream (OutputStream s)		{			return s.GetWrappedStream ();		}				public virtual void Close ()		{			if (Wrapped != null) {                //Stream.`Close` method deleted                //Wrapped.Close ();                Wrapped.Dispose();            }		}		public void Dispose ()		{			Close ();           		}		public virtual void Flush ()		{			if (Wrapped != null) {				Wrapped.Flush ();			}		}		internal Stream GetWrappedStream ()		{			// Always create a wrapper stream (not directly Wrapped) since the subclass			// may be overriding methods that need to be called when used through the Stream class			return new WrappedSystemStream (this);		}		static internal OutputStream Wrap (Stream s)		{			OutputStream stream = new OutputStream ();			stream.Wrapped = s;			return stream;		}		public virtual void Write (int b)		{			if (Wrapped is WrappedSystemStream)				((WrappedSystemStream)Wrapped).OutputStream.Write (b);			else {				if (Wrapped == null)					throw new NotImplementedException ();				Wrapped.WriteByte ((byte)b);			}		}		public virtual void Write (byte[] b)		{			Write (b, 0, b.Length);		}		public virtual void Write (byte[] b, int offset, int len)		{			if (Wrapped is WrappedSystemStream)				((WrappedSystemStream)Wrapped).OutputStream.Write (b, offset, len);			else {				if (Wrapped != null) {					Wrapped.Write (b, offset, len);				} else {					for (int i = 0; i < len; i++) {						Write (b[i + offset]);					}				}			}		}	}}
 |