58 lines
1.6 KiB
C#
58 lines
1.6 KiB
C#
|
|
// A spot for immutable helpers
|
|
|
|
// TODO
|
|
// TODO
|
|
// TODO
|
|
// x) Wrap metadata into its own struct
|
|
// x) Make metadata a struct vs a class
|
|
|
|
using imm;
|
|
using System;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
|
|
static public class iu
|
|
{
|
|
//This can handle both Timed and Recorded
|
|
static public T Process<T>( ref T obj, Func<T, T> fn,
|
|
string reason = "",
|
|
[CallerMemberName] string dbgName = "",
|
|
[CallerFilePath] string dbgPath = "",
|
|
[CallerLineNumber] int dbgLine = 0,
|
|
[CallerArgumentExpression("fn")]
|
|
string dbgExpression = default )
|
|
where T : Recorded<T>, Imm
|
|
{
|
|
obj = obj.Process( fn, reason, dbgName, dbgPath, dbgLine, dbgExpression );
|
|
return obj;
|
|
}
|
|
|
|
static public Timed<T> Process<T>( ref Timed<T> obj, Func<T, T> fn,
|
|
string reason = "",
|
|
[CallerMemberName] string dbgName = "",
|
|
[CallerFilePath] string dbgPath = "",
|
|
[CallerLineNumber] int dbgLine = 0,
|
|
[CallerArgumentExpression("fn")]
|
|
string dbgExpression = default )
|
|
where T : Timed<T>, Imm
|
|
{
|
|
obj = obj.Process( fn, reason, dbgName, dbgPath, dbgLine, dbgExpression );
|
|
return obj;
|
|
}
|
|
|
|
|
|
static public T LightProcess<T>( ref T obj, Func<T, T> fn,
|
|
string reason = "",
|
|
[CallerMemberName] string dbgName = "",
|
|
[CallerFilePath] string dbgPath = "",
|
|
[CallerLineNumber] int dbgLine = 0,
|
|
[CallerArgumentExpression("fn")]
|
|
string dbgExpression = default )
|
|
where T : Versioned<T>, Imm
|
|
{
|
|
obj = obj.Process( fn, reason );
|
|
return obj;
|
|
}
|
|
}
|