/// <summary> /// Creates a new instance. /// </summary> public HLAObjectModelAttribute() { baseInfo = new HLAObjectModel(); }
/// <summary> /// Adds a set of descriptors corresponding to the features contained /// in the specified federation description document. Handle /// values will be assigned in the order that the described features are /// encountered in the document, starting at <code>1</code>. /// </summary> /// <param name="fdd">the parsed federation description document to interpret /// </param> public virtual void AddDescriptors(System.Xml.XmlDocument fdd) { System.Xml.XmlElement documentElement = (System.Xml.XmlElement)fdd.DocumentElement; objectModel = new HLAObjectModel(documentElement); names.Add(objectModel.Name); System.String version = objectModel.Version; if (!string.IsNullOrEmpty(version)) { SupportClass.Tokenizer st = new SupportClass.Tokenizer(version, " ."); majorVersion = System.Int32.Parse(st.NextToken()); minorVersion = System.Int32.Parse(st.NextToken()); } // First pass creates descriptors, assigns handles System.Xml.XmlNodeList nl = documentElement.GetElementsByTagName("basicData"); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement basicDataElement = (System.Xml.XmlElement)nl.Item(i); HLABasicData basicData = new HLABasicData(basicDataElement); basicDataMap[basicData.Name] = basicData; } nl = documentElement.GetElementsByTagName("simpleData"); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement simpleDataElement = (System.Xml.XmlElement)nl.Item(i); HLASimpleData simpleData = new HLASimpleData(simpleDataElement); simpleDataMap[simpleData.Name] = simpleData; } nl = documentElement.GetElementsByTagName("enumeratedData"); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement enumeratedDataElement = (System.Xml.XmlElement)nl.Item(i); HLAEnumeratedData enumeratedData = new HLAEnumeratedData(enumeratedDataElement); enumeratedDataMap[enumeratedData.Name] = enumeratedData; } nl = documentElement.GetElementsByTagName("fixedRecordData"); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement fixedRecordDataElement = (System.Xml.XmlElement)nl.Item(i); HLAFixedRecordData fixedRecordData = new HLAFixedRecordData(fixedRecordDataElement); fixedRecordDataMap[fixedRecordData.Name] = fixedRecordData; } nl = documentElement.GetElementsByTagName("arrayData"); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement arrayDataElement = (System.Xml.XmlElement)nl.Item(i); HLAarrayDataType arrayData = new HLAarrayDataType(arrayDataElement); arrayDataMap[arrayData.Name] = arrayData; } nl = documentElement.GetElementsByTagName(OBJECT_CLASS); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement objectClassElement = (System.Xml.XmlElement)nl.Item(i); ObjectClassDescriptor ocd = new ObjectClassDescriptor(objectClassElement, new XRTIObjectClassHandle(handleCounter++), new List<ObjectClassDescriptor>()); System.Xml.XmlNodeList nl2 = objectClassElement.ChildNodes; for (int j = 0; j < nl2.Count; j++) { if (nl2.Item(j) is System.Xml.XmlElement && nl2.Item(j).Name.Equals(ATTRIBUTE)) { System.Xml.XmlElement attributeElement = (System.Xml.XmlElement)nl2.Item(j); AttributeDescriptor ad = new AttributeDescriptor(attributeElement, new XRTIAttributeHandle(handleCounter++), new XRTIDimensionHandleSet(), "HLAreliable".Equals(attributeElement.GetAttribute(TRANSPORTATION)) ? TransportationType.HLA_RELIABLE : TransportationType.HLA_BEST_EFFORT, "Receive".Equals(attributeElement.GetAttribute(ORDER)) ? Hla.Rti1516.OrderType.RECEIVE : OrderType.TIMESTAMP); ocd.AddAttributeDescriptor(ad); // PATCH ANGEL AddAttributeDescriptor(ad); } } AddObjectClassDescriptor(ocd); } nl = documentElement.GetElementsByTagName(INTERACTION_CLASS); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement interactionClassElement = (System.Xml.XmlElement)nl.Item(i); InteractionClassDescriptor icd = new InteractionClassDescriptor(interactionClassElement, new XRTIInteractionClassHandle(handleCounter++), new List<InteractionClassDescriptor>(), new XRTIDimensionHandleSet(), "HLAreliable".Equals(interactionClassElement.GetAttribute(TRANSPORTATION)) ? TransportationType.HLA_RELIABLE : TransportationType.HLA_BEST_EFFORT, "Receive".Equals(interactionClassElement.GetAttribute(ORDER)) ? Sxta.Rti1516.Reflection.HLAorderType.Receive : Sxta.Rti1516.Reflection.HLAorderType.TimeStamp); System.Xml.XmlNodeList nl2 = interactionClassElement.ChildNodes; for (int j = 0; j < nl2.Count; j++) { if (nl2.Item(j) is System.Xml.XmlElement && nl2.Item(j).Name.Equals(PARAMETER)) { System.Xml.XmlElement parameterElement = (System.Xml.XmlElement)nl2.Item(j); icd.AddParameterDescriptor(new ParameterDescriptor(parameterElement, new XRTIParameterHandle(handleCounter++))); } } AddInteractionClassDescriptor(icd); } nl = documentElement.GetElementsByTagName(DIMENSION); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement dimensionElement = (System.Xml.XmlElement)nl.Item(i); long upperBound = System.Int64.MaxValue; if (dimensionElement.HasAttribute(UPPER_BOUND)) { try { upperBound = System.Int64.Parse(dimensionElement.GetAttribute(UPPER_BOUND)); } catch (System.FormatException) { } } AddDimensionDescriptor(new DimensionDescriptor(dimensionElement.GetAttribute(NAME), new XRTIDimensionHandle(handleCounter++), upperBound)); } // Second pass resolves parents, dimensions nl = documentElement.GetElementsByTagName(OBJECT_CLASS); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement objectClassElement = (System.Xml.XmlElement)nl.Item(i); ObjectClassDescriptor ocd = GetObjectClassDescriptor(objectClassElement.GetAttribute(NAME)); if (objectClassElement.ParentNode.Name.Equals(OBJECT_CLASS)) { ocd.AddParentDescriptor(GetObjectClassDescriptor(((System.Xml.XmlElement)objectClassElement.ParentNode).GetAttribute(NAME))); } if (objectClassElement.HasAttribute(PARENTS)) { SupportClass.Tokenizer st = new SupportClass.Tokenizer(objectClassElement.GetAttribute(PARENTS)); // PATCH ANGEL while (st.HasMoreTokens()) //{ ocd.ParentDescriptors.Add(GetObjectClassDescriptor(st.NextToken())); //} } System.Xml.XmlNodeList nl2 = objectClassElement.ChildNodes; for (int j = 0; j < nl2.Count; j++) { if (nl2.Item(j) is System.Xml.XmlElement && nl2.Item(j).Name.Equals(ATTRIBUTE)) { System.Xml.XmlElement attributeElement = (System.Xml.XmlElement)nl2.Item(j); if (attributeElement.HasAttribute(DIMENSIONS)) { AttributeDescriptor ad = ocd.GetAttributeDescriptor(attributeElement.GetAttribute(NAME)); SupportClass.Tokenizer st = new SupportClass.Tokenizer(attributeElement.GetAttribute(DIMENSIONS)); // PATCH ANGEL while (st.HasMoreTokens()) //{ System.String dimension = st.NextToken(); if (!dimension.Equals("NA")) { ad.Dimensions.Add(GetDimensionDescriptor(dimension).Handle); } //} } } } } nl = documentElement.GetElementsByTagName(INTERACTION_CLASS); for (int i = 0; i < nl.Count; i++) { System.Xml.XmlElement interactionClassElement = (System.Xml.XmlElement)nl.Item(i); InteractionClassDescriptor icd = GetInteractionClassDescriptor(interactionClassElement.GetAttribute(NAME)); if (interactionClassElement.HasAttribute(DIMENSIONS)) { SupportClass.Tokenizer st = new SupportClass.Tokenizer(interactionClassElement.GetAttribute(DIMENSIONS)); // PATCH ANGEL while (st.HasMoreTokens()) //{ System.String dimension = st.NextToken(); if (!dimension.Equals("NA")) { icd.Dimensions.Add(GetDimensionDescriptor(dimension).Handle); } //} } if (interactionClassElement.ParentNode.Name.Equals(INTERACTION_CLASS)) { icd.AddParentDescriptor(GetInteractionClassDescriptor(((System.Xml.XmlElement)interactionClassElement.ParentNode).GetAttribute(NAME))); } if (interactionClassElement.HasAttribute(PARENTS)) { SupportClass.Tokenizer st = new SupportClass.Tokenizer(interactionClassElement.GetAttribute(PARENTS)); // PATCH ANGEL while (st.HasMoreTokens()) //{ icd.AddParentDescriptor(GetInteractionClassDescriptor(st.NextToken())); //} } } //PATCH ANGEL CheckAopFdd(); }
/// <summary> /// Generates a <code>HLAObjectModelAttribute</code>. /// </summary> private void GenerateHLAObjectModelAttribute(System.IO.StreamWriter ps, int indentLevel, HLAObjectModel objectModelInfo) { string indentStr = GenerateIndentString(indentLevel); string newLine = "," + Environment.NewLine + indentStr + Spacer("assembly: [HLAObjectModelAttribute("); ps.Write(indentStr + "[assembly: HLAObjectModelAttribute(Name = \"" + objectModelInfo.Name + "\""); if (!String.IsNullOrEmpty(objectModelInfo.NameNotes)) { ps.Write(newLine); ps.Write("NameNotes = \"" + objectModelInfo.NameNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.DTDversion)) { ps.Write(newLine); ps.Write("DTDversion = \"" + objectModelInfo.DTDversion + "\""); } ps.Write(newLine); ps.Write("ObjectModelType = " +objectModelInfo.ObjectModelType.GetType() + "." + objectModelInfo.ObjectModelType); if (!String.IsNullOrEmpty(objectModelInfo.TypeNotes)) { ps.Write(newLine); ps.Write("TypeNotes = \"" + objectModelInfo.TypeNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.Version)) { ps.Write(newLine); ps.Write("Version = \"" + objectModelInfo.Version + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.VersionNotes)) { ps.Write(newLine); ps.Write("VersionNotes = \"" + objectModelInfo.VersionNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.Date)) { ps.Write(newLine); ps.Write("Date = \"" + objectModelInfo.Date + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.DateNotes)) { ps.Write(newLine); ps.Write("DateNotes = \"" + objectModelInfo.DateNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.Purpose)) { ps.Write(newLine); ps.Write("Purpose = \"" + objectModelInfo.Purpose + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PurposeNotes)) { ps.Write(newLine); ps.Write("PurposeNotes = \"" + objectModelInfo.PurposeNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.AppDomain)) { ps.Write(newLine); ps.Write("AppDomain = \"" + objectModelInfo.AppDomain + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.AppDomainNotes)) { ps.Write(newLine); ps.Write("AppDomainNotes = \"" + objectModelInfo.AppDomainNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.Sponsor)) { ps.Write(newLine); ps.Write("Sponsor = \"" + objectModelInfo.Sponsor + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.SponsorNotes)) { ps.Write(newLine); ps.Write("SponsorNotes = \"" + objectModelInfo.SponsorNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocName)) { ps.Write(newLine); ps.Write("PocName = \"" + objectModelInfo.PocName + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocNameNotes)) { ps.Write(newLine); ps.Write("PocNameNotes = \"" + objectModelInfo.PocNameNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocOrg)) { ps.Write(newLine); ps.Write("PocOrg = \"" + objectModelInfo.PocOrg + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocOrgNotes)) { ps.Write(newLine); ps.Write("PocOrgNotes = \"" + objectModelInfo.PocOrgNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocPhone)) { ps.Write(newLine); ps.Write("PocPhone = \"" + objectModelInfo.PocPhone + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocPhoneNotes)) { ps.Write(newLine); ps.Write("PocPhoneNotes = \"" + objectModelInfo.PocPhoneNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocEmail)) { ps.Write(newLine); ps.Write("PocEmail = \"" + objectModelInfo.PocEmail + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.PocEmailNotes)) { ps.Write(newLine); ps.Write("PocEmailNotes = \"" + objectModelInfo.PocEmailNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.References)) { ps.Write(newLine); ps.Write("References = \"" + objectModelInfo.References + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.ReferencesNotes)) { ps.Write(newLine); ps.Write("ReferencesNotes = \"" + objectModelInfo.ReferencesNotes + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.Other)) { ps.Write(newLine); ps.Write("Other = \"" + objectModelInfo.Other + "\""); } if (!String.IsNullOrEmpty(objectModelInfo.OtherNotes)) { ps.Write(newLine); ps.Write("OtherNotes = \"" + objectModelInfo.OtherNotes + "\""); } ps.WriteLine(")]"); }
/// <summary> /// Creates a new instance. /// </summary> public HLAObjectModelAttribute() { baseInfo = new HLAObjectModel(); }