certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] certi/libCERTI RootObject.hh ObjectClass.cc Obj...


From: certi-cvs
Subject: [certi-cvs] certi/libCERTI RootObject.hh ObjectClass.cc Obj...
Date: Thu, 30 Oct 2008 16:01:39 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      08/10/30 16:01:39

Modified files:
        libCERTI       : RootObject.hh ObjectClass.cc 
                         ObjectClassAttribute.cc XmlParser.cc 
                         ObjectClassAttribute.hh fed.cc Named.hh 
                         ObjectClass.hh RootObject.cc 

Log message:
        Improver Parsing architecture (to be continued)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.hh?cvsroot=certi&r1=3.29&r2=3.30
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.cc?cvsroot=certi&r1=3.53&r2=3.54
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassAttribute.cc?cvsroot=certi&r1=3.28&r2=3.29
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/XmlParser.cc?cvsroot=certi&r1=3.26&r2=3.27
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClassAttribute.hh?cvsroot=certi&r1=3.23&r2=3.24
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/fed.cc?cvsroot=certi&r1=3.17&r2=3.18
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/Named.hh?cvsroot=certi&r1=3.6&r2=3.7
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/ObjectClass.hh?cvsroot=certi&r1=3.37&r2=3.38
http://cvs.savannah.gnu.org/viewcvs/certi/libCERTI/RootObject.cc?cvsroot=certi&r1=3.34&r2=3.35

Patches:
Index: RootObject.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.hh,v
retrieving revision 3.29
retrieving revision 3.30
diff -u -b -r3.29 -r3.30
--- RootObject.hh       13 Jun 2008 10:55:13 -0000      3.29
+++ RootObject.hh       30 Oct 2008 16:01:37 -0000      3.30
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: RootObject.hh,v 3.29 2008/06/13 10:55:13 erk Exp $
+// $Id: RootObject.hh,v 3.30 2008/10/30 16:01:37 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef LIBCERTI_ROOT_OBJECT
@@ -51,15 +51,33 @@
 /**
  * The RootObject is literally the "root" object
  * of the HLA object class hierarchy.
- * It contains 
+ * One RootObject is created for each federation both
+ * on the RTIG and on each RTIA instance of corresponding
+ * federate which has joined the federation.
+ * It contains the object (resp. interaction) classes
+ * hierarchy with the attached attributes (resp. parameters).
+ * It contains the object instances which has been registered
+ * by all federate (if on RTIG) or by local federate (if on RTIA).
  */
 class CERTI_EXPORT RootObject
 {
 public:
-    RootObject(SecurityServer *);
+
+       /**
+        * RootObject constructor.
+        * @param[in] security_server the SocketServer proxy which is used to
+        *            retrieve the socket link between RTIG and RTIA.
+        *            This may be NULL on the RTIA.
+        */
+    RootObject(SecurityServer *security_server);
+
+    /**
+     * RootObject destructor.
+     * Will delete all object or interaction classes.
+     */
     ~RootObject();
 
-    void display() const ;
+    void display() const;
 
     SecurityLevelID GetSecurityLevelID(const char *the_name);
 
@@ -108,14 +126,43 @@
     ObjectClassAttribute *getObjectClassAttribute(ObjectHandle,
                                                  AttributeHandle);
     
-    // -- Attributes
-    ObjectClassSet *ObjectClasses ;
-    InteractionSet *Interactions ;
-    ObjectSet      *objects ;
+    /**
+     * Add an object class to the ObjectRoot
+     * @param[in,out] currentOC the object class to be added
+     * @param[in,out] parentOC the parent object class of currentOC
+     *                      this may be NULL.
+     */
+    void addObjectClass(ObjectClass* currentOC,ObjectClass* parentOC);
+
+    /**
+     * Add an interaction class to the ObjectRoot
+     * @param[in] currentIC the interaction class to be added.
+     */
+    void addInteractionClass(Interaction* currentIC);
+
+    /**
+     * The set of object classes.
+     * This is created when parsing the FOM.
+     */
+    ObjectClassSet *ObjectClasses;
+
+    /**
+     * The set of interactions classes found
+     * This is created when parsing the FOM.
+     */
+    InteractionSet *Interactions;
+    /**
+     * The set of registered object instance.
+     */
+    ObjectSet      *objects;
 
 private:
-    std::vector<RoutingSpace> spaces ;
-    SecurityServer *server ;
+
+    std::vector<RoutingSpace> spaces;
+    /**
+     * The associated socket server.
+     */
+    SecurityServer           *server;
 
     // Regions
     std::list<RTIRegion *> regions ;
@@ -126,4 +173,4 @@
 
 #endif // LIBCERTI_ROOT_OBJECT
 
-// $Id: RootObject.hh,v 3.29 2008/06/13 10:55:13 erk Exp $
+// $Id: RootObject.hh,v 3.30 2008/10/30 16:01:37 erk Exp $

Index: ObjectClass.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.cc,v
retrieving revision 3.53
retrieving revision 3.54
diff -u -b -r3.53 -r3.54
--- ObjectClass.cc      18 Sep 2008 14:41:29 -0000      3.53
+++ ObjectClass.cc      30 Oct 2008 16:01:38 -0000      3.54
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClass.cc,v 3.53 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.cc,v 3.54 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include  "Object.hh"
@@ -286,8 +286,8 @@
 }
 
 // ----------------------------------------------------------------------------
-ObjectClass::ObjectClass()
-    : server(NULL), handle(0), maxSubscriberHandle(0), levelId(PublicLevelID),
+ObjectClass::ObjectClass(std::string name, ObjectClassHandle handle)
+    : Named(name), server(NULL), handle(handle), maxSubscriberHandle(0), 
levelId(PublicLevelID),
       superClass(0), subClasses(NULL)
 {
        subClasses = new ObjectClassSet(NULL);
@@ -1732,13 +1732,6 @@
 }
 
 // ----------------------------------------------------------------------------
-void
-ObjectClass::setHandle(ObjectClassHandle new_handle)
-{
-    handle = new_handle ;
-}
-
-// ----------------------------------------------------------------------------
 ObjectClassHandle
 ObjectClass::getHandle() const
 {
@@ -1826,4 +1819,4 @@
 
 } // namespace certi
 
-// $Id: ObjectClass.cc,v 3.53 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.cc,v 3.54 2008/10/30 16:01:38 erk Exp $

Index: ObjectClassAttribute.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassAttribute.cc,v
retrieving revision 3.28
retrieving revision 3.29
diff -u -b -r3.28 -r3.29
--- ObjectClassAttribute.cc     26 Apr 2008 14:59:40 -0000      3.28
+++ ObjectClassAttribute.cc     30 Oct 2008 16:01:38 -0000      3.29
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClassAttribute.cc,v 3.28 2008/04/26 14:59:40 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.29 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include "ObjectClassAttribute.hh"
@@ -40,6 +40,11 @@
 
 static pdCDebug D("OBJECTCLASSATTRIBUTE", "(Obj.Cl.Attr) ");
 
+ObjectClassAttribute::ObjectClassAttribute(const std::string name, 
TransportType transport, OrderType order)
+ : order(order), transport(transport) {
+       setName(name);
+
+}
 // ----------------------------------------------------------------------------
 //! No parameters constructor.
 /*! This constructor initialize the attribute with default parameters.
@@ -209,4 +214,4 @@
 
 } // namespace
 
-// $Id: ObjectClassAttribute.cc,v 3.28 2008/04/26 14:59:40 erk Exp $
+// $Id: ObjectClassAttribute.cc,v 3.29 2008/10/30 16:01:38 erk Exp $

Index: XmlParser.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/XmlParser.cc,v
retrieving revision 3.26
retrieving revision 3.27
diff -u -b -r3.26 -r3.27
--- XmlParser.cc        26 Apr 2008 14:59:40 -0000      3.26
+++ XmlParser.cc        30 Oct 2008 16:01:38 -0000      3.27
@@ -161,56 +161,42 @@
     D[pdTrace] << "New Object Class" << endl ;    
 
     xmlNodePtr prev = cur ;
-    ObjectClass* current = new ObjectClass();
-    current->setName(CleanXmlGetProp(cur,ATTRIBUTE_NAME));
-    current->setHandle(freeObjectClassHandle++);
-    
-    if (parent != 0)
-        root->ObjectClasses->buildParentRelation(current, parent);
+    /* note how objectHandle counter is incremented */
+    ObjectClass* current = new 
ObjectClass(std::string(CleanXmlGetProp(cur,ATTRIBUTE_NAME)),freeObjectClassHandle++);
 
-    /* FIXME EN we must add the class to object root
-     * after we did build the parent relation
-     * this is awkward but we need it for
-     * the "server" link to be OK
-     * We need to fix this.
-     */
-    root->ObjectClasses->addClass(current);
+    root->addObjectClass(current, parent);
     cur = cur->xmlChildrenNode ;
     while (cur != NULL) {
         // Attributes
         if ((!xmlStrcmp(cur->name, NODE_ATTRIBUTE))) {
-            ObjectClassAttribute *attr = new ObjectClassAttribute();
-
-            // Name
-            attr->setName(CleanXmlGetProp(cur,ATTRIBUTE_NAME));
-
-            // Handle
-            attr->setHandle(freeAttributeHandle++);
+               std::string name = 
std::string(CleanXmlGetProp(cur,ATTRIBUTE_NAME));
+               TransportType transport;
+               OrderType order;
 
             // Transportation
-            xmlChar* transport = xmlGetProp(cur, ATTRIBUTE_TRANSPORTATION);
-            if (!xmlStrcmp(transport,VALUE_RELIABLE)) {
-                attr->transport = RELIABLE ;
+            xmlChar* xtransport = xmlGetProp(cur, ATTRIBUTE_TRANSPORTATION);
+            if (!xmlStrcmp(xtransport,VALUE_RELIABLE)) {
+                transport = RELIABLE ;
             }
             else {
-               if (!xmlStrcmp(transport,VALUE_BESTEFFORT)) {
-                       attr->transport = BEST_EFFORT ;
+               if (!xmlStrcmp(xtransport,VALUE_BESTEFFORT)) {
+                       transport = BEST_EFFORT ;
                }
             }
-            xmlFree(transport);
+            xmlFree(xtransport);
 
             // Order
-            xmlChar* order = xmlGetProp(cur, ATTRIBUTE_ORDER);
-            if (!xmlStrcmp(order, VALUE_TSO)) {
-                attr->order = TIMESTAMP ;
+            xmlChar* xorder = xmlGetProp(cur, ATTRIBUTE_ORDER);
+            if (!xmlStrcmp(xorder, VALUE_TSO)) {
+                order = TIMESTAMP ;
             }
             else {
-               if (!xmlStrcmp(order, VALUE_RO)) {            
-                       attr->order = RECEIVE ;
+               if (!xmlStrcmp(xorder, VALUE_RO)) {
+                       order = RECEIVE ;
                }
             }
-            xmlFree(order);
-            
+            xmlFree(xorder);
+            ObjectClassAttribute *attr = new 
ObjectClassAttribute(name,transport,order);
             // Routing space
             char *space = (char *) xmlGetProp(cur, ATTRIBUTE_SPACE);
             if (space) {

Index: ObjectClassAttribute.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClassAttribute.hh,v
retrieving revision 3.23
retrieving revision 3.24
diff -u -b -r3.23 -r3.24
--- ObjectClassAttribute.hh     31 Oct 2007 10:30:22 -0000      3.23
+++ ObjectClassAttribute.hh     30 Oct 2008 16:01:38 -0000      3.24
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClassAttribute.hh,v 3.23 2007/10/31 10:30:22 erk Exp $
+// $Id: ObjectClassAttribute.hh,v 3.24 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef CERTI_OBJECT_CLASS_ATTRIBUTE_HH
@@ -48,7 +48,7 @@
 class CERTI_EXPORT ObjectClassAttribute : public Subscribable {
 
 public:
-    ObjectClassAttribute();
+       ObjectClassAttribute(const std::string name, TransportType transport, 
OrderType order);
     ObjectClassAttribute(ObjectClassAttribute *source);
     virtual ~ObjectClassAttribute();
 
@@ -79,6 +79,11 @@
     SecurityServer *server ;
 
 private:
+       /*
+        * private default constructor with no code
+        * one should not call it.
+        */
+       ObjectClassAttribute();
     void deletePublisher(FederateHandle);
 
     AttributeHandle handle ; //!< The attribute handle.    
@@ -93,4 +98,4 @@
 
 #endif // CERTI_OBJECT_CLASS_ATTRIBUTE_HH
 
-// $Id: ObjectClassAttribute.hh,v 3.23 2007/10/31 10:30:22 erk Exp $
+// $Id: ObjectClassAttribute.hh,v 3.24 2008/10/30 16:01:38 erk Exp $

Index: fed.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/fed.cc,v
retrieving revision 3.17
retrieving revision 3.18
diff -u -b -r3.17 -r3.18
--- fed.cc      30 Oct 2008 10:49:29 -0000      3.17
+++ fed.cc      30 Oct 2008 16:01:38 -0000      3.18
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: fed.cc,v 3.17 2008/10/30 10:49:29 erk Exp $
+// $Id: fed.cc,v 3.18 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 // CERTI header
@@ -65,7 +65,10 @@
 static int indentation = 0 ;
 const char *fed_filename ;
 
+/* this is the current object stack */
 static std::list<ObjectClass *> objects ;
+
+/* this is the current interaction stack */
 static std::list<Interaction *> interactions ;
 static string federate ;
 static ObjectClassAttribute *attribute ;
@@ -233,18 +236,22 @@
 void
 startObject()
 {
-    ObjectClass *object = new ObjectClass();
+    ObjectClass *parent = NULL;
     /* note how objectHandle counter is incremented */
-    object->setHandle(objectHandle++);
-    object->setName(arg.c_str());
+    ObjectClass *object = new ObjectClass(arg,objectHandle++);
 
+    /*
+     * Does this object class have a parent [object] class?
+     */
     if (objects.size() > 0) {
-       ObjectClass *parent = objects.back();
-       root_object->ObjectClasses->buildParentRelation(object, parent);
+       parent = objects.back();
     }
 
+    /* add current on object stack */
     objects.push_back(object);
-    root_object->ObjectClasses->addClass(object);
+
+    /* add new object to the RootObject */
+    root_object->addObjectClass(object,parent);
 
     indent();
     if(verbose) {
@@ -270,10 +277,7 @@
 void
 addAttribute()
 {
-    attribute = new ObjectClassAttribute();
-    attribute->setName(arg.c_str());
-    attribute->transport = transport ;
-    attribute->order = order ;
+    attribute = new ObjectClassAttribute(arg,transport,order);
     objects.back()->addAttribute(attribute);
 
     indent();
@@ -447,4 +451,4 @@
 
 }} // namespaces
 
-// $Id: fed.cc,v 3.17 2008/10/30 10:49:29 erk Exp $
+// $Id: fed.cc,v 3.18 2008/10/30 16:01:38 erk Exp $

Index: Named.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/Named.hh,v
retrieving revision 3.6
retrieving revision 3.7
diff -u -b -r3.6 -r3.7
--- Named.hh    30 Oct 2008 10:11:41 -0000      3.6
+++ Named.hh    30 Oct 2008 16:01:38 -0000      3.7
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: Named.hh,v 3.6 2008/10/30 10:11:41 erk Exp $
+// $Id: Named.hh,v 3.7 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef LIBCERTI_NAMED_HH
@@ -30,7 +30,7 @@
 namespace certi {
 
 /**
- * A based class used for CERTI named object.
+ * A base class used for CERTI named object.
  * This class should be used to handle HLA named object
  * the setName method should enforce HLA rules for naming
  * scheme as specified in
@@ -135,4 +135,4 @@
 
 #endif // LIBCERTI_NAMED_HH
 
-// $Id: Named.hh,v 3.6 2008/10/30 10:11:41 erk Exp $
+// $Id: Named.hh,v 3.7 2008/10/30 16:01:38 erk Exp $

Index: ObjectClass.hh
===================================================================
RCS file: /sources/certi/certi/libCERTI/ObjectClass.hh,v
retrieving revision 3.37
retrieving revision 3.38
diff -u -b -r3.37 -r3.38
--- ObjectClass.hh      18 Sep 2008 14:41:29 -0000      3.37
+++ ObjectClass.hh      30 Oct 2008 16:01:38 -0000      3.38
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: ObjectClass.hh,v 3.37 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.hh,v 3.38 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #ifndef _CERTI_OBJECT_CLASS_HH
@@ -68,12 +68,20 @@
 class CERTI_EXPORT ObjectClass : public Named {
 
 public:
-    ObjectClass();
+       /**
+        * Create an objectClass.
+        * @param[in] name the object class name
+        * @param[in] handle the object class handle value
+        */
+    ObjectClass(const std::string name, ObjectClassHandle handle);
+
+    /**
+     * Destroy an object class.
+     */
     ~ObjectClass();
 
     void display() const ;
 
-    void setHandle(ObjectClassHandle new_handle);
     ObjectClassHandle getHandle() const ;
 
     void setSuperclass(ObjectClassHandle h) { superClass = h ; };
@@ -221,6 +229,11 @@
     SecurityServer *server ;
 
 private:
+       /*
+        * private default constructor with no code
+        * one should not call it.
+        */
+       ObjectClass();
     void sendToFederate(NetworkMessage *msg, FederateHandle theFederate);
 
     void sendToOwners(CDiffusion *diffusionList,
@@ -262,4 +275,4 @@
 
 #endif // _CERTI_OBJECT_CLASS_HH
 
-// $Id: ObjectClass.hh,v 3.37 2008/09/18 14:41:29 gotthardp Exp $
+// $Id: ObjectClass.hh,v 3.38 2008/10/30 16:01:38 erk Exp $

Index: RootObject.cc
===================================================================
RCS file: /sources/certi/certi/libCERTI/RootObject.cc,v
retrieving revision 3.34
retrieving revision 3.35
diff -u -b -r3.34 -r3.35
--- RootObject.cc       12 Jun 2008 07:39:48 -0000      3.34
+++ RootObject.cc       30 Oct 2008 16:01:38 -0000      3.35
@@ -19,7 +19,7 @@
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 // USA
 //
-// $Id: RootObject.cc,v 3.34 2008/06/12 07:39:48 erk Exp $
+// $Id: RootObject.cc,v 3.35 2008/10/30 16:01:38 erk Exp $
 // ----------------------------------------------------------------------------
 
 #include "Object.hh"
@@ -54,8 +54,7 @@
 static pdCDebug D("ROOTOBJECT", "(RootObject) ");
 static PrettyDebug G("GENDOC",__FILE__);
 
-// ----------------------------------------------------------------------------
-//! The SocketServer can be NULL on the RTIA.
+
 RootObject::RootObject(SecurityServer *security_server)
     : server(security_server), regionHandles(1)
 {
@@ -64,8 +63,6 @@
     objects = new ObjectSet(server);
 }
 
-// ----------------------------------------------------------------------------
-//! Delete object classes, interactions, objects
 RootObject::~RootObject()
 {
     delete ObjectClasses ;
@@ -344,6 +341,26 @@
 
 }
 
+void
+RootObject::addObjectClass(ObjectClass* currentOC,ObjectClass* parentOC) {
+       if (NULL != parentOC) {
+               ObjectClasses->buildParentRelation(currentOC, parentOC);
+       }
+       /*
+        * FIXME EN we must add the class to object root
+        * after we did build the parent relation
+        * this is awkward but we need it for
+        * the "server" link to be OK
+        * We need to fix this.
+        */
+       ObjectClasses->addClass(currentOC);
+} /* end of addObjectClass */
+
+void
+RootObject::addInteractionClass(Interaction* currentIC) {
+
+}
+
 } // namespace certi
 
-// $Id: RootObject.cc,v 3.34 2008/06/12 07:39:48 erk Exp $
+// $Id: RootObject.cc,v 3.35 2008/10/30 16:01:38 erk Exp $




reply via email to

[Prev in Thread] Current Thread [Next in Thread]