Safe.cs
189 lines
| 6.1 KiB
| text/x-csharp
|
CSharpLexer
/ Implab / Safe.cs
cin
|
r1 | using System; | ||
using System.Collections.Generic; | ||||
using System.Linq; | ||||
using System.Text; | ||||
cin
|
r51 | using System.Text.RegularExpressions; | ||
cin
|
r66 | using System.Diagnostics; | ||
cin
|
r207 | using System.Collections; | ||
cin
|
r228 | using System.Runtime.CompilerServices; | ||
cin
|
r251 | using System.Threading.Tasks; | ||
cin
|
r259 | using System.Threading; | ||
cin
|
r1 | |||
cin
|
r213 | #if NET_4_5 | ||
using System.Threading.Tasks; | ||||
#endif | ||||
cin
|
r1 | namespace Implab | ||
{ | ||||
public static class Safe | ||||
{ | ||||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r161 | public static void ArgumentAssert(bool condition, string paramName) { | ||
if (!condition) | ||||
throw new ArgumentException("The parameter is invalid", paramName); | ||||
} | ||||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r121 | public static void ArgumentMatch(string value, string paramName, Regex rx) { | ||
cin
|
r51 | if (rx == null) | ||
throw new ArgumentNullException("rx"); | ||||
cin
|
r121 | if (!rx.IsMatch(value)) | ||
throw new ArgumentException(String.Format("The prameter value must match {0}", rx), paramName); | ||||
cin
|
r51 | } | ||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r121 | public static void ArgumentNotEmpty(string value, string paramName) { | ||
if (String.IsNullOrEmpty(value)) | ||||
throw new ArgumentException("The parameter can't be empty", paramName); | ||||
cin
|
r90 | } | ||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r121 | public static void ArgumentNotEmpty<T>(T[] value, string paramName) { | ||
if (value == null || value.Length == 0) | ||||
throw new ArgumentException("The array must be not emty", paramName); | ||||
cin
|
r51 | } | ||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r121 | public static void ArgumentNotNull(object value, string paramName) { | ||
if (value == null) | ||||
throw new ArgumentNullException(paramName); | ||||
cin
|
r51 | } | ||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r251 | internal static void ArgumentGreaterEqThan(int value, int min, string paramName) { | ||
cin
|
r228 | if (value < min) | ||
throw new ArgumentOutOfRangeException(paramName); | ||||
} | ||||
cin
|
r272 | public static object CreateDefaultValue(Type type) { | ||
if (type.IsValueType) | ||||
return Activator.CreateInstance(type); | ||||
return null; | ||||
} | ||||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r251 | public static void ArgumentInRange(bool condition, string paramName) { | ||
if (!condition) | ||||
cin
|
r121 | throw new ArgumentOutOfRangeException(paramName); | ||
cin
|
r55 | } | ||
cin
|
r228 | [MethodImpl(MethodImplOptions.AggressiveInlining)] | ||
cin
|
r177 | public static void ArgumentOfType(object value, Type type, string paramName) { | ||
if (!type.IsInstanceOfType(value)) | ||||
throw new ArgumentException(String.Format("The parameter must be of type {0}", type), paramName); | ||||
} | ||||
cin
|
r128 | public static void Dispose(params IDisposable[] objects) { | ||
foreach (var d in objects) | ||||
cin
|
r126 | if (d != null) | ||
d.Dispose(); | ||||
cin
|
r1 | } | ||
cin
|
r66 | |||
cin
|
r128 | public static void Dispose(params object[] objects) { | ||
foreach (var obj in objects) { | ||||
var d = obj as IDisposable; | ||||
if (d != null) | ||||
d.Dispose(); | ||||
} | ||||
} | ||||
cin
|
r215 | public static void DisposeCollection(IEnumerable<IDisposable> objects) { | ||
cin
|
r207 | foreach (var d in objects) | ||
cin
|
r215 | Dispose(d); | ||
} | ||||
public static void DisposeCollection(IEnumerable objects) { | ||||
foreach (var d in objects) | ||||
Dispose(d); | ||||
cin
|
r207 | } | ||
cin
|
r128 | public static void Dispose(object obj) { | ||
cin
|
r238 | if (obj is IDisposable) | ||
cin
|
r215 | Dispose((IDisposable)obj); | ||
cin
|
r238 | |||
cin
|
r128 | } | ||
cin
|
r215 | [DebuggerStepThrough] | ||
cin
|
r207 | public static void DispatchEvent<T>(this EventHandler<T> handler, object sender, T args) { | ||
if (handler != null) | ||||
handler(sender, args); | ||||
} | ||||
cin
|
r215 | [DebuggerStepThrough] | ||
cin
|
r207 | public static void DispatchEvent(this EventHandler handler, object sender, EventArgs args) { | ||
if (handler != null) | ||||
handler(sender, args); | ||||
} | ||||
cin
|
r66 | [DebuggerStepThrough] | ||
cin
|
r203 | public static IPromise<T> Run<T>(Func<T> action) { | ||
cin
|
r131 | ArgumentNotNull(action, "action"); | ||
try { | ||||
cin
|
r248 | return Promise.Resolve(action()); | ||
cin
|
r131 | } catch (Exception err) { | ||
cin
|
r248 | return Promise.Reject<T>(err); | ||
cin
|
r131 | } | ||
} | ||||
[DebuggerStepThrough] | ||||
cin
|
r203 | public static IPromise Run(Action action) { | ||
ArgumentNotNull(action, "action"); | ||||
try { | ||||
action(); | ||||
cin
|
r248 | return Promise.Resolve(); | ||
cin
|
r203 | } catch (Exception err) { | ||
cin
|
r248 | return Promise.Reject(err); | ||
cin
|
r203 | } | ||
} | ||||
[DebuggerStepThrough] | ||||
public static IPromise Run(Func<IPromise> action) { | ||||
ArgumentNotNull(action, "action"); | ||||
try { | ||||
cin
|
r248 | return action() ?? Promise.Reject(new Exception("The action returned null")); | ||
cin
|
r203 | } catch (Exception err) { | ||
cin
|
r248 | return Promise.Reject(err); | ||
cin
|
r203 | } | ||
} | ||||
cin
|
r213 | public static void NoWait(IPromise promise) { | ||
} | ||||
cin
|
r251 | public static void NoWait(Task promise) { | ||
} | ||||
public static void NoWait<T>(Task<T> promise) { | ||||
} | ||||
cin
|
r259 | public static void Noop() { | ||
} | ||||
public static void Noop(CancellationToken ct) { | ||||
ct.ThrowIfCancellationRequested(); | ||||
} | ||||
public static Task CreateTask() { | ||||
return new Task(Noop); | ||||
} | ||||
public static Task CreateTask(CancellationToken ct) { | ||||
return new Task(Noop, ct); | ||||
} | ||||
cin
|
r203 | [DebuggerStepThrough] | ||
public static IPromise<T> Run<T>(Func<IPromise<T>> action) { | ||||
cin
|
r66 | ArgumentNotNull(action, "action"); | ||
try { | ||||
cin
|
r248 | return action() ?? Promise.Reject<T>(new Exception("The action returned null")); | ||
cin
|
r66 | } catch (Exception err) { | ||
cin
|
r248 | return Promise.Reject<T>(err); | ||
cin
|
r66 | } | ||
} | ||||
cin
|
r209 | |||
cin
|
r1 | } | ||
} | ||||