add support for integer arithmatic ops on SparseIntVects. operator+ et al. do not yet work from python

This commit is contained in:
Greg Landrum
2013-08-26 06:51:13 +02:00
parent c38cac1012
commit 879efa3be3
2 changed files with 64 additions and 0 deletions

View File

@@ -260,6 +260,62 @@ namespace RDKit{
SparseIntVect<IndexType> res(*this);
return res-=other;
}
SparseIntVect<IndexType> &
operator*= (int v) {
typename StorageType::iterator iter=d_data.begin();
while(iter!=d_data.end()){
iter->second *= v;
++iter;
}
return *this;
};
SparseIntVect<IndexType> &
operator* (int v) {
SparseIntVect<IndexType> res(*this);
return res*=v;
};
SparseIntVect<IndexType> &
operator/= (int v) {
typename StorageType::iterator iter=d_data.begin();
while(iter!=d_data.end()){
iter->second /= v;
++iter;
}
return *this;
};
SparseIntVect<IndexType> &
operator/ (int v) {
SparseIntVect<IndexType> res(*this);
return res/=v;
};
SparseIntVect<IndexType> &
operator+= (int v) {
typename StorageType::iterator iter=d_data.begin();
while(iter!=d_data.end()){
iter->second += v;
++iter;
}
return *this;
};
SparseIntVect<IndexType> &
operator+ (int v) {
SparseIntVect<IndexType> res(*this);
return res+=v;
};
SparseIntVect<IndexType> &
operator-= (int v) {
typename StorageType::iterator iter=d_data.begin();
while(iter!=d_data.end()){
iter->second -= v;
++iter;
}
return *this;
};
SparseIntVect<IndexType> &
operator- (int v) {
SparseIntVect<IndexType> res(*this);
return res-=v;
};
bool operator==(const SparseIntVect<IndexType> &v2) const{
if(d_length!=v2.d_length){