]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Optimized FindChild method
authorsrn <srn@opencascade.com>
Thu, 1 Nov 2007 11:39:28 +0000 (11:39 +0000)
committersrn <srn@opencascade.com>
Thu, 1 Nov 2007 11:39:28 +0000 (11:39 +0000)
src/DF/DF_Label.cxx

index 682a4ca5ac8cfec9fcd25251042fae14c07b9399..8bfd113ad7b691ab9edc3f7b8b143b6c13120767 100644 (file)
@@ -296,8 +296,16 @@ DF_Label DF_Label::FindChild(int theTag, bool isCreate)
   DF_LabelNode *aLabel = NULL, *aPrevious = NULL, *aNext = NULL;
   if(!_node->_firstChild && !isCreate) return DF_Label();
 
-  if(_node->_lastChild && _node->_lastChild->_tag < theTag) { //Incremental addition of children
-    aPrevious = _node->_lastChild;     
+  if(_node->_firstChild && _node->_firstChild->_tag == theTag) 
+    return DF_Label(_node->_firstChild);    
+
+  if(_node->_lastChild) {
+    if( _node->_lastChild->_tag == theTag) {
+       return DF_Label(_node->_lastChild);
+    }
+    else if( _node->_lastChild->_tag < theTag) { //Incremental addition of children
+       aPrevious = _node->_lastChild;     
+    }  
   }
   else {
     aLabel = _node->_firstChild;
@@ -331,7 +339,9 @@ DF_Label DF_Label::FindChild(int theTag, bool isCreate)
   }
     
   if(!_node->_firstChild || (aNext && aNext == _node->_firstChild) ) _node->_firstChild = aChild;
-  if(!aNext) _node->_lastChild = aChild;
+  if(!aNext) {
+    _node->_lastChild = aChild;
+  }
   
   return aChild;
 }