public FOMInteractionInterfacesHeader(FOMParser fom, string interactionInterfacesHeaderFilename, string objectInterfacesHeaderFilename, string dataTypesHeaderFilename) { FOM = fom; InteractionInterfacesHeaderFilename = System.IO.Path.GetFileName(interactionInterfacesHeaderFilename); ObjectInterfacesHeaderFilename = System.IO.Path.GetFileName(objectInterfacesHeaderFilename); DataTypesHeaderFilename = System.IO.Path.GetFileName(dataTypesHeaderFilename); }
public FOMEncodingHeader(FOMParser fom, string dataTypesHeaderFilename, string includePath) { FOM = fom; if (includePath.Length > 0) { DataTypesHeaderFilename = includePath + "/" + System.IO.Path.GetFileName(dataTypesHeaderFilename); } else { DataTypesHeaderFilename = System.IO.Path.GetFileName(dataTypesHeaderFilename); } }
public FOMObjectsHeader(FOMParser fom, string objectsHeaderFilename, string objectInterfacesHeaderFilename, string encodingHeaderFilename, string includePath) { FOM = fom; ObjectsHeaderFilename = System.IO.Path.GetFileName(objectsHeaderFilename); if (includePath.Length > 0) { ObjectInterfacesHeaderFilename = includePath + "/" + System.IO.Path.GetFileName(objectInterfacesHeaderFilename); } else { ObjectInterfacesHeaderFilename = System.IO.Path.GetFileName(objectInterfacesHeaderFilename); } EncodingHeaderFilename = System.IO.Path.GetFileName(encodingHeaderFilename); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n// Code automatically generated by FOMCodeGen version "); #line 7 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.GeneratorVersion)); #line default #line hidden this.Write(" from "); #line 7 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(System.IO.Path.GetFileName(FOM.Filename))); #line default #line hidden this.Write(", do not edit\r\n\r\n"); #line 9 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (FOM.ModelIdentification.Name != null) { #line default #line hidden #line 10 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Name, "Name: "))); #line default #line hidden this.Write("\r\n"); #line 11 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 12 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (FOM.ModelIdentification.Copyright != null) { #line default #line hidden #line 13 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Copyright, "Copyright: "))); #line default #line hidden this.Write("\r\n"); #line 14 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 15 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (FOM.ModelIdentification.Version != null) { #line default #line hidden #line 16 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Version, "Version: "))); #line default #line hidden this.Write("\r\n"); #line 17 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 18 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (FOM.ModelIdentification.Description != null) { #line default #line hidden #line 19 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Description, "Description: "))); #line default #line hidden this.Write("\r\n"); #line 20 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 21 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (FOM.ModelIdentification.Purpose != null) { #line default #line hidden #line 22 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Purpose, "Purpose: "))); #line default #line hidden this.Write("\r\n"); #line 23 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden this.Write("\r\n#pragma once\r\n\r\n#include <vector>\r\n#include <functional>\r\n#include <memory>\r\n\r\n" + ""); #line 31 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.GetPredefinedTypeIncludes(FOMParser.FileContext.kObjectInterfaces))); #line default #line hidden this.Write("\r\n#include \""); #line 32 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(DataTypesHeaderFilename)); #line default #line hidden this.Write("\"\r\n\r\n"); #line 34 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" foreach (var namespacePart in FOM.Namespace) { #line default #line hidden this.Write("namespace "); #line 38 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespacePart)); #line default #line hidden this.Write(" {\r\n"); #line 39 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden this.Write("\r\n"); #line 41 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" foreach (var objectClass in FOM.ObjectClasses) { #line default #line hidden this.Write("class I"); #line 45 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(";\r\n// I"); #line 46 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("ObjectClass represents the HLA object class "); #line 46 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.QualifiedName)); #line default #line hidden this.Write(".\r\n// Instances of I"); #line 47 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(" represent the corresponding HLA object instances.\r\nclass I"); #line 48 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("ObjectClass\r\n{\r\n public:\r\n using DiscoverObjectInstanceCallback = std::functi" + "on<void(std::shared_ptr<I"); #line 51 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(">)>;\r\n using RemoveObjectInstanceCallback = std::function<void(std::shared_ptr" + "<I"); #line 52 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(">)>;\r\n using ObjectCreatedCallbackType = std::function<void(std::shared_ptr<I"); #line 53 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(@">, bool success)>; // Publish/unpublish this object class. Creating object instances requires publishing the object class. virtual void Publish() = 0; virtual void Unpublish() = 0; // Subscribe/unsubscribe this object class. Taking part in object discovery and receiving attribute updates requires subscribing the object class. // Note that the appropriate callbacks should have been registered *before* subscribing to the object class. virtual void Subscribe(bool deliverToSelf) = 0; virtual void Unsubscribe() = 0; // Return an existing object instance by name, or nullptr if not existant. virtual std::shared_ptr<I"); #line 62 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("> GetObjectInstance(const std::wstring& instanceName) = 0;\r\n // Create an inst" + "ance of I"); #line 63 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(@". Returns nullptr if the object instance already exists. // If another federate has already created an object instance with the same name and the same object class, // the discover object instance mechanism will reuse the object returned by 'create object instance'. // A discover object instance callback should be installed by the application to appropriately handle this case. virtual std::shared_ptr<I"); #line 67 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("> CreateObjectInstance(const std::wstring& instanceName) = 0;\r\n // Create an i" + "nstance of I"); #line 68 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(", and notify the application about having completed the HLA object registration.\r" + "\n // The callback\'s \'success\' parameter indicates whether the object instance" + " name could successfully be reserved for the object.\r\n virtual std::shared_pt" + "r<I"); #line 70 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("> CreateObjectInstance(const std::wstring& instanceName, ObjectCreatedCallbackTyp" + "e createdCallback) = 0;\r\n // Restore a \'dead\' instance of I"); #line 71 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(@". Returns nullptr if the object instance already exists. // If another federate has already created an object instance with the same name and the same object class, // the discover object instance mechanism will reuse the object returned by 'create object instance'. // A discover object instance callback should be installed by the application to appropriately handle this case. virtual std::shared_ptr<I"); #line 75 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("> RestoreObjectInstance(std::shared_ptr<I"); #line 75 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("> existingObject) = 0;\r\n // Restore a \'dead\' instance of I"); #line 76 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(", and notify the application about having completed the HLA object registration.\r" + "\n // The callback\'s \'success\' parameter indicates whether the object instance" + " name could successfully be reserved for the object.\r\n virtual std::shared_pt" + "r<I"); #line 78 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("> RestoreObjectInstance(std::shared_ptr<I"); #line 78 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(@"> existingObject, ObjectCreatedCallbackType createdCallback) = 0; // install a discover object instance callback for this HLA object class virtual uint32_t RegisterDiscoverObjectInstanceCallback(DiscoverObjectInstanceCallback callback) = 0; virtual void UnregisterDiscoverObjectInstanceCallback(uint32_t callbackToken) = 0; // install a remove object instance callback for the HLA object class virtual uint32_t RegisterRemoveObjectInstanceCallback(RemoveObjectInstanceCallback callback) = 0; virtual void UnregisterRemoveObjectInstanceCallback(uint32_t callbackToken) = 0; }; class I"); #line 89 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden #line 89 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.BaseClass != null) { #line default #line hidden this.Write(" : public I"); #line 92 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.BaseClass.Name)); #line default #line hidden this.Write("\r\n"); #line 93 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } else { #line default #line hidden this.Write(" : public std::enable_shared_from_this<I"); #line 94 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(">\r\n"); #line 95 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } // if #line default #line hidden this.Write("{\r\n"); #line 97 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" string attributeBitsClass = "uint32_t"; string attributeBitsPostfix = ""; if (objectClass.Attributes.Count > 32) { attributeBitsClass = "uint64_t"; attributeBitsPostfix = "ull"; } #line default #line hidden this.Write(" public:\r\n"); #line 107 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.BaseClass == null) { #line default #line hidden this.Write(" using AttributeBits = "); #line 108 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attributeBitsClass)); #line default #line hidden this.Write(";\r\n static const AttributeBits kNone = 0x0;\r\n"); #line 110 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 111 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" ulong bit; if (objectClass.BaseClass != null) { bit = (ulong)(1 << objectClass.BaseClass.AllAttributes.Count); } else { bit = 1; } foreach (var attribute in objectClass.Attributes) { if (attribute.DataType != null) { #line default #line hidden this.Write(" static const AttributeBits k"); #line 121 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name)); #line default #line hidden this.Write("Bit = 0x"); #line 121 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(bit.ToString("X"))); #line default #line hidden #line 121 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attributeBitsPostfix)); #line default #line hidden this.Write(";\r\n"); #line 122 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" bit = bit << 1; } // if (attribute.DataType != null) } // foreach (var attribute in objectClass.Attributes) #line default #line hidden this.Write("\r\n I"); #line 128 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("() {}\r\n"); #line 129 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.BaseClass == null) { #line default #line hidden this.Write(" virtual ~I"); #line 130 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("() {}\r\n"); #line 131 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } else { #line default #line hidden this.Write(" ~I"); #line 132 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("() {}\r\n"); #line 133 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden this.Write(" // copying and moving an object instance is not allowed\r\n I"); #line 135 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("(const I"); #line 135 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("&) = delete;\r\n I"); #line 136 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("(I"); #line 136 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("&&) = delete;\r\n I"); #line 137 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("& operator=(const I"); #line 137 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("&) = delete;\r\n I"); #line 138 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("& operator=(I"); #line 138 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("&&) = delete;\r\n\r\n"); #line 140 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.BaseClass == null) { #line default #line hidden this.Write(@" virtual std::wstring GetObjectInstanceName() const = 0; // has this object a valid HLA object instance handle? virtual bool IsValid() const = 0; // After having called CreateObjectInstance, wait until object registration completed. // Returns false if the object registration failed. virtual bool WaitForObjectValid() = 0; // has this object been created by this federate? virtual bool IsOwner() const = 0; // Delete the object from HLA and the class registry. // Be careful to keep a shared_ptr to the object while executing Release! virtual void Release() = 0; "); #line 152 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 153 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" foreach (var attribute in objectClass.Attributes) { if (attribute.DataType != null) { #line default #line hidden this.Write(" // attribute "); #line 158 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name)); #line default #line hidden this.Write(" : "); #line 158 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.DataType.Name)); #line default #line hidden this.Write("\r\n virtual "); #line 159 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.DataType.ReturnCppType)); #line default #line hidden this.Write(" Get"); #line 159 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name)); #line default #line hidden this.Write("() const = 0;\r\n"); #line 160 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (attribute.DataType is FOMParser.FixedRecordDataType) { #line default #line hidden this.Write(" virtual "); #line 161 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.DataType.ModifiableReturnCppType)); #line default #line hidden this.Write(" Get"); #line 161 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name)); #line default #line hidden this.Write("() = 0;\r\n"); #line 162 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden this.Write(" virtual void Set"); #line 163 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name)); #line default #line hidden this.Write("("); #line 163 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.DataType.ParameterCppType)); #line default #line hidden this.Write(" newValue) = 0;\r\n"); #line 164 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } else { #line default #line hidden this.Write(" // attribute "); #line 165 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(attribute.Name)); #line default #line hidden this.Write(" : no data type\r\n"); #line 166 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } // if (attribute.DataType != null) } // foreach (var attribute in objectClass.Attributes) #line default #line hidden #line 170 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.HasValidAttributes) { #line default #line hidden #line 171 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.BaseClass != null && !objectClass.BaseClass.HasValidAttributes) // first child class with valid attributes { #line default #line hidden this.Write(" // send all attribute values\r\n virtual void UpdateAllAttributeValues() = 0" + ";\r\n // send all attribute values, as TSO message\r\n virtual void UpdateAllA" + "ttributeValues("); #line 175 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.NativeTimeType)); #line default #line hidden this.Write(@" time) = 0; // send attribute values which have been modified since last call virtual void UpdateModifiedAttributeValues() = 0; // send attribute values which have been modified since last call, as TSO message virtual void UpdateModifiedAttributeValues("); #line 179 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.NativeTimeType)); #line default #line hidden this.Write(@" time) = 0; // bitmask of attributes ever received virtual AttributeBits GetReceivedAttributes() const = 0; // bitmask of attributes received in last update (cleared after update callbacks executed) virtual AttributeBits GetUpdatedAttributes() const = 0; // bitmask of attributes ever modified virtual AttributeBits GetInitializedAttributes() const = 0; // bitmask of attributes modified since last updateAttributeValues/provideAttributeValues // (cleared by UpdateAttributeValues or ProvideAttributeValues) virtual AttributeBits GetModifiedAttributes() const = 0; // request attribute values which haven't been updated in last reflectAttributeValues virtual void RequestAttributeValues() = 0; // request all attribute values virtual void RequestAllAttributeValues() = 0; "); #line 193 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden #line 194 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" if (objectClass.ChildClasses.Count == 0) { #line default #line hidden this.Write(" using UpdateCallback = std::function<void(std::shared_ptr<I"); #line 195 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write(">, optional<"); #line 195 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.NativeTimeType)); #line default #line hidden this.Write("> time, optional<OrderType> orderType)>;\r\n virtual uint32_t RegisterUpdateCall" + "back(UpdateCallback callback) = 0;\r\n virtual void UnregisterUpdateCallback(ui" + "nt32_t callbackToken) = 0;\r\n"); #line 198 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } // if (objectClass.ChildClasses.Count == 0) #line default #line hidden #line 199 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } // if (objectClass.HasValidAttributes) #line default #line hidden this.Write("};\r\n\r\n"); #line 202 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } // foreach (var objectClass in FOM.ObjectClasses) #line default #line hidden this.Write("\r\nclass IObjectClassRegistry\r\n{\r\n public:\r\n"); #line 207 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" foreach (var objectClass in FOM.ObjectClasses) { #line default #line hidden this.Write(" virtual I"); #line 208 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("ObjectClass* Get"); #line 208 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(objectClass.Name)); #line default #line hidden this.Write("ObjectClass() const = 0;\r\n"); #line 209 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden this.Write(" protected:\r\n virtual ~IObjectClassRegistry() {}\r\n}; // class IObjectClassReg" + "istry\r\n\r\n"); #line 214 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" foreach (var namespacePart in FOM.Namespace) { #line default #line hidden this.Write("} // namespace "); #line 218 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespacePart)); #line default #line hidden this.Write("\r\n"); #line 219 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMObjectInterfacesHeader.tt" } #line default #line hidden return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n// Code automatically generated by FOMCodeGen version "); #line 7 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.GeneratorVersion)); #line default #line hidden this.Write(" from "); #line 7 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(System.IO.Path.GetFileName(FOM.Filename))); #line default #line hidden this.Write(", do not edit\r\n\r\n"); #line 9 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (FOM.ModelIdentification.Name != null) { #line default #line hidden #line 10 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Name, "Name: "))); #line default #line hidden this.Write("\r\n"); #line 11 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden #line 12 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (FOM.ModelIdentification.Copyright != null) { #line default #line hidden #line 13 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Copyright, "Copyright: "))); #line default #line hidden this.Write("\r\n"); #line 14 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden #line 15 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (FOM.ModelIdentification.Version != null) { #line default #line hidden #line 16 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Version, "Version: "))); #line default #line hidden this.Write("\r\n"); #line 17 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden #line 18 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (FOM.ModelIdentification.Description != null) { #line default #line hidden #line 19 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Description, "Description: "))); #line default #line hidden this.Write("\r\n"); #line 20 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden #line 21 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (FOM.ModelIdentification.Purpose != null) { #line default #line hidden #line 22 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Purpose, "Purpose: "))); #line default #line hidden this.Write("\r\n"); #line 23 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden this.Write("\r\n#pragma once\r\n\r\n#include <vector>\r\n#include <functional>\r\n\r\n"); #line 30 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.GetPredefinedTypeIncludes(FOMParser.FileContext.kInteractionInterfaces))); #line default #line hidden this.Write("\r\n#include \""); #line 31 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(DataTypesHeaderFilename)); #line default #line hidden this.Write("\"\r\n#include \""); #line 32 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(ObjectInterfacesHeaderFilename)); #line default #line hidden this.Write("\"\r\n\r\n"); #line 34 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" foreach (var namespacePart in FOM.Namespace) { #line default #line hidden this.Write("namespace "); #line 35 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespacePart)); #line default #line hidden this.Write(" {\r\n"); #line 36 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden this.Write("\r\n"); #line 38 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" foreach (var interactionClass in FOM.InteractionClasses) { #line default #line hidden this.Write("// I"); #line 39 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.Name)); #line default #line hidden this.Write("InteractionClass represents the HLA interaction class "); #line 39 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.QualifiedName)); #line default #line hidden this.Write(".\r\nclass I"); #line 40 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.Name)); #line default #line hidden this.Write(@"InteractionClass { public: // Publish/unpublish the interaction class. Sending an interaction of this class requires publishing the interaction class. virtual void Publish() = 0; virtual void Unpublish() = 0; // Subscribe the interaction class. Receiving interactions requires having subscribed to this interaction class. // Note that the appropriate callbacks should have been registered *before* subscribing to the interaction class. virtual void Subscribe(bool deliverToSelf) = 0; "); #line 49 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (interactionClass.HasValidParameters) { #line default #line hidden this.Write(@" // Subscribe the interaction class with filter values. Only interactions with parameters matching the given values will be received. // Filtered subscriptions may be issued several times with differing value tuples. 'nullopt' may be used as a wildcard, matching // any incoming value. virtual void Subscribe("); #line 53 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.CppParameterList)); #line default #line hidden this.Write(", bool deliverToSelf) = 0;\r\n"); #line 54 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden this.Write(@" // Unsubscribe the interaction class, cancelling reception of interactions. Calling Unsubscribe will also clear all filtered subscriptions, if any. virtual void Unsubscribe() = 0; // Send an interaction as receive order message. virtual void send("); #line 58 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.CppParameterList)); #line default #line hidden this.Write(") = 0;\r\n // Send a time stamped interaction.\r\n virtual void sendWithTime("); #line 60 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.CppParameterList)); #line default #line hidden #line 60 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (interactionClass.HasValidParameters) { #line default #line hidden this.Write(", "); #line 60 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden #line 60 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.NativeTimeType)); #line default #line hidden this.Write(@" time) = 0; // Register an interaction callback. The optional time stamp will be delivered by the application. When the time stamp is valid, // the optional order type will indicate the source of the time stamp. using ReceiveCallback = std::function<void("); #line 63 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.CppParameterList)); #line default #line hidden #line 63 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" if (interactionClass.HasValidParameters) { #line default #line hidden this.Write(", "); #line 63 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden this.Write("optional<"); #line 63 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.NativeTimeType)); #line default #line hidden this.Write(@"> time, optional<OrderType> orderType)>; using ReceiveCallbackHandle = uint32_t; constexpr static ReceiveCallbackHandle kInvalidCallbackHandle = 0xffffffff; virtual ReceiveCallbackHandle RegisterReceiveCallback(ReceiveCallback callback) = 0; virtual void UnregisterReceiveCallback(ReceiveCallbackHandle callbackHandle) = 0; }; "); #line 70 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } // foreach (var interactionClass in FOM.InteractionClasses) #line default #line hidden this.Write("\r\nclass IInteractionClassRegistry\r\n{\r\n public:\r\n"); #line 75 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" foreach (var interactionClass in FOM.InteractionClasses) { #line default #line hidden this.Write(" virtual I"); #line 76 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.Name)); #line default #line hidden this.Write("InteractionClass* Get"); #line 76 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(interactionClass.Name)); #line default #line hidden this.Write("InteractionClass() const = 0;\r\n"); #line 77 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden this.Write(" protected:\r\n virtual ~IInteractionClassRegistry() {}\r\n}; // class IInteracti" + "onClassRegistry\r\n\r\n"); #line 82 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" foreach (var namespacePart in FOM.Namespace) { #line default #line hidden this.Write("} // namespace "); #line 83 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespacePart)); #line default #line hidden this.Write("\r\n"); #line 84 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMInteractionInterfacesHeader.tt" } #line default #line hidden return(this.GenerationEnvironment.ToString()); }
static void Main(string[] args) { List <String> argList = new List <string>(args); try { string filename = "D:/vfs/CANoe/feature/14.0_DistSim_HLA/Projects_Source/CANoe/Source/RTEVENT/DistSim/RTFederate.xml"; string enclosingNamespace = "N" + System.IO.Path.GetFileNameWithoutExtension(filename) + "Encoding"; bool usePrecompiledHeaders = false; bool doDryRun = false; bool haveFilename = false; bool haveNamespace = false; string outputDirectory = ""; bool outputDirectorySpecified = false; string interfaceHeaderOutputDirectory = ""; bool interfaceHeaderOutputDirectorySpecified = false; string pathSeparator = new string(new char[] { System.IO.Path.DirectorySeparatorChar }); string doublePathSeparator = new string(new char[] { System.IO.Path.DirectorySeparatorChar, System.IO.Path.DirectorySeparatorChar }); string interfacesIncludePath = ""; List <String> includePaths = new List <string>(); while (argList.Count() > 0) { if (argList.First() == "-p") { usePrecompiledHeaders = true; argList.RemoveAt(0); } else if (argList.First() == "-d") { doDryRun = true; argList.RemoveAt(0); } else if (argList.First() == "-o") { argList.RemoveAt(0); if (argList.Count() > 0) { outputDirectorySpecified = true; outputDirectory = argList.First() .Replace(doublePathSeparator, pathSeparator) .TrimEnd(new char[] { System.IO.Path.DirectorySeparatorChar }); argList.RemoveAt(0); if (!System.IO.Directory.Exists(outputDirectory)) { throw new ArgumentException("output directory " + outputDirectory + "does not exist"); } } else { throw new ArgumentException("option -o requires argument"); } } else if (argList.First() == "-oi") { argList.RemoveAt(0); if (argList.Count() > 0) { interfaceHeaderOutputDirectorySpecified = true; interfaceHeaderOutputDirectory = argList.First() .Replace(doublePathSeparator, pathSeparator) .TrimEnd(new char[] { System.IO.Path.DirectorySeparatorChar }); argList.RemoveAt(0); if (!System.IO.Directory.Exists(interfaceHeaderOutputDirectory)) { throw new ArgumentException("interface header output directory " + interfaceHeaderOutputDirectory + "does not exist"); } } else { throw new ArgumentException("option -oi requires argument"); } } else if (argList.First() == "-I") { argList.RemoveAt(0); if (argList.Count() > 0) { string includeDirectory = argList.First() .Replace(doublePathSeparator, pathSeparator) .TrimEnd(new char[] { System.IO.Path.DirectorySeparatorChar }); argList.RemoveAt(0); includePaths.Add(includeDirectory); } else { throw new ArgumentException("option -oi requires argument"); } } else if (!haveFilename) { haveFilename = true; filename = argList.First(); argList.RemoveAt(0); } else if (!haveNamespace) { haveNamespace = true; enclosingNamespace = argList.First(); argList.RemoveAt(0); } } if (!outputDirectorySpecified) { outputDirectory = System.IO.Path.GetDirectoryName(filename); } if (!interfaceHeaderOutputDirectorySpecified) { interfaceHeaderOutputDirectory = outputDirectory; } var basename = System.IO.Path.GetFileNameWithoutExtension(filename); var dataTypesHeaderFilename = System.IO.Path.Combine(interfaceHeaderOutputDirectory, basename + "DataTypes.h"); var encodingsHeaderFilename = System.IO.Path.Combine(outputDirectory, basename + "Encodings.h"); var encodingsImplFilename = System.IO.Path.Combine(outputDirectory, basename + "Encodings.cpp"); var objectInterfacesHeaderFilename = System.IO.Path.Combine(interfaceHeaderOutputDirectory, basename + "ObjectInterfaces.h"); var objectsHeaderFilename = System.IO.Path.Combine(outputDirectory, basename + "Objects.h"); var objectsImplFilename = System.IO.Path.Combine(outputDirectory, basename + "Objects.cpp"); var interactionInterfacesHeaderFilename = System.IO.Path.Combine(interfaceHeaderOutputDirectory, basename + "InteractionInterfaces.h"); var interactionsHeaderFilename = System.IO.Path.Combine(outputDirectory, basename + "Interactions.h"); var interactionsImplFilename = System.IO.Path.Combine(outputDirectory, basename + "Interactions.cpp"); System.Console.WriteLine("dataTypesHeaderFilename={0}", dataTypesHeaderFilename); System.Console.WriteLine("encodingsHeaderFilename={0}", encodingsHeaderFilename); System.Console.WriteLine("encodingsImplFilename={0}", encodingsImplFilename); System.Console.WriteLine("objectInterfacesHeaderFilename={0}", objectInterfacesHeaderFilename); System.Console.WriteLine("objectsHeaderFilename={0}", objectsHeaderFilename); System.Console.WriteLine("objectsImplFilename={0}", objectsImplFilename); System.Console.WriteLine("interactionInterfacesHeaderFilename={0}", interactionInterfacesHeaderFilename); System.Console.WriteLine("interactionsHeaderFilename={0}", interactionsHeaderFilename); System.Console.WriteLine("interactionsImplFilename={0}", interactionsImplFilename); FOMParser fom = new FOMParser(filename, enclosingNamespace); fom.UsePrecompiledHeaders = usePrecompiledHeaders; if (includePaths.Count > 0) { interfacesIncludePath = GetIncludeDirectory(interfaceHeaderOutputDirectory, includePaths.ToArray()); } else { interfacesIncludePath = GetIncludeDirectory(interfaceHeaderOutputDirectory, new string[] { outputDirectory }); } FOMDataTypesHeader dataTypesHeader = new FOMDataTypesHeader(fom); String dataTypesHeaderHeaderContent = dataTypesHeader.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(dataTypesHeaderFilename, dataTypesHeaderHeaderContent); } FOMEncodingHeader encodingsHeader = new FOMEncodingHeader(fom, dataTypesHeaderFilename, interfacesIncludePath); String encodingsHeaderContent = encodingsHeader.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(encodingsHeaderFilename, encodingsHeaderContent); } FOMEncodingImpl encodingsImpl = new FOMEncodingImpl(fom, encodingsHeaderFilename, interfacesIncludePath); String encodingsImplContent = encodingsImpl.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(encodingsImplFilename, encodingsImplContent); } FOMObjectInterfacesHeader objectInterfacesHeader = new FOMObjectInterfacesHeader(fom, objectInterfacesHeaderFilename, dataTypesHeaderFilename); String objectInterfacesHeaderContent = objectInterfacesHeader.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(objectInterfacesHeaderFilename, objectInterfacesHeaderContent); } FOMObjectsHeader objectsHeader = new FOMObjectsHeader(fom, objectsHeaderFilename, objectInterfacesHeaderFilename, encodingsHeaderFilename, interfacesIncludePath); String objectsHeaderContent = objectsHeader.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(objectsHeaderFilename, objectsHeaderContent); } FOMObjectsImpl objectsImpl = new FOMObjectsImpl(fom, objectsHeaderFilename, interfacesIncludePath); String objectsImplContent = objectsImpl.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(objectsImplFilename, objectsImplContent); } FOMInteractionInterfacesHeader interactionInterfacesHeader = new FOMInteractionInterfacesHeader(fom, interactionInterfacesHeaderFilename, objectInterfacesHeaderFilename, dataTypesHeaderFilename); String interactionInterfacesHeaderContent = interactionInterfacesHeader.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(interactionInterfacesHeaderFilename, interactionInterfacesHeaderContent); } FOMInteractionsHeader interactionsHeader = new FOMInteractionsHeader(fom, interactionsHeaderFilename, interactionInterfacesHeaderFilename, objectsHeaderFilename, encodingsHeaderFilename, interfacesIncludePath); String interactionsHeaderContent = interactionsHeader.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(interactionsHeaderFilename, interactionsHeaderContent); } FOMInteractionsImpl interactionsImpl = new FOMInteractionsImpl(fom, interactionsHeaderFilename, objectsHeaderFilename, interfacesIncludePath); String interactionsImplContent = interactionsImpl.TransformText(); if (!doDryRun) { System.IO.File.WriteAllText(interactionsImplFilename, interactionsImplContent); } } catch (Exception e) { System.Console.WriteLine("{0}", e.Message); } }
public FOMInteractionsImpl(FOMParser fom, string interactionsHeaderFilename, string objectsHeaderFilename, string includePath) { FOM = fom; InteractionsHeaderFilename = System.IO.Path.GetFileName(interactionsHeaderFilename); ObjectsHeaderFilename = System.IO.Path.GetFileName(objectsHeaderFilename); }
public FOMEncodingImpl(FOMParser fom, string encodingHeaderFilename, string includePath) { FOM = fom; EncodingHeaderFilename = System.IO.Path.GetFileName(encodingHeaderFilename); }
public FOMDataTypesHeader(FOMParser fom) { FOM = fom; }
public FOMObjectInterfacesHeader(FOMParser fom, string objectInterfacesHeaderFilename, string encodingHeaderFilename) { FOM = fom; ObjectInterfacesHeaderFilename = System.IO.Path.GetFileName(objectInterfacesHeaderFilename); DataTypesHeaderFilename = System.IO.Path.GetFileName(encodingHeaderFilename); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n// Code automatically generated by FOMCodeGen version "); #line 7 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.GeneratorVersion)); #line default #line hidden this.Write(" from "); #line 7 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(System.IO.Path.GetFileName(FOM.Filename))); #line default #line hidden this.Write(", do not edit\r\n\r\n"); #line 9 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (FOM.ModelIdentification.Name != null) { #line default #line hidden #line 10 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Name, "Name: "))); #line default #line hidden this.Write("\r\n"); #line 11 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden #line 12 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (FOM.ModelIdentification.Copyright != null) { #line default #line hidden #line 13 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Copyright, "Copyright: "))); #line default #line hidden this.Write("\r\n"); #line 14 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden #line 15 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (FOM.ModelIdentification.Version != null) { #line default #line hidden #line 16 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Version, "Version: "))); #line default #line hidden this.Write("\r\n"); #line 17 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden #line 18 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (FOM.ModelIdentification.Description != null) { #line default #line hidden #line 19 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Description, "Description: "))); #line default #line hidden this.Write("\r\n"); #line 20 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden #line 21 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (FOM.ModelIdentification.Purpose != null) { #line default #line hidden #line 22 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOMParser.FormatAsComment(FOM.ModelIdentification.Purpose, "Purpose: "))); #line default #line hidden this.Write("\r\n"); #line 23 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write("\r\n#pragma once\r\n\r\n#include <vector>\r\n#include <ostream>\r\n#include <cassert>\r\n#inc" + "lude <new>\r\n#include <utility>\r\n#include <type_traits>\r\n\r\n"); #line 34 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.GetPredefinedTypeIncludes(FOMParser.FileContext.kDataTypes))); #line default #line hidden this.Write("\r\n\r\n"); #line 36 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var namespacePart in FOM.Namespace) { #line default #line hidden this.Write("namespace "); #line 40 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespacePart)); #line default #line hidden this.Write(" {\r\n"); #line 41 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write("\r\n// define placement_new in case some other header has redefined operator new to" + " sth. different (e.g. MS crtdbg)\r\n#ifndef _PLACEMENT_NEW_DEFINED\r\n#pragma push_m" + "acro(\"new\")\r\n#undef new\r\ntemplate <class X, typename ... Types>\r\ninline X* place" + "ment_new(void* addr, Types&& ... args)\r\n{\r\n return new (addr) X(std::forward<Ty" + "pes>(args)...);\r\n}\r\n#pragma pop_macro(\"new\")\r\n#define _PLACEMENT_NEW_DEFINED\r\n#e" + "ndif\r\n\r\n// define our own simplified \'optional\' types, similar to but independen" + "t of std::optional (since C++17) or boost::optional\r\n\r\nstruct nullopt_t\n{\n enum" + " class _Construct { _Token };\n explicit constexpr nullopt_t(_Construct) { }\n};\n" + "\n/// Tag to disengage optional objects.\nconstexpr nullopt_t nullopt { nullopt_t:" + ":_Construct::_Token };\n\r\nclass bad_optional_access : public std::exception\r\n{\r\np" + "ublic:\r\n virtual const char* what() const noexcept override { return (\"Bad opti" + "onal access\"); }\r\n};\r\n\r\n// (empty) base template\r\ntemplate<typename T, bool=std:" + ":is_class<T>::value > struct optional {};\r\n\r\n// Specialization for classes and s" + "tructs used by-value, w. in-place copy-construction.\r\n// This implementation is " + "limited to copy-constructible and default-destructible classes!\r\ntemplate<typena" + "me T> struct optional<T, true>\r\n{\r\n static_assert(!std::is_reference< T >::valu" + "e, \"reference is not supported as optional value\");\r\n // constructors\r\n option" + "al() noexcept : _valid(false) {}\r\n constexpr optional(nullopt_t) noexcept : _va" + "lid(false) {}\r\n optional(const optional& rhs): _valid(rhs._valid) { create(rhs)" + "; }\r\n optional(const T& w): _valid(true) { create(w); }\r\n template<typename Ot" + "her>\r\n optional(const Other& w): _valid(true) { create(w); }\r\n template<typena" + "me Other>\r\n optional(const optional<Other>& rhs): _valid(rhs.has_value()) { if " + "(rhs.has_value()) create(rhs.value()); }\r\n\r\n // destructor\r\n ~optional() { if(" + "_valid) destroy(); }\r\n\r\n // check for value presence\r\n bool has_value() const " + "{ return _valid; }\r\n explicit operator bool() const { return _valid; }\r\n bool " + "operator ! () const { return !_valid; }\r\n\r\n // assign\r\n optional& operator = (" + "optional const& rhs) { return assign(rhs); }\r\n optional& operator = (T const& w" + ") { return assign(w); }\r\n\r\n // unchecked access to value\r\n const T& operator *" + " () const & { return *get(); }\r\n T& operator * () & { return *get(); }\r\n T con" + "st* operator -> () const { return get(); }\r\n T* operator -> () { return get(); " + "}\r\n // checked access to value\r\n const T& value() const & {\r\n if (!_valid) " + "{\r\n throw bad_optional_access{};\r\n }\r\n return *get();\r\n }\r\n T& valu" + "e() & {\r\n if (!_valid) {\r\n throw bad_optional_access{};\r\n }\r\n retu" + "rn *get();\r\n }\r\nprivate:\r\n template<typename Other>\r\n void create(const Other" + "& w) { placement_new<T>(&_value, w); }\r\n void create(const optional& rhs) { if(" + "_valid) create(*rhs.get()); }\r\n void destroy() { get()->~T(); }\r\n T const* get" + "() const { assert(_valid && \"no optional value\"); return reinterpret_cast< const" + " T* >(&_value); }\r\n T* get() { assert(_valid && \"no optional value\"); return re" + "interpret_cast< T* >(&_value); }\r\n void cleanup() { destroy(); _valid = false; " + "}\r\n optional& assign(const T& w) {\r\n if(_valid) *get() = w;\r\n else create" + "(w), _valid = true;\r\n return *this;\r\n }\r\n optional& assign(const optional& " + "rhs) {\r\n if(rhs._valid) return assign(*rhs.get());\r\n if(!_valid) return *t" + "his;\r\n cleanup();\r\n return *this;\r\n }\r\n bool _valid;\r\n\tunion {\r\n type" + "name std::remove_cv<T>::type _value;\r\n };\r\n};\r\n// Specialization for const-ref " + "parameters, implemented by holding a pointer to the original variable.\r\n// Note " + "that non-const references are *not* supported (but could be easily added)!\r\ntemp" + "late<typename T> struct optional<const T&, false>\r\n{\r\n // constructors\r\n optio" + "nal() noexcept : _valid(false), _pointer() {}\r\n constexpr optional(nullopt_t) n" + "oexcept : _valid(false), _pointer() {}\r\n optional(const optional& rhs): _valid(" + "rhs._valid), _pointer(rhs._pointer) { }\r\n optional(const T& rhs) noexcept : _va" + "lid(true), _pointer(&rhs) { }\r\n template<typename Other>\r\n optional(const Othe" + "r& rhs): _valid(true), _pointer(&rhs) { }\r\n template<typename Other>\r\n optiona" + "l(const optional<Other>& rhs): _valid(rhs.has_value()), _pointer(rhs.operator->(" + ")) { }\r\n\r\n // destructor\r\n ~optional() { }\r\n\r\n // check for value presence\r\n " + " bool has_value() const { return _valid; }\r\n explicit operator bool() const { r" + "eturn _valid; }\r\n bool operator ! () const { return !_valid; }\r\n\r\n // assign\r\n" + " optional& operator = (const optional& rhs) {\r\n _valid = rhs._valid;\r\n _p" + "ointer = rhs._pointer;\r\n return *this;\r\n }\r\n optional& operator = (const T&" + " w) {\r\n _valid = true;\r\n _pointer = &w;\r\n return *this;\r\n }\r\n // unch" + "ecked access to value\r\n T const& operator * () const & { return *get(); }\r\n T " + "const* operator -> () const & { return get(); }\r\n // checked access to value\r\n " + " const T& value() const & {\r\n if (!_valid) {\r\n throw bad_optional_access" + "{};\r\n }\r\n return *get();\r\n }\r\n T& value() & {\r\n if (!_valid) {\r\n " + " throw bad_optional_access{};\r\n }\r\n return *get();\r\n }\r\nprivate:\r\n const" + " T* get() const {\r\n assert(_valid && \"no optional value\");\r\n return _point" + "er;\r\n }\r\n bool _valid;\r\n const T* _pointer = nullptr;\r\n};\r\n// Specialization " + "for everything else, which includes fundamental types and pointer types.\r\ntempla" + "te<typename T> struct optional<T, false>\r\n{\r\n // constructors\r\n optional() noe" + "xcept : _valid(false), _value() {}\r\n constexpr optional(nullopt_t) noexcept : _" + "valid(false), _value() {}\r\n optional(const optional& rhs): _valid(rhs._valid), " + "_value(rhs._value) { }\r\n optional(const T& rhs) : _valid(true), _value(rhs) { }" + "\r\n template<typename Other>\r\n optional(const Other& rhs): _valid(true), _value" + "(rhs) { }\r\n template<typename Other>\r\n optional(const optional<Other>& rhs): _" + "valid(rhs.has_value()), _value(rhs.operator*()) { }\r\n\r\n // destructor\r\n ~optio" + "nal() { }\r\n\r\n // check for value presence\r\n bool has_value() const { return _v" + "alid; }\r\n explicit operator bool() const { return _valid; }\r\n bool operator ! " + "() const { return !_valid; }\r\n\r\n // assign\r\n optional& operator = (const optio" + "nal& rhs) {\r\n _valid = rhs._valid;\r\n _value = rhs._value;\r\n return *thi" + "s;\r\n }\r\n optional& operator = (const T& w) {\r\n _valid = true;\r\n _value =" + " w;\r\n return *this;\r\n }\r\n // unchecked access to value\r\n T const& operator" + " * () const & { return _value; }\r\n T const* operator -> () const { return &_val" + "ue; }\r\n // checked access to value\r\n const T& value() const & {\r\n if (!_val" + "id) {\r\n throw bad_optional_access{};\r\n }\r\n return _value;\r\n }\r\n T& " + "value() & {\r\n if (!_valid) {\r\n throw bad_optional_access{};\r\n }\r\n " + "return _value;\r\n }\r\nprivate:\r\n bool _valid;\r\n T _value;\r\n};\r\n\r\nclass InvalidL" + "ogicalTime : public std::logic_error\r\n{\r\n public:\r\n InvalidLogicalTime(const" + " std::string& what_arg) : std::logic_error(what_arg) {}\r\n};\r\n\r\nclass NotConnecte" + "d : public std::logic_error\r\n{\r\n public:\r\n NotConnected() : std::logic_error" + "(\"not connected\") {}\r\n};\r\n\r\nclass NotInitialized : public std::logic_error\r\n{\r\n " + " public:\r\n NotInitialized() : std::logic_error(\"class registry not initialize" + "d\") {}\r\n};\r\n\r\n// extended receive order type, includes \'interpolated\' for applic" + "ation-generated timestamps\r\nenum class OrderType { RECEIVE, TIMESTAMP, INTERPOLA" + "TED };\r\n\r\ntemplate<typename char_type, typename traits_type>\r\nstd::basic_ostream" + "<char_type, traits_type>&\r\noperator<<(std::basic_ostream<char_type, traits_type>" + "& os, OrderType value)\r\n{\r\n switch (value)\r\n {\r\n case OrderType::RECEIVE: o" + "s << \"RECEIVE\"; break;\r\n case OrderType::TIMESTAMP: os << \"TIMESTAMP\"; break;" + "\r\n case OrderType::INTERPOLATED: os << \"INTERPOLATED\"; break;\r\n }\r\n return " + "os;\r\n}\r\n\r\ninline std::string to_string(OrderType value)\r\n{\r\n switch (value)\r\n " + "{\r\n case OrderType::RECEIVE: return \"RECEIVE\";\r\n case OrderType::TIMESTAMP" + ": return \"TIMESTAMP\";\r\n case OrderType::INTERPOLATED: return \"INTERPOLATED\";\r" + "\n }\r\n}\r\n\r\ninline std::wstring to_wstring(OrderType value)\r\n{\r\n switch (value)\r" + "\n {\r\n case OrderType::RECEIVE: return L\"RECEIVE\";\r\n case OrderType::TIMES" + "TAMP: return L\"TIMESTAMP\";\r\n case OrderType::INTERPOLATED: return L\"INTERPOLA" + "TED\";\r\n }\r\n}\r\n"); #line 300 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(FOM.DataTypeForwardDeclarations)); #line default #line hidden this.Write("\r\n"); #line 303 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var dataType in FOM.DataTypes) { if (dataType is FOMParser.SimpleDataType && dataType.Generate) { var simpleDataType = dataType as FOMParser.SimpleDataType; if (dataType.Comment != null && dataType.Comment != "") { #line default #line hidden #line 311 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Comment)); #line default #line hidden this.Write("\r\n"); #line 312 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write("typedef "); #line 313 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(simpleDataType.Representation.CPPType)); #line default #line hidden this.Write(" "); #line 313 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(simpleDataType.Name)); #line default #line hidden this.Write(";\r\n\r\n"); #line 315 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // if (dataType is FOMParser.SimpleDataType) else if (dataType is FOMParser.FixedRecordDataType) { var fixedRecordDataType = dataType as FOMParser.FixedRecordDataType; if (dataType.Comment != null && dataType.Comment != "") { #line default #line hidden #line 321 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(fixedRecordDataType.Comment)); #line default #line hidden this.Write("\r\n"); #line 322 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write("class "); #line 323 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(fixedRecordDataType.Name)); #line default #line hidden #line 323 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(fixedRecordDataType.BaseClass != null ? " : public " + fixedRecordDataType.BaseClass.Name : "")); #line default #line hidden this.Write("\r\n{\r\n public:\r\n virtual ~"); #line 326 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(fixedRecordDataType.Name)); #line default #line hidden this.Write("() noexcept {}\r\n"); #line 327 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (fixedRecordDataType.BaseClass == null) { #line default #line hidden this.Write(" virtual uint32_t getVersion() const = 0;\r\n"); #line 329 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden #line 330 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var field in fixedRecordDataType.Fields) { #line default #line hidden this.Write(" virtual void Set"); #line 331 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("("); #line 331 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.DataType.ParameterCppType)); #line default #line hidden this.Write(" value) = 0;\r\n"); #line 332 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" if (field.DataType is FOMParser.ArrayDataType) { var arrayDataType = field.DataType as FOMParser.ArrayDataType; #line default #line hidden this.Write(" virtual void Set"); #line 335 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("(const "); #line 335 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(arrayDataType.DataType.CPPType)); #line default #line hidden this.Write("* value, size_t size) = 0;\r\n"); #line 336 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write(" virtual "); #line 337 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.DataType.ReturnCppType)); #line default #line hidden this.Write(" Get"); #line 337 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("() const = 0;\r\n virtual bool Is"); #line 338 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(field.Name)); #line default #line hidden this.Write("Available() const = 0;\r\n"); #line 339 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // foreach fixedRecordDataType.Fields #line default #line hidden this.Write("\r\n}; // class "); #line 341 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write("\r\n\r\n"); #line 343 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // if (dataType is FOMParser.FixedRecordDataType) else if (dataType is FOMParser.EnumeratedDataType && dataType.Generate) { var enumeratedDataType = dataType as FOMParser.EnumeratedDataType; if (dataType.Comment != null && dataType.Comment != "") { #line default #line hidden #line 350 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Comment)); #line default #line hidden this.Write("\r\n"); #line 351 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write("enum class "); #line 352 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(" : "); #line 352 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumeratedDataType.Representation.CPPType)); #line default #line hidden this.Write("\r\n{\r\n"); #line 354 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var enumerator in enumeratedDataType.Enumerators.Values) { if (enumerator.Comment != null) { #line default #line hidden this.Write(" "); #line 359 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Comment)); #line default #line hidden this.Write("\r\n"); #line 360 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden this.Write(" "); #line 361 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write(" = "); #line 361 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Value)); #line default #line hidden this.Write(",\r\n"); #line 362 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // foreach enumeratedDataType.Enumerators.Values #line default #line hidden this.Write("}; // enum "); #line 365 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write("\r\n\r\ntemplate<typename char_type, typename traits_type>\r\nstd::basic_ostream<char_t" + "ype, traits_type>&\r\noperator<<(std::basic_ostream<char_type, traits_type>& os, "); #line 369 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(" value)\r\n{\r\n switch (value)\r\n {\r\n"); #line 373 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var enumerator in enumeratedDataType.Enumerators.Values) { #line default #line hidden this.Write(" case "); #line 377 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write("::"); #line 377 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write(": os << \""); #line 377 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write("\"; break;\r\n"); #line 378 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // foreach enumeratedDataType.Enumerators.Values #line default #line hidden this.Write(" default: os << \"<invalid "); #line 381 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(">\"; break;\r\n }\r\n return os;\r\n}\r\n\r\ninline std::string to_string("); #line 386 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(" value)\r\n{\r\n switch (value)\r\n {\r\n"); #line 390 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var enumerator in enumeratedDataType.Enumerators.Values) { #line default #line hidden this.Write(" case "); #line 394 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write("::"); #line 394 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write(": return \""); #line 394 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write("\";\r\n"); #line 395 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // foreach enumeratedDataType.Enumerators.Values #line default #line hidden this.Write(" default: return \"<invalid "); #line 398 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(">\";\r\n }\r\n}\r\n\r\ninline std::wstring to_wstring("); #line 402 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(" value)\r\n{\r\n switch (value)\r\n {\r\n"); #line 406 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var enumerator in enumeratedDataType.Enumerators.Values) { #line default #line hidden this.Write(" case "); #line 410 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write("::"); #line 410 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write(": return L\""); #line 410 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(enumerator.Name)); #line default #line hidden this.Write("\";\r\n"); #line 411 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // foreach enumeratedDataType.Enumerators.Values #line default #line hidden this.Write(" default: return L\"<invalid "); #line 414 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(dataType.Name)); #line default #line hidden this.Write(">\";\r\n }\r\n}\r\n\r\n"); #line 418 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } // if (dataType is FOMParser.EnumeratedDataType) } // foreach (var dataType in FOM.DataTypes.Values) #line default #line hidden this.Write("\r\n"); #line 423 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" foreach (var namespacePart in FOM.Namespace) { #line default #line hidden this.Write("} // namespace "); #line 427 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" this.Write(this.ToStringHelper.ToStringWithCulture(namespacePart)); #line default #line hidden this.Write("\r\n"); #line 428 "D:\vfs\OpenRTI\src\Tools\FOMCodeGen\FOMDataTypesHeader.tt" } #line default #line hidden return(this.GenerationEnvironment.ToString()); }