--- trunk/OOPSE/libmdtools/Exclude.cpp 2003/03/26 20:45:07 408 +++ trunk/OOPSE/libmdtools/Exclude.cpp 2003/03/27 22:16:27 431 @@ -1,26 +1,75 @@ +#include #include + #include "Exclude.hpp" -double* Exclude::exPair; +int Exclude::nExcludes; +int* Exclude::exPairs; -Exclude::Exclude( int theIndex ){ +Exclude::Exclude( int theIndex ){ + exI = theIndex*2; + exJ = theIndex*2 + 1; +} + +void Exclude::createArray( int the_nExcludes ){ - exI = index*2; - exJ = index*2 + 1; + nExcludes = the_nExcludes; + std::cerr << "nExcludes = " << nExcludes << "\n"; + exPairs = new int[nExcludes*2]; } -void Exclude::createArray( int nExcludes ){ +void Exclude::destroyArray( void ){ + delete[] exPairs; +} - exPair = new int[nExcludes*2]; +void Exclude::setPair( int i, int j ){ + exPairs[exI] = i; + exPairs[exJ] = j; } -void destroyArray( void ){ - delete[] exPair; +void Exclude::addExcludePairs(int nAdded, int* AexPairs) { + int nNew = nExcludes + nAdded; + + int* new_exPairs = new int[nNew*2]; + int i, j; + + for (i = 0; i < 2*nExcludes; i++) { + new_exPairs[i] = exPairs[i]; + } + + for (i=0; i < 2*nAdded; i++) { + j = i + 2*nExcludes; + new_exPairs[j] = AexPairs[i]; + } + + delete[] exPairs; + + exPairs = new_exPairs; + + nExcludes = nNew; } -void Exclude::setPair( int i, int j ){ +void Exclude::deleteExcludePair(int theIndex) { + deleteRange(theIndex, theIndex); +} - exPair[exI] = i; - exPair[exJ] = j; +void Exclude::deleteRange(int startIndex, int stopIndex) { + + int nNew = nExcludes - (stopIndex - startIndex + 1); + int* new_exPairs = new int[nNew*2]; + int i, j; + + for (i=0; i < 2*startIndex; i++) { + new_exPairs[i] = exPairs[i]; + } + for(i=2*(stopIndex+1); i < 2*nExcludes; i++) { + j = i-2*startIndex + 1; + new_exPairs[j] = exPairs[i]; + } + + delete[] exPairs; + + exPairs = new_exPairs; + nExcludes = nNew; }