]> git.mxchange.org Git - simgear.git/commitdiff
HLAFederate: introduce read*ObjectModelTemplate.
authorMathias Froehlich <Mathias.Froehlich@web.de>
Sat, 18 Feb 2012 10:00:28 +0000 (11:00 +0100)
committerMathias Froehlich <Mathias.Froehlich@web.de>
Sat, 18 Feb 2012 10:00:28 +0000 (11:00 +0100)
Introduce read{RTI13,RTI1516,RTI1516E}ObjectModelTemplate
methods. Deprecate the current readObjectModelTemplate method
and provide a short term upgrade path.

simgear/hla/HLAFederate.cxx
simgear/hla/HLAFederate.hxx

index c5c70630f8297c2b3222019fe20811ae99324590..b4a75597d52be481d2daa2c9e7b85cab1dbde229 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009 - 2011  Mathias Froehlich - Mathias.Froehlich@web.de
+// Copyright (C) 2009 - 2012  Mathias Froehlich - Mathias.Froehlich@web.de
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -831,6 +831,27 @@ HLAFederate::readObjectModelTemplate(const std::string& objectModel,
     return true;
 }
 
+bool
+HLAFederate::readRTI13ObjectModelTemplate(const std::string& objectModel)
+{
+    SG_LOG(SG_IO, SG_ALERT, "HLA version RTI13 not yet(!?) supported.");
+    return false;
+}
+
+bool
+HLAFederate::readRTI1516ObjectModelTemplate(const std::string& objectModel)
+{
+    ObjectModelFactory objectModelFactory;
+    return readObjectModelTemplate(objectModel, objectModelFactory);
+}
+
+bool
+HLAFederate::readRTI1516EObjectModelTemplate(const std::string& objectModel)
+{
+    SG_LOG(SG_IO, SG_ALERT, "HLA version RTI1516E not yet(!?) supported.");
+    return false;
+}
+
 HLAObjectClass*
 HLAFederate::getObjectClass(const std::string& name)
 {
@@ -849,6 +870,12 @@ HLAFederate::getObjectClass(const std::string& name) const
     return i->second.get();
 }
 
+HLAObjectClass*
+HLAFederate::createObjectClass(const std::string& name)
+{
+    return new HLAObjectClass(name, *this);
+}
+
 HLAInteractionClass*
 HLAFederate::getInteractionClass(const std::string& name)
 {
@@ -884,6 +911,14 @@ HLAFederate::readObjectModel()
 {
     /// Currently empty, but is called at the right time so that
     /// the object model is present when it is needed
+    // switch (getVersion()) {
+    // case RTI13:
+    //     return readRTI13ObjectModelTemplate(getFederationObjectModel());
+    // case RTI1516:
+    //     return readRTI1516ObjectModelTemplate(getFederationObjectModel());
+    // case RTI1516E:
+    //     return readRTI1516EObjectModelTemplate(getFederationObjectModel());
+    // }
     return true;
 }
 
index 3083903cb80866267d3c90873f3dc3a073bd2ce7..2326a385d760fcb9cf76c383cb865e79833597d3 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2009 - 2011  Mathias Froehlich - Mathias.Froehlich@web.de
+// Copyright (C) 2009 - 2012  Mathias Froehlich - Mathias.Froehlich@web.de
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Library General Public
@@ -161,7 +161,7 @@ public:
     /// a pending time advance is granted.
     bool processMessages();
 
-    /// Legacy tick call
+    /// Legacy tick call - deprecated
     bool tick(const double& minimum, const double& maximum);
 
     class ObjectModelFactory {
@@ -170,7 +170,7 @@ public:
         { }
 
         virtual HLAObjectClass* createObjectClass(const std::string& name, HLAFederate& federate)
-        { return new HLAObjectClass(name, federate); }
+        { return federate.createObjectClass(name); }
         virtual bool subscribeObjectClass(const std::string& objectClassName, const std::string& sharing)
         { return sharing.find("Subscribe") != std::string::npos; }
         virtual bool publishObjectClass(const std::string& objectClassName, const std::string& sharing)
@@ -182,13 +182,22 @@ public:
 
     };
 
-    /// Read an omt xml file
+    /// Read an omt xml file - deprecated
     bool readObjectModelTemplate(const std::string& objectModel,
                                  ObjectModelFactory& objectModelFactory);
 
+    /// Read an rti1.3 omt xml file
+    bool readRTI13ObjectModelTemplate(const std::string& objectModel);
+    /// Read an rti1516 omt xml file
+    bool readRTI1516ObjectModelTemplate(const std::string& objectModel);
+    /// Read an rti1516e omt xml file
+    bool readRTI1516EObjectModelTemplate(const std::string& objectModel);
+
     /// Get the object class of a given name
     HLAObjectClass* getObjectClass(const std::string& name);
     const HLAObjectClass* getObjectClass(const std::string& name) const;
+    /// Default create function. Creates a default object class
+    virtual HLAObjectClass* createObjectClass(const std::string& name);
 
     /// Get the interaction class of a given name
     HLAInteractionClass* getInteractionClass(const std::string& name);