--- trunk/OOPSE/libmdtools/Exclude.cpp 2003/03/26 20:45:07 408 +++ trunk/OOPSE/libmdtools/Exclude.cpp 2003/10/28 16:03:37 829 @@ -1,26 +1,81 @@ -#include +#include +#include + #include "Exclude.hpp" -double* Exclude::exPair; +int Exclude::nExcludes; +int* Exclude::exPairs; -Exclude::Exclude( int theIndex ){ +Exclude::Exclude( int theIndex ){ + index = theIndex; exI = index*2; exJ = index*2 + 1; } -void Exclude::createArray( int nExcludes ){ +void Exclude::createArray( int the_nExcludes ){ + + nExcludes = the_nExcludes; + exPairs = new int[nExcludes*2]; +} - exPair = new int[nExcludes*2]; +void Exclude::destroyArray( void ){ + delete[] exPairs; } -void destroyArray( void ){ - delete[] exPair; +void Exclude::printMe( void ){ + + std::cerr << "exclude[" << index << "] i, j: " << exPairs[exI] << " - " << exPairs[exJ] << "\n"; } void Exclude::setPair( int i, int j ){ + exPairs[exI] = i; + exPairs[exJ] = j; +} - exPair[exI] = i; - exPair[exJ] = j; +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::deleteExcludePair(int theIndex) { + deleteRange(theIndex, theIndex); +} + +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; +}