--- trunk/OOPSE/libmdtools/Exclude.cpp 2003/03/26 20:45:07 408 +++ trunk/OOPSE/libmdtools/Exclude.cpp 2003/03/26 21:23:00 410 @@ -2,25 +2,69 @@ double* Exclude::exPair; #include "Exclude.hpp" -double* Exclude::exPair; -Exclude::Exclude( int theIndex ){ - - exI = index*2; - exJ = index*2 + 1; + +Exclude::Exclude( int theIndex ){ + exI = theIndex*2; + exJ = theIndex*2 + 1; } void Exclude::createArray( int nExcludes ){ - exPair = new int[nExcludes*2]; + exPairs = new int[nExcludes*2]; } -void destroyArray( void ){ - delete[] exPair; +void Exclude::destroyArray( void ){ + delete[] exPairs; } 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; +}