public static IntElement Cast(Element element) { global::System.IntPtr cPtr = SharingClientPINVOKE.IntElement_Cast(Element.getCPtr(element)); IntElement ret = (cPtr == global::System.IntPtr.Zero) ? null : new IntElement(cPtr, true); return(ret); }
public virtual IntElement CreateIntElement(XString name, int value) { System.IntPtr cPtr = SharingClientPINVOKE.ObjectElement_CreateIntElement(swigCPtr, XString.getCPtr(name), value); IntElement ret = (cPtr == System.IntPtr.Zero) ? null : new IntElement(cPtr, true); return(ret); }
private int GenerateInt(IntElement intElement) { var min = (BigInteger)intElement.MinValue; var max = (BigInteger)intElement.MaxValue; var b = RandomBigIntegerBetween(min, max, intElement.ExcludeZero); return((int)b); }
bool Test() { // // TODO: Add code to start application here // sml.Kernel kernel = sml.Kernel.CreateKernelInNewThread("SoarKernelSML"); // Make sure the kernel was ok if (kernel.HadError()) { throw new Exception("Error initializing kernel: " + kernel.GetLastErrorDescription()); } sml.Agent agent = kernel.CreateAgent("First"); // We test the kernel for an error after creating an agent as the agent // object may not be properly constructed if the create call failed so // we store errors in the kernel in this case. Once this create is done we can work directly with the agent. if (kernel.HadError()) { throw new Exception("Error creating agent: " + kernel.GetLastErrorDescription()); } bool ok = agent.LoadProductions("..\\Tests\\testcsharpsml.soar"); if (!ok) { System.Console.Out.WriteLine("Load failed"); return(false); } Agent pAgent = agent; // So it's easier copying existing C++ code here Kernel pKernel = kernel; Identifier pInputLink = agent.GetInputLink(); if (pInputLink == null) { throw new Exception("Error getting the input link"); } // Some random adds Identifier pID = pAgent.CreateIdWME(pInputLink, "plane"); StringElement pWME1 = pAgent.CreateStringWME(pID, "type", "Boeing747"); IntElement pWME2 = pAgent.CreateIntWME(pID, "speed", 200); // Then add some tic tac toe stuff which should trigger output Identifier pSquare = pAgent.CreateIdWME(pInputLink, "square"); StringElement pEmpty = pAgent.CreateStringWME(pSquare, "content", "RANDOM"); IntElement pRow = pAgent.CreateIntWME(pSquare, "row", 1); IntElement pCol = pAgent.CreateIntWME(pSquare, "col", 2); ok = pAgent.Commit(); // Quick test of init-soar pAgent.InitSoar(); // Update the square's value to be empty. This ensures that the update // call is doing something. Otherwise, when we run we won't get a match. pAgent.Update(pEmpty, "EMPTY"); ok = pAgent.Commit(); String myTestData = "my data"; sml.Agent.RunEventCallback runCall = new sml.Agent.RunEventCallback(MyRunEventCallback); sml.Agent.ProductionEventCallback prodCall = new sml.Agent.ProductionEventCallback(MyProductionEventCallback); sml.Agent.PrintEventCallback printCall = new sml.Agent.PrintEventCallback(MyPrintEventCallback); sml.Agent.OutputEventCallback outputCall = new sml.Agent.OutputEventCallback(MyOutputEventCallback); sml.Agent.XMLEventCallback xmlCall = new sml.Agent.XMLEventCallback(MyXMLEventCallback); sml.Agent.OutputNotificationCallback noteCall = new sml.Agent.OutputNotificationCallback(MyOutputNotificationCallback); sml.Kernel.AgentEventCallback agentCall = new sml.Kernel.AgentEventCallback(MyAgentEventCallback); sml.Kernel.SystemEventCallback systemCall = new sml.Kernel.SystemEventCallback(MySystemEventCallback); sml.Kernel.UpdateEventCallback updateCall = new sml.Kernel.UpdateEventCallback(MyUpdateEventCallback); sml.Kernel.StringEventCallback strCall = new sml.Kernel.StringEventCallback(MyStringEventCallback); sml.Kernel.RhsFunction rhsCall = new sml.Kernel.RhsFunction(MyTestRhsFunction); sml.Kernel.ClientMessageCallback clientCall = new sml.Kernel.ClientMessageCallback(MyTestClientMessageCallback); int runCallbackID = agent.RegisterForRunEvent(sml.smlRunEventId.smlEVENT_AFTER_DECISION_CYCLE, runCall, myTestData); int prodCallbackID = agent.RegisterForProductionEvent(sml.smlProductionEventId.smlEVENT_AFTER_PRODUCTION_FIRED, prodCall, myTestData); int printCallbackID = agent.RegisterForPrintEvent(sml.smlPrintEventId.smlEVENT_PRINT, printCall, myTestData); int outputCallbackID = agent.AddOutputHandler("move", outputCall, myTestData); int noteCallbackID = agent.RegisterForOutputNotification(noteCall, myTestData); int xmlCallbackID = agent.RegisterForXMLEvent(sml.smlXMLEventId.smlEVENT_XML_TRACE_OUTPUT, xmlCall, myTestData); int agentCallbackID = kernel.RegisterForAgentEvent(sml.smlAgentEventId.smlEVENT_BEFORE_AGENT_REINITIALIZED, agentCall, myTestData); int systemCallbackID = kernel.RegisterForSystemEvent(sml.smlSystemEventId.smlEVENT_SYSTEM_START, systemCall, myTestData); int updateCallbackID = kernel.RegisterForUpdateEvent(sml.smlUpdateEventId.smlEVENT_AFTER_ALL_OUTPUT_PHASES, updateCall, myTestData); int stringCallbackID = kernel.RegisterForStringEvent(sml.smlStringEventId.smlEVENT_EDIT_PRODUCTION, strCall, myTestData); int rhsCallbackID = kernel.AddRhsFunction("test-rhs", rhsCall, myTestData); int clientCallbackID = kernel.RegisterForClientMessageEvent("test-client", clientCall, myTestData); // Running the agent will trigger most of the events we're listening for so // we can check that they're working correctly. agent.RunSelf(3); //kernel.RunAllAgents(3) ; // Trigger an agent event agent.InitSoar(); ok = agent.UnregisterForRunEvent(runCallbackID); ok = ok && agent.UnregisterForProductionEvent(prodCallbackID); ok = ok && agent.UnregisterForPrintEvent(printCallbackID); ok = ok && agent.RemoveOutputHandler(outputCallbackID); ok = ok && agent.UnregisterForOutputNotification(noteCallbackID); ok = ok && agent.UnregisterForXMLEvent(xmlCallbackID); ok = ok && kernel.UnregisterForAgentEvent(agentCallbackID); ok = ok && kernel.UnregisterForSystemEvent(systemCallbackID); ok = ok && kernel.UnregisterForUpdateEvent(updateCallbackID); ok = ok && kernel.UnregisterForStringEvent(stringCallbackID); ok = ok && kernel.RemoveRhsFunction(rhsCallbackID); ok = ok && kernel.UnregisterForClientMessageEvent(clientCallbackID); if (!ok) { System.Console.Out.WriteLine("Failed to unregister an event"); return(false); } // Close down the kernel (or for a remote connection disconnect from the kernel w/o closing it down). kernel.Shutdown(); return(ok); }
public override void AddFromRemote(Element remoteElement) { NetworkElement = remoteElement; element = IntElement.Cast(remoteElement); value = element.GetValue(); }
public override void InitializeLocal(ObjectElement parentElement) { element = parentElement.CreateIntElement(XStringFieldName, value); NetworkElement = element; }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(IntElement obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }
public override void AddFromRemote(Element element) { this.NetworkElement = element; this.element = IntElement.Cast(element); this.value = this.element.GetValue(); }
private Element ConvertXElementToElement(XElement element) { var elementValues = new List <string>(); if (!element.Elements().Any()) { var tElem = _oldRoot.Descendants(element.Name).Where(x => GetParentsAsString(x, -1) == GetParentsAsString(element, -1) && !x.Elements().Any()).Select(e => e.Value); elementValues.AddRange(tElem); } var xElementList = _oldRoot.Descendants(element.Name).GroupBy(el => el.Parent).Select(g => new { g.Key, Count = g.Count() }).Where(x => x.Count > 1); Element returnElement; var elementName = element.Name.LocalName; var elementType = DataType.GetDataTypeFromList(elementValues, _dateFormat, _dateTimeFormat); switch (elementType.type) { case DataType.Type.Date: returnElement = new DateTimeElement(elementName, _dateFormat); break; case DataType.Type.DateTime: returnElement = new DateTimeElement(elementName, _dateTimeFormat); break; case DataType.Type.Bool: returnElement = new BoolElement(elementName, "True", "False"); break; case DataType.Type.@bool: returnElement = new BoolElement(elementName, "true", "false"); break; case DataType.Type.@int: returnElement = new IntElement(elementName); break; case DataType.Type.@decimal: returnElement = new DecimalElement(elementName); break; case DataType.Type.@string: returnElement = new StringElement(elementName); break; default: returnElement = new Element(elementName); break; } returnElement.Enumerable = xElementList.Any(); returnElement.Type = elementType; returnElement.OriginalElement = element; foreach (var xElement in element.Elements()) { returnElement.Elements.Add(ConvertXElementToElement(xElement)); } foreach (var xAttribute in element.Attributes()) { var tElements = _oldRoot.DescendantsAndSelf(element.Name).Where(x => GetParentsAsString(x, -1) == GetParentsAsString(element, -1)).ToList(); var xAttr = xAttribute; var attributeValues = tElements.Select(tElement => tElement.Attribute(xAttr.Name)).Select(attribute => attribute != null ? attribute.Value : "").ToList(); Attribute thisAttribute; var attributeName = xAttribute.Name.LocalName; if (xAttribute.IsNamespaceDeclaration) { returnElement.NamespaceAttributes.Add(xAttribute); continue; } if (attributeName == "schemaLocation") { thisAttribute = new SchemaLocationAttribute(attributeName, xAttribute.Value); returnElement.Attributes.Add(thisAttribute); continue; } var attributeType = DataType.GetDataTypeFromList(attributeValues, _dateFormat, _dateTimeFormat); switch (attributeType.type) { case DataType.Type.Date: thisAttribute = new DateTimeAttribute(attributeName, _dateFormat); break; case DataType.Type.DateTime: thisAttribute = new DateTimeAttribute(attributeName, _dateTimeFormat); break; case DataType.Type.Bool: thisAttribute = new BoolAttribute(attributeName, "True", "False"); break; case DataType.Type.@bool: thisAttribute = new BoolAttribute(attributeName, "true", "false"); break; case DataType.Type.@int: thisAttribute = new IntAttribute(attributeName); break; case DataType.Type.@decimal: thisAttribute = new DecimalAttribute(attributeName); break; case DataType.Type.@string: thisAttribute = new StringAttribute(attributeName); break; default: thisAttribute = new Attribute(attributeName); break; } thisAttribute.Type = attributeType; returnElement.Attributes.Add(thisAttribute); } return(returnElement); }
private void ConsolidateElements(Element newElement, Element currentElement) { // compare current element elements with new element elements and add unique missing to new element foreach (var cElement in currentElement.Elements) { var tempElement = newElement.Elements.FirstOrDefault(e => e.Name == cElement.Name); if (tempElement == null) // element missing, add it { var elementName = cElement.Name; switch (cElement.Type.type) { case DataType.Type.Date: tempElement = new DateTimeElement(elementName, _dateFormat); break; case DataType.Type.DateTime: tempElement = new DateTimeElement(elementName, _dateTimeFormat); break; case DataType.Type.Bool: tempElement = new BoolElement(elementName, "True", "False"); break; case DataType.Type.@bool: tempElement = new BoolElement(elementName, "true", "false"); break; case DataType.Type.@int: tempElement = new IntElement(elementName); break; case DataType.Type.@decimal: tempElement = new DecimalElement(elementName); break; case DataType.Type.@string: tempElement = new StringElement(elementName); break; default: tempElement = new Element(elementName); break; } tempElement.Enumerable = cElement.Enumerable; tempElement.Type = cElement.Type; tempElement.OriginalElement = cElement.OriginalElement; tempElement.NamespaceAttributes = cElement.NamespaceAttributes; newElement.Elements.Add(tempElement); } foreach (var attribute in cElement.Attributes) { // Check Attribute Exists if (tempElement.Attributes.Any(a => a.Name == attribute.Name)) { continue; } var sameAttributes = cElement.Attributes.Where(a => a.Name == attribute.Name).ToList(); var dataType = sameAttributes.Aggregate <Attribute, DataType>(null, (current, sameAttribute) => current == null ? sameAttribute.Type : DataType.GetBestType(current, sameAttribute.Type)); attribute.Type = dataType; tempElement.Attributes.Add(attribute); } ConsolidateElements(tempElement, cElement); } }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(IntElement obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; }
public IntElement pow(IntElement b, Integer p) { return((IntElement)(b ^ p)); }
public IntElement sum(IntElement a, IntElement b) { return((IntElement)(a + b)); }
public IntElement times(IntElement a, IntElement b) { return((IntElement)(a * b)); }