0024072: VC 2009 64-bit compiler crashes while compiling IntPoly_ShapeSection.cxx
[occt.git] / src / TCollection / TCollection_Array2.gxx
index 0593913..e6de9ab 100755 (executable)
@@ -59,6 +59,73 @@ 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) 
+    delete [] &ChangeValue(myLowerRow,myLowerColumn);
+
+  // delete the indirection table
+  Standard::Free((void*&)anItemPtr);
+}
 
 //=======================================================================
 //function : Assign