From 4c656d8d8b8f06481729a3e105a33b45c553a84f Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Sat, 4 Jan 2025 20:59:09 -0500 Subject: [PATCH] implement more strongly-typed bindings for Mocha instances --- .../MochaWebApplication.cs | 1 - .../app/Mocha.ServerApplication/Program.cs | 17 +- ...lectFromInstanceSetMethodImplementation.cs | 4 +- mocha-dotnet/src/lib/Mocha.Core/Oms.cs | 173 +++++++++++------- mocha-dotnet/src/lib/Mocha.Core/OmsContext.cs | 14 +- .../Mini/HardcodedMiniOms.cs | 23 +-- .../OmsImplementations/Mini/MiniOmsModule.cs | 22 ++- .../Mini/Modules/MethodsModule.cs | 39 ++-- .../Mini/Modules/SecurityModule.cs | 8 +- .../Mini/Modules/TranslationModule.cs | 12 +- .../Mini/Modules/UserInterfaceModule.cs | 38 ++-- .../Mini/Modules/WebModule.cs | 6 +- .../src/lib/Mocha.Core/OmsMethodBuilder.cs | 48 +++-- mocha-dotnet/src/lib/Mocha.Core/Oop/Class.cs | 12 ++ .../Mocha.Core/Oop/ConcreteInstanceWrapper.cs | 23 ++- .../src/lib/Mocha.Core/Oop/ConditionGroup.cs | 6 +- .../Oop/IExecutableReturningAttribute.cs | 2 +- .../Oop/IExecutableReturningElement.cs | 2 +- .../Oop/IExecutableReturningInstanceSet.cs | 2 +- .../lib/Mocha.Core/Oop/IInstanceWrapper.cs | 14 +- .../src/lib/Mocha.Core/Oop/InstanceWrapper.cs | 47 ----- mocha-dotnet/src/lib/Mocha.Core/Oop/Method.cs | 4 +- .../src/lib/Mocha.Core/Oop/Relationship.cs | 12 ++ .../src/lib/Mocha.Core/Relationship.cs | 34 ---- .../lib/Mocha.Zq.Integration/ZqIntegrator.cs | 9 +- .../Mocha.Core.Tests/DerivedInstanceTests.cs | 3 +- .../Mocha.Core.Tests/InheritanceTests.cs | 4 - .../Mocha.Core.Tests/LibraryLoaderTests.cs | 4 - .../MethodTests/CalculateDateMethodTests.cs | 6 - .../EvaluateBooleanExpressionMethodTests.cs | 12 +- .../GetReferencedAttributeTests.cs | 2 +- .../MethodTests/GetRelationshipTests.cs | 2 +- .../MethodTests/MethodBindingTests.cs | 21 ++- .../SelectFromInstanceSetMethodTests.cs | 4 +- .../tests/Mocha.Core.Tests/MethodTestsBase.cs | 18 +- .../tests/Mocha.Core.Tests/OmsTestsBase.cs | 6 +- .../Mocha.Core.Tests/RelationshipTests.cs | 8 +- .../SampleDatabases/MovieRentalTests.cs | 6 +- .../tests/Mocha.Core.Tests/WorkSetTests.cs | 2 - 39 files changed, 337 insertions(+), 333 deletions(-) create mode 100644 mocha-dotnet/src/lib/Mocha.Core/Oop/Class.cs delete mode 100644 mocha-dotnet/src/lib/Mocha.Core/Oop/InstanceWrapper.cs create mode 100644 mocha-dotnet/src/lib/Mocha.Core/Oop/Relationship.cs delete mode 100755 mocha-dotnet/src/lib/Mocha.Core/Relationship.cs diff --git a/mocha-dotnet/src/app/Mocha.ServerApplication/MochaWebApplication.cs b/mocha-dotnet/src/app/Mocha.ServerApplication/MochaWebApplication.cs index 58b45cd..d52bf0e 100644 --- a/mocha-dotnet/src/app/Mocha.ServerApplication/MochaWebApplication.cs +++ b/mocha-dotnet/src/app/Mocha.ServerApplication/MochaWebApplication.cs @@ -24,7 +24,6 @@ using MBS.Web.UI.WebControls; using Mocha.Core; using Mocha.Core.OmsImplementations; -using Mocha.Core.OmsImplementations.Mini; using Mocha.ServerApplication.HardcodedPages; namespace Mocha.ServerApplication; diff --git a/mocha-dotnet/src/app/Mocha.ServerApplication/Program.cs b/mocha-dotnet/src/app/Mocha.ServerApplication/Program.cs index d41b534..45af762 100644 --- a/mocha-dotnet/src/app/Mocha.ServerApplication/Program.cs +++ b/mocha-dotnet/src/app/Mocha.ServerApplication/Program.cs @@ -20,7 +20,6 @@ using MBS.Core; using MBS.Web; using Mocha.Core; using Mocha.Core.OmsImplementations; -using Mocha.Core.OmsImplementations.Mini; using Mocha.Core.Oop; using Mocha.Core.Oop.Methods; @@ -88,7 +87,7 @@ public class Program : MochaWebApplication InstanceHandle c_Application = oms.GetInstance(KnownInstanceGuids.Classes.Application); InstanceHandle i_Application = oms.CreateInstanceOf(c_Application, new Guid("{773f6c6e-6cef-4a04-b333-ac097c0ab705}")); - InstanceHandle c_Alerynn_Test_Class = oms.CreateClass("Alerynn Test Class", new Guid("{bb1b32ff-55fe-4de7-a0c4-2e0a9d8de63b}")); + Class c_Alerynn_Test_Class = oms.CreateClass("Alerynn Test Class", new Guid("{bb1b32ff-55fe-4de7-a0c4-2e0a9d8de63b}")); InstanceHandle i_Alerynn_Test_Class = oms.CreateInstanceOf(c_Alerynn_Test_Class, new Guid("{d82182d5-451c-453f-9635-af07305b10ee}")); InstanceHandle c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); @@ -116,7 +115,7 @@ public class Program : MochaWebApplication InstanceHandle a_Value = oms.GetInstance(KnownAttributeGuids.Text.Value); OmsMethodBuilder mb = new OmsMethodBuilder(oms); - BuildAttributeMethod ba = mb.CreateBuildAttributeMethod(c_Alerynn_Test_Class, "get", "Welcome Message", AccessModifier.Public, true, a_Value, "This is the Super User tenant"); + BuildAttributeMethod ba = mb.CreateBuildAttributeMethod(c_Alerynn_Test_Class.GetHandle(), "get", "Welcome Message", AccessModifier.Public, true, a_Value, "This is the Super User tenant"); ReturnAttributeMethodBinding ba_ramb = ba.CreateMethodBinding(oms); @@ -142,7 +141,7 @@ public class Program : MochaWebApplication InstanceHandle ec_AlerynnWelcome1 = oms.CreateInstanceOf(c_DerivedElementContent); oms.AssignRelationship(ec_AlerynnWelcome1, r_Element_Content__has__Instance, a_AlerynnWelcome1); oms.AssignRelationship(el_AlerynnWelcome1, r_Element__has__Element_Content, ec_AlerynnWelcome1); - oms.AssignRelationship(ec_AlerynnWelcome1, oms.GetInstance(KnownRelationshipGuids.Derived_Element_Content__update_with__Executable_returning_Work_Data), ba_ramb.Handle); + oms.AssignRelationship(ec_AlerynnWelcome1, oms.GetInstance(KnownRelationshipGuids.Derived_Element_Content__update_with__Executable_returning_Work_Data), ba_ramb.GetHandle()); oms.AssignRelationship(ec_AlerynnWelcome1, r_Derived_Element_Content__has__Derived_EC_Display_Option, new InstanceHandle[] { do_WideText, @@ -169,7 +168,7 @@ public class Program : MochaWebApplication InstanceHandle r_Route__secured_to__Domain = oms.GetInstance(KnownRelationshipGuids.Route__secured_to__Domain); oms.AssignRelationship(route, r_Route__secured_to__Domain, [i_Domain_AuthenticatedUsers]); - oms.AssignRelationship(route, r_Route__processed_by__Control_Transaction_Method, ct.Handle); + oms.AssignRelationship(route, r_Route__processed_by__Control_Transaction_Method, ct.GetHandle()); InstanceHandle r_Tenant__has_initiating__Route = oms.GetInstance(KnownRelationshipGuids.Tenant__has_initiating__Route); oms.AssignRelationship(i_Tenant, r_Tenant__has_initiating__Route, route); @@ -201,7 +200,7 @@ public class Program : MochaWebApplication InstanceHandle c_Application = oms.GetInstance(KnownInstanceGuids.Classes.Application); InstanceHandle i_Application = oms.CreateInstanceOf(c_Application, new Guid("{32582607-1198-4e11-a283-b7f56e26f164}")); - InstanceHandle c_Alerynn_Test_Class = oms.CreateClass("Alerynn Test Class", new Guid("{bb1b32ff-55fe-4de7-a0c4-2e0a9d8de63b}")); + Class c_Alerynn_Test_Class = oms.CreateClass("Alerynn Test Class", new Guid("{bb1b32ff-55fe-4de7-a0c4-2e0a9d8de63b}")); InstanceHandle i_Alerynn_Test_Class = oms.CreateInstanceOf(c_Alerynn_Test_Class, new Guid("{d82182d5-451c-453f-9635-af07305b10ee}")); InstanceHandle c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); @@ -222,7 +221,7 @@ public class Program : MochaWebApplication InstanceHandle a_Value = oms.GetInstance(KnownAttributeGuids.Text.Value); OmsMethodBuilder mb = new OmsMethodBuilder(oms); - BuildAttributeMethod ba = mb.CreateBuildAttributeMethod(c_Alerynn_Test_Class, "get", "Welcome Message", AccessModifier.Public, true, a_Value, "Welcome to Alerynn: Infinite Universe!"); + BuildAttributeMethod ba = mb.CreateBuildAttributeMethod(c_Alerynn_Test_Class.GetHandle(), "get", "Welcome Message", AccessModifier.Public, true, a_Value, "Welcome to Alerynn: Infinite Universe!"); ReturnAttributeMethodBinding ba_ramb = ba.CreateMethodBinding(oms); @@ -256,7 +255,7 @@ public class Program : MochaWebApplication InstanceHandle ec_AlerynnWelcome1 = oms.CreateInstanceOf(c_DerivedElementContent); oms.AssignRelationship(ec_AlerynnWelcome1, r_Element_Content__has__Instance, a_AlerynnWelcome1); oms.AssignRelationship(el_AlerynnWelcome1, r_Element__has__Element_Content, ec_AlerynnWelcome1); - oms.AssignRelationship(ec_AlerynnWelcome1, oms.GetInstance(KnownRelationshipGuids.Derived_Element_Content__update_with__Executable_returning_Work_Data), ba_ramb.Handle); + oms.AssignRelationship(ec_AlerynnWelcome1, oms.GetInstance(KnownRelationshipGuids.Derived_Element_Content__update_with__Executable_returning_Work_Data), ba_ramb.GetHandle()); oms.AssignRelationship(ec_AlerynnWelcome1, r_Derived_Element_Content__has__Derived_EC_Display_Option, new InstanceHandle[] { do_WideText, @@ -283,7 +282,7 @@ public class Program : MochaWebApplication InstanceHandle r_Route__secured_to__Domain = oms.GetInstance(KnownRelationshipGuids.Route__secured_to__Domain); oms.AssignRelationship(route, r_Route__secured_to__Domain, [i_Domain_Anyone]); - oms.AssignRelationship(route, r_Route__processed_by__Control_Transaction_Method, ct.Handle); + oms.AssignRelationship(route, r_Route__processed_by__Control_Transaction_Method, ct.GetHandle()); InstanceHandle r_Tenant__has_initiating__Route = oms.GetInstance(KnownRelationshipGuids.Tenant__has_initiating__Route); oms.AssignRelationship(i_Tenant, r_Tenant__has_initiating__Route, route); diff --git a/mocha-dotnet/src/lib/Mocha.Core/MethodImplementations/SelectFromInstanceSetMethodImplementation.cs b/mocha-dotnet/src/lib/Mocha.Core/MethodImplementations/SelectFromInstanceSetMethodImplementation.cs index 738b468..ef23045 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/MethodImplementations/SelectFromInstanceSetMethodImplementation.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/MethodImplementations/SelectFromInstanceSetMethodImplementation.cs @@ -63,10 +63,10 @@ public class SelectFromInstanceSetMethodImplementation : MethodImplementation if (inst != null) { OrderableData od = new OrderableData(); - od.Data = inst.Handle; + od.Data = inst.GetHandle(); if (orderAttribute != InstanceHandle.Empty) { - InstanceHandle ihWorkData = oms.Execute(context, orderAttribute, inst.Handle); + InstanceHandle ihWorkData = oms.Execute(context, orderAttribute, inst.GetHandle()); string order = context.GetWorkData(ihWorkData); od.Order = order; diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oms.cs b/mocha-dotnet/src/lib/Mocha.Core/Oms.cs index b6a5ee0..2da49be 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oms.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oms.cs @@ -295,51 +295,58 @@ public abstract class Oms } protected abstract InstanceKey GetInstanceKeyInternal(InstanceHandle instance); - public InstanceKey GetInstanceKey(InstanceHandle instance) + public InstanceKey GetInstanceKey(IInstanceReference instance) { if (instance.Equals(GetInstance(KnownInstanceGuids.Classes.Class))) { return new InstanceKey(1, 1); } - if (IsDerivedInstance(instance)) + if (IsDerivedInstance(instance.GetHandle())) { InstanceHandle parent = GetParentClass(instance); InstanceKey ikParent = GetInstanceKeyInternal(parent); InstanceKey ik = new InstanceKey(ikParent.InstanceIndex, -1); - ik.SetDerivedData(this, instance, GetDerivedData(instance)); + ik.SetDerivedData(this, instance.GetHandle(), GetDerivedData(instance.GetHandle())); return ik; } - return GetInstanceKeyInternal(instance); + return GetInstanceKeyInternal(instance.GetHandle()); } protected abstract Guid GetGlobalIdentifierInternal(InstanceHandle instance); - public Guid GetGlobalIdentifier(InstanceHandle instance) + public Guid GetGlobalIdentifier(IInstanceReference wrapper) { - return GetGlobalIdentifierInternal(instance); - } - public Guid GetGlobalIdentifier(InstanceWrapper wrapper) - { - return GetGlobalIdentifier(wrapper.Handle); + return GetGlobalIdentifierInternal(wrapper.GetHandle()); } protected abstract void AssignRelationshipInternal(InstanceHandle source, InstanceHandle relationship, IEnumerable targets, DateTime effectiveDate); - public void AssignRelationship(InstanceHandle source, InstanceHandle relationship, IEnumerable targets, DateTime effectiveDate) + public void AssignRelationship(IInstanceReference source, InstanceHandle relationship, IEnumerable targets, DateTime? effectiveDate = null) { - ValidateConstraintsForRelationship(source, relationship, targets); - AssignRelationshipInternal(source, relationship, targets, effectiveDate); + ValidateConstraintsForRelationship(source.GetHandle(), relationship, targets); + AssignRelationshipInternal(source.GetHandle(), relationship, targets, effectiveDate.GetValueOrDefault(DateTime.Now)); } - public void AssignRelationship(InstanceHandle source, InstanceHandle relationship, IEnumerable targets) + public void AssignRelationship(IInstanceReference source, Relationship relationship, IEnumerable targets, DateTime? effectiveDate = null) { - AssignRelationship(source, relationship, targets, DateTime.Now); + ValidateConstraintsForRelationship(source.GetHandle(), relationship.GetHandle(), targets); + AssignRelationshipInternal(source.GetHandle(), relationship.GetHandle(), targets, effectiveDate.GetValueOrDefault(DateTime.Now)); } - public void AssignRelationship(InstanceHandle source, InstanceHandle relationship, InstanceHandle target, DateTime effectiveDate) + + public void AssignRelationship(IInstanceReference source, InstanceHandle relationship, IInstanceReference target, DateTime? effectiveDate = null) + { + AssignRelationship(source, relationship, new InstanceHandle[] { target.GetHandle() }, effectiveDate); + } + public void AssignRelationship(IInstanceReference source, Relationship relationship, IInstanceReference target, DateTime? effectiveDate = null) + { + AssignRelationship(source, relationship, new InstanceHandle[] { target.GetHandle() }, effectiveDate); + } + + public void AssignRelationship(IInstanceReference source, InstanceHandle relationship, InstanceHandle target, DateTime? effectiveDate = null) { AssignRelationship(source, relationship, new InstanceHandle[] { target }, effectiveDate); } - public void AssignRelationship(InstanceHandle source, InstanceHandle relationship, InstanceHandle target) + public void AssignRelationship(IInstanceReference source, Relationship relationship, InstanceHandle target, DateTime? effectiveDate = null) { - AssignRelationship(source, relationship, new InstanceHandle[] { target }, DateTime.Now); + AssignRelationship(source, relationship, new InstanceHandle[] { target }, effectiveDate); } private void ValidateConstraintsForRelationship(InstanceHandle source, InstanceHandle relationship, IEnumerable targets) @@ -458,6 +465,7 @@ public abstract class Oms } else { + // !FIXME! allow inherited parent classes throw new InvalidOperationException("cannot cast inst"); } } @@ -490,12 +498,17 @@ public abstract class Oms { return CreateInstanceInternal(globalIdentifier); } + protected T? CreateInstance(Guid globalIdentifier) where T : ConcreteInstanceWrapper + { + InstanceHandle ih = CreateInstance(globalIdentifier); + return ConcreteInstanceWrapper.Wrap(this, ih); + } - public InstanceHandle CreateInstanceOf(InstanceHandle ir_class) + public InstanceHandle CreateInstanceOf(IInstanceReference ir_class) { return CreateInstanceOf(ir_class, Guid.NewGuid()); } - public InstanceHandle CreateInstanceOf(InstanceHandle ir_class, Guid guid) + public InstanceHandle CreateInstanceOf(IInstanceReference ir_class, Guid guid) { if (GetParentClass(ir_class) != GetInstance(KnownInstanceGuids.Classes.Class)) { @@ -503,14 +516,19 @@ public abstract class Oms } InstanceHandle ir = CreateInstance(guid); - SetParentClass(ir, ir_class); + SetParentClass(ir, ir_class.GetHandle()); - int ct = CountInstances(ir_class); - InstanceKey pclass_key = GetInstanceKey(ir_class); + int ct = CountInstances(ir_class.GetHandle()); + InstanceKey pclass_key = GetInstanceKey(ir_class.GetHandle()); InstanceKey new_index = new InstanceKey(pclass_key.InstanceIndex, ct); SetInstanceKey(ir, new_index); return ir; } + public T CreateInstanceOf(IInstanceReference ir_class, Guid guid) where T : ConcreteInstanceWrapper + { + InstanceHandle ih = CreateInstanceOf(ir_class, guid); + return ConcreteInstanceWrapper.Wrap(this, ih); + } public InstanceHandle CreateFile(string name, string contentType, Stream stream) { @@ -542,11 +560,15 @@ public abstract class Oms /// /// /// - public void SetInstanceKey(InstanceHandle target, InstanceKey instanceKey) + public void SetInstanceKey(IInstanceReference target, InstanceKey instanceKey) { - SetInstanceKeyInternal(target, instanceKey); + SetInstanceKeyInternal(target.GetHandle(), instanceKey); } + protected void SetParentClass(InstanceHandle ir, Class ir_parent) + { + SetParentClass(ir, ir_parent.GetHandle()); + } protected void SetParentClass(InstanceHandle ir, InstanceHandle ir_parent) { ClearRelationship(ir, GetInstance(KnownRelationshipGuids.Instance__for__Class)); @@ -566,10 +588,10 @@ public abstract class Oms return irs.Count(); } - public InstanceHandle GetParentClass(InstanceHandle ir) + public InstanceHandle GetParentClass(IInstanceReference ir) { InstanceHandle relInstance__for__Class = GetInstance(KnownRelationshipGuids.Instance__for__Class); - IEnumerable irs = GetRelatedInstances(ir, relInstance__for__Class); + IEnumerable irs = GetRelatedInstances(ir.GetHandle(), relInstance__for__Class); if (irs.Count() > 0) { return irs.First(); @@ -588,16 +610,16 @@ public abstract class Oms object? val = GetAttributeValueInternal(source, attribute, effectiveDate.GetValueOrDefault(DateTime.Now)); return val; } - public bool TryGetAttributeValue(InstanceHandle source, InstanceHandle attribute, out T value) + public bool TryGetAttributeValue(IInstanceReference source, InstanceHandle attribute, out T value) { return TryGetAttributeValue(source, attribute, null, out value); } - public bool TryGetAttributeValue(InstanceHandle source, InstanceHandle attribute, DateTime? effectiveDate, out T value) + public bool TryGetAttributeValue(IInstanceReference source, InstanceHandle attribute, DateTime? effectiveDate, out T value) { DateTime dt = DateTime.Now; // if (HasAttributeValueInternal(source, attribute, effectiveDate.GetValueOrDefault(dt))) { - object? val = GetAttributeValueInternal(source, attribute, effectiveDate.GetValueOrDefault(dt)); + object? val = GetAttributeValueInternal(source.GetHandle(), attribute, effectiveDate.GetValueOrDefault(dt)); if (val is T) { value = (T)val; @@ -695,20 +717,21 @@ public abstract class Oms return defaultValue; } protected abstract void SetAttributeValueInternal(InstanceHandle source, InstanceHandle attribute, object value, DateTime effectiveDate); - public void SetAttributeValue(InstanceHandle source, InstanceHandle attribute, object value, DateTime? effectiveDate = null) + public void SetAttributeValue(IInstanceReference source, InstanceHandle attribute, object value, DateTime? effectiveDate = null) { - ValidateConstraintsForAttribute(source, attribute, value); + InstanceHandle sh = source.GetHandle(); + ValidateConstraintsForAttribute(sh, attribute, value); - if (IsDerivedInstance(source)) + if (IsDerivedInstance(sh)) { - if (!_derivedData.ContainsKey(source)) + if (!_derivedData.ContainsKey(sh)) { - _derivedData[source] = new Dictionary(); + _derivedData[sh] = new Dictionary(); } - _derivedData[source][attribute] = value; + _derivedData[sh][attribute] = value; return; } - SetAttributeValueInternal(source, attribute, value, effectiveDate.GetValueOrDefault(DateTime.Now)); + SetAttributeValueInternal(sh, attribute, value, effectiveDate.GetValueOrDefault(DateTime.Now)); } private void ValidateConstraintsForAttribute(InstanceHandle source, InstanceHandle attribute, object value) @@ -895,16 +918,16 @@ public abstract class Oms } - public InstanceHandle CreateRelationship(InstanceHandle sourceClass, string relationshipName, InstanceHandle destinationClass, Guid relationshipGuid, bool singular) + public Relationship? CreateRelationship(IInstanceReference sourceClass, string relationshipName, IInstanceReference destinationClass, Guid relationshipGuid, bool singular) { return CreateRelationship(sourceClass, relationshipName, destinationClass, relationshipGuid, singular, null, Guid.Empty); } - public InstanceHandle CreateRelationship(InstanceHandle sourceClass, string relationshipName, InstanceHandle destinationClass, Guid relationshipGuid, bool singular, string siblingRelationshipName, Guid siblingRelationshipGuid) + public Relationship? CreateRelationship(IInstanceReference sourceClass, string relationshipName, IInstanceReference destinationClass, Guid relationshipGuid, bool singular, string siblingRelationshipName, Guid siblingRelationshipGuid) { - InstanceHandle relationshipInstance = CreateRelationship(sourceClass, relationshipName, destinationClass, relationshipGuid, singular, siblingRelationshipName, siblingRelationshipGuid, out InstanceHandle siblingRelationshipInstance); + Relationship? relationshipInstance = CreateRelationship(sourceClass, relationshipName, destinationClass, relationshipGuid, singular, siblingRelationshipName, siblingRelationshipGuid, out Relationship siblingRelationshipInstance); return relationshipInstance; } - public InstanceHandle CreateRelationship(InstanceHandle sourceClass, string relationshipName, InstanceHandle destinationClass, Guid relationshipGuid, bool singular, string siblingRelationshipName, Guid siblingRelationshipGuid, out InstanceHandle siblingRelationshipInstance) + public Relationship? CreateRelationship(IInstanceReference sourceClass, string relationshipName, IInstanceReference destinationClass, Guid relationshipGuid, bool singular, string siblingRelationshipName, Guid siblingRelationshipGuid, out Relationship siblingRelationshipInstance) { InstanceHandle c_Relationship = GetInstance(KnownInstanceGuids.Classes.Relationship); if (c_Relationship == InstanceHandle.Empty) @@ -947,7 +970,7 @@ public abstract class Oms SetAttributeValue(irRelationship, a_Singular, singular); AssignRelationship(irRelationship, r_Relationship__has_destination__Class, destinationClass); - siblingRelationshipInstance = InstanceHandle.Empty; + siblingRelationshipInstance = null; if (siblingRelationshipName != null) { if (siblingRelationshipGuid == Guid.Empty) @@ -955,7 +978,7 @@ public abstract class Oms siblingRelationshipGuid = Guid.NewGuid(); } - siblingRelationshipInstance = CreateInstanceOf(c_Relationship, siblingRelationshipGuid); + siblingRelationshipInstance = CreateInstanceOf(c_Relationship, siblingRelationshipGuid); AssignRelationship(siblingRelationshipInstance, r_Relationship__has_source__Class, destinationClass); SetAttributeValue(siblingRelationshipInstance, a_RelationshipType, siblingRelationshipName); AssignRelationship(siblingRelationshipInstance, r_Relationship__has_destination__Class, sourceClass); @@ -963,9 +986,17 @@ public abstract class Oms AssignRelationship(irRelationship, r_Relationship__has_sibling__Relationship, siblingRelationshipInstance); AssignRelationship(siblingRelationshipInstance, r_Relationship__has_sibling__Relationship, irRelationship); } - return irRelationship; + return ConcreteInstanceWrapper.Wrap(this, irRelationship); } + public T? GetRelatedInstance(InstanceHandle source, Relationship relationship) where T : ConcreteInstanceWrapper + { + return ConcreteInstanceWrapper.Wrap(this, GetRelatedInstance(source, relationship)); + } + public InstanceHandle GetRelatedInstance(InstanceHandle source, Relationship relationship) + { + return GetRelatedInstance(source, relationship.GetHandle()); + } public InstanceHandle GetRelatedInstance(InstanceHandle source, InstanceHandle relationship) { IEnumerable irs = GetRelatedInstances(source, relationship); @@ -982,7 +1013,7 @@ public abstract class Oms /// /// The name of the new Class. /// - public InstanceHandle CreateClass(string name) + public Class CreateClass(string name) { return CreateClass(name, Guid.NewGuid()); } @@ -992,20 +1023,20 @@ public abstract class Oms /// The name of the new Class. /// The global identifier to assign the newly-created Class instance. /// - public InstanceHandle CreateClass(string name, Guid globalIdentifier) + public Class? CreateClass(string name, Guid globalIdentifier) { InstanceHandle c_Class = GetInstance(KnownInstanceGuids.Classes.Class); InstanceHandle c_new = CreateInstanceOf(c_Class, globalIdentifier); SetAttributeValue(c_new, GetInstance(KnownAttributeGuids.Text.Name), name); - return c_new; + return new Class(c_new); } public InstanceHandle ExecuteInstanceMethod(OmsContext context, InstanceHandle instance, MethodBinding methodBinding) { - InstanceHandle method = GetRelatedInstance(methodBinding.Handle, GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method)); + InstanceHandle method = GetRelatedInstance(methodBinding.GetHandle(), GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method)); InstanceHandle forClass = GetRelatedInstance(method, GetInstance(KnownRelationshipGuids.Method__for__Class)); context.SetWorkData(forClass, instance); - return Execute(context, methodBinding.Handle); + return Execute(context, methodBinding.GetHandle()); } public object? ExecuteInstanceMethodReturningAttribute(OmsContext context, InstanceHandle instance, MethodBinding methodBinding) { @@ -1020,31 +1051,31 @@ public abstract class Oms methodImplementations[methodClassId] = implementation; } - public InstanceHandle Execute(OmsContext context, MethodBinding methodBinding, IInstanceWrapper? targetInstance = null) + public InstanceHandle Execute(OmsContext context, MethodBinding methodBinding, IInstanceReference? targetInstance = null) { InstanceHandle? targetInstanceHandle = null; if (targetInstance != null) { - targetInstanceHandle = targetInstance.Handle; + targetInstanceHandle = targetInstance.GetHandle(); } return Execute(context, methodBinding, targetInstanceHandle); } public InstanceHandle Execute(OmsContext context, MethodBinding methodBinding, InstanceHandle? targetInstance = null) { - return Execute(context, methodBinding.Handle, targetInstance); + return Execute(context, methodBinding.GetHandle(), targetInstance); } public InstanceHandle Execute(OmsContext context, Method method, InstanceHandle? targetInstance = null) { - return Execute(context, method.Handle, targetInstance); + return Execute(context, method.GetHandle(), targetInstance); } public InstanceHandle Execute(OmsContext context, MethodBinding methodBinding) { - return Execute(context, methodBinding.Handle); + return Execute(context, methodBinding.GetHandle()); } public object? ExecuteReturningAttributeValue(OmsContext context, ReturnAttributeMethodBinding methodBinding) { - InstanceHandle workData = Execute(context, methodBinding.Handle); + InstanceHandle workData = Execute(context, methodBinding.GetHandle()); return context.GetWorkData(workData); } public T ExecuteReturningAttributeValue(OmsContext context, ReturnAttributeMethodBinding methodBinding, T defaultValue = default(T)) @@ -1113,6 +1144,7 @@ public abstract class Oms { if (methodImplementations.ContainsKey(parentClassId)) { + if (targetInstance != null) { InstanceHandle hh = targetInstance.GetValueOrDefault(); @@ -1153,7 +1185,7 @@ public abstract class Oms public IEnumerable ExecuteStaticMethodReturningInstanceSet(OmsContext context, ReturnInstanceSetMethodBinding methodBinding) { - InstanceHandle method = GetRelatedInstance(methodBinding.Handle, GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method)); + InstanceHandle method = GetRelatedInstance(methodBinding.GetHandle(), GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method)); if (TryGetAttributeValue(method, GetInstance(KnownAttributeGuids.Boolean.Static), out bool is_static)) { if (is_static) @@ -1193,6 +1225,10 @@ public abstract class Oms return new WorkSet(workSet); } + public void AddAttribute(Class targetClass, InstanceHandle attributeInstance) + { + AddAttribute(targetClass.GetHandle(), attributeInstance); + } public void AddAttribute(InstanceHandle targetInstance, InstanceHandle attributeInstance) { AssignRelationship(targetInstance, GetInstance(KnownRelationshipGuids.Class__has__Attribute), attributeInstance); @@ -1200,6 +1236,10 @@ public abstract class Oms AssignRelationship(attributeInstance, GetInstance(KnownRelationshipGuids.Attribute__for__Class), targetInstance); } + public void AddSuperClass(Class classInstance, Class inheritsFrom) + { + AddSuperClass(classInstance.GetHandle(), inheritsFrom.GetHandle()); + } public void AddSuperClass(InstanceHandle classInstance, InstanceHandle inheritsFrom) { AssignRelationship(classInstance, GetInstance(KnownRelationshipGuids.Class__has_super__Class), inheritsFrom); @@ -1229,11 +1269,7 @@ public abstract class Oms return list; } - public string GetInstanceText(InstanceWrapper inst) - { - return GetInstanceText(inst.Handle); - } - public string GetInstanceText(InstanceHandle inst) + public string GetInstanceText(IInstanceReference inst) { InstanceHandle parentClass = GetParentClass(inst); InstanceHandle ihLabeledByRAMB = InstanceHandle.Empty; @@ -1254,10 +1290,11 @@ public abstract class Oms } // FIXME: remove when we have Class@get Instance Text implemented - return _GetInstanceTextHack(inst); + return _GetInstanceTextHack(inst.GetHandle()); } private string _GetInstanceTextHack(InstanceHandle inst) { + Console.Error.WriteLine("!!! HACK !!! GetInstanceTextHack !!! HACK !!!"); StringBuilder sb = new StringBuilder(); if (IsInstanceOf(inst, GetInstance(KnownInstanceGuids.Classes.Relationship))) { @@ -1425,12 +1462,12 @@ public abstract class Oms /// The global identifier of the resulting enumeration class. /// The global identifiers of the instances (members) of the enumeration class. /// - public InstanceHandle CreateEnumeration(Guid globalIdentifier, Guid[] memberGlobalIdentifiers) + public Class CreateEnumeration(Guid globalIdentifier, Guid[] memberGlobalIdentifiers) { - InstanceHandle c_Enum = CreateEnumeration(globalIdentifier, memberGlobalIdentifiers, out InstanceHandle[] memberInstanceHandles); + Class c_Enum = CreateEnumeration(globalIdentifier, memberGlobalIdentifiers, out InstanceHandle[] memberInstanceHandles); return c_Enum; } - public InstanceHandle CreateEnumeration(Guid globalIdentifier, Guid[] memberGlobalIdentifiers, out InstanceHandle[] memberInstanceHandles) + public Class CreateEnumeration(Guid globalIdentifier, Guid[] memberGlobalIdentifiers, out InstanceHandle[] memberInstanceHandles) { if (!TryGetInstance(globalIdentifier, out InstanceHandle c_Enum)) { @@ -1441,7 +1478,7 @@ public abstract class Oms { memberInstanceHandles[i] = CreateInstanceOf(c_Enum, memberGlobalIdentifiers[i]); } - return c_Enum; + return ConcreteInstanceWrapper.Wrap(this, c_Enum); } public string GetTranslationValue(InstanceHandle sourceInstance, InstanceHandle relationshipInstance, string defaultValue = "") @@ -2080,6 +2117,10 @@ public abstract class Oms return value; } + public InstanceHandle GetInstanceByName(Class parentClass, string name) + { + return GetInstanceByName(parentClass.GetHandle(), name); + } public InstanceHandle GetInstanceByName(InstanceHandle parentClass, string name) { InstanceHandle a_Name = GetInstance(KnownAttributeGuids.Text.Name); diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsContext.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsContext.cs index 52413e3..5e0b1c1 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsContext.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsContext.cs @@ -37,7 +37,7 @@ public class OmsContext private Dictionary _GlobalData = new Dictionary(); public object? GetWorkData(WorkSet parm) { - return GetWorkData(parm.Handle); + return GetWorkData(parm.GetHandle()); } public object? GetWorkData(InstanceHandle parm) { @@ -66,11 +66,7 @@ public class OmsContext public void SetWorkData(WorkSet parm, object? value) { - SetWorkData(parm.Handle, value); - } - public void SetWorkData(InstanceHandle parm, IInstanceWrapper value) - { - SetWorkData(parm, value.Handle); + SetWorkData(parm.GetHandle(), value); } public void SetWorkData(InstanceHandle parm, object? value) { @@ -84,12 +80,12 @@ public class OmsContext singular = false; } - if (value is InstanceHandle) + if (value is IInstanceReference) { IReadOnlyCollection irs = Oms.GetRelatedInstances(parm, Oms.GetInstance(KnownRelationshipGuids.Work_Set__has_valid__Class)); if (irs.Count > 0) { - InstanceHandle ir = (InstanceHandle)value; + InstanceHandle ir = ((IInstanceReference)value).GetHandle(); InstanceHandle parentClass = Oms.GetParentClass(ir); if (!irs.Contains(parentClass)) { @@ -132,7 +128,7 @@ public class OmsContext { foreach (InstanceWrapper iw in insts) { - InstanceHandle ir = iw.Handle; + InstanceHandle ir = iw.GetHandle(); InstanceHandle parentClass = Oms.GetParentClass(ir); if (!irs.Contains(parentClass)) { diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/HardcodedMiniOms.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/HardcodedMiniOms.cs index 7f44c71..ecbb2de 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/HardcodedMiniOms.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/HardcodedMiniOms.cs @@ -19,6 +19,7 @@ using System; using MBS.Core; +using Mocha.Core.Oop; /// /// Implements completely in-memory with a bare minimum schema definition which @@ -32,8 +33,8 @@ public class HardcodedMiniOms : MemoryOms } private TenantHandle t_super; - private InstanceHandle c_Class, c_Attribute, c_Relationship, c_TextAttribute, c_BooleanAttribute, c_NumericAttribute, c_DateAttribute, c_WorkSet, c_Instance, c_OMS, c_File; - private InstanceHandle c_CommonText, c_CommonBoolean, c_CommonNumeric, c_CommonDate, c_CommonInstanceSet; + private Class c_Class, c_Attribute, c_Relationship, c_TextAttribute, c_BooleanAttribute, c_NumericAttribute, c_DateAttribute, c_WorkSet, c_Instance, c_OMS, c_File; + private Class c_CommonText, c_CommonBoolean, c_CommonNumeric, c_CommonDate, c_CommonInstanceSet; private InstanceHandle r_Class__has__Instance, r_Instance__for__Class; private InstanceHandle r_Relationship__has_source__Class, r_Relationship__has_destination__Class, r_Relationship__has_sibling__Relationship; private InstanceHandle a_Name, a_Order, a_Value, a_ContentType, a_RelationshipType, a_Singular; @@ -61,7 +62,7 @@ public class HardcodedMiniOms : MemoryOms { base.InitializeTenantInternal(); - c_Class = CreateInstance(KnownInstanceGuids.Classes.Class); + c_Class = CreateInstance(KnownInstanceGuids.Classes.Class); // we need to create `Class.has Instance` and `Instance.for Class` // before we can use CreateInstanceOf, which uses SetParentClass @@ -73,8 +74,8 @@ public class HardcodedMiniOms : MemoryOms AssignRelationship(c_Class, r_Instance__for__Class, c_Class); // now that we have SetParentClass, we can use CreateInstanceOf - c_Attribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.Attribute); - c_Relationship = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.Relationship); + c_Attribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.Attribute); + c_Relationship = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.Relationship); // now that Relationship class has been defined, we can identify the relationships SetParentClass(r_Class__has__Instance, c_Relationship); @@ -82,10 +83,10 @@ public class HardcodedMiniOms : MemoryOms // ?============ ATTRIBUTES ============? // and now we define attribute classes - c_TextAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.TextAttribute); - c_BooleanAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.BooleanAttribute); - c_NumericAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.NumericAttribute); - c_DateAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.DateAttribute); + c_TextAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.TextAttribute); + c_BooleanAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.BooleanAttribute); + c_NumericAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.NumericAttribute); + c_DateAttribute = CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.DateAttribute); a_Name = CreateInstanceOf(c_TextAttribute, KnownAttributeGuids.Text.Name); a_Order = CreateInstanceOf(c_TextAttribute, KnownAttributeGuids.Text.Order); @@ -171,9 +172,9 @@ public class HardcodedMiniOms : MemoryOms CreateClass("Work Data", KnownInstanceGuids.Classes.WorkData); c_OMS = CreateClass("OMS", KnownInstanceGuids.Classes.OMS); - InstanceHandle c_Application = CreateClass("Application", KnownInstanceGuids.Classes.Application); + Class c_Application = CreateClass("Application", KnownInstanceGuids.Classes.Application); - InstanceHandle c_Tenant = CreateClass("Tenant", KnownInstanceGuids.Classes.Tenant); + Class c_Tenant = CreateClass("Tenant", KnownInstanceGuids.Classes.Tenant); CreateInstanceOf(c_Tenant); CreateRelationship(c_Tenant, "has", c_Application, KnownRelationshipGuids.Tenant__has__Application, true, "for", KnownRelationshipGuids.Application__for__Tenant); diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/MiniOmsModule.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/MiniOmsModule.cs index 8465475..d11e35d 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/MiniOmsModule.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/MiniOmsModule.cs @@ -15,26 +15,28 @@ // You should have received a copy of the GNU General Public License // along with Mocha.NET. If not, see . +using Mocha.Core.Oop; + namespace Mocha.Core.OmsImplementations.Mini; public abstract class MiniOmsModule { // public virtual int Priority { get; } = 0; - protected InstanceHandle c_Class, c_Attribute, c_Relationship, c_TextAttribute, c_BooleanAttribute, c_NumericAttribute, c_DateAttribute, c_WorkSet, c_Instance; + protected Class c_Class, c_Attribute, c_Relationship, c_TextAttribute, c_BooleanAttribute, c_NumericAttribute, c_DateAttribute, c_WorkSet, c_Instance; protected abstract void BuildInternal(Oms oms); public void Build(Oms oms) { - c_Class = oms.GetInstance(KnownInstanceGuids.Classes.Class); - c_Attribute = oms.GetInstance(KnownInstanceGuids.Classes.Attribute); - c_Relationship = oms.GetInstance(KnownInstanceGuids.Classes.Relationship); - c_TextAttribute = oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute); - c_BooleanAttribute = oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute); - c_NumericAttribute = oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute); - c_DateAttribute = oms.GetInstance(KnownInstanceGuids.Classes.DateAttribute); - c_Instance = oms.GetInstance(KnownInstanceGuids.Classes.Instance); - c_WorkSet = oms.GetInstance(KnownInstanceGuids.Classes.WorkSet); + c_Class = oms.GetInstance(KnownInstanceGuids.Classes.Class); + c_Attribute = oms.GetInstance(KnownInstanceGuids.Classes.Attribute); + c_Relationship = oms.GetInstance(KnownInstanceGuids.Classes.Relationship); + c_TextAttribute = oms.GetInstance(KnownInstanceGuids.Classes.TextAttribute); + c_BooleanAttribute = oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute); + c_NumericAttribute = oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute); + c_DateAttribute = oms.GetInstance(KnownInstanceGuids.Classes.DateAttribute); + c_Instance = oms.GetInstance(KnownInstanceGuids.Classes.Instance); + c_WorkSet = oms.GetInstance(KnownInstanceGuids.Classes.WorkSet); BuildInternal(oms); } diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/MethodsModule.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/MethodsModule.cs index 8f5f811..8d31c28 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/MethodsModule.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/MethodsModule.cs @@ -29,18 +29,19 @@ using Mocha.Core.Oop.Methods; /// public class MethodsModule : MiniOmsModule { - private InstanceHandle c_WorkData, c_OMS; - private InstanceHandle c_ParameterAssignment, c_Method, c_MethodBinding; + private Class c_WorkData, c_OMS; + private Class c_ParameterAssignment, c_Method, c_MethodBinding; private InstanceHandle a_Name, a_Order, a_Singular, a_Verb, a_Static, a_UseAnyCondition, a_Value; - private InstanceHandle c_ReturnAttributeMethodBinding, c_ReturnInstanceSetMethodBinding, c_ReturnElementMethodBinding; - private InstanceHandle c_CommonText, c_CommonBoolean, c_CommonNumeric, c_CommonDate, c_CommonInstanceSet; - private InstanceHandle c_ConditionGroup; - private InstanceHandle c_BuildAttributeMethod, c_GetAttributeMethod, c_GetSpecifiedInstancesMethod, c_GetAttributeBySystemRoutineMethod, c_GetInstanceSetBySystemRoutineMethod, c_AssignAttributeMethod, c_GetRelationshipMethod, c_GetReferencedAttributeMethod, c_SelectFromInstanceSetMethod, c_ConditionalSelectFromInstanceSetCase, c_ConditionalSelectFromInstanceSetMethod, c_ConditionalSelectAttributeMethod, c_ConditionalSelectAttributeCase, c_EvaluateBooleanExpressionMethod; - private InstanceHandle c_ExecutableReturningAttribute, c_ExecutableReturningInstanceSet, c_ExecutableReturningWorkData; - private InstanceHandle c_AccessModifier, i_AccessModifier_Private, i_AccessModifier_Protected, i_AccessModifier_Public, i_AccessModifier_RootA2; - private InstanceHandle c_SystemRoutine, c_SystemAttributeRoutine, c_SystemInstanceSetRoutine; - private InstanceHandle c_AccumulationFunction, c_SelectionFunction, c_SetFunction; - private InstanceHandle c_Element, c_ElementContent; + private Class c_ReturnAttributeMethodBinding, c_ReturnInstanceSetMethodBinding, c_ReturnElementMethodBinding; + private Class c_CommonText, c_CommonBoolean, c_CommonNumeric, c_CommonDate, c_CommonInstanceSet; + private Class c_ConditionGroup; + private Class c_BuildAttributeMethod, c_GetAttributeMethod, c_GetSpecifiedInstancesMethod, c_GetAttributeBySystemRoutineMethod, c_GetInstanceSetBySystemRoutineMethod, c_AssignAttributeMethod, c_GetRelationshipMethod, c_GetReferencedAttributeMethod, c_SelectFromInstanceSetMethod, c_ConditionalSelectFromInstanceSetCase, c_ConditionalSelectFromInstanceSetMethod, c_ConditionalSelectAttributeMethod, c_ConditionalSelectAttributeCase, c_EvaluateBooleanExpressionMethod; + private Class c_ExecutableReturningAttribute, c_ExecutableReturningInstanceSet, c_ExecutableReturningWorkData; + private Class c_AccessModifier; + private InstanceHandle i_AccessModifier_Private, i_AccessModifier_Protected, i_AccessModifier_Public, i_AccessModifier_RootA2; + private Class c_SystemRoutine, c_SystemAttributeRoutine, c_SystemInstanceSetRoutine; + private Class c_AccumulationFunction, c_SelectionFunction, c_SetFunction; + private Class c_Element, c_ElementContent; protected override void BuildInternal(Oms oms) { @@ -52,7 +53,7 @@ public class MethodsModule : MiniOmsModule oms.AddSuperClass(c_Attribute, c_ExecutableReturningAttribute); - c_WorkData = oms.GetInstance(KnownInstanceGuids.Classes.WorkData); + c_WorkData = oms.GetInstance(KnownInstanceGuids.Classes.WorkData); oms.AddSuperClass(c_WorkData, c_ExecutableReturningWorkData); c_ParameterAssignment = oms.CreateClass("Parameter Assignment", KnownInstanceGuids.Classes.ParameterAssignment); @@ -93,7 +94,7 @@ public class MethodsModule : MiniOmsModule a_UseAnyCondition = oms.CreateInstanceOf(oms.GetInstance(KnownInstanceGuids.Classes.BooleanAttribute), KnownAttributeGuids.Boolean.UseAnyCondition); oms.SetAttributeValue(a_UseAnyCondition, a_Name, "Use Any Condition"); - c_AccessModifier = oms.CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.AccessModifier); + c_AccessModifier = oms.CreateInstanceOf(c_Class, KnownInstanceGuids.Classes.AccessModifier); oms.AddAttribute(c_AccessModifier, a_Name); oms.AddAttribute(c_AccessModifier, a_Order); @@ -203,8 +204,8 @@ public class MethodsModule : MiniOmsModule oms.CreateRelationship(c_ConditionalSelectAttributeMethod, "has", c_ConditionalSelectAttributeCase, KnownRelationshipGuids.Conditional_Select_Attribute_Method__has__Conditional_Select_Attribute_Case, false, "for", KnownRelationshipGuids.Conditional_Select_Attribute_Case__for__Conditional_Select_Attribute_Method); oms.AddSuperClass(c_ConditionalSelectAttributeMethod, c_Method); - InstanceHandle c_BooleanOperator = oms.CreateClass("Boolean Operator", KnownInstanceGuids.Classes.BooleanOperator); - InstanceHandle c_RelationalOperator = oms.CreateClass("Relational Operator", KnownInstanceGuids.Classes.RelationalOperator); + Class c_BooleanOperator = oms.CreateClass("Boolean Operator", KnownInstanceGuids.Classes.BooleanOperator); + Class c_RelationalOperator = oms.CreateClass("Relational Operator", KnownInstanceGuids.Classes.RelationalOperator); RelationalOperator.CountEqualTo = new RelationalOperator(oms.CreateInstanceOf(c_RelationalOperator, KnownInstanceGuids.RelationalOperators.CountEqualTo)); RelationalOperator.CountGreaterThan = new RelationalOperator(oms.CreateInstanceOf(c_RelationalOperator, KnownInstanceGuids.RelationalOperators.CountGreaterThan)); @@ -240,19 +241,19 @@ public class MethodsModule : MiniOmsModule oms.AddAttribute(c_Method, a_Verb); oms.AddAttribute(c_Method, a_Static); - c_OMS = oms.GetInstance(KnownInstanceGuids.Classes.OMS); + c_OMS = oms.GetInstance(KnownInstanceGuids.Classes.OMS); OmsMethodBuilder mb = new OmsMethodBuilder(oms); OmsSystemRoutineBuilder srb = new OmsSystemRoutineBuilder(oms); SystemAttributeRoutine sr = srb.CreateSystemAttributeRoutine(KnownInstanceGuids.SystemAttributeRoutines.GetRuntimeVersion, new Func(delegate (Oms oms, OmsContext context) { return oms.RuntimeVersion.ToString(); })); - mb.CreateGetAttributeBySystemRoutineMethod(c_OMS, "get", "Runtime Version", null, true, KnownInstanceGuids.Methods.GetAttributeBySystemRoutine.OMS__get__Runtime_Version, oms.GetInstance(KnownAttributeGuids.Text.Value), sr); + mb.CreateGetAttributeBySystemRoutineMethod(c_OMS.GetHandle(), "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.GetHandle(), "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(KnownInstanceGuids.SystemAttributeRoutines.GetRandomNumber, new Func(delegate (Oms oms, OmsContext context) + mb.CreateGetAttributeBySystemRoutineMethod(c_CommonNumeric.GetHandle(), "get", "Random Number", AccessModifier.Public, true, KnownInstanceGuids.Methods.GetAttributeBySystemRoutine.Common_Numeric__get__Random_Number, a_RandomNumber, srb.CreateSystemAttributeRoutine(KnownInstanceGuids.SystemAttributeRoutines.GetRandomNumber, new Func(delegate (Oms oms, OmsContext context) { object? seedO = context.GetWorkData(a_Seed); if (seedO is decimal) diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/SecurityModule.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/SecurityModule.cs index 8a0a2a6..2c31a49 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/SecurityModule.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/SecurityModule.cs @@ -22,8 +22,8 @@ namespace Mocha.Core.OmsImplementations.Mini.Modules; public class SecurityModule : MiniOmsModule { - private InstanceHandle c_User, c_UserLogin, c_Role, c_Domain; - private InstanceHandle r_User__has__Role; + private Class c_User, c_UserLogin, c_Role, c_Domain; + private Relationship r_User__has__Role; private InstanceHandle a_Token, a_Name, a_UserName, a_PasswordHash, a_PasswordSalt, a_UserIsLoggedIn; private MethodReturningInstanceSet m_User__get__Current_User; @@ -56,14 +56,14 @@ public class SecurityModule : MiniOmsModule OmsSystemRoutineBuilder sr = new OmsSystemRoutineBuilder(oms); WorkSet ws_CurrentUser = oms.CreateWorkSet("Current User"); - m_User__get__Current_User = mb.CreateGetInstanceSetBySystemRoutineMethod(c_User, "get", "Current User", AccessModifier.Public, true, ws_CurrentUser, sr.CreateSystemInstanceSetRoutine(KnownInstanceGuids.SystemInstanceSetRoutines.GetCurrentUser, delegate (Oms oms, OmsContext context) + m_User__get__Current_User = mb.CreateGetInstanceSetBySystemRoutineMethod(c_User.GetHandle(), "get", "Current User", AccessModifier.Public, true, ws_CurrentUser, sr.CreateSystemInstanceSetRoutine(KnownInstanceGuids.SystemInstanceSetRoutines.GetCurrentUser, delegate (Oms oms, OmsContext context) { List list = new List(); return list; })); MethodBinding mb_User__get__Current_User = m_User__get__Current_User.CreateMethodBinding(oms); - EvaluateBooleanExpressionMethod m_User__is__Logged_In = mb.CreateEvaluateBooleanExpressionMethod(c_User, "is", "Logged In", AccessModifier.Public, true, a_UserIsLoggedIn, m_User__get__Current_User, RelationalOperator.IsNotEmpty); + EvaluateBooleanExpressionMethod m_User__is__Logged_In = mb.CreateEvaluateBooleanExpressionMethod(c_User.GetHandle(), "is", "Logged In", AccessModifier.Public, true, a_UserIsLoggedIn, m_User__get__Current_User, RelationalOperator.IsNotEmpty); MethodBinding mb_User__is__Logged_In = m_User__is__Logged_In.CreateMethodBinding(oms); c_Domain = oms.CreateClass("Domain", KnownInstanceGuids.Classes.Domain); diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/TranslationModule.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/TranslationModule.cs index 291c1d1..b2d2d57 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/TranslationModule.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/TranslationModule.cs @@ -15,14 +15,16 @@ // You should have received a copy of the GNU General Public License // along with Mocha.NET. If not, see . +using Mocha.Core.Oop; + namespace Mocha.Core.OmsImplementations.Mini.Modules; public class TranslationModule : MiniOmsModule { - private InstanceHandle c_Tenant, c_Translation, c_TranslationValue, c_Language; + private Class c_Tenant, c_Translation, c_TranslationValue, c_Language; private InstanceHandle a_Name, a_Value; - private InstanceHandle r_Translation__has__Translation_Value, r_Translation_Value__has__Language; - private InstanceHandle r_Tenant__has_login_header__Translation, r_Tenant__has_login_footer__Translation; + private Relationship r_Translation__has__Translation_Value, r_Translation_Value__has__Language; + private Relationship r_Tenant__has_login_header__Translation, r_Tenant__has_login_footer__Translation; protected override void BuildInternal(Oms oms) { @@ -48,11 +50,11 @@ public class TranslationModule : MiniOmsModule r_Translation__has__Translation_Value = oms.CreateRelationship(c_Translation, "has", c_TranslationValue, KnownRelationshipGuids.Translation__has__Translation_Value, false, "for", KnownRelationshipGuids.Translation_Value__for__Translation); r_Translation_Value__has__Language = oms.CreateRelationship(c_TranslationValue, "has", c_Language, KnownRelationshipGuids.Translation_Value__has__Language, true, "for", KnownRelationshipGuids.Language__for__Translation_Value); - c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); + c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); r_Tenant__has_login_header__Translation = oms.CreateRelationship(c_Tenant, "has login header", c_Translation, KnownRelationshipGuids.Tenant__has_login_header__Translation, true); r_Tenant__has_login_footer__Translation = oms.CreateRelationship(c_Tenant, "has login footer", c_Translation, KnownRelationshipGuids.Tenant__has_login_footer__Translation, true); - InstanceHandle c_Application = oms.CreateClass("Application", KnownInstanceGuids.Classes.Application); + Class c_Application = oms.CreateClass("Application", KnownInstanceGuids.Classes.Application); oms.CreateRelationship(c_Application, "has title", c_Translation, KnownRelationshipGuids.Application__has_title__Translation, true, "title for", KnownRelationshipGuids.Translation__title_for__Application); } } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/UserInterfaceModule.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/UserInterfaceModule.cs index 0a2dbd4..4ed24eb 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/UserInterfaceModule.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/UserInterfaceModule.cs @@ -7,21 +7,21 @@ namespace Mocha.Core.OmsImplementations.Mini.Modules; public class UserInterfaceModule : MiniOmsModule { - private InstanceHandle c_Element, c_ElementContent, c_DerivedElementContent; - private InstanceHandle r_User__has__Role; + private Class c_Element, c_ElementContent, c_DerivedElementContent; + private Relationship r_User__has__Role; private InstanceHandle a_Name; - private InstanceHandle c_ExecutableReturningWorkData, c_ExecutableReturningElement; - private InstanceHandle c_ElementContentDisplayOption; - private InstanceHandle c_Tenant, c_Method, c_MethodBinding, c_BuildUIResponseMethod, c_ControlTransactionMethod; - private InstanceHandle c_BuildResponseMethodBinding; + private Class c_ExecutableReturningWorkData, c_ExecutableReturningElement; + private Class c_ElementContentDisplayOption; + private Class c_Tenant, c_Method, c_MethodBinding, c_BuildUIResponseMethod, c_ControlTransactionMethod; + private Class c_BuildResponseMethodBinding; protected override void BuildInternal(Oms oms) { - c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); + c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); a_Name = oms.GetInstance(KnownAttributeGuids.Text.Name); - c_Method = oms.GetInstance(KnownInstanceGuids.Classes.Method); - c_MethodBinding = oms.GetInstance(KnownInstanceGuids.Classes.MethodBinding); + c_Method = oms.GetInstance(KnownInstanceGuids.Classes.Method); + c_MethodBinding = oms.GetInstance(KnownInstanceGuids.Classes.MethodBinding); c_Element = oms.CreateClass("Element", KnownInstanceGuids.Classes.Element); oms.AddAttribute(c_Element, a_Name); @@ -45,7 +45,7 @@ public class UserInterfaceModule : MiniOmsModule c_DerivedElementContent = oms.CreateClass("Derived Element Content", KnownInstanceGuids.Classes.DerivedElementContent); oms.AddSuperClass(c_DerivedElementContent, c_ElementContent); - c_ExecutableReturningWorkData = oms.GetInstance(KnownInstanceGuids.Classes.ExecutableReturningWorkData); + c_ExecutableReturningWorkData = oms.GetInstance(KnownInstanceGuids.Classes.ExecutableReturningWorkData); oms.CreateRelationship(c_Element, "has", c_ElementContent, KnownRelationshipGuids.Element__has__Element_Content, false, "for", KnownRelationshipGuids.Element_Content__for__Element); oms.CreateRelationship(c_ElementContent, "has", c_Instance, KnownRelationshipGuids.Element_Content__has__Instance, true, "has", KnownRelationshipGuids.Instance__for__Element_Content); @@ -73,28 +73,28 @@ public class UserInterfaceModule : MiniOmsModule // InstanceHandle Method_Binding__get__Method_Binding_Abbreviation = oms.GetInstance(KnownInstanceGuids.Methods.ConditionalSelectAttribute.Method_Binding__get__Method_Binding_Abbreviation); InstanceHandle a_Value = oms.GetInstance(KnownAttributeGuids.Text.Value); InstanceHandle Instance__get__Parent_Class_rsmb = oms.GetInstance(KnownInstanceGuids.Methods.GetRelationship.Instance__get__Parent_Class__for__Method_Binding__HACK); - BuildAttributeMethod Method__get__CT_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method, "get", "CT Method Suffix", AccessModifier.Public, true, a_Value, "CT"); - EvaluateBooleanExpressionMethod Method__is__CT = mb.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "CT", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.ControlTransactionMethod)); + BuildAttributeMethod Method__get__CT_Method_Suffix = mb.CreateBuildAttributeMethod(c_Method.GetHandle(), "get", "CT Method Suffix", AccessModifier.Public, true, a_Value, "CT"); + EvaluateBooleanExpressionMethod Method__is__CT = mb.CreateEvaluateBooleanExpressionMethod(c_Method.GetHandle(), "is", "CT", AccessModifier.Public, false, oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb, RelationalOperator.InSelectionList, oms.GetInstance(KnownInstanceGuids.MethodClasses.ControlTransactionMethod)); // ConditionalSelectAttributeCase i_CT_Case = new ConditionalSelectAttributeCase(new IExecutableReturningAttribute[] { Method__is__CT.CreateMethodBinding(oms) }, null, false, Method__get__CT_Method_Suffix.CreateMethodBinding(oms)); // mb.AddConditionalSelectAttributeCase(new ConditionalSelectAttributeMethod(Method_Binding__get__Method_Binding_Abbreviation), i_CT_Case); - InstanceHandle c_Menu = oms.CreateClass("Menu", KnownInstanceGuids.Classes.Menu); - InstanceHandle c_MenuItem = oms.CreateClass("Menu Item", KnownInstanceGuids.Classes.MenuItem); + Class c_Menu = oms.CreateClass("Menu", KnownInstanceGuids.Classes.Menu); + Class c_MenuItem = oms.CreateClass("Menu Item", KnownInstanceGuids.Classes.MenuItem); - InstanceHandle c_MenuItemCommand = oms.CreateClass("Menu Item Command", KnownInstanceGuids.Classes.MenuItemCommand); + Class c_MenuItemCommand = oms.CreateClass("Menu Item Command", KnownInstanceGuids.Classes.MenuItemCommand); oms.AddSuperClass(c_MenuItemCommand, c_MenuItem); - InstanceHandle c_MenuItemGroup = oms.CreateClass("Menu Item Group", KnownInstanceGuids.Classes.MenuItemGroup); + Class c_MenuItemGroup = oms.CreateClass("Menu Item Group", KnownInstanceGuids.Classes.MenuItemGroup); oms.AddSuperClass(c_MenuItemGroup, c_MenuItem); - InstanceHandle c_MenuItemHeader = oms.CreateClass("Menu Item Header", KnownInstanceGuids.Classes.MenuItemHeader); + Class c_MenuItemHeader = oms.CreateClass("Menu Item Header", KnownInstanceGuids.Classes.MenuItemHeader); oms.AddSuperClass(c_MenuItemHeader, c_MenuItem); - InstanceHandle c_MenuItemInstance = oms.CreateClass("Menu Item Instance", KnownInstanceGuids.Classes.MenuItemInstance); + Class c_MenuItemInstance = oms.CreateClass("Menu Item Instance", KnownInstanceGuids.Classes.MenuItemInstance); oms.AddSuperClass(c_MenuItemInstance, c_MenuItem); - InstanceHandle c_MenuItemSeparator = oms.CreateClass("Menu Item Separator", KnownInstanceGuids.Classes.MenuItemSeparator); + Class c_MenuItemSeparator = oms.CreateClass("Menu Item Separator", KnownInstanceGuids.Classes.MenuItemSeparator); oms.AddSuperClass(c_MenuItemSeparator, c_MenuItem); oms.CreateRelationship(c_Menu, "has", c_MenuItem, KnownRelationshipGuids.Menu__has__Menu_Item, false, "for", KnownRelationshipGuids.Menu_Item__for__Menu); diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/WebModule.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/WebModule.cs index 681bea2..34c155f 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/WebModule.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsImplementations/Mini/Modules/WebModule.cs @@ -1,8 +1,10 @@ +using Mocha.Core.Oop; + namespace Mocha.Core.OmsImplementations.Mini.Modules; public class WebModule : MiniOmsModule { - private InstanceHandle c_Route, c_ControlTransactionMethod; + private Class c_Route, c_ControlTransactionMethod; private InstanceHandle a_TargetURL; private InstanceHandle CreateRoute(Oms oms, string targetUrl, InstanceHandle processedByControlTransactionMethod) @@ -22,7 +24,7 @@ public class WebModule : MiniOmsModule c_Tenant = oms.GetInstance(KnownInstanceGuids.Classes.Tenant); oms.AddAttribute(c_Route, a_TargetURL); - c_ControlTransactionMethod = oms.GetInstance(KnownInstanceGuids.MethodClasses.ControlTransactionMethod); + c_ControlTransactionMethod = oms.GetInstance(KnownInstanceGuids.MethodClasses.ControlTransactionMethod); oms.CreateRelationship(c_Route, "processed by", c_ControlTransactionMethod, KnownRelationshipGuids.Route__processed_by__Control_Transaction_Method, true, "processes", KnownRelationshipGuids.Control_Transaction_Method__processes__Route); oms.CreateRelationship(c_Tenant, "has initiating", c_Route, KnownRelationshipGuids.Tenant__has_initiating__Route, true, "initiates for", KnownRelationshipGuids.Route__initiates_for__Tenant); diff --git a/mocha-dotnet/src/lib/Mocha.Core/OmsMethodBuilder.cs b/mocha-dotnet/src/lib/Mocha.Core/OmsMethodBuilder.cs index 1b944d5..d9b8dfc 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/OmsMethodBuilder.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/OmsMethodBuilder.cs @@ -40,19 +40,19 @@ public class OmsMethodBuilder public ReturnAttributeMethodBinding CreateReturnAttributeMethodBinding(MethodReturningAttribute method) { InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnAttributeMethodBinding); - Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.Handle); + Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle()); return new ReturnAttributeMethodBinding(methodBinding); } public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method) { InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnInstanceSetMethodBinding); - Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.Handle); + Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle()); return new ReturnInstanceSetMethodBinding(methodBinding); } public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method) { InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnElementMethodBinding); - Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.Handle); + Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle()); return new ReturnElementMethodBinding(methodBinding); } public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method) @@ -63,7 +63,7 @@ public class OmsMethodBuilder } InstanceHandle methodBinding = Oms.CreateInstanceOf(c_BuildResponseMethodBinding); - Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.Handle); + Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle()); return new BuildResponseMethodBinding(methodBinding); } @@ -86,7 +86,7 @@ public class OmsMethodBuilder public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceHandle specifiedInstance) { GetSpecifiedInstancesMethod meth = CreateGetSpecifiedInstancesMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet, new InstanceHandle[] { specifiedInstance }); - Oms.SetAttributeValue(meth.Handle, Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true); + Oms.SetAttributeValue(meth.GetHandle(), Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true); return meth; } public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, WorkSet returnsWorkSet, InstanceHandle[] specifiedInstances) @@ -96,7 +96,7 @@ public class OmsMethodBuilder public GetSpecifiedInstancesMethod CreateGetSpecifiedInstancesMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceHandle[] specifiedInstances) { InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetSpecifiedInstancesMethod), forClassInstance, verb, name, accessModifier, isStatic); - Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Specified_Instances_Method__returns__Work_Set), returnsWorkSet.Handle); + Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Specified_Instances_Method__returns__Work_Set), returnsWorkSet.GetHandle()); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Specified_Instances_Method__uses__Instance), specifiedInstances); return new GetSpecifiedInstancesMethod(method); } @@ -136,7 +136,7 @@ public class OmsMethodBuilder { 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__uses__System_Attribute_Routine), usesSystemAttributeRoutine.Handle); + Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Attribute_by_System_Routine_Method__uses__System_Attribute_Routine), usesSystemAttributeRoutine.GetHandle()); return new GetAttributeBySystemRoutineMethod(method); } @@ -147,14 +147,14 @@ public class OmsMethodBuilder public GetInstanceSetBySystemRoutineMethod CreateGetInstanceSetBySystemRoutineMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, WorkSet returnsWorkSet, SystemInstanceSetRoutine usesSystemInstanceSetRoutine) { InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetAttributeBySystemRoutineMethod), forClassInstance, verb, name, accessModifier, isStatic, globalIdentifier); - Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Instance_Set_by_System_Routine_Method__returns__Work_Set), returnsWorkSet.Handle); - Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Instance_Set_by_System_Routine_Method__uses__System_Instance_Set_Routine), usesSystemInstanceSetRoutine.Handle); + Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Instance_Set_by_System_Routine_Method__returns__Work_Set), returnsWorkSet.GetHandle()); + Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Get_Instance_Set_by_System_Routine_Method__uses__System_Instance_Set_Routine), usesSystemInstanceSetRoutine.GetHandle()); return new GetInstanceSetBySystemRoutineMethod(method); } public AssignAttributeMethod CreateAssignAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, ReturnAttributeMethodBinding assignsFromExecutableReturningAttribute, InstanceHandle assignsToAttribute) { - return CreateAssignAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, assignsFromExecutableReturningAttribute.Handle, assignsToAttribute); + return CreateAssignAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, assignsFromExecutableReturningAttribute.GetHandle(), assignsToAttribute); } public AssignAttributeMethod CreateAssignAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle assignsFromExecutableReturningAttribute, InstanceHandle assignsToAttribute) { @@ -164,6 +164,14 @@ public class OmsMethodBuilder return new AssignAttributeMethod(method); } + public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Relationship returnsRelationship, bool singular = false) + { + return CreateGetRelationshipMethod(forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid(), returnsRelationship.GetHandle(), singular); + } + public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, Guid globalIdentifier, Relationship returnsRelationship, bool singular = false) + { + return CreateGetRelationshipMethod(forClassInstance, verb, name, accessModifier, isStatic, globalIdentifier, returnsRelationship.GetHandle(), singular); + } public GetRelationshipMethod CreateGetRelationshipMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsRelationship, bool singular = false) { return CreateGetRelationshipMethod(forClassInstance, verb, name, accessModifier, isStatic, Guid.NewGuid(), returnsRelationship, singular); @@ -178,7 +186,7 @@ public class OmsMethodBuilder public GetReferencedAttributeMethod CreateGetReferencedAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IExecutableReturningInstanceSet usesReferenceInstanceSet, IExecutableReturningAttribute usesAnswerExecutableReturningAttribute, InstanceHandle? usesAccumulationFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null) { - return CreateGetReferencedAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsAttribute, usesReferenceInstanceSet.Handle, usesAnswerExecutableReturningAttribute.Handle, usesAccumulationFunction, usesOrderExecutableReturningAttribute); + return CreateGetReferencedAttributeMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsAttribute, usesReferenceInstanceSet.GetHandle(), usesAnswerExecutableReturningAttribute.GetHandle(), usesAccumulationFunction, usesOrderExecutableReturningAttribute); } public GetReferencedAttributeMethod CreateGetReferencedAttributeMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle usesReferenceInstanceSet, InstanceHandle usesAnswerExecutableReturningAttribute, InstanceHandle? usesAccumulationFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null) { @@ -199,7 +207,7 @@ public class OmsMethodBuilder public SelectFromInstanceSetMethod CreateSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, WorkSet returnsWorkSet, InstanceWrapper usesExecutableReturningInstanceSet, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null) { - return CreateSelectFromInstanceSetMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet.Handle, usesExecutableReturningInstanceSet.Handle, usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute); + return CreateSelectFromInstanceSetMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet.GetHandle(), usesExecutableReturningInstanceSet.GetHandle(), usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute); } public SelectFromInstanceSetMethod CreateSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsWorkSet, InstanceHandle usesExecutableReturningInstanceSet, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null) { @@ -237,9 +245,9 @@ public class OmsMethodBuilder List cases2 = new List(); foreach (InstanceWrapper wrapper in cases) { - cases2.Add(wrapper.Handle); + cases2.Add(wrapper.GetHandle()); } - return CreateConditionalSelectFromInstanceSetMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet.Handle, cases2.ToArray(), usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute); + return CreateConditionalSelectFromInstanceSetMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsWorkSet.GetHandle(), cases2.ToArray(), usesSetFunction, usesSelectionFunction, usesOrderExecutableReturningAttribute); } public ConditionalSelectFromInstanceSetMethod CreateConditionalSelectFromInstanceSetMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsWorkSet, InstanceHandle[] cases, InstanceHandle? usesSetFunction = null, InstanceHandle? usesSelectionFunction = null, InstanceHandle? usesOrderExecutableReturningAttribute = null) { @@ -307,13 +315,13 @@ public class OmsMethodBuilder Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Condition_Group__has_false_condition__Executable_returning_Work_Data), falseConditions); } - Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_Attribute_Case__invokes__Executable_returning_Attribute), sacCase.UsesExecutableReturningAttribute.Handle); + Oms.AssignRelationship(ih, Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_Attribute_Case__invokes__Executable_returning_Attribute), sacCase.UsesExecutableReturningAttribute.GetHandle()); return ih; } - public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IInstanceWrapper sourceWorkData, BooleanOperator booleanOperator, IInstanceWrapper compareToWorkData = null) + public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, IInstanceReference sourceWorkData, BooleanOperator booleanOperator, IInstanceReference compareToWorkData = null) { - return CreateEvaluateBooleanExpressionMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsAttribute, sourceWorkData.Handle, booleanOperator, compareToWorkData?.Handle); + return CreateEvaluateBooleanExpressionMethod(forClassInstance, verb, name, accessModifier, isStatic, returnsAttribute, sourceWorkData.GetHandle(), booleanOperator, compareToWorkData?.GetHandle()); } public EvaluateBooleanExpressionMethod CreateEvaluateBooleanExpressionMethod(InstanceHandle forClassInstance, string verb, string name, AccessModifier accessModifier, bool isStatic, InstanceHandle returnsAttribute, InstanceHandle sourceWorkData, BooleanOperator booleanOperator, InstanceHandle? compareToWorkData) @@ -321,7 +329,7 @@ public class OmsMethodBuilder InstanceHandle method = CreateMethodBase(Oms.GetInstance(KnownInstanceGuids.MethodClasses.EvaluateBooleanExpressionMethod), forClassInstance, verb, name, accessModifier, isStatic); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__returns__Boolean_Attribute), returnsAttribute); Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__has_source__Executable_returning_Work_Data), sourceWorkData); - Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__uses__Boolean_Operator), booleanOperator.Handle); + Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__uses__Boolean_Operator), booleanOperator.GetHandle()); if (compareToWorkData.HasValue) { Oms.AssignRelationship(method, Oms.GetInstance(KnownRelationshipGuids.Evaluate_Boolean_Expression_Method__has_target__Executable_returning_Work_Data), compareToWorkData.Value); @@ -353,13 +361,13 @@ public class OmsMethodBuilder { Oms.AssignRelationship(method, r_Control_Transaction_Method__processes__Element, processesElement); } - Oms.AssignRelationship(method, r_Control_Transaction_Method__uses__Build_Response_Method_Binding, usesBuildResponseMethodBinding.Handle); + Oms.AssignRelationship(method, r_Control_Transaction_Method__uses__Build_Response_Method_Binding, usesBuildResponseMethodBinding.GetHandle()); return new ControlTransactionMethod(method); } public void AddConditionalSelectAttributeCase(ConditionalSelectAttributeMethod method, ConditionalSelectAttributeCase cas) { InstanceHandle ihCase = CreateConditionalSelectAttributeCase(cas); - Oms.AssignRelationship(method.Handle, Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_Attribute_Method__has__Conditional_Select_Attribute_Case), ihCase); + Oms.AssignRelationship(method.GetHandle(), Oms.GetInstance(KnownRelationshipGuids.Conditional_Select_Attribute_Method__has__Conditional_Select_Attribute_Case), ihCase); } } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/Class.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/Class.cs new file mode 100644 index 0000000..d9dec59 --- /dev/null +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/Class.cs @@ -0,0 +1,12 @@ +using System; + +namespace Mocha.Core.Oop; + +public class Class : ConcreteInstanceWrapper +{ + public Class(InstanceHandle h) : base(h) + { + + } + public override Guid ClassId => KnownInstanceGuids.Classes.Class; +} diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/ConcreteInstanceWrapper.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/ConcreteInstanceWrapper.cs index 55837dd..80736f2 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/ConcreteInstanceWrapper.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/ConcreteInstanceWrapper.cs @@ -19,8 +19,7 @@ namespace Mocha.Core.Oop; public abstract class ConcreteInstanceWrapper : InstanceWrapper { - - private InstanceHandle TheHandle { get; } + private InstanceHandle TheHandle { get; } internal ConcreteInstanceWrapper(InstanceHandle handle) { TheHandle = handle; @@ -60,9 +59,29 @@ public abstract class ConcreteInstanceWrapper : InstanceWrapper } return null; } + internal static T? Wrap(Oms oms, InstanceHandle methodInstance) where T : ConcreteInstanceWrapper + { + ConcreteInstanceWrapper? cc = Wrap(oms, methodInstance); + if (cc is T) + { + return (T)cc; + } + return null; + } public override string ToString() { return TheHandle.ToString(); } + + protected virtual void UpdateInternal(Oms oms) { } + + /// + /// Updates the details in this language binding object to match the values in the OMS. + /// + /// + internal void Update(Oms oms) + { + UpdateInternal(oms); + } } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/ConditionGroup.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/ConditionGroup.cs index 04d46fe..72feb12 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/ConditionGroup.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/ConditionGroup.cs @@ -19,11 +19,11 @@ namespace Mocha.Core.Oop; public abstract class ConditionGroup { - public IInstanceWrapper[] TrueConditions { get; } - public IInstanceWrapper[] FalseConditions { get; } + public IInstanceReference[] TrueConditions { get; } + public IInstanceReference[] FalseConditions { get; } public bool UseAnyCondition { get; set; } = false; - public ConditionGroup(IInstanceWrapper[] trueConditions, IInstanceWrapper[] falseConditions, bool useAnyCondition) + public ConditionGroup(IInstanceReference[] trueConditions, IInstanceReference[] falseConditions, bool useAnyCondition) { TrueConditions = trueConditions; FalseConditions = falseConditions; diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningAttribute.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningAttribute.cs index d730caf..c41699c 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningAttribute.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningAttribute.cs @@ -17,7 +17,7 @@ namespace Mocha.Core.Oop; -public interface IExecutableReturningAttribute : IInstanceWrapper +public interface IExecutableReturningAttribute : IInstanceReference { } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningElement.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningElement.cs index b8acd25..4204e8e 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningElement.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningElement.cs @@ -17,7 +17,7 @@ namespace Mocha.Core.Oop; -public interface IExecutableReturningElement : IInstanceWrapper +public interface IExecutableReturningElement : IInstanceReference { } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningInstanceSet.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningInstanceSet.cs index 83b88a4..2de860d 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningInstanceSet.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/IExecutableReturningInstanceSet.cs @@ -17,7 +17,7 @@ namespace Mocha.Core.Oop; -public interface IExecutableReturningInstanceSet : IInstanceWrapper +public interface IExecutableReturningInstanceSet : IInstanceReference { } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/IInstanceWrapper.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/IInstanceWrapper.cs index 3f40789..61093da 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/IInstanceWrapper.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/IInstanceWrapper.cs @@ -17,13 +17,19 @@ namespace Mocha.Core.Oop; -public interface IInstanceWrapper +public abstract class InstanceWrapper : IInstanceReference { - InstanceHandle Handle { get; } + public virtual Guid ClassId { get; } + protected abstract InstanceHandle GetHandleInternal(); + + public InstanceHandle GetHandle() + { + return GetHandleInternal(); + } } public static class InstanceWrapperArrayExtensions { - public static InstanceHandle[] ToInstanceHandleArray(this IInstanceWrapper[] z) + public static InstanceHandle[] ToInstanceHandleArray(this IInstanceReference[] z) { if (z == null) { @@ -33,7 +39,7 @@ public static class InstanceWrapperArrayExtensions InstanceHandle[] array = new InstanceHandle[z.Length]; for (int i = 0; i < z.Length; i++) { - array[i] = z[i].Handle; + array[i] = z[i].GetHandle(); } return array; } diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/InstanceWrapper.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/InstanceWrapper.cs deleted file mode 100644 index 2ef0adf..0000000 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/InstanceWrapper.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2024 Michael Becker -// -// This file is part of Mocha.NET. -// -// Mocha.NET is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Mocha.NET is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Mocha.NET. If not, see . - -namespace Mocha.Core.Oop; - -public abstract class InstanceWrapper : IInstanceWrapper -{ - public abstract Guid ClassId { get; } - - private InstanceHandle _Handle = InstanceHandle.Empty; - protected abstract InstanceHandle GetHandleInternal(); - - public InstanceHandle Handle - { - get - { - if (_Handle == InstanceHandle.Empty) - { - _Handle = GetHandleInternal(); - } - return _Handle; - } - } - - public override bool Equals(object? obj) - { - if (obj is InstanceWrapper) - { - return Handle.Equals(((InstanceWrapper)obj).Handle); - } - return base.Equals(obj); - } -} \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/Method.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/Method.cs index 5547cee..e313ac7 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oop/Method.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/Method.cs @@ -46,7 +46,7 @@ public abstract class Method : ConcreteInstanceWrapper } else if (kvp.Value is InstanceWrapper) { - assignsFromWorkData = ((InstanceWrapper)kvp.Value).Handle; + assignsFromWorkData = ((InstanceWrapper)kvp.Value).GetHandle(); } oms.AssignRelationship(parm, r_Parameter_Assignment__assigns_to__Work_Data, assignsToParm); @@ -54,7 +54,7 @@ public abstract class Method : ConcreteInstanceWrapper parms.Add(parm); } - oms.AssignRelationship(mb.Handle, r_Method_Binding__has__Parameter_Assignment, parms.ToArray()); + oms.AssignRelationship(mb.GetHandle(), r_Method_Binding__has__Parameter_Assignment, parms.ToArray()); } } } \ No newline at end of file diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oop/Relationship.cs b/mocha-dotnet/src/lib/Mocha.Core/Oop/Relationship.cs new file mode 100644 index 0000000..3b5457a --- /dev/null +++ b/mocha-dotnet/src/lib/Mocha.Core/Oop/Relationship.cs @@ -0,0 +1,12 @@ +using System; + +namespace Mocha.Core.Oop; + +public class Relationship : ConcreteInstanceWrapper +{ + public Relationship(InstanceHandle handle) : base(handle) + { + } + + public override Guid ClassId => KnownInstanceGuids.Classes.Relationship; +} diff --git a/mocha-dotnet/src/lib/Mocha.Core/Relationship.cs b/mocha-dotnet/src/lib/Mocha.Core/Relationship.cs deleted file mode 100755 index 87d3bda..0000000 --- a/mocha-dotnet/src/lib/Mocha.Core/Relationship.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (C) 2024 Michael Becker -// -// This file is part of Mocha.NET. -// -// Mocha.NET is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// Mocha.NET is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Mocha.NET. If not, see . - -using System; -using System.Collections.Generic; - -namespace Mocha.Core -{ - public class Relationship - { - public Relationship(InstanceHandle sourceInstance, InstanceHandle relationshipInstance) - { - SourceInstance = sourceInstance; - RelationshipInstance = relationshipInstance; - } - - public InstanceHandle SourceInstance { get; } - public InstanceHandle RelationshipInstance { get; } - } -} diff --git a/mocha-dotnet/src/lib/Mocha.Zq.Integration/ZqIntegrator.cs b/mocha-dotnet/src/lib/Mocha.Zq.Integration/ZqIntegrator.cs index df2fefb..2a989d9 100644 --- a/mocha-dotnet/src/lib/Mocha.Zq.Integration/ZqIntegrator.cs +++ b/mocha-dotnet/src/lib/Mocha.Zq.Integration/ZqIntegrator.cs @@ -3,6 +3,7 @@ using System.Runtime.InteropServices; using System.Text; using Microsoft.VisualBasic; using Mocha.Core; +using Mocha.Core.Oop; using Mocha.Zq.Expressions; using Mocha.Zq.Methods; @@ -32,7 +33,7 @@ public class ZqIntegrator { if (obj is ZqClass zql) { - InstanceHandle ih = OMS.CreateClass(zql.Name); + Class ih = OMS.CreateClass(zql.Name); if (zql.InstanceKey != InstanceKey.Empty) { if (zql.InstanceKey.ClassIndex == 1) @@ -80,14 +81,14 @@ public class ZqIntegrator } } - OMS.MethodBuilder.CreateGetSpecifiedInstancesMethod(ih, null, meth.Name, ws, list.ToArray()); + OMS.MethodBuilder.CreateGetSpecifiedInstancesMethod(ih.GetHandle(), null, meth.Name, ws, list.ToArray()); } else if (gsi.ReturnValue is ZqVariableReference) { object r = ResolveVariable(ih, ((ZqVariableReference)gsi.ReturnValue).Name); if (r is InstanceHandle ihret) { - OMS.MethodBuilder.CreateGetSpecifiedInstancesMethod(ih, null, meth.Name, ws, ihret); + OMS.MethodBuilder.CreateGetSpecifiedInstancesMethod(ih.GetHandle(), null, meth.Name, ws, ihret); } } } @@ -97,7 +98,7 @@ public class ZqIntegrator return null; } - private object ResolveVariable(InstanceHandle parentClassInstance, string name) + private object ResolveVariable(Class parentClassInstance, string name) { InstanceHandle ihret = OMS.GetInstanceByName(parentClassInstance, name); if (ihret != InstanceHandle.Empty) diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/DerivedInstanceTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/DerivedInstanceTests.cs index d38b49f..d32a6a9 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/DerivedInstanceTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/DerivedInstanceTests.cs @@ -1,11 +1,12 @@ using System; +using Mocha.Core.Oop; using Newtonsoft.Json.Serialization; namespace Mocha.Core.Tests; public class DerivedInstanceTests : OmsTestsBase { - InstanceHandle TEST_CLASS_DERIVED; + Class TEST_CLASS_DERIVED; protected override void AfterSetup() { base.AfterSetup(); diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/InheritanceTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/InheritanceTests.cs index 0378d39..6d6741f 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/InheritanceTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/InheritanceTests.cs @@ -15,10 +15,6 @@ // You should have received a copy of the GNU General Public License // along with Mocha.NET. If not, see . -using System.Runtime.CompilerServices; - -using Mocha.Core.OmsImplementations.Mini; - namespace Mocha.Core.Tests; [TestFixture] diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/LibraryLoaderTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/LibraryLoaderTests.cs index ba6ee25..b66e1c0 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/LibraryLoaderTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/LibraryLoaderTests.cs @@ -15,10 +15,6 @@ // You should have received a copy of the GNU General Public License // along with Mocha.NET. If not, see . -using System.Runtime.CompilerServices; -using Mocha.Core.OmsImplementations; -using Mocha.Core.OmsImplementations.Mini; - namespace Mocha.Core.Tests; [TestFixture] diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/CalculateDateMethodTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/CalculateDateMethodTests.cs index 1e4dc8a..6ebeefc 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/CalculateDateMethodTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/CalculateDateMethodTests.cs @@ -1,9 +1,3 @@ - -using System.ComponentModel.DataAnnotations; -using Mocha.Core.OmsImplementations.Mini; -using Mocha.Core.Oop; -using Mocha.Core.Oop.Methods; - namespace Mocha.Core.Tests; public class CalculateDateMethodTests : MethodTestsBase diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/EvaluateBooleanExpressionMethodTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/EvaluateBooleanExpressionMethodTests.cs index b6e7512..b483986 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/EvaluateBooleanExpressionMethodTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/EvaluateBooleanExpressionMethodTests.cs @@ -41,13 +41,13 @@ public class EvaluateBooleanExpressionMethodTests : MethodTestsBase Assert.That(pclass, Is.EqualTo(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod))); - EvaluateBooleanExpressionMethod Method__is__Conditional_Select_Attribute_Method = methodBuilder.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 = methodBuilder.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "SAC", AccessModifier.Public, false, Oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.GetHandle(), RelationalOperator.InSelectionList, Oms.GetInstance(KnownInstanceGuids.MethodClasses.ConditionalSelectAttributeMethod)); ReturnAttributeMethodBinding Method__is__Conditional_Select_Attribute_Method_ramb = Method__is__Conditional_Select_Attribute_Method.CreateMethodBinding(Oms); - EvaluateBooleanExpressionMethod Method__is__Get_Relationship_Method = methodBuilder.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 = methodBuilder.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "GR", AccessModifier.Public, false, Oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.GetHandle(), RelationalOperator.InSelectionList, Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod)); ReturnAttributeMethodBinding Method__is__Get_Relationship_Method_ramb = Method__is__Get_Relationship_Method.CreateMethodBinding(Oms); - context.SetWorkData(Oms.GetInstance(KnownInstanceGuids.Classes.Method), Instance__get__Parent_Class.Handle); + context.SetWorkData(Oms.GetInstance(KnownInstanceGuids.Classes.Method), Instance__get__Parent_Class.GetHandle()); InstanceHandle workData = Oms.Execute(context, Method__is__Conditional_Select_Attribute_Method_ramb); object? value = context.GetWorkData(workData); @@ -74,13 +74,13 @@ public class EvaluateBooleanExpressionMethodTests : MethodTestsBase InstanceHandle pclass = (InstanceHandle) context.GetWorkData(wsRet); Assert.That(pclass, Is.EqualTo(Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod))); - EvaluateBooleanExpressionMethod Method__is__Conditional_Select_Attribute_Method = methodBuilder.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 = methodBuilder.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "SAC", AccessModifier.Public, false, Oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.GetHandle(), RelationalOperator.InSelectionList, Oms.GetInstance(KnownInstanceGuids.MethodClasses.ConditionalSelectAttributeMethod)); ReturnAttributeMethodBinding Method__is__Conditional_Select_Attribute_Method_ramb = Method__is__Conditional_Select_Attribute_Method.CreateMethodBinding(Oms); - EvaluateBooleanExpressionMethod Method__is__Get_Relationship_Method = methodBuilder.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 = methodBuilder.CreateEvaluateBooleanExpressionMethod(c_Method, "is", "GR", AccessModifier.Public, false, Oms.GetInstance(KnownAttributeGuids.Boolean.MethodIsOfTypeSpecified), Instance__get__Parent_Class_rsmb.GetHandle(), RelationalOperator.InSelectionList, Oms.GetInstance(KnownInstanceGuids.MethodClasses.GetRelationshipMethod)); ReturnAttributeMethodBinding Method__is__Get_Relationship_Method_ramb = Method__is__Get_Relationship_Method.CreateMethodBinding(Oms); - context.SetWorkData(Oms.GetInstance(KnownInstanceGuids.Classes.Method), Instance__get__Parent_Class.Handle); + context.SetWorkData(Oms.GetInstance(KnownInstanceGuids.Classes.Method), Instance__get__Parent_Class.GetHandle()); InstanceHandle workData = Oms.Execute(context, Method__is__Get_Relationship_Method_ramb); object? value = context.GetWorkData(workData); diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetReferencedAttributeTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetReferencedAttributeTests.cs index 92f1b71..cdcb8b3 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetReferencedAttributeTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetReferencedAttributeTests.cs @@ -24,7 +24,7 @@ public class GetReferencedAttributeTests : MethodTestsBase { protected InstanceHandle c_Nurse, c_Patient; protected InstanceHandle a_Name, a_Acuity; - protected InstanceHandle r_Nurse__has__Patient, r_Patient__for__Nurse; + protected Relationship r_Nurse__has__Patient, r_Patient__for__Nurse; protected override void AfterSetup() { diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetRelationshipTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetRelationshipTests.cs index 3dbcd6f..99989cd 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetRelationshipTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/GetRelationshipTests.cs @@ -150,7 +150,7 @@ public class GetRelationshipTests : MethodTestsBase object? oih = context.GetWorkData(ihResult); if (Oms.TryGetSingularInstance(oih, out InstanceHandle ih)) { - InstanceHandle ihRealParent = Oms.GetParentClass(sac.Handle); + InstanceHandle ihRealParent = Oms.GetParentClass(sac); Assert.That(ih, Is.EqualTo(ihRealParent)); } else diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/MethodBindingTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/MethodBindingTests.cs index 00e11bf..7f632f8 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/MethodBindingTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/MethodBindingTests.cs @@ -1,5 +1,6 @@ using System; using Mocha.Core.Oop; +using Mocha.Core.Oop.Methods; namespace Mocha.Core.Tests.MethodTests; @@ -12,9 +13,9 @@ public class MethodBindingTests : MethodTestsBase InstanceHandle c_MethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.MethodBinding); WorkSet ws_1 = Oms.CreateWorkSet("Test Work Set 1"); - MethodReturningInstanceSet dummy = mb.CreateGetSpecifiedInstancesMethod(c_TestClass, "get", "Test Class", ws_1, new InstanceHandle[] { c_TestClass }); + MethodReturningInstanceSet dummy = mb.CreateGetSpecifiedInstancesMethod(c_TestClass.GetHandle(), "get", "Test Class", ws_1, new InstanceHandle[] { c_TestClass.GetHandle() }); - InstanceHandle handle = mb.CreateReturnInstanceSetMethodBinding(dummy).Handle; + InstanceHandle handle = mb.CreateReturnInstanceSetMethodBinding(dummy).GetHandle(); Assert.That(Oms.IsInstanceOf(handle, c_MethodBinding)); } [Test] @@ -24,9 +25,9 @@ public class MethodBindingTests : MethodTestsBase InstanceHandle c_MethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.MethodBinding); InstanceHandle a_Text = Oms.GetInstance(KnownAttributeGuids.Text.Value); - MethodReturningAttribute dummy = mb.CreateGetAttributeMethod(c_TestClass, "get", "Test Attribute", a_Text); + MethodReturningAttribute dummy = mb.CreateGetAttributeMethod(c_TestClass.GetHandle(), "get", "Test Attribute", a_Text); - InstanceHandle handle = mb.CreateReturnAttributeMethodBinding(dummy).Handle; + InstanceHandle handle = mb.CreateReturnAttributeMethodBinding(dummy).GetHandle(); Assert.That(Oms.IsInstanceOf(handle, c_MethodBinding)); } [Test] @@ -51,9 +52,9 @@ public class MethodBindingTests : MethodTestsBase InstanceHandle c_MethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.MethodBinding); InstanceHandle a_Text = Oms.GetInstance(KnownAttributeGuids.Text.Value); - MethodBuildingResponse dummy = mb.CreateBuildUIResponseMethod(c_TestClass, "get", "Test Attribute", AccessModifier.Public, false, InstanceHandle.Empty); + MethodBuildingResponse dummy = mb.CreateBuildUIResponseMethod(c_TestClass.GetHandle(), "get", "Test Attribute", AccessModifier.Public, false, InstanceHandle.Empty); - InstanceHandle handle = mb.CreateBuildResponseMethodBinding(dummy).Handle; + InstanceHandle handle = mb.CreateBuildResponseMethodBinding(dummy).GetHandle(); Assert.That(Oms.IsInstanceOf(handle, c_MethodBinding)); } [Test] @@ -105,20 +106,20 @@ public class MethodBindingTests : MethodTestsBase [Test] public void Method_Binding__uses_super__Return_Instance_Set_Method_Binding() { - InstanceHandle c_OMS = Oms.GetInstance(KnownInstanceGuids.Classes.OMS); + Class c_OMS = Oms.GetInstance(KnownInstanceGuids.Classes.OMS); InstanceHandle i_OMS = Oms.CreateInstanceOf(c_OMS); InstanceHandle i_OMS2 = Oms.CreateInstanceOf(c_OMS); WorkSet ws = Oms.CreateWorkSet("Singleton OMS"); - Oop.Methods.GetSpecifiedInstancesMethod m1 = Oms.MethodBuilder.CreateGetSpecifiedInstancesMethod(c_OMS, "get", "Singleton", ws, new InstanceHandle[] { i_OMS }); + GetSpecifiedInstancesMethod m1 = Oms.MethodBuilder.CreateGetSpecifiedInstancesMethod(c_OMS.GetHandle(), "get", "Singleton", ws, new InstanceHandle[] { i_OMS }); ReturnInstanceSetMethodBinding rsmb1 = m1.CreateMethodBinding(Oms); - Oop.Methods.GetSpecifiedInstancesMethod m2 = Oms.MethodBuilder.CreateGetSpecifiedInstancesMethod(c_OMS, "get", "Singleton 2", ws, new InstanceHandle[] { i_OMS2 }); + GetSpecifiedInstancesMethod m2 = Oms.MethodBuilder.CreateGetSpecifiedInstancesMethod(c_OMS.GetHandle(), "get", "Singleton 2", ws, new InstanceHandle[] { i_OMS2 }); ReturnInstanceSetMethodBinding rsmb2 = m2.CreateMethodBinding(Oms); ReturnInstanceSetMethodBinding rsmb3 = m2.CreateMethodBinding(Oms); - Oms.AssignRelationship(rsmb3.Handle, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__uses_super__Return_Instance_Set_Method_Binding), rsmb1.Handle); + Oms.AssignRelationship(rsmb3, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__uses_super__Return_Instance_Set_Method_Binding), rsmb1); OmsContext context = Oms.CreateContext(); InstanceHandle valWS = Oms.Execute(context, rsmb3); diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/SelectFromInstanceSetMethodTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/SelectFromInstanceSetMethodTests.cs index 007bd90..d11e0ea 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/SelectFromInstanceSetMethodTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTests/SelectFromInstanceSetMethodTests.cs @@ -37,7 +37,7 @@ public class SelectFromInstanceSetMethodTests : MethodTestsBase OmsMethodBuilder methodBuilder = new OmsMethodBuilder(Oms); GetAttributeMethod get_Order = methodBuilder.CreateGetAttributeMethod(c_AccessModifier, "get", "Order", a_Order); - SelectFromInstanceSetMethod m_Access_Modifier__get__Most_Restrictive_from_Set = methodBuilder.CreateSelectFromInstanceSetMethod(c_AccessModifier, "get", "Most Restrictive from Set", AccessModifier.Public, true, ws_Access_Modifier__Singular, ws_Access_Modifier__Nonsingular, null, Oms.GetInstance(KnownInstanceGuids.SelectionFunctions.Minimum), get_Order.Handle); + SelectFromInstanceSetMethod m_Access_Modifier__get__Most_Restrictive_from_Set = methodBuilder.CreateSelectFromInstanceSetMethod(c_AccessModifier, "get", "Most Restrictive from Set", AccessModifier.Public, true, ws_Access_Modifier__Singular, ws_Access_Modifier__Nonsingular, null, Oms.GetInstance(KnownInstanceGuids.SelectionFunctions.Minimum), get_Order.GetHandle()); if (m_Access_Modifier__get__Most_Restrictive_from_Set != null) { @@ -56,7 +56,7 @@ public class SelectFromInstanceSetMethodTests : MethodTestsBase object? value = context.GetWorkData(workData); Assert.That(value is InstanceHandle); - Assert.That((InstanceHandle?)value, Is.EqualTo(AccessModifier.Private.Handle)); + Assert.That((InstanceHandle?)value, Is.EqualTo(AccessModifier.Private.GetHandle())); } } } \ No newline at end of file diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTestsBase.cs b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTestsBase.cs index 96c4c35..ccf387f 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/MethodTestsBase.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/MethodTestsBase.cs @@ -15,11 +15,7 @@ // You should have received a copy of the GNU General Public License // along with Mocha.NET. If not, see . -using System.ComponentModel.DataAnnotations; -using System.Security.Principal; -using Mocha.Core.OmsImplementations.Mini; using Mocha.Core.Oop; -using Mocha.Core.Oop.Methods; namespace Mocha.Core.Tests; @@ -30,18 +26,18 @@ public abstract class MethodTestsBase : OmsTestsBase Guid gid_r_Test_Class__has_multiple__Test_Class_2 = new Guid("{a5b67aad-e46f-4673-b339-77417396b2fe}"); Guid gid_r_Test_Class_2__multiple_for__Test_Class = new Guid("{2864dfd9-0313-4801-96bf-b9be99ea172d}"); - protected InstanceHandle c_TestClass, c_TestClass2; - protected InstanceHandle r_Test_Class__has__Test_Class_2, r_Test_Class_2__for__Test_Class; - protected InstanceHandle r_Test_Class__has_multiple__Test_Class_2, r_Test_Class_2__multiple_for__Test_Class; + protected Class c_TestClass, c_TestClass2; + protected Relationship r_Test_Class__has__Test_Class_2, r_Test_Class_2__for__Test_Class; + protected Relationship r_Test_Class__has_multiple__Test_Class_2, r_Test_Class_2__multiple_for__Test_Class; protected override void AfterSetup() { base.AfterSetup(); - c_TestClass = Oms.GetInstance(TEST_CLASS_GUID); - c_TestClass2 = Oms.GetInstance(TEST_CLASS2_GUID); + c_TestClass = Oms.GetInstance(TEST_CLASS_GUID); + c_TestClass2 = Oms.GetInstance(TEST_CLASS2_GUID); - r_Test_Class__has__Test_Class_2 = Oms.CreateRelationship(c_TestClass, "has", c_TestClass2, gid_r_Test_Class__has__Test_Class_2, true, "for", gid_r_Test_Class_2__for__Test_Class, out r_Test_Class_2__for__Test_Class); - r_Test_Class__has_multiple__Test_Class_2 = Oms.CreateRelationship(c_TestClass, "has multiple", c_TestClass2, gid_r_Test_Class__has_multiple__Test_Class_2, false, "multiple for", gid_r_Test_Class_2__multiple_for__Test_Class, out r_Test_Class_2__multiple_for__Test_Class); + r_Test_Class__has__Test_Class_2 = Oms.CreateRelationship(c_TestClass.GetHandle(), "has", c_TestClass2.GetHandle(), gid_r_Test_Class__has__Test_Class_2, true, "for", gid_r_Test_Class_2__for__Test_Class, out r_Test_Class_2__for__Test_Class); + r_Test_Class__has_multiple__Test_Class_2 = Oms.CreateRelationship(c_TestClass.GetHandle(), "has multiple", c_TestClass2.GetHandle(), gid_r_Test_Class__has_multiple__Test_Class_2, false, "multiple for", gid_r_Test_Class_2__multiple_for__Test_Class, out r_Test_Class_2__multiple_for__Test_Class); } } \ No newline at end of file diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs b/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs index d138920..4f88be6 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License // along with Mocha.NET. If not, see . -using Mocha.Core.OmsImplementations.Mini; +using Mocha.Core.Oop; namespace Mocha.Core.Tests; @@ -70,8 +70,8 @@ public abstract class OmsTestsBase InstanceHandle irTestNumericAttribute = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.NumericAttribute), TEST_ATTR_NUM_GUID); Assert.That(irTestNumericAttribute, Is.Not.EqualTo(InstanceHandle.Empty)); - InstanceHandle irTestRelationship = Oms.CreateRelationship(irTestClass, "has", irTestClass2, TEST_REL_GUID, true, "for", TEST_REL2_GUID); - Assert.That(irTestRelationship, Is.Not.EqualTo(InstanceHandle.Empty)); + Relationship? irTestRelationship = Oms.CreateRelationship(irTestClass, "has", irTestClass2, TEST_REL_GUID, true, "for", TEST_REL2_GUID); + Assert.That(irTestRelationship, Is.Not.Null); AfterSetup(); } diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/RelationshipTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/RelationshipTests.cs index 3d50318..7fb0141 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/RelationshipTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/RelationshipTests.cs @@ -16,7 +16,7 @@ // along with Mocha.NET. If not, see . -using Mocha.Core.OmsImplementations.Mini; +using Mocha.Core.Oop; namespace Mocha.Core.Tests; @@ -27,10 +27,10 @@ public class RelationshipTests : OmsTestsBase protected readonly Guid TEST_REL5_GUID = new Guid("{b80995cf-6a2d-44c2-9c93-ebb80c9be802}"); protected readonly Guid TEST_REL6_GUID = new Guid("{f5f53839-b47c-42e4-944e-e8fa0bfa9779}"); - private InstanceHandle c_TestClass, c_TestClass2; + private Class c_TestClass, c_TestClass2; private InstanceHandle c_TestClassInstance; private InstanceHandle c_TestClass2Instance1, c_TestClass2Instance2; - private InstanceHandle r_Test_Class__has_single__Test_Class_2, r_Test_Class__has_multiple__Test_Class_2, r_Test_Class_2__single_for__Test_Class; + private Relationship r_Test_Class__has_single__Test_Class_2, r_Test_Class__has_multiple__Test_Class_2, r_Test_Class_2__single_for__Test_Class; [SetUp] public void SetUp() @@ -45,7 +45,7 @@ public class RelationshipTests : OmsTestsBase c_TestClass2Instance2 = Oms.CreateInstanceOf(c_TestClass2); r_Test_Class__has_single__Test_Class_2 = Oms.CreateRelationship(c_TestClass, "has single", c_TestClass2, TEST_REL3_GUID, true, "single for", TEST_REL4_GUID); - r_Test_Class_2__single_for__Test_Class = Oms.GetInstance(TEST_REL4_GUID); + r_Test_Class_2__single_for__Test_Class = Oms.GetInstance(TEST_REL4_GUID); r_Test_Class__has_multiple__Test_Class_2 = Oms.CreateRelationship(c_TestClass, "has multiple", c_TestClass2, TEST_REL5_GUID, false, "multiple for", TEST_REL6_GUID); } diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/SampleDatabases/MovieRentalTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/SampleDatabases/MovieRentalTests.cs index 33f6a2a..78a4253 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/SampleDatabases/MovieRentalTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/SampleDatabases/MovieRentalTests.cs @@ -16,12 +16,14 @@ // along with Mocha.NET. If not, see . +using Mocha.Core.Oop; + namespace Mocha.Core.Tests.SampleDatabases; public class MovieRentalTests : OmsTestsBase { - private InstanceHandle c_MovieRental, c_Movie, c_MovieRating; - private InstanceHandle r_Movie_Rental__has__Movie, r_Movie__has__Movie_Rating; + private Class c_MovieRental, c_Movie, c_MovieRating; + private Relationship r_Movie_Rental__has__Movie, r_Movie__has__Movie_Rating; private Guid g_c_Movie = new Guid("{da1cf074-d7be-44a2-95fc-4a31621a85d2}"); private Guid g_c_MovieRating = new Guid("{1f84afec-a9fb-42ff-a66e-7ba231c3fee3}"); diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/WorkSetTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/WorkSetTests.cs index 03c673b..7fff933 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/WorkSetTests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/WorkSetTests.cs @@ -16,8 +16,6 @@ // along with Mocha.NET. If not, see . -using System.Xml.Serialization; -using Mocha.Core.OmsImplementations.Mini; using Mocha.Core.Oop; namespace Mocha.Core.Tests;