Skip to content
Snippets Groups Projects
Commit 8403a0d2 authored by MaZiFAU's avatar MaZiFAU
Browse files

Refactor;

Refacto:
+OMA.arguments List => Array
+Added SOMDoc.MaekTupel()
parent 26906743
Branches
No related tags found
No related merge requests found
...@@ -122,7 +122,7 @@ IEnumerator getScrollsfromServer() ...@@ -122,7 +122,7 @@ IEnumerator getScrollsfromServer()
AvailableScrolls = JsonConvert.DeserializeObject<List<REST_JSON_API.Scroll>>(jsonString); AvailableScrolls = JsonConvert.DeserializeObject<List<REST_JSON_API.Scroll>>(jsonString);
Debug.Log( Debug.Log(
$"Scroll Times:\n" + $"Scroll Times:\n" +
$"Sum\t{(System.DateTime.UtcNow - requestTime).TotalMilliseconds}ms\n" + $"Summ\t{(System.DateTime.UtcNow - requestTime).TotalMilliseconds}ms\n" +
$"Server\t{(answerTime - requestTime).TotalMilliseconds}ms\n" + $"Server\t{(answerTime - requestTime).TotalMilliseconds}ms\n" +
$"Download\t{(parseTime - answerTime).TotalMilliseconds}ms\n" + $"Download\t{(parseTime - answerTime).TotalMilliseconds}ms\n" +
$"Parsing\t{(System.DateTime.UtcNow - parseTime).TotalMilliseconds}ms"); $"Parsing\t{(System.DateTime.UtcNow - parseTime).TotalMilliseconds}ms");
......
...@@ -154,7 +154,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -154,7 +154,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc lhs = SOMDoc lhs =
new OMA( new OMA(
new OMS(MMT_OMS_URI.Angle), new OMS(MMT_OMS_URI.Angle),
new List<SOMDoc> { new[] {
new OMS(Pid1), new OMS(Pid1),
new OMS(Pid2), new OMS(Pid2),
new OMS(Pid3) new OMS(Pid3)
...@@ -246,10 +246,10 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -246,10 +246,10 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc tp = SOMDoc tp =
new OMA( new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc> { new[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.RightAngle), new OMS(MMT_OMS_URI.RightAngle),
new List<SOMDoc> { new[] {
new OMS(Pid1), new OMS(Pid1),
new OMS(Pid2), new OMS(Pid2),
new OMS(Pid3), new OMS(Pid3),
...@@ -257,7 +257,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -257,7 +257,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc df = null; SOMDoc df = null;
return new MMTSymbolDeclaration(this.Label, tp, df); return new MMTSymbolDeclaration(Label, tp, df);
} }
/// \copydoc Fact.parseFact(ScrollFact) /// \copydoc Fact.parseFact(ScrollFact)
......
...@@ -142,7 +142,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -142,7 +142,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc lhs = SOMDoc lhs =
new OMA( new OMA(
new OMS(MMT_OMS_URI.Metric), new OMS(MMT_OMS_URI.Metric),
new List<SOMDoc> { new[] {
new OMS(Pid1), new OMS(Pid1),
new OMS(Pid2) new OMS(Pid2)
} }
...@@ -207,7 +207,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -207,7 +207,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc defines = SOMDoc defines =
new OMA( new OMA(
new OMS(MMT_OMS_URI.LineOf), new OMS(MMT_OMS_URI.LineOf),
new List<SOMDoc> { new[] {
new OMS(Pid1), new OMS(Pid1),
new OMS(Pid2) new OMS(Pid2)
}); });
......
...@@ -616,7 +616,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -616,7 +616,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc tp = new OMS(MMT_OMS_URI.Point); SOMDoc tp = new OMS(MMT_OMS_URI.Point);
SOMDoc df = new OMA( SOMDoc df = new OMA(
new OMS(MMT_OMS_URI.Tuple), new OMS(MMT_OMS_URI.Tuple),
new List<SOMDoc> { new[] {
new OMF(Point.x), new OMF(Point.x),
new OMF(Point.y), new OMF(Point.y),
new OMF(Point.z), new OMF(Point.z),
...@@ -737,10 +737,10 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -737,10 +737,10 @@ public override MMTDeclaration MakeMMTDeclaration()
{ {
SOMDoc tp = new OMA( SOMDoc tp = new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc> { new[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.OnLine), new OMS(MMT_OMS_URI.OnLine),
new List<SOMDoc> { new[] {
new OMS(Rid), new OMS(Rid),
new OMS(Pid) new OMS(Pid)
}),}); }),});
...@@ -832,10 +832,10 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -832,10 +832,10 @@ public override MMTDeclaration MakeMMTDeclaration()
{ {
SOMDoc tp = new OMA( SOMDoc tp = new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc> { new[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.ParallelLine), new OMS(MMT_OMS_URI.ParallelLine),
new List<SOMDoc> { new[] {
new OMS(Lid1), new OMS(Lid1),
new OMS(Lid2), new OMS(Lid2),
} }
...@@ -1002,14 +1002,14 @@ protected override string generateLabel() ...@@ -1002,14 +1002,14 @@ protected override string generateLabel()
/// <returns>struct for <see cref="AddFactResponse"/></returns> /// <returns>struct for <see cref="AddFactResponse"/></returns>
public override MMTDeclaration MakeMMTDeclaration() public override MMTDeclaration MakeMMTDeclaration()
{ {
List<SOMDoc> outerArguments = new List<SOMDoc> SOMDoc[] outerArguments = new SOMDoc[]
{ {
//CirclePlane, //CirclePlane,
new OMA( new OMA(
//PointNormalPlane, //PointNormalPlane,
new OMS(MMT_OMS_URI.pointNormalPlane), new OMS(MMT_OMS_URI.pointNormalPlane),
//planeArgs, //planeArgs,
new List<SOMDoc> { new SOMDoc[] {
//base point of the circle plane?, //base point of the circle plane?,
new OMS(Pid2), new OMS(Pid2),
//NormalVector, //NormalVector,
...@@ -1017,7 +1017,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1017,7 +1017,7 @@ public override MMTDeclaration MakeMMTDeclaration()
//"Vector" //"Vector"
new OMS(MMT_OMS_URI.Tuple), new OMS(MMT_OMS_URI.Tuple),
//normalArgs, //normalArgs,
new List<SOMDoc> { new[] {
new OMF(normal.x), new OMF(normal.x),
new OMF(normal.y), new OMF(normal.y),
new OMF(normal.z) new OMF(normal.z)
...@@ -1152,10 +1152,10 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1152,10 +1152,10 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc tp = SOMDoc tp =
new OMA( new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc> { new[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.OnCircle), new OMS(MMT_OMS_URI.OnCircle),
new List<SOMDoc> { new[] {
new OMS(Cid), new OMS(Cid),
new OMS(Pid), new OMS(Pid),
}),}); }),});
...@@ -1290,7 +1290,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1290,7 +1290,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc lhs = SOMDoc lhs =
new OMA( new OMA(
new OMS(MMT_OMS_URI.AnglePlaneLine), new OMS(MMT_OMS_URI.AnglePlaneLine),
new List<SOMDoc> { new[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Rid2), new OMS(Rid2),
} }
...@@ -1398,7 +1398,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1398,7 +1398,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc lhs = SOMDoc lhs =
new OMA( new OMA(
new OMS(MMT_OMS_URI.RadiusCircleMetric), new OMS(MMT_OMS_URI.RadiusCircleMetric),
new List<SOMDoc> { new[] {
new OMS(Cid1), new OMS(Cid1),
} }
); );
...@@ -1501,7 +1501,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1501,7 +1501,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc lhs = SOMDoc lhs =
new OMA( new OMA(
new OMS(MMT_OMS_URI.AreaCircle), new OMS(MMT_OMS_URI.AreaCircle),
new List<SOMDoc> { new[] {
new OMS(Cid1), new OMS(Cid1),
} }
); );
...@@ -1628,9 +1628,9 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1628,9 +1628,9 @@ public override MMTDeclaration MakeMMTDeclaration()
new OMA( new OMA(
new OMS(MMT_OMS_URI.VolumeCone), new OMS(MMT_OMS_URI.VolumeCone),
new List<SOMDoc> { new[] {
new OMA(new OMS(MMT_OMS_URI.ConeOfCircleApex), new OMA(new OMS(MMT_OMS_URI.ConeOfCircleApex),
new List<SOMDoc> { new[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Pid1), new OMS(Pid1),
} }
...@@ -1762,10 +1762,10 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1762,10 +1762,10 @@ public override MMTDeclaration MakeMMTDeclaration()
{ {
SOMDoc tp = new OMA( SOMDoc tp = new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc>{ new[]{
new OMA( new OMA(
new OMS(MMT_OMS_URI.OrthoCircleLine), new OMS(MMT_OMS_URI.OrthoCircleLine),
new List<SOMDoc>{ new[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Lid1), new OMS(Lid1),
} }
...@@ -1899,7 +1899,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -1899,7 +1899,7 @@ public override MMTDeclaration MakeMMTDeclaration()
SOMDoc lhs = SOMDoc lhs =
new OMA( new OMA(
new OMS(MMT_OMS_URI.TruncatedVolumeCone), new OMS(MMT_OMS_URI.TruncatedVolumeCone),
new List<SOMDoc> { new SOMDoc[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Cid2), new OMS(Cid2),
new OMS(unequalCirclesProof), new OMS(unequalCirclesProof),
...@@ -2034,7 +2034,7 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -2034,7 +2034,7 @@ public override MMTDeclaration MakeMMTDeclaration()
new OMA( new OMA(
new OMS(MMT_OMS_URI.CylinderVolume), new OMS(MMT_OMS_URI.CylinderVolume),
new List<SOMDoc> { new SOMDoc[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Cid2), new OMS(Cid2),
new OMS(equalCirclesProof), new OMS(equalCirclesProof),
...@@ -2149,10 +2149,10 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -2149,10 +2149,10 @@ public override MMTDeclaration MakeMMTDeclaration()
{ {
SOMDoc tp = new OMA( SOMDoc tp = new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc> { new[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.EqualityCircles), new OMS(MMT_OMS_URI.EqualityCircles),
new List<SOMDoc> { new[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Cid2), new OMS(Cid2),
} }
...@@ -2266,9 +2266,9 @@ public override MMTDeclaration MakeMMTDeclaration() ...@@ -2266,9 +2266,9 @@ public override MMTDeclaration MakeMMTDeclaration()
{ {
SOMDoc tp = new OMA( SOMDoc tp = new OMA(
new OMS(MMT_OMS_URI.Ded), new OMS(MMT_OMS_URI.Ded),
new List<SOMDoc> { new[] {
new OMA(new OMS(MMT_OMS_URI.UnEqualityCircles), new OMA(new OMS(MMT_OMS_URI.UnEqualityCircles),
new List<SOMDoc> { new[] {
new OMS(Cid1), new OMS(Cid1),
new OMS(Cid2), new OMS(Cid2),
}),}); }),});
...@@ -2369,7 +2369,7 @@ public static List<string> parseFactList(MMTDeclaration decl, out string typeURI ...@@ -2369,7 +2369,7 @@ public static List<string> parseFactList(MMTDeclaration decl, out string typeURI
if (next_element is not OMA current_element) if (next_element is not OMA current_element)
return ret; return ret;
switch (current_element.arguments.Count) switch (current_element.arguments.Length)
{ {
case 2: case 2:
if (current_element.arguments[1] is not OMS oMS) if (current_element.arguments[1] is not OMS oMS)
...@@ -2399,7 +2399,7 @@ public static List<T> parseFactList<T>(MMTDeclaration decl) ...@@ -2399,7 +2399,7 @@ public static List<T> parseFactList<T>(MMTDeclaration decl)
if (next_element is not OMA current_element) if (next_element is not OMA current_element)
return ret; return ret;
switch (current_element.arguments.Count) switch (current_element.arguments.Length)
{ {
case 2: case 2:
ret.Add((current_element.arguments[1].GetLambdaExpression().Compile() as Func<T>)()); ret.Add((current_element.arguments[1].GetLambdaExpression().Compile() as Func<T>)());
......
...@@ -263,6 +263,12 @@ protected AttachedPositionFunction(string fid, string[] funcids, string uri, Fac ...@@ -263,6 +263,12 @@ protected AttachedPositionFunction(string fid, string[] funcids, string uri, Fac
return new AttachedPositionFunction(default, default(string[]), fact.@ref.uri, StageStatic.stage.factState); return new AttachedPositionFunction(default, default(string[]), fact.@ref.uri, StageStatic.stage.factState);
} }
public override MMTDeclaration MakeMMTDeclaration()
{
//SOMDoc[] defines ??
//SOMDoc type = new OMS(MMT_OMS_URI.Tuple);
throw new NotImplementedException();
}
public override bool HasDependentFacts public override bool HasDependentFacts
=> true; => true;
...@@ -287,9 +293,4 @@ protected override void RecalculateTransform() ...@@ -287,9 +293,4 @@ protected override void RecalculateTransform()
protected override Fact _ReInitializeMe(Dictionary<string, string> old_to_new, FactOrganizer organizer) protected override Fact _ReInitializeMe(Dictionary<string, string> old_to_new, FactOrganizer organizer)
// => new AttachedPositionFunction(old_to_new[this.fid], old_to_new[func_calls_list_id], organizer); // => new AttachedPositionFunction(old_to_new[this.fid], old_to_new[func_calls_list_id], organizer);
=> new AttachedPositionFunction(old_to_new[this.fid], this.func_calls_ids.Select(id => old_to_new[id]).ToArray(), organizer); => new AttachedPositionFunction(old_to_new[this.fid], this.func_calls_ids.Select(id => old_to_new[id]).ToArray(), organizer);
public override MMTDeclaration MakeMMTDeclaration()
{
throw new NotImplementedException();
}
} }
...@@ -58,29 +58,29 @@ SOMDoc BuildOMA_XVA() ...@@ -58,29 +58,29 @@ SOMDoc BuildOMA_XVA()
new OMBINDC("t", "R", new OMBINDC("t", "R",
new OMA( new OMA(
new OMS(MMT_OMS_URI.Add), new OMS(MMT_OMS_URI.Add),
new() { new SOMDoc[] {
new OMV("Pos"), new OMV("Pos"),
new OMA( new OMA(
new OMS(MMT_OMS_URI.Add), new OMS(MMT_OMS_URI.Add),
new() { new[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.Multiply), new OMS(MMT_OMS_URI.Multiply),
new() { new[] {
new OMV("Vel"), new OMV("Vel"),
new OMV("t"), new OMV("t"),
} }
), ),
new OMA( new OMA(
new OMS(MMT_OMS_URI.Multiply), new OMS(MMT_OMS_URI.Multiply),
new() { new SOMDoc[] {
new OMF(0.5f), new OMF(0.5f),
new OMA( new OMA(
new OMS(MMT_OMS_URI.Multiply), new OMS(MMT_OMS_URI.Multiply),
new() { new SOMDoc[] {
new OMV("Acc"), new OMV("Acc"),
new OMA( new OMA(
new OMS(MMT_OMS_URI.Multiply), new OMS(MMT_OMS_URI.Multiply),
new() { new[] {
new OMV("t"), new OMV("t"),
new OMV("t"), new OMV("t"),
}),}),}),}),}))))); }),}),}),}),})))));
...@@ -91,10 +91,10 @@ SOMDoc BuildOMAPath(Vector3 Pos, Vector3 Vel) ...@@ -91,10 +91,10 @@ SOMDoc BuildOMAPath(Vector3 Pos, Vector3 Vel)
return new OMBINDC("t", "R", return new OMBINDC("t", "R",
new OMA( new OMA(
new OMS(MMT_OMS_URI.MakeObjectArray), new OMS(MMT_OMS_URI.MakeObjectArray),
new() { new SOMDoc[] {
SOMDoc.MakeUnityEngineVector3(Pos), SOMDoc.MakeTupel(Pos),
SOMDoc.MakeUnityEngineVector3(Vel), SOMDoc.MakeTupel(Vel),
SOMDoc.MakeUnityEngineVector3(Gravity), SOMDoc.MakeTupel(Gravity),
new OMV("t"), new OMV("t"),
} }
)); ));
......
...@@ -195,9 +195,9 @@ public static class SOMDoctoLambdaExpression<T> ...@@ -195,9 +195,9 @@ public static class SOMDoctoLambdaExpression<T>
{ MMT_OMS_URI.SquareRoot, { MMT_OMS_URI.SquareRoot,
MakeCos }, MakeCos },
{ MMT_OMS_URI.Tuple, { MMT_OMS_URI.Tuple,
MakeUnityEngineVector3 }, MakeTupel },
{ MMT_OMS_URI.MakeObjectArray, { MMT_OMS_URI.MakeObjectArray,
MakeArray }, MakeObjArray },
{ "InstantList", { "InstantList",
MakeInstantList }, MakeInstantList },
{ MMT_OMS_URI.ListEnd, { MMT_OMS_URI.ListEnd,
...@@ -334,7 +334,7 @@ void ThrowArgumentException(ExpressionType expression_cast, int expected) ...@@ -334,7 +334,7 @@ void ThrowArgumentException(ExpressionType expression_cast, int expected)
ParameterExpression[] lambda_params = ParameterExpression[] lambda_params =
lambda_applicant lambda_applicant
.SelectMany(l => l.Parameters) .SelectMany(l => l.Parameters)
.ToArray(); //PERF: .ToList().Sort() => .BinarySearch; .ToArray(); //PERF: .ToList().Sort() => .BinarySearch; //Too much overhead?
ParameterExpression[] found_bound_params = ParameterExpression[] found_bound_params =
bound_params bound_params
.Where(p => lambda_params.Contains(p)) .Where(p => lambda_params.Contains(p))
...@@ -379,33 +379,36 @@ private static LambdaExpression ParseFuncUUToExpression<U>(Func<U, U> func) ...@@ -379,33 +379,36 @@ private static LambdaExpression ParseFuncUUToExpression<U>(Func<U, U> func)
private static LambdaExpression MakeSin(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params) private static LambdaExpression MakeSin(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params)
=> ExpresionFuncToLambda( => ExpresionFuncToLambda(
default(T) switch // TODO? cleaner switch lambda_applicant[0].ReturnType == typeof(float) ? ParseFuncUUToExpression<float>(MathF.Sin)
{ : lambda_applicant[0].ReturnType == typeof(double) ? ParseFuncUUToExpression<double>(Math.Sin)
float => ParseFuncUUToExpression<float>(MathF.Sin), : throw new NotImplementedException("Sinus for " + lambda_applicant[0].ReturnType),
double => ParseFuncUUToExpression<double>(Math.Sin),
_ => throw new NotImplementedException("Sinus for " + nameof(T) + "=" + typeof(T)) "Sin", lambda_arguments.Length > 0 ? lambda_arguments : lambda_applicant, bound_params, 1
},
"Sin", lambda_applicant, bound_params, 1
); );
private static LambdaExpression MakeCos(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params) private static LambdaExpression MakeCos(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params)
=> ExpresionFuncToLambda( => ExpresionFuncToLambda(
default(T) switch // TODO? cleaner switch lambda_applicant[0].ReturnType == typeof(float) ? ParseFuncUUToExpression<float>(MathF.Cos)
{ : lambda_applicant[0].ReturnType == typeof(double) ? ParseFuncUUToExpression<double>(Math.Cos)
float => ParseFuncUUToExpression<float>(MathF.Cos), : throw new NotImplementedException("Cosinus for " + lambda_applicant[0].ReturnType),
double => ParseFuncUUToExpression<double>(Math.Cos),
_ => throw new NotImplementedException("Cosinus for " + nameof(T) + "=" + typeof(T)) "Cos", lambda_arguments.Length > 0 ? lambda_arguments : lambda_applicant, bound_params, 1
},
"Cos", lambda_applicant, bound_params, 1
); );
private static LambdaExpression MakeUnityEngineVector3(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params) private static LambdaExpression MakeTupel(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params)
=> ExpresionFuncToLambda( {
if (lambda_applicant.Length == 3
&& lambda_applicant.All(l => l.ReturnType == typeof(float)))
return ExpresionFuncToLambda(
(Expression<Func<float, float, float, Vector3>>)((x, y, z) => new Vector3(x, y, z)), (Expression<Func<float, float, float, Vector3>>)((x, y, z) => new Vector3(x, y, z)),
"UnityEngineVector3", lambda_applicant, bound_params, 3 "UnityEngineVector3", lambda_applicant, bound_params, 3
); );
private static LambdaExpression MakeArray(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params) return MakeObjArray(lambda_applicant, lambda_arguments, bound_params);
}
private static LambdaExpression MakeObjArray(LambdaExpression[] lambda_applicant, LambdaExpression[] lambda_arguments, ParameterExpression[] bound_params)
=> Expression.Lambda( => Expression.Lambda(
Expression.NewArrayInit( Expression.NewArrayInit(
typeof(object), typeof(object),
...@@ -526,14 +529,17 @@ public LambdaExpression GetLambdaExpression() ...@@ -526,14 +529,17 @@ public LambdaExpression GetLambdaExpression()
public abstract SOMDoc MapURIs(Dictionary<string, string> old_to_new); public abstract SOMDoc MapURIs(Dictionary<string, string> old_to_new);
#region MakeMMT_OMS_URItoSOMDoc #region MakeMMT_OMS_URItoSOMDoc
public static OMA MakeUnityEngineVector3(Vector3 vec) public static OMA MakeTupel(Vector3 vec)
=> new OMA( => MakeTupel(new[] {
new OMS(MMT_OMS_URI.Tuple),
new() {
new OMF(vec.x), new OMF(vec.x),
new OMF(vec.y), new OMF(vec.y),
new OMF(vec.z), new OMF(vec.z),
} });
public static OMA MakeTupel(SOMDoc[] args)
=> new(
new OMS(MMT_OMS_URI.Tuple),
args
); );
public static OMA MakeList(string[] lids, Type type) public static OMA MakeList(string[] lids, Type type)
...@@ -541,15 +547,20 @@ public static OMA MakeList(string[] lids, Type type) ...@@ -541,15 +547,20 @@ public static OMA MakeList(string[] lids, Type type)
public static OMA MakeList(string[] lids, string typeURI) public static OMA MakeList(string[] lids, string typeURI)
{ {
List<SOMDoc> end_of_list = new() { SOMDoc[] end_of_list = new SOMDoc[] {
new OMA( new OMA(
new OMS(MMT_OMS_URI.ListEnd), new OMS(MMT_OMS_URI.ListEnd),
new() { new[] {
new OMS(typeURI), new OMS(typeURI),
}),}; }
),
lids.Length == 0
? null
: new OMS(lids[^1])
};
if (lids.Length > 0) if (lids.Length == 0)
end_of_list.Add(new OMS(lids[^1])); end_of_list = end_of_list[..^1];
SOMDoc defines = new OMA( SOMDoc defines = new OMA(
new OMS(MMT_OMS_URI.ListLiteral), new OMS(MMT_OMS_URI.ListLiteral),
...@@ -560,7 +571,7 @@ public static OMA MakeList(string[] lids, string typeURI) ...@@ -560,7 +571,7 @@ public static OMA MakeList(string[] lids, string typeURI)
{ {
defines = new OMA( defines = new OMA(
new OMS(MMT_OMS_URI.ListLiteral), new OMS(MMT_OMS_URI.ListLiteral),
new() { new[] {
defines, defines,
new OMS(lids[i]), new OMS(lids[i]),
}); });
...@@ -568,10 +579,10 @@ public static OMA MakeList(string[] lids, string typeURI) ...@@ -568,10 +579,10 @@ public static OMA MakeList(string[] lids, string typeURI)
SOMDoc type = new OMA( SOMDoc type = new OMA(
new OMS(MMT_OMS_URI.ListType), new OMS(MMT_OMS_URI.ListType),
new() { new OMS(typeURI), } new[] { new OMS(typeURI), }
); );
return new OMA(type, new() { defines }); return new OMA(type, new[] { defines });
} }
#endregion MakeMMT_OMS_URItoSOMDoc #endregion MakeMMT_OMS_URItoSOMDoc
} }
...@@ -651,10 +662,10 @@ public class OMA : SOMDocCRTP<OMA> ...@@ -651,10 +662,10 @@ public class OMA : SOMDocCRTP<OMA>
public new string kind = "OMA"; public new string kind = "OMA";
public SOMDoc applicant; public SOMDoc applicant;
public List<SOMDoc> arguments; public SOMDoc[] arguments;
[JsonConstructor] [JsonConstructor]
public OMA(SOMDoc applicant, List<SOMDoc> arguments) : base() public OMA(SOMDoc applicant, SOMDoc[] arguments) : base()
{ {
this.applicant = applicant; this.applicant = applicant;
this.arguments = arguments; this.arguments = arguments;
...@@ -679,11 +690,11 @@ public override string ToString() ...@@ -679,11 +690,11 @@ public override string ToString()
public override OMA MapURIsWrapped(Dictionary<string, string> old_to_new) public override OMA MapURIsWrapped(Dictionary<string, string> old_to_new)
=> new OMA( => new OMA(
applicant.MapURIs(old_to_new), applicant.MapURIs(old_to_new),
arguments.Select(arg => arg.MapURIs(old_to_new)).ToList() arguments.Select(arg => arg.MapURIs(old_to_new)).ToArray()
); );
} }
public class OMS : SOMDocCRTP<OMS> //OMSTR? public class OMS : SOMDocCRTP<OMS>
{ {
public new string kind = "OMS"; public new string kind = "OMS";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment