sharplib/imm/iu.cs
Marc Hernandez d750b2eed5 Fixes
x) Make time cleaner
x) remove unsued code
2024-05-21 18:08:43 -07:00

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;
}
}