forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			831 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			831 B
		
	
	
	
		
			C#
		
	
	
	
	
	
//
 | 
						|
// Author:
 | 
						|
//   Jb Evain (jbevain@gmail.com)
 | 
						|
//
 | 
						|
// Copyright (c) 2008 - 2015 Jb Evain
 | 
						|
// Copyright (c) 2008 - 2011 Novell, Inc.
 | 
						|
//
 | 
						|
// Licensed under the MIT/X11 license.
 | 
						|
// 
 | 
						|
 | 
						|
using System;
 | 
						|
 | 
						|
namespace MonoFN {
 | 
						|
 | 
						|
	static class Disposable {
 | 
						|
 | 
						|
		public static Disposable<T> Owned<T> (T value) where T : class, IDisposable
 | 
						|
		{
 | 
						|
			return new Disposable<T> (value, owned: true);
 | 
						|
		}
 | 
						|
 | 
						|
		public static Disposable<T> NotOwned<T> (T value) where T : class, IDisposable
 | 
						|
		{
 | 
						|
			return new Disposable<T> (value, owned: false);
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	struct Disposable<T> : IDisposable where T : class, IDisposable {
 | 
						|
 | 
						|
		internal readonly T value;
 | 
						|
		readonly bool owned;
 | 
						|
 | 
						|
		public Disposable (T value, bool owned)
 | 
						|
		{
 | 
						|
			this.value = value;
 | 
						|
			this.owned = owned;
 | 
						|
		}
 | 
						|
 | 
						|
		public void Dispose ()
 | 
						|
		{
 | 
						|
			if (value != null && owned)
 | 
						|
				value.Dispose ();
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |