1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0024750: Replace instantiations of TCollection generic classes by NCollection templates -- manual changes

Forward declaration of TCollection instances as classes are replaced by inclusion of corresponding header.
Cyclic dependencies between declaration of collection class and its item are resolved by forward declaring a class in collection header.
This commit is contained in:
abv
2014-06-02 09:08:25 +03:00
parent df8d39700d
commit b7c077b9ee
67 changed files with 120 additions and 472 deletions

View File

@@ -1,7 +1,6 @@
FILES
QANCollection.cdl
QANCollection.cxx
QANCollection_Simple.cxx
QANCollection_Test.cxx
QANCollection_Perf.cxx
QANCollection_Alloc.cxx

View File

@@ -31,7 +31,6 @@ is
imported DoubleMapIteratorOfDoubleMapOfRealInteger;
Commands(DI : in out Interpretor from Draw);
CommandsSimple(DI : in out Interpretor from Draw);
CommandsTest(DI : in out Interpretor from Draw);
CommandsPerf(DI : in out Interpretor from Draw);
CommandsAlloc(DI : in out Interpretor from Draw);

View File

@@ -20,7 +20,6 @@
void QANCollection::Commands (Draw_Interpretor& theCommands)
{
QANCollection::CommandsSimple (theCommands);
QANCollection::CommandsTest (theCommands);
QANCollection::CommandsPerf (theCommands);
QANCollection::CommandsAlloc (theCommands);

View File

@@ -1,225 +0,0 @@
// Created on: 2004-03-05
// Created by: Mikhail KUZMITCHEV
// Copyright (c) 2004-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <QANCollection.hxx>
#include <Draw_Interpretor.hxx>
#include <OSD_PerfMeter.hxx>
#include <TColgp_Array1OfPnt.hxx>
#include <TColgp_SequenceOfPnt.hxx>
#include <NCollection_Sequence.hxx>
#include <NCollection_Array1.hxx>
#include <NCollection_IncAllocator.hxx>
typedef NCollection_Array1<gp_Pnt> MyArray1;
typedef NCollection_Sequence<gp_Pnt> MySequence;
const Standard_Integer REPEAT = 100;
static void printAllMeters (Draw_Interpretor& theDI)
{
char buffer[25600];
perf_sprint_all_meters (buffer, 25600 - 1, 1);
theDI << buffer;
}
static void createArray (TColgp_Array1OfPnt& anArrPnt)
{
OSD_PerfMeter aPerfMeter("Create array");
for (Standard_Integer j = 0; j < 2*REPEAT; j++) {
PERF_START_METER("Create array")
for (Standard_Integer i = anArrPnt.Lower(); i <= anArrPnt.Upper(); i++)
anArrPnt(i).SetCoord ((double)i, (double)(i+1), (double)(i+2));
PERF_STOP_METER("Create array")
}
}
static void createSequence (TColgp_SequenceOfPnt& aSeq)
{
for (Standard_Integer j = 0; j < REPEAT; j++) {
PERF_START_METER("Clear sequence")
aSeq.Clear();
PERF_STOP_METER("Clear sequence")
PERF_START_METER("Create sequence")
for (Standard_Integer i = 0; i < 100000; i++)
aSeq.Append (gp_Pnt((double)i, (double)(i+1), (double)(i+2)));
PERF_STOP_METER("Create sequence")
}
}
static void createSequence (MySequence& aSeq)
{
for (Standard_Integer j = 0; j < REPEAT; j++) {
PERF_START_METER("Clear sequence")
aSeq.Clear();
PERF_STOP_METER("Clear sequence")
PERF_START_METER("Create sequence")
for (Standard_Integer i = 0; i < 100000; i++)
aSeq.Append (gp_Pnt((double)i, (double)(i+1), (double)(i+2)));
PERF_STOP_METER("Create sequence")
}
}
static void assignSequence (TColgp_SequenceOfPnt& aDest,
const TColgp_SequenceOfPnt& aSrc)
{
for (Standard_Integer i = 0; i < REPEAT; i++) {
PERF_START_METER("Assign sequence to sequence")
aDest = aSrc;
PERF_STOP_METER("Assign sequence to sequence")
}
}
static void assignSequence (MySequence& aDest, const MySequence& aSrc)
{
for (Standard_Integer i = 0; i < REPEAT; i++) {
PERF_START_METER("Assign sequence to sequence")
aDest = aSrc;
PERF_STOP_METER("Assign sequence to sequence")
}
}
static void createArray (MyArray1& anArrPnt)
{
for (Standard_Integer j = 0; j < 2*REPEAT; j++) {
PERF_START_METER("Create array")
for (Standard_Integer i = anArrPnt.Lower(); i <= anArrPnt.Upper(); i++)
anArrPnt(i).SetCoord ((double)i, (double)(i+1), (double)(i+2));
PERF_STOP_METER("Create array")
}
}
static void assignArray (TColgp_Array1OfPnt& aDest, const TColgp_Array1OfPnt& aSrc)
{
for (Standard_Integer i = 0; i < 2*REPEAT; i++) {
PERF_START_METER("Assign array to array")
aDest = aSrc;
PERF_STOP_METER("Assign array to array")
}
}
template <class MyBaseCollPnt>
void assignCollection (MyBaseCollPnt& aDest,
const MyBaseCollPnt& aSrc,
const char * MeterName)
{
for (Standard_Integer i = 0; i < REPEAT; i++) {
perf_start_meter (MeterName);
aDest.Assign(aSrc);
perf_stop_meter (MeterName);
}
}
static void assignArray (MyArray1& aDest, const MyArray1& aSrc)
{
for (Standard_Integer i = 0; i < 2*REPEAT; i++) {
PERF_START_METER("Assign array to array")
aDest = aSrc;
PERF_STOP_METER("Assign array to array")
}
}
static void checkArray (Draw_Interpretor& theDI, const Standard_Boolean isNewColl)
{
if (isNewColl) {
MyArray1 anArrPnt (1, 100000), anArrPnt1 (1, 100000);
createArray (anArrPnt);
assignArray (anArrPnt1, anArrPnt);
assignCollection (anArrPnt1, anArrPnt, "Assign collect to array");
} else {
TColgp_Array1OfPnt anArrPnt (1,100000), anArrPnt1 (1, 100000);
createArray (anArrPnt);
assignArray (anArrPnt1, anArrPnt);
}
printAllMeters (theDI);
}
static void checkSequence (Draw_Interpretor& theDI,
const Standard_Boolean isNewColl,
const Standard_Boolean isIncr)
{
if (isNewColl) {
Handle(NCollection_BaseAllocator) anAlloc[2];
if (isIncr) {
anAlloc[0] = new NCollection_IncAllocator;
anAlloc[1] = new NCollection_IncAllocator;
}
MySequence aSeqPnt (anAlloc[0]), aSeqPnt1(anAlloc[1]);
createSequence (aSeqPnt);
assignSequence (aSeqPnt1, aSeqPnt);
assignCollection (aSeqPnt1, aSeqPnt, "Assign collect to sequence");
} else {
TColgp_SequenceOfPnt aSeqPnt, aSeqPnt1;
createSequence (aSeqPnt);
assignSequence (aSeqPnt1, aSeqPnt);
}
printAllMeters (theDI);
}
//=======================================================================
//function : QANColCheckArray1
//purpose :
//=======================================================================
static Standard_Integer QANColCheckArray1(Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
{
if ( argc > 2) {
di << "Usage : " << argv[0] << " [-n]" << "\n";
return 1;
}
Standard_Boolean isNewColl = Standard_False;
if (argc > 1) {
if (strcmp (argv[1], "-n") == 0) isNewColl = Standard_True;
}
checkArray (di, isNewColl);
return 0;
}
//=======================================================================
//function : QANColCheckSequence
//purpose :
//=======================================================================
static Standard_Integer QANColCheckSequence(Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
{
if ( argc > 2) {
di << "Usage : " << argv[0] << " [-n]/[-ni]/[-in]" << "\n";
return 1;
}
Standard_Boolean isNewColl = Standard_False, isIncr = Standard_False;
if (argc > 1) {
if (strcmp (argv[1], "-n") == 0) isNewColl = Standard_True;
if (strcmp (argv[1], "-ni") == 0 || strcmp (argv[1], "-in") == 0)
{
isNewColl = Standard_True;
isIncr = Standard_True;
}
}
checkSequence (di, isNewColl, isIncr);
return 0;
}
void QANCollection::CommandsSimple(Draw_Interpretor& theCommands) {
const char *group = "QANCollection";
// from agvCollTest/src/AgvColEXE/TestEXE.cxx
theCommands.Add("QANColCheckArray1", "QANColCheckArray1 [-n]", __FILE__, QANColCheckArray1, group);
theCommands.Add("QANColCheckSequence", "QANColCheckSequence [-n]/[-ni]/[-in]", __FILE__, QANColCheckSequence, group);
return;
}