0024042: Performance improvements: Foundation Classes
authorRoman Lygin <roman.lygin@gmail.com>
Thu, 4 Jul 2013 10:31:57 +0000 (14:31 +0400)
committerRoman Lygin <roman.lygin@gmail.com>
Thu, 4 Jul 2013 10:31:57 +0000 (14:31 +0400)
Removed code under former __OPTIM_ARRAY macro

14 files changed:
src/Bnd/Bnd_Box2d.cxx
src/NCollection/NCollection_BaseCollection.hxx
src/TCollection/TCollection_Array1.cdl
src/TCollection/TCollection_Array1.gxx
src/TCollection/TCollection_Array1.lxx
src/TCollection/TCollection_Array2.cdl
src/TCollection/TCollection_Array2.gxx
src/TCollection/TCollection_Array2.lxx
src/TCollection/TCollection_HArray1.cdl
src/TCollection/TCollection_HArray1.gxx
src/TCollection/TCollection_HArray1.lxx
src/TCollection/TCollection_HArray2.cdl
src/TCollection/TCollection_HArray2.gxx
src/TCollection/TCollection_HArray2.lxx

index d443d3c..9129ab1 100755 (executable)
@@ -264,9 +264,8 @@ Standard_Boolean Bnd_Box2d::IsOut (const Bnd_Box2d& Other) const
   else if   (Other.IsWhole())  return Standard_False;
   else if   (Other.IsVoid())   return Standard_True;
   else {
-    Bnd_Box2d OtherBox2d = Other; // DownEqual
     Standard_Real OXmin,OXmax,OYmin,OYmax;
-    OtherBox2d.Get(OXmin,OYmin,OXmax,OYmax);
+    Other.Get(OXmin,OYmin,OXmax,OYmax);
     if      (!(Flags & XminMask) && (OXmax < (Xmin-Gap))) return Standard_True;
     else if (!(Flags & XmaxMask) && (OXmin > (Xmax+Gap))) return Standard_True;
     else if (!(Flags & YminMask) && (OYmax < (Ymin-Gap))) return Standard_True;
index 62a3119..017a729 100755 (executable)
@@ -102,6 +102,9 @@ template<class TheItemType> class NCollection_BaseCollection
   //! Destructor - must be implemented to release the memory
   virtual ~NCollection_BaseCollection (void) {}
 
+  //! Returns attached allocator
+  const Handle(NCollection_BaseAllocator)& Allocator() const { return myAllocator; }
+
  protected:
   // --------- PROTECTED METHOD -----------
   const Handle(NCollection_BaseAllocator)& IterAllocator(void) const
index 079ac0b..bf15014 100755 (executable)
@@ -65,6 +65,7 @@ is
     raises 
         RangeError  from Standard,
         OutOfMemory from Standard;
+        ---C++: inline
 
     Create(Item : Array1Item;
            Low, Up: Integer from Standard) 
@@ -80,9 +81,11 @@ is
        --          the Array1.
     raises 
         RangeError  from Standard;
+        ---C++: inline
        
     Init (me: in out; V: Array1Item);
        ---Purpose: Initializes the array with a given value.
+        ---C++: inline
 
     Destroy (me: in out);
        ---Purpose: Frees the  allocated   area  corresponding  to the
@@ -91,6 +94,7 @@ is
        --          the Destroy doesn't delete the area.
        --          
        ---C++: alias ~
+        ---C++: inline
 
     IsAllocated (me) returns Boolean from Standard;
        ---Purpose: Returns True if the data was allocated by the array constructors.
index 5f81614..a1dfdde 100755 (executable)
 // and conditions governing the rights and limitations under the License.
 
 #include <Standard_DimensionMismatch.hxx>
-#include <Standard_RangeError.hxx>
-#include <Standard_OutOfMemory.hxx>
-#include <Standard.hxx>
 
-// ###### REFERENCER LE STORAGE MANAGER DES COLLECTIONS ######
-
-//=======================================================================
-//function : TCollection_Array1
-//purpose  : 
-//=======================================================================
-
-TCollection_Array1::TCollection_Array1 (const Standard_Integer Low,
-                                       const Standard_Integer Up) :
-       myLowerBound(Low),
-       myUpperBound(Up),
-       isAllocated(Standard_True)
-{
-  Standard_RangeError_Raise_if(Up < Low,"TCollection_Array1::Create");
-
-  Array1Item* p = 0;
-#ifdef __OPTIM_ARRAY
-  //  p = new char [(Up-Low+1)*sizeof (Array1Item)];
-  p =  (Array1Item *)Standard::Allocate((Up-Low+1)*sizeof (Array1Item));
-#else
-  p = new Array1Item[Up-Low+1];
-#endif
-
-  if (!p) Standard_OutOfMemory::Raise("Array1 : Allocation failed");
-  myStart = (void*)(p - myLowerBound);
-}
-
-
-
-//=======================================================================
-//function : Init
-//purpose  : 
-//=======================================================================
-
-void TCollection_Array1::Init (const Array1Item& V) {
-  Array1Item* p = &ChangeValue(myLowerBound);
-  Standard_Integer i;
-  for(i = myLowerBound; i <= myUpperBound; i++) {
-    *p++ = V;
-  }
-}
-
-//=======================================================================
-//function : TCollection_Array1
-//purpose  : C Array constructor
-//=======================================================================
-
-TCollection_Array1::TCollection_Array1(const Array1Item& AnItem,
-                                      const Standard_Integer Low,
-                                      const Standard_Integer Up) :
-       myLowerBound(Low),
-       myUpperBound(Up),
-       isAllocated(Standard_False)
-{
-
-  Standard_RangeError_Raise_if(Up < Low,"Array1::CArray");
-  myStart = (void*)( &AnItem - Low ); 
-}
-
-//=======================================================================
-//function : Destroy
-//purpose  : 
-//=======================================================================
-
-void TCollection_Array1::Destroy() 
-{
-  if (isAllocated) {
-#ifdef __OPTIM_ARRAY
-    Standard_Address it = (Standard_Address)&((Array1Item *)myStart)[myLowerBound];
-    Standard::Free(it);
-#else
-    delete [] &ChangeValue(myLowerBound);
-#endif
-  }
-}
 
 //=======================================================================
 //function : Assign
index c477c64..5e43c5a 100755 (executable)
 // purpose or non-infringement. Please see the License for the specific terms
 // and conditions governing the rights and limitations under the License.
 
+#include <Standard.hxx>
+#include <Standard_OutOfMemory.hxx>
 #include <Standard_OutOfRange.hxx>
+#include <Standard_RangeError.hxx>
 
 #include Array1Item_hxx
 
+
+//=======================================================================
+//function : TCollection_Array1
+//purpose  : 
+//=======================================================================
+
+inline TCollection_Array1::TCollection_Array1 (const Standard_Integer Low,
+                                               const Standard_Integer Up) :
+       myLowerBound(Low),
+       myUpperBound(Up),
+       isAllocated(Standard_True)
+{
+  Standard_RangeError_Raise_if(Up < Low,"TCollection_Array1::Create");
+
+  Array1Item* p = new Array1Item[Up-Low+1];
+
+  if (!p) Standard_OutOfMemory::Raise("Array1 : Allocation failed");
+  myStart = (void*)(p - myLowerBound);
+}
+
+//=======================================================================
+//function : TCollection_Array1
+//purpose  : C Array constructor
+//=======================================================================
+
+inline TCollection_Array1::TCollection_Array1(const Array1Item& AnItem,
+                                              const Standard_Integer Low,
+                                              const Standard_Integer Up) :
+       myLowerBound(Low),
+       myUpperBound(Up),
+       isAllocated(Standard_False)
+{
+  Standard_RangeError_Raise_if(Up < Low,"Array1::CArray");
+  myStart = (void*)( &AnItem - Low ); 
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+inline void TCollection_Array1::Init (const Array1Item& V) {
+  Array1Item* p = &ChangeValue(myLowerBound);
+  const Standard_Integer n = Length();
+  for(Standard_Integer i = 0; i < n; i++) {
+    p[i] = V;
+  }
+}
+
+//=======================================================================
+//function : Destroy
+//purpose  : 
+//=======================================================================
+
+inline void TCollection_Array1::Destroy() 
+{
+  if (isAllocated) {
+    delete [] &ChangeValue(myLowerBound);
+  }
+}
+
 //=======================================================================
 //function : Length
 //purpose  : 
index 0352287..4a3fe6c 100755 (executable)
@@ -50,11 +50,13 @@ is
     raises 
        RangeError  from Standard,
        OutOfMemory from Standard;
+        ---C++: inline
 
     Create (AnArray : Array2) 
     returns Array2 from TCollection
        ---Purpose: creates an Array2 by copy of an Array2.
     raises OutOfMemory from Standard is private ;
+        ---C++: inline
 
     Create (Item : Array2Item; R1, R2, C1, C2: Integer from Standard) 
     returns  Array2 from TCollection
@@ -73,9 +75,11 @@ is
     raises
        RangeError  from Standard,
        OutOfMemory from Standard;
+        ---C++: inline
        
     Init(me : in out; V : Array2Item);
        ---Purpose: Initializes this array with the value <Value>.
+        ---C++: inline
 
     Destroy (me : in out );
         ---Level: Advanced
@@ -84,6 +88,7 @@ is
        --          DoubleArray the Destroy doesn't delete the area.
         --          
         ---C++: alias ~
+        ---C++: inline
 
     Assign (me: in out; Other: Array2) 
     returns Array2 from TCollection
index 2d907b8..0593913 100755 (executable)
@@ -42,12 +42,7 @@ void TCollection_Array2::Allocate ()
     Standard_RangeError_Raise_if(( RowSize <= 0  || ColumnSize <= 0 ),
                                 "TCollection_Array2::Create");
 //  Modified by Sergey KHROMOV - Mon Feb 10 11:46:15 2003 End
-#ifdef __OPTIM_ARRAY
-    myData = Standard::Allocate(Size*sizeof (Array2Item));
-    //    myData = (Array2Item *) new char [Size * sizeof (Array2Item)];
-#else 
     myData = new Array2Item [Size];
-#endif
 
     if (!myData) Standard_OutOfMemory::Raise("Array2 : Allocation failed");
   }
@@ -64,84 +59,6 @@ void TCollection_Array2::Allocate ()
   myData = (void*) (q - myLowerRow);
 }
 
-//=======================================================================
-//function : TCollection_Array2
-//purpose  : 
-//=======================================================================
-
-TCollection_Array2::TCollection_Array2 (const Standard_Integer R1, 
-                                       const Standard_Integer R2,
-                                       const Standard_Integer C1, 
-                                       const Standard_Integer C2) :
-       myLowerRow(R1),
-       myLowerColumn(C1),
-       myUpperRow(R2),
-       myUpperColumn(C2),
-       myDeletable(Standard_True)
-{
-  Allocate ();
-}
-
-//=======================================================================
-//function : TCollection_Array2
-//purpose  : User allocated data
-//=======================================================================
-
-TCollection_Array2::TCollection_Array2 (const Array2Item& Item,
-                                       const Standard_Integer R1, 
-                                       const Standard_Integer R2,
-                                       const Standard_Integer C1, 
-                                       const Standard_Integer C2) :
-       myLowerRow(R1),
-       myLowerColumn(C1),
-       myUpperRow(R2),
-       myUpperColumn(C2),
-       myDeletable(Standard_False),
-       myData((void*)&Item)
-{
-  Allocate ();
-}
-
-
-//=======================================================================
-//function : Init
-//purpose  : 
-//=======================================================================
-
-void TCollection_Array2::Init (const Array2Item& V) 
-{
-  Standard_Integer Size = RowLength() * ColLength();
-  Array2Item* p = &(ChangeValue(myLowerRow,myLowerColumn));
-  for (Standard_Integer I = 0; I < Size ; I++) p[I] = V;
-}
-
-//=======================================================================
-//function : Destroy
-//purpose  : 
-//=======================================================================
-
-void TCollection_Array2::Destroy () 
-{
-  Array2Item** anItemPtr = ((Array2Item**)myData + myLowerRow);
-  
-  // delete the data
-  //
-  if (myDeletable) 
-#ifdef __OPTIM_ARRAY
-    {
-    Standard_Integer RowSize    = myUpperColumn-myLowerColumn+1;
-    Standard_Integer ColumnSize = myUpperRow-myLowerRow+1;
-    Standard_Integer Size = RowSize * ColumnSize;
-    Standard_Address it = (Standard_Address)&((Array2Item **)myData)[myLowerRow][myLowerColumn];
-    Standard::Free(it);  
-  }
-#else
-  delete [] &ChangeValue(myLowerRow,myLowerColumn);
-#endif
-
-  // delete the indirection table
-  Standard::Free((void*&)anItemPtr);
-}
 
 //=======================================================================
 //function : Assign
index 2a212ad..405a271 100755 (executable)
 // purpose or non-infringement. Please see the License for the specific terms
 // and conditions governing the rights and limitations under the License.
 
+#include <Standard.hxx>
 #include <Standard_OutOfRange.hxx>
 
 #include Array2Item_hxx
 
 //=======================================================================
+//function : TCollection_Array2
+//purpose  : 
+//=======================================================================
+
+inline TCollection_Array2::TCollection_Array2 (const Standard_Integer R1, 
+                                               const Standard_Integer R2,
+                                               const Standard_Integer C1, 
+                                               const Standard_Integer C2) :
+       myLowerRow(R1),
+       myLowerColumn(C1),
+       myUpperRow(R2),
+       myUpperColumn(C2),
+       myDeletable(Standard_True)
+{
+  Allocate ();
+}
+
+//=======================================================================
+//function : TCollection_Array2
+//purpose  : User allocated data
+//=======================================================================
+
+inline TCollection_Array2::TCollection_Array2 (const Array2Item& Item,
+                                       const Standard_Integer R1, 
+                                       const Standard_Integer R2,
+                                       const Standard_Integer C1, 
+                                       const Standard_Integer C2) :
+       myLowerRow(R1),
+       myLowerColumn(C1),
+       myUpperRow(R2),
+       myUpperColumn(C2),
+       myDeletable(Standard_False),
+       myData((void*)&Item)
+{
+  Allocate ();
+}
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+inline void TCollection_Array2::Init (const Array2Item& V) 
+{
+  Standard_Integer Size = RowLength() * ColLength();
+  Array2Item* p = &(ChangeValue(myLowerRow,myLowerColumn));
+  for (Standard_Integer I = 0; I < Size ; I++) p[I] = V;
+}
+
+//=======================================================================
+//function : Destroy
+//purpose  : 
+//=======================================================================
+
+inline void TCollection_Array2::Destroy () 
+{
+  Array2Item** anItemPtr = ((Array2Item**)myData + myLowerRow);
+  
+  // delete the data
+  //
+  if (myDeletable) 
+    delete [] &ChangeValue(myLowerRow,myLowerColumn);
+
+  // delete the indirection table
+  Standard::Free((void*&)anItemPtr);
+}
+
+//=======================================================================
 //function : ColLength
 //purpose  : 
 //=======================================================================
index f995bb3..194a019 100755 (executable)
@@ -57,6 +57,7 @@ is
     raises 
        RangeError  from Standard,
         OutOfMemory from Standard;
+       ---C++: inline
        
     Create (Low, Up: Integer from Standard; V : ItemHArray1) 
     returns mutable  HArray1 from TCollection
@@ -65,9 +66,11 @@ is
     raises 
        RangeError  from Standard,
         OutOfMemory from Standard;
+       ---C++: inline
 
     Init(me : mutable; V : ItemHArray1);
        ---Purpose: Initialize the array with the value <V>
+       ---C++: inline
 
     Length (me) returns Integer from Standard
         ---Level: Public
index 2a6ffa2..dacdbc2 100755 (executable)
 // purpose or non-infringement. Please see the License for the specific terms
 // and conditions governing the rights and limitations under the License.
 
-#include <Standard_OutOfRange.hxx>
-#include <Standard_DimensionMismatch.hxx>
-#include <Standard_RangeError.hxx>
-#include <Standard_OutOfMemory.hxx>
 
 
-//=======================================================================
-//function : TCollection_HArray1
-//purpose  : 
-//=======================================================================
-
-TCollection_HArray1::TCollection_HArray1(const Standard_Integer First,
-                                        const Standard_Integer Last) :
-       myArray(First,Last)
-{
-}
-
-//=======================================================================
-//function : TCollection_HArray1
-//purpose  : 
-//=======================================================================
-TCollection_HArray1::TCollection_HArray1(const Standard_Integer First,
-                                        const Standard_Integer Last,
-                                        const ItemHArray1& V) :
-       myArray(First,Last)
-{
-  myArray.Init(V);
-}
-
-
-//=======================================================================
-//function : TCollection_HArray1
-//purpose  : 
-//=======================================================================
-
-void TCollection_HArray1::Init(const ItemHArray1& V)
-{
-  myArray.Init(V);
-}
-
 
 
 
index 56bd6a4..d1b36cc 100755 (executable)
 
 
 //=======================================================================
+//function : TCollection_HArray1
+//purpose  : 
+//=======================================================================
+
+inline TCollection_HArray1::TCollection_HArray1(const Standard_Integer First,
+                                                const Standard_Integer Last) :
+       myArray(First,Last)
+{
+}
+
+//=======================================================================
 //function : Length
 //purpose  : 
 //=======================================================================
@@ -30,6 +41,29 @@ inline Standard_Integer TCollection_HArray1::Length () const
 }
 
 //=======================================================================
+//function : TCollection_HArray1
+//purpose  : 
+//=======================================================================
+inline TCollection_HArray1::TCollection_HArray1(const Standard_Integer First,
+                                                const Standard_Integer Last,
+                                                const ItemHArray1& V) :
+       myArray(First,Last)
+{
+  myArray.Init(V);
+}
+
+
+//=======================================================================
+//function : Init
+//purpose  : 
+//=======================================================================
+
+inline void TCollection_HArray1::Init(const ItemHArray1& V)
+{
+  myArray.Init(V);
+}
+
+//=======================================================================
 //function : Lower
 //purpose  : 
 //=======================================================================
index d5e6c17..e85c412 100755 (executable)
@@ -58,6 +58,7 @@ is
     raises 
        RangeError  from Standard,
        OutOfMemory from Standard;
+       ---C++: inline
 
 
     Create (R1, R2, C1, C2: Integer from Standard; V : ItemHArray2) 
@@ -68,8 +69,10 @@ is
     raises 
        RangeError  from Standard,
        OutOfMemory from Standard;
+       ---C++: inline
     Init(me : mutable; V : ItemHArray2) ;
        ---Purpose: Initializes the array with the value <V>
+       ---C++: inline
 
     ColLength (me) returns Integer from Standard
        ---Purpose: Returns the number of rows of <me>.
@@ -102,6 +105,7 @@ is
     is static ;
 
     SetValue (me : mutable; Row, Col: Integer from Standard; 
+       ---C++: inline
     Value: ItemHArray2) 
        ---Purpose: Assigns the value Value to the (Row,Col) item of this array.
        ---C++: inline
@@ -112,6 +116,7 @@ is
         ---Level: Public
        ---Purpose: Returns the value of the element of index  <Row><Col>
        ---C++: return const &
+        ---C++: inline
     raises OutOfRange from Standard
     is static;
 
@@ -120,6 +125,7 @@ is
         ---Level: Public
        ---Purpose: Returns the value of the element of index <Row><Col>
        ---C++: return &
+        ---C++: inline
     raises OutOfRange from Standard
     is static;
 
index 2fdfa25..27aa1c3 100755 (executable)
 // purpose or non-infringement. Please see the License for the specific terms
 // and conditions governing the rights and limitations under the License.
 
-#include <Standard_OutOfRange.hxx>
-#include <Standard_DimensionMismatch.hxx>
-#include <Standard_RangeError.hxx>
-#include <Standard_OutOfMemory.hxx>
-
-//=======================================================================
-//function : TCollection_HArray2
-//purpose  : 
-//=======================================================================
-
-TCollection_HArray2::TCollection_HArray2 (const Standard_Integer R1, 
-                                         const Standard_Integer R2,
-                                         const Standard_Integer C1, 
-                                         const Standard_Integer C2) :
-       myArray(R1,R2,C1,C2)
-{}
-
-
-//=======================================================================
-//function : TCollection_HArray2
-//purpose  : 
-//=======================================================================
-
-TCollection_HArray2::TCollection_HArray2 (const Standard_Integer R1, 
-                                         const Standard_Integer R2,
-                                         const Standard_Integer C1, 
-                                         const Standard_Integer C2,
-                                         const ItemHArray2& V) :
-       myArray(R1,R2,C1,C2)
-{myArray.Init(V);}
-
-//=======================================================================
-//function : TCollection_HArray2
-//purpose  : 
-//=======================================================================
-
-void TCollection_HArray2::Init(const ItemHArray2& V)
-{ myArray.Init(V);}
-
 
 //=======================================================================
 //function : IsSameState
@@ -77,26 +38,3 @@ void TCollection_HArray2::Init(const ItemHArray2& V)
 //  }
 //  return Standard_True;
 //}
-
-
-//=======================================================================
-//function : Value
-//purpose  : 
-//=======================================================================
-
-const ItemHArray2& TCollection_HArray2::Value(const Standard_Integer Row,
-                                      const Standard_Integer Col) const
-{
-  return myArray(Row,Col);
-}
-
-//=======================================================================
-//function : ChangeValue
-//purpose  : 
-//=======================================================================
-
-ItemHArray2& TCollection_HArray2::ChangeValue(const Standard_Integer Row,
-                                      const Standard_Integer Col)
-{
-  return myArray(Row,Col);
-}
index 2ac308c..f920728 100755 (executable)
 
 
 //=======================================================================
+//function : TCollection_HArray2
+//purpose  : 
+//=======================================================================
+
+inline TCollection_HArray2::TCollection_HArray2 (const Standard_Integer R1, 
+                                                 const Standard_Integer R2,
+                                                 const Standard_Integer C1, 
+                                                 const Standard_Integer C2) :
+       myArray(R1,R2,C1,C2)
+{}
+
+
+//=======================================================================
+//function : TCollection_HArray2
+//purpose  : 
+//=======================================================================
+
+inline TCollection_HArray2::TCollection_HArray2 (const Standard_Integer R1, 
+                                                 const Standard_Integer R2,
+                                                 const Standard_Integer C1, 
+                                                 const Standard_Integer C2,
+                                                 const ItemHArray2& V) :
+       myArray(R1,R2,C1,C2)
+{myArray.Init(V);}
+
+//=======================================================================
+//function : TCollection_HArray2
+//purpose  : 
+//=======================================================================
+
+inline void TCollection_HArray2::Init(const ItemHArray2& V)
+{ myArray.Init(V);}
+
+//=======================================================================
 //function : ColLength
 //purpose  : 
 //=======================================================================
@@ -91,6 +125,27 @@ inline void TCollection_HArray2::SetValue ( const Standard_Integer Row,
   myArray.SetValue(Row,Col,Value);
 }
 
+//=======================================================================
+//function : Value
+//purpose  : 
+//=======================================================================
+
+inline const ItemHArray2& TCollection_HArray2::Value(const Standard_Integer Row,
+                                                     const Standard_Integer Col) const
+{
+  return myArray(Row,Col);
+}
+
+//=======================================================================
+//function : ChangeValue
+//purpose  : 
+//=======================================================================
+
+inline ItemHArray2& TCollection_HArray2::ChangeValue(const Standard_Integer Row,
+                                                     const Standard_Integer Col)
+{
+  return myArray(Row,Col);
+}
 
 
 //=======================================================================