pass Oms and OmsContext to system routines, and add Common Numeric@get Random Number(GAS)*S(public)
This commit is contained in:
parent
00abda4138
commit
51bd45bfad
@ -43,6 +43,7 @@ namespace Mocha.Core
|
|||||||
}
|
}
|
||||||
public static class Numeric
|
public static class Numeric
|
||||||
{
|
{
|
||||||
|
public static Guid Seed { get; } = new Guid("{ee6f8b91-e471-4281-8bbe-ad858388bcc2}");
|
||||||
public static Guid Index { get; } = new Guid("{0f31b9ca-e3e2-4c62-8c9e-b55f16eafbf9}");
|
public static Guid Index { get; } = new Guid("{0f31b9ca-e3e2-4c62-8c9e-b55f16eafbf9}");
|
||||||
public static Guid Level { get; } = new Guid("{8C528FB0-4063-47B0-BC56-85E387A41BD2}");
|
public static Guid Level { get; } = new Guid("{8C528FB0-4063-47B0-BC56-85E387A41BD2}");
|
||||||
public static Guid DebugDefinitionLineNumber { get; } = new Guid("{822be9b7-531d-4aa1-818a-6e4de1609057}");
|
public static Guid DebugDefinitionLineNumber { get; } = new Guid("{822be9b7-531d-4aa1-818a-6e4de1609057}");
|
||||||
@ -53,6 +54,7 @@ namespace Mocha.Core
|
|||||||
|
|
||||||
public static Guid MinimumValue { get; } = new Guid("{bc90ffdf-9b6e-444a-a484-f9d06d7f3c31}");
|
public static Guid MinimumValue { get; } = new Guid("{bc90ffdf-9b6e-444a-a484-f9d06d7f3c31}");
|
||||||
public static Guid MaximumValue { get; } = new Guid("{b9353b1c-2597-4097-96eb-449a6fafcdab}");
|
public static Guid MaximumValue { get; } = new Guid("{b9353b1c-2597-4097-96eb-449a6fafcdab}");
|
||||||
|
public static Guid RandomNumber { get; } = new Guid("{1e18b839-5a53-495e-a240-8ec03b6b9c0d}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -139,8 +139,11 @@ namespace Mocha.Core
|
|||||||
|
|
||||||
public static Guid Theme { get; } = new Guid("{7c2cc4b5-8323-4478-863b-1759d7adf62e}");
|
public static Guid Theme { get; } = new Guid("{7c2cc4b5-8323-4478-863b-1759d7adf62e}");
|
||||||
|
|
||||||
|
public static Guid CommonText { get; } = new Guid("{a48a5fb2-f80c-47f9-bc47-7adef34d061b}");
|
||||||
public static Guid CommonBoolean { get; } = new Guid("{5b025da3-b7bd-45a9-b084-48c4a922bf72}");
|
public static Guid CommonBoolean { get; } = new Guid("{5b025da3-b7bd-45a9-b084-48c4a922bf72}");
|
||||||
|
public static Guid CommonNumeric { get; } = new Guid("{553c196e-0439-4be9-b8fb-4dee6f0530fd}");
|
||||||
public static Guid CommonInstanceSet { get; } = new Guid("{3382da21-4fc5-45dc-bbd1-f7ba3ece1a1b}");
|
public static Guid CommonInstanceSet { get; } = new Guid("{3382da21-4fc5-45dc-bbd1-f7ba3ece1a1b}");
|
||||||
|
public static Guid CommonDate { get; } = new Guid("{cb077f5b-f58d-4f6a-aa01-659bea754b6e}");
|
||||||
|
|
||||||
public static Guid BooleanOperator { get; } = new Guid("{fb85933c-e2ad-4b1c-ac2a-f92c9cc57e1c}");
|
public static Guid BooleanOperator { get; } = new Guid("{fb85933c-e2ad-4b1c-ac2a-f92c9cc57e1c}");
|
||||||
public static Guid RelationalOperator { get; } = new Guid("{f1b5d26f-2347-49cb-8aae-d80dd706fce2}");
|
public static Guid RelationalOperator { get; } = new Guid("{f1b5d26f-2347-49cb-8aae-d80dd706fce2}");
|
||||||
@ -168,6 +171,11 @@ namespace Mocha.Core
|
|||||||
public static Guid Method__get__Method_Abbreviation { get; } = new Guid("{f0c64709-385d-481b-8f58-83e507fb261c}");
|
public static Guid Method__get__Method_Abbreviation { get; } = new Guid("{f0c64709-385d-481b-8f58-83e507fb261c}");
|
||||||
public static Guid Method_Binding__get__Method_Binding_Abbreviation { get; } = new Guid("{7154cb08-0f80-4af4-bca5-c2c12e54479a}");
|
public static Guid Method_Binding__get__Method_Binding_Abbreviation { get; } = new Guid("{7154cb08-0f80-4af4-bca5-c2c12e54479a}");
|
||||||
}
|
}
|
||||||
|
public static class GetAttributeBySystemRoutine
|
||||||
|
{
|
||||||
|
public static Guid OMS__get__Runtime_Version { get; } = new Guid("{58835bd3-21e2-43bb-a069-7f8befe9bf5d}");
|
||||||
|
public static Guid Common_Numeric__get__Random_Number { get; } = new Guid("{84b8b8eb-a2a5-4f87-9e7e-237658fa1c1f}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[ExportEntities(Prefix = "IDC_", Suffix = null)]
|
[ExportEntities(Prefix = "IDC_", Suffix = null)]
|
||||||
@ -229,6 +237,7 @@ namespace Mocha.Core
|
|||||||
{
|
{
|
||||||
public static Guid GetRuntimeVersion { get; } = new Guid("{dc4e6c8d-936d-457f-90e9-af47e229b80c}");
|
public static Guid GetRuntimeVersion { get; } = new Guid("{dc4e6c8d-936d-457f-90e9-af47e229b80c}");
|
||||||
// public static Guid SystemInstanceSetRoutine { get; } = new Guid("{d17a6d27-da03-4b5d-9256-f67f978f403d}");
|
// public static Guid SystemInstanceSetRoutine { get; } = new Guid("{d17a6d27-da03-4b5d-9256-f67f978f403d}");
|
||||||
|
public static Guid GetRandomNumber { get; } = new Guid("{8f7945da-4cad-49cb-9838-85f3524a5adb}");
|
||||||
}
|
}
|
||||||
public static class SystemInstanceSetRoutines
|
public static class SystemInstanceSetRoutines
|
||||||
{
|
{
|
||||||
|
|||||||
@ -14,7 +14,7 @@ public class GetAttributeBySystemRoutineMethodImplementation : MethodImplementat
|
|||||||
throw new InvalidOperationException("no return Attribute specified for method");
|
throw new InvalidOperationException("no return Attribute specified for method");
|
||||||
}
|
}
|
||||||
|
|
||||||
object? value = oms.ExecuteSystemRoutine(usesSystemAttributeRoutine);
|
object? value = oms.ExecuteSystemRoutine(context, usesSystemAttributeRoutine);
|
||||||
context.SetWorkData(returnsAttribute, value);
|
context.SetWorkData(returnsAttribute, value);
|
||||||
return returnsAttribute;
|
return returnsAttribute;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -847,20 +847,12 @@ public abstract class Oms
|
|||||||
{
|
{
|
||||||
_systemRoutinesByInstance[handle] = routine;
|
_systemRoutinesByInstance[handle] = routine;
|
||||||
}
|
}
|
||||||
public object? ExecuteSystemRoutine(InstanceHandle handle)
|
|
||||||
|
internal object? ExecuteSystemRoutine(OmsContext context, InstanceHandle handle)
|
||||||
{
|
{
|
||||||
object? value = _systemRoutinesByInstance[handle].Execute();
|
object? value = _systemRoutinesByInstance[handle].Execute(this, context);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
public T ExecuteSystemRoutine<T>(InstanceHandle handle, T defaultValue = default(T))
|
|
||||||
{
|
|
||||||
object? value = ExecuteSystemRoutine(handle);
|
|
||||||
if (value is T)
|
|
||||||
{
|
|
||||||
return (T)value;
|
|
||||||
}
|
|
||||||
return defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Method GetMethod(InstanceHandle forClass, string verb, string name, AccessModifier? accessModifier = null, bool? is_static = null)
|
public Method GetMethod(InstanceHandle forClass, string verb, string name, AccessModifier? accessModifier = null, bool? is_static = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,6 +16,7 @@ public class MethodsModule : MiniOmsModule
|
|||||||
private InstanceHandle c_ParameterAssignment, c_Method, c_MethodBinding;
|
private InstanceHandle c_ParameterAssignment, c_Method, c_MethodBinding;
|
||||||
private InstanceHandle a_Name, a_Order, a_Singular, a_Verb, a_Static, a_UseAnyCondition, a_Value;
|
private InstanceHandle a_Name, a_Order, a_Singular, a_Verb, a_Static, a_UseAnyCondition, a_Value;
|
||||||
private InstanceHandle c_ReturnAttributeMethodBinding, c_ReturnInstanceSetMethodBinding;
|
private InstanceHandle c_ReturnAttributeMethodBinding, c_ReturnInstanceSetMethodBinding;
|
||||||
|
private InstanceHandle c_CommonText, c_CommonBoolean, c_CommonNumeric, c_CommonDate, c_CommonInstanceSet;
|
||||||
private InstanceHandle c_ConditionGroup;
|
private InstanceHandle c_ConditionGroup;
|
||||||
private InstanceHandle c_BuildAttributeMethod, c_GetAttributeMethod, c_GetSpecifiedInstancesMethod, c_GetAttributeBySystemRoutineMethod, c_AssignAttributeMethod, c_GetRelationshipMethod, c_GetReferencedAttributeMethod, c_SelectFromInstanceSetMethod, c_ConditionalSelectFromInstanceSetCase, c_ConditionalSelectFromInstanceSetMethod, c_ConditionalSelectAttributeMethod, c_ConditionalSelectAttributeCase, c_EvaluateBooleanExpressionMethod;
|
private InstanceHandle c_BuildAttributeMethod, c_GetAttributeMethod, c_GetSpecifiedInstancesMethod, c_GetAttributeBySystemRoutineMethod, c_AssignAttributeMethod, c_GetRelationshipMethod, c_GetReferencedAttributeMethod, c_SelectFromInstanceSetMethod, c_ConditionalSelectFromInstanceSetCase, c_ConditionalSelectFromInstanceSetMethod, c_ConditionalSelectAttributeMethod, c_ConditionalSelectAttributeCase, c_EvaluateBooleanExpressionMethod;
|
||||||
private InstanceHandle c_AccessModifier, i_AccessModifier_Private, i_AccessModifier_Protected, i_AccessModifier_Public, i_AccessModifier_RootA2;
|
private InstanceHandle c_AccessModifier, i_AccessModifier_Private, i_AccessModifier_Protected, i_AccessModifier_Public, i_AccessModifier_RootA2;
|
||||||
@ -187,6 +188,12 @@ public class MethodsModule : MiniOmsModule
|
|||||||
oms.CreateRelationship(c_EvaluateBooleanExpressionMethod, "has target", c_Instance, KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__has_target__Executable_returning_Work_Data, true, "target for", KnownRelationshipGuids.Executable_returning_Work_Data__target_for__Evaluate_Boolean_Expression_Method);
|
oms.CreateRelationship(c_EvaluateBooleanExpressionMethod, "has target", c_Instance, KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__has_target__Executable_returning_Work_Data, true, "target for", KnownRelationshipGuids.Executable_returning_Work_Data__target_for__Evaluate_Boolean_Expression_Method);
|
||||||
oms.AddSuperClass(c_EvaluateBooleanExpressionMethod, c_Method);
|
oms.AddSuperClass(c_EvaluateBooleanExpressionMethod, c_Method);
|
||||||
|
|
||||||
|
c_CommonText = oms.CreateClass("Common Text", KnownInstanceGuids.Classes.CommonText);
|
||||||
|
c_CommonBoolean = oms.CreateClass("Common Boolean", KnownInstanceGuids.Classes.CommonBoolean);
|
||||||
|
c_CommonNumeric = oms.CreateClass("Common Numeric", KnownInstanceGuids.Classes.CommonNumeric);
|
||||||
|
c_CommonDate = oms.CreateClass("Common Date", KnownInstanceGuids.Classes.CommonDate);
|
||||||
|
c_CommonInstanceSet = oms.CreateClass("Common Instance Set", KnownInstanceGuids.Classes.CommonInstanceSet);
|
||||||
|
|
||||||
oms.AddAttribute(c_Method, a_Name);
|
oms.AddAttribute(c_Method, a_Name);
|
||||||
oms.AddAttribute(c_Method, a_Verb);
|
oms.AddAttribute(c_Method, a_Verb);
|
||||||
oms.AddAttribute(c_Method, a_Static);
|
oms.AddAttribute(c_Method, a_Static);
|
||||||
@ -194,11 +201,26 @@ public class MethodsModule : MiniOmsModule
|
|||||||
c_OMS = oms.GetInstance(KnownInstanceGuids.Classes.OMS);
|
c_OMS = oms.GetInstance(KnownInstanceGuids.Classes.OMS);
|
||||||
OmsMethodBuilder mb = new OmsMethodBuilder(oms);
|
OmsMethodBuilder mb = new OmsMethodBuilder(oms);
|
||||||
OmsSystemRoutineBuilder srb = new OmsSystemRoutineBuilder(oms);
|
OmsSystemRoutineBuilder srb = new OmsSystemRoutineBuilder(oms);
|
||||||
SystemAttributeRoutine sr = srb.CreateSystemAttributeRoutine(KnownInstanceGuids.SystemAttributeRoutines.GetRuntimeVersion, new Func<object?>(delegate () { return oms.RuntimeVersion.ToString(); }));
|
SystemAttributeRoutine sr = srb.CreateSystemAttributeRoutine(KnownInstanceGuids.SystemAttributeRoutines.GetRuntimeVersion, new Func<Oms, OmsContext, object?>(delegate (Oms oms, OmsContext context) { return oms.RuntimeVersion.ToString(); }));
|
||||||
mb.CreateGetAttributeBySystemRoutineMethod(c_OMS, "get", "Runtime Version", null, true, oms.GetInstance(KnownAttributeGuids.Text.Value), sr);
|
mb.CreateGetAttributeBySystemRoutineMethod(c_OMS, "get", "Runtime Version", null, true, KnownInstanceGuids.Methods.GetAttributeBySystemRoutine.OMS__get__Runtime_Version, oms.GetInstance(KnownAttributeGuids.Text.Value), sr);
|
||||||
|
|
||||||
mb.CreateGetRelationshipMethod(c_Instance, "get", "Parent Class", AccessModifier.Public, false, KnownInstanceGuids.Methods.GetRelationship.Instance__get__Parent_Class, oms.GetInstance(KnownRelationshipGuids.Instance__for__Class));
|
mb.CreateGetRelationshipMethod(c_Instance, "get", "Parent Class", AccessModifier.Public, false, KnownInstanceGuids.Methods.GetRelationship.Instance__get__Parent_Class, oms.GetInstance(KnownRelationshipGuids.Instance__for__Class));
|
||||||
|
|
||||||
|
InstanceHandle a_Seed = oms.CreateInstanceOf(oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute), KnownAttributeGuids.Numeric.Seed);
|
||||||
|
oms.SetAttributeValue(a_Seed, a_Name, "Seed");
|
||||||
|
|
||||||
|
InstanceHandle a_RandomNumber = oms.CreateInstanceOf(oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute), KnownAttributeGuids.Numeric.RandomNumber);
|
||||||
|
mb.CreateGetAttributeBySystemRoutineMethod(c_CommonNumeric, "get", "Random Number", AccessModifier.Public, true, KnownInstanceGuids.Methods.GetAttributeBySystemRoutine.Common_Numeric__get__Random_Number, a_RandomNumber, srb.CreateSystemAttributeRoutine<decimal>(KnownInstanceGuids.SystemAttributeRoutines.GetRandomNumber, new Func<Oms, OmsContext, decimal>(delegate (Oms oms, OmsContext context)
|
||||||
|
{
|
||||||
|
object? seedO = context.GetWorkData(a_Seed);
|
||||||
|
if (seedO is decimal)
|
||||||
|
{
|
||||||
|
decimal seed = (decimal)seedO;
|
||||||
|
return (decimal)(new Random((int)seed)).NextDouble();
|
||||||
|
}
|
||||||
|
return (decimal)(new Random()).NextDouble();
|
||||||
|
})));
|
||||||
|
|
||||||
CreateGetMethodAbbreviation(oms);
|
CreateGetMethodAbbreviation(oms);
|
||||||
CreateGetMethodBindingAbbreviation(oms);
|
CreateGetMethodBindingAbbreviation(oms);
|
||||||
}
|
}
|
||||||
@ -214,21 +236,19 @@ public class MethodsModule : MiniOmsModule
|
|||||||
});
|
});
|
||||||
|
|
||||||
BuildAttributeMethod Method__get__SAC_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method, "get", "SAC Method Suffix", AccessModifier.Public, true, a_Value, "SAC");
|
BuildAttributeMethod Method__get__SAC_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method, "get", "SAC Method Suffix", AccessModifier.Public, true, a_Value, "SAC");
|
||||||
ReturnAttributeMethodBinding Method__get__SAC_Method_Suffix_ramb = Method__get__SAC_Method_Suffix.CreateMethodBinding(oms);
|
|
||||||
|
|
||||||
EvaluateBooleanExpressionMethod Method__is__Conditional_Select_Attribute_Method = mb.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "SAC", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.Handle, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.ConditionalSelectAttributeMethod));
|
EvaluateBooleanExpressionMethod Method__is__Conditional_Select_Attribute_Method = mb.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "SAC", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.Handle, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.ConditionalSelectAttributeMethod));
|
||||||
ReturnAttributeMethodBinding Method__is__Conditional_Select_Attribute_Method_ramb = Method__is__Conditional_Select_Attribute_Method.CreateMethodBinding(oms);
|
|
||||||
|
BuildAttributeMethod Method__get__GAS_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method, "get", "GAS Method Suffix", AccessModifier.Public, true, a_Value, "GAS");
|
||||||
|
EvaluateBooleanExpressionMethod Method__is__Get_Attribute_by_System_Routine_Method = mb.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "GAS", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.Handle, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod));
|
||||||
|
|
||||||
BuildAttributeMethod Method__get__GR_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method, "get", "GR Method Suffix", AccessModifier.Public, true, a_Value, "GR");
|
BuildAttributeMethod Method__get__GR_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method, "get", "GR Method Suffix", AccessModifier.Public, true, a_Value, "GR");
|
||||||
ReturnAttributeMethodBinding Method__get__GR_Method_Suffix_ramb = Method__get__GR_Method_Suffix.CreateMethodBinding(oms);
|
|
||||||
|
|
||||||
EvaluateBooleanExpressionMethod Method__is__Get_Relationship_Method = mb.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "GR", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.Handle, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod));
|
EvaluateBooleanExpressionMethod Method__is__Get_Relationship_Method = mb.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "GR", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.Handle, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod));
|
||||||
ReturnAttributeMethodBinding Method__is__Get_Relationship_Method_ramb = Method__is__Get_Relationship_Method.CreateMethodBinding(oms);
|
|
||||||
|
|
||||||
mb.CreateConditionalSelectAttributeMethod(c_Method, "get", "Method Abbreviation", AccessModifier.Public, false, KnownInstanceGuids.Methods.ConditionalSelectAttribute.Method__get__Method_Abbreviation, a_Value, new ConditionalSelectAttributeCase[]
|
mb.CreateConditionalSelectAttributeMethod(c_Method, "get", "Method Abbreviation", AccessModifier.Public, false, KnownInstanceGuids.Methods.ConditionalSelectAttribute.Method__get__Method_Abbreviation, a_Value, new ConditionalSelectAttributeCase[]
|
||||||
{
|
{
|
||||||
new ConditionalSelectAttributeCase(new IExecutableReturningAttribute[] { Method__is__Get_Relationship_Method_ramb }, null, false, Method__get__GR_Method_Suffix_ramb),
|
new ConditionalSelectAttributeCase(new IExecutableReturningAttribute[] { Method__is__Get_Attribute_by_System_Routine_Method.CreateMethodBinding(oms) }, null, false, Method__get__GAS_Method_Suffix.CreateMethodBinding(oms)),
|
||||||
new ConditionalSelectAttributeCase(new IExecutableReturningAttribute[] { Method__is__Conditional_Select_Attribute_Method_ramb }, null, false, Method__get__SAC_Method_Suffix_ramb)
|
new ConditionalSelectAttributeCase(new IExecutableReturningAttribute[] { Method__is__Get_Relationship_Method.CreateMethodBinding(oms) }, null, false, Method__get__GR_Method_Suffix.CreateMethodBinding(oms)),
|
||||||
|
new ConditionalSelectAttributeCase(new IExecutableReturningAttribute[] { Method__is__Conditional_Select_Attribute_Method.CreateMethodBinding(oms) }, null, false, Method__get__SAC_Method_Suffix.CreateMethodBinding(oms))
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -85,7 +85,11 @@ public class OmsMethodBuilder
|
|||||||
|
|
||||||
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
|
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
|
||||||
{
|
{
|
||||||
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod), forClassInstance, verb, name, accessModifier, isStatic);
|
return CreateGetAttributeBySystemRoutineMethod(forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid(), returnsAttribute, usesSystemAttributeRoutine);
|
||||||
|
}
|
||||||
|
public GetAttributeBySystemRoutineMethod CreateGetAttributeBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, InstanceHandle returnsAttribute, SystemAttributeRoutine usesSystemAttributeRoutine)
|
||||||
|
{
|
||||||
|
InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod), forClassInstance, verb, name, accessModifier, isStatic, globalIdentifier);
|
||||||
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_by_System_Routine_Method__returns__Attribute), returnsAttribute);
|
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_by_System_Routine_Method__returns__Attribute), returnsAttribute);
|
||||||
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_by_System_Routine_Method__uses__System_Attribute_Routine), usesSystemAttributeRoutine.Handle);
|
Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_by_System_Routine_Method__uses__System_Attribute_Routine), usesSystemAttributeRoutine.Handle);
|
||||||
return new GetAttributeBySystemRoutineMethod(method);
|
return new GetAttributeBySystemRoutineMethod(method);
|
||||||
|
|||||||
@ -10,7 +10,7 @@ public class OmsSystemRoutineBuilder
|
|||||||
Oms = oms;
|
Oms = oms;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SystemAttributeRoutine CreateSystemAttributeRoutine(Guid globalIdentifier, Func<object?> func)
|
public SystemAttributeRoutine CreateSystemAttributeRoutine(Guid globalIdentifier, Func<Oms, OmsContext, object?> func)
|
||||||
{
|
{
|
||||||
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemAttributeRoutine), globalIdentifier);
|
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemAttributeRoutine), globalIdentifier);
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ public class OmsSystemRoutineBuilder
|
|||||||
Oms.RegisterSystemRoutine(handle, routine);
|
Oms.RegisterSystemRoutine(handle, routine);
|
||||||
return routine;
|
return routine;
|
||||||
}
|
}
|
||||||
public SystemAttributeRoutine<T> CreateSystemAttributeRoutine<T>(Guid globalIdentifier, Func<T> func)
|
public SystemAttributeRoutine<T> CreateSystemAttributeRoutine<T>(Guid globalIdentifier, Func<Oms, OmsContext, T> func)
|
||||||
{
|
{
|
||||||
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemAttributeRoutine), globalIdentifier);
|
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemAttributeRoutine), globalIdentifier);
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ public class OmsSystemRoutineBuilder
|
|||||||
Oms.RegisterSystemRoutine(handle, routine);
|
Oms.RegisterSystemRoutine(handle, routine);
|
||||||
return routine;
|
return routine;
|
||||||
}
|
}
|
||||||
public SystemInstanceSetRoutine CreateSystemInstanceSetRoutine(Guid globalIdentifier, Func<InstanceHandle> func)
|
public SystemInstanceSetRoutine CreateSystemInstanceSetRoutine(Guid globalIdentifier, Func<Oms, OmsContext, IEnumerable<InstanceHandle>> func)
|
||||||
{
|
{
|
||||||
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemInstanceSetRoutine), globalIdentifier);
|
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemInstanceSetRoutine), globalIdentifier);
|
||||||
|
|
||||||
@ -34,12 +34,4 @@ public class OmsSystemRoutineBuilder
|
|||||||
Oms.RegisterSystemRoutine(handle, routine);
|
Oms.RegisterSystemRoutine(handle, routine);
|
||||||
return routine;
|
return routine;
|
||||||
}
|
}
|
||||||
public SystemInstanceSetRoutine<T> CreateSystemInstanceSetRoutine<T>(Guid globalIdentifier, Func<T> func) where T : InstanceWrapper
|
|
||||||
{
|
|
||||||
InstanceHandle handle = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.SystemInstanceSetRoutine), globalIdentifier);
|
|
||||||
|
|
||||||
SystemInstanceSetRoutine<T> routine = new SystemInstanceSetRoutine<T>(handle, func);
|
|
||||||
Oms.RegisterSystemRoutine(handle, routine);
|
|
||||||
return routine;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -44,4 +44,9 @@ public abstract class ConcreteInstanceWrapper : InstanceWrapper
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return TheHandle.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
namespace Mocha.Core.Oop.Methods;
|
namespace Mocha.Core.Oop.Methods;
|
||||||
|
|
||||||
public class GetAttributeBySystemRoutineMethod : Method
|
public class GetAttributeBySystemRoutineMethod : MethodReturningAttribute
|
||||||
{
|
{
|
||||||
public override Guid ClassId => KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod;
|
public override Guid ClassId => KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod;
|
||||||
internal GetAttributeBySystemRoutineMethod(InstanceHandle handle) : base(handle) { }
|
internal GetAttributeBySystemRoutineMethod(InstanceHandle handle) : base(handle) { }
|
||||||
|
|||||||
@ -4,15 +4,15 @@ public abstract class SystemRoutine : ConcreteInstanceWrapper
|
|||||||
{
|
{
|
||||||
internal SystemRoutine(InstanceHandle handle) : base(handle) { }
|
internal SystemRoutine(InstanceHandle handle) : base(handle) { }
|
||||||
|
|
||||||
protected abstract object? ExecuteInternal();
|
protected abstract object? ExecuteInternal(Oms oms, OmsContext context);
|
||||||
public object? Execute()
|
public object? Execute(Oms oms, OmsContext context)
|
||||||
{
|
{
|
||||||
return ExecuteInternal();
|
return ExecuteInternal(oms, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public T Execute<T>(T defaultValue = default(T))
|
public T Execute<T>(Oms oms, OmsContext context, T defaultValue = default(T))
|
||||||
{
|
{
|
||||||
object? value = Execute();
|
object? value = Execute(oms, context);
|
||||||
if (value is T)
|
if (value is T)
|
||||||
{
|
{
|
||||||
return (T)value;
|
return (T)value;
|
||||||
|
|||||||
@ -3,21 +3,21 @@ namespace Mocha.Core.Oop;
|
|||||||
public class SystemAttributeRoutine : SystemRoutine
|
public class SystemAttributeRoutine : SystemRoutine
|
||||||
{
|
{
|
||||||
public override Guid ClassId => KnownInstanceGuids.Classes.SystemAttributeRoutine;
|
public override Guid ClassId => KnownInstanceGuids.Classes.SystemAttributeRoutine;
|
||||||
private Func<object?> Func { get; }
|
private Func<Oms, OmsContext, object?> Func { get; }
|
||||||
internal SystemAttributeRoutine(InstanceHandle handle, Func<object?> func) : base(handle)
|
internal SystemAttributeRoutine(InstanceHandle handle, Func<Oms, OmsContext, object?> func) : base(handle)
|
||||||
{
|
{
|
||||||
Func = func;
|
Func = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override object? ExecuteInternal()
|
protected override object? ExecuteInternal(Oms oms, OmsContext context)
|
||||||
{
|
{
|
||||||
object? value = Func?.Invoke();
|
object? value = Func?.Invoke(oms, context);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class SystemAttributeRoutine<T> : SystemAttributeRoutine
|
public class SystemAttributeRoutine<T> : SystemAttributeRoutine
|
||||||
{
|
{
|
||||||
internal SystemAttributeRoutine(InstanceHandle handle, Func<T> func) : base(handle, new Func<object?>(delegate() { return func(); }))
|
internal SystemAttributeRoutine(InstanceHandle handle, Func<Oms, OmsContext, T> func) : base(handle, new Func<Oms, OmsContext, object?>(delegate(Oms oms, OmsContext context) { return func(oms, context); }))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,19 +3,15 @@ namespace Mocha.Core.Oop;
|
|||||||
public class SystemInstanceSetRoutine : SystemRoutine
|
public class SystemInstanceSetRoutine : SystemRoutine
|
||||||
{
|
{
|
||||||
public override Guid ClassId => KnownInstanceGuids.Classes.SystemInstanceSetRoutine;
|
public override Guid ClassId => KnownInstanceGuids.Classes.SystemInstanceSetRoutine;
|
||||||
private Func<InstanceHandle> Func { get; }
|
private Func<Oms, OmsContext, IEnumerable<InstanceHandle>> Func { get; }
|
||||||
internal SystemInstanceSetRoutine(InstanceHandle handle, Func<InstanceHandle> func) : base(handle)
|
internal SystemInstanceSetRoutine(InstanceHandle handle, Func<Oms, OmsContext, IEnumerable<InstanceHandle>> func) : base(handle)
|
||||||
{
|
{
|
||||||
Func = func;
|
Func = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override object? ExecuteInternal()
|
protected override object? ExecuteInternal(Oms oms, OmsContext context)
|
||||||
{
|
{
|
||||||
object? value = Func?.Invoke();
|
object? value = Func?.Invoke(oms, context);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class SystemInstanceSetRoutine<T> : SystemInstanceSetRoutine where T : InstanceWrapper
|
|
||||||
{
|
|
||||||
internal SystemInstanceSetRoutine(InstanceHandle handle, Func<T> func) : base(handle, new Func<InstanceHandle>(delegate() { return func()?.Handle ?? InstanceHandle.Empty; })) { }
|
|
||||||
}
|
|
||||||
|
|||||||
@ -43,6 +43,26 @@ public class ConditionalSelectAttributeMethodTests : MethodTestsBase
|
|||||||
Assert.That(value, Is.Not.EqualTo("SAC"));
|
Assert.That(value, Is.Not.EqualTo("SAC"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Test__Get_Method_Abbreviation__GAS()
|
||||||
|
{
|
||||||
|
InstanceHandle c_Method = Oms.GetInstance(KnownInstanceGuids.Classes.Method);
|
||||||
|
|
||||||
|
ConditionalSelectAttributeMethod sac = Oms.GetInstance<ConditionalSelectAttributeMethod>(KnownInstanceGuids.Methods.ConditionalSelectAttribute.Method__get__Method_Abbreviation);
|
||||||
|
ReturnAttributeMethodBinding ramb = sac.CreateMethodBinding(Oms);
|
||||||
|
|
||||||
|
GetAttributeBySystemRoutineMethod OMS__get__Runtime_Version = Oms.GetInstance<GetAttributeBySystemRoutineMethod>(KnownInstanceGuids.Methods.GetAttributeBySystemRoutine.OMS__get__Runtime_Version);
|
||||||
|
|
||||||
|
OmsContext context = Oms.CreateContext();
|
||||||
|
context.SetWorkData(c_Method, OMS__get__Runtime_Version);
|
||||||
|
|
||||||
|
InstanceHandle wd = Oms.Execute(context, ramb);
|
||||||
|
object? value = context.GetWorkData(wd);
|
||||||
|
|
||||||
|
Assert.That(value, Is.EqualTo("GAS"));
|
||||||
|
Assert.That(value, Is.Not.EqualTo("SAC"));
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Test__Get_Method_Binding_Abbreviation__RAMB()
|
public void Test__Get_Method_Binding_Abbreviation__RAMB()
|
||||||
{
|
{
|
||||||
@ -82,4 +102,9 @@ public class ConditionalSelectAttributeMethodTests : MethodTestsBase
|
|||||||
Assert.That(value, Is.Not.EqualTo("ramb"));
|
Assert.That(value, Is.Not.EqualTo("ramb"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: create a method to return a randomly-selected value from a Set
|
||||||
|
// e.g. Set@select random singular Instance
|
||||||
|
// using a GAS - Get Attribute by System Routine method
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -15,7 +15,7 @@ public class SystemRoutineTests : MethodTestsBase
|
|||||||
OmsMethodBuilder methodBuilder = new OmsMethodBuilder(Oms);
|
OmsMethodBuilder methodBuilder = new OmsMethodBuilder(Oms);
|
||||||
OmsSystemRoutineBuilder systemRoutineBuilder = new OmsSystemRoutineBuilder(Oms);
|
OmsSystemRoutineBuilder systemRoutineBuilder = new OmsSystemRoutineBuilder(Oms);
|
||||||
|
|
||||||
SystemAttributeRoutine<string> testSystemAttributeRoutine = systemRoutineBuilder.CreateSystemAttributeRoutine(TEST_SYSTEM_ATTRIBUTE_ROUTINE_GUID, delegate ()
|
SystemAttributeRoutine<string> testSystemAttributeRoutine = systemRoutineBuilder.CreateSystemAttributeRoutine(TEST_SYSTEM_ATTRIBUTE_ROUTINE_GUID, delegate (Oms oms, OmsContext context)
|
||||||
{
|
{
|
||||||
return TEST_SYSTEM_ATTRIBUTE_ROUTINE_VALUE;
|
return TEST_SYSTEM_ATTRIBUTE_ROUTINE_VALUE;
|
||||||
});
|
});
|
||||||
@ -28,4 +28,18 @@ public class SystemRoutineTests : MethodTestsBase
|
|||||||
|
|
||||||
Assert.That(value, Is.EqualTo(TEST_SYSTEM_ATTRIBUTE_ROUTINE_VALUE));
|
Assert.That(value, Is.EqualTo(TEST_SYSTEM_ATTRIBUTE_ROUTINE_VALUE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void GetRandomNumberTest()
|
||||||
|
{
|
||||||
|
GetAttributeBySystemRoutineMethod Common_Numeric__get__Random_Number = Oms.GetInstance<GetAttributeBySystemRoutineMethod>(KnownInstanceGuids.Methods.GetAttributeBySystemRoutine.Common_Numeric__get__Random_Number);
|
||||||
|
ReturnAttributeMethodBinding ramb = Common_Numeric__get__Random_Number.CreateMethodBinding(Oms);
|
||||||
|
|
||||||
|
OmsContext context = Oms.CreateContext();
|
||||||
|
context.SetWorkData(Oms.GetInstance(KnownAttributeGuids.Numeric.Seed), (decimal)25112);
|
||||||
|
decimal value = Oms.ExecuteReturningAttributeValue<decimal>(context, ramb);
|
||||||
|
|
||||||
|
// we respect the value of the `Seed` attribute, so we can unit test this
|
||||||
|
Assert.That(value, Is.EqualTo(0.87073318747372M));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user