/*
* Project: MoleCuilder
* Description: creates and alters molecular systems
* Copyright (C) 2013 University of Bonn. All rights reserved.
*
*
* This file is part of MoleCuilder.
*
* MoleCuilder is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* MoleCuilder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with MoleCuilder. If not, see .
*/
/*
* SaturatedFragment.cpp
*
* Created on: Mar 3, 2013
* Author: heber
*/
// include config.h
#ifdef HAVE_CONFIG_H
#include
#endif
#include "CodePatterns/MemDebug.hpp"
#include "SaturatedFragment.hpp"
#include "CodePatterns/Assert.hpp"
#include "Fragmentation/Exporters/HydrogenPool.hpp"
SaturatedFragment::SaturatedFragment(
const KeySet &_set,
KeySetsInUse_t &_container,
HydrogenPool &_hydrogens) :
container(_container),
set(_set),
hydrogens(_hydrogens),
FullMolecule(set)
{
// add to in-use container
ASSERT( container.find(set) == container.end(),
"SaturatedFragment::SaturatedFragment() - the set "
+toString(set)+" is already marked as in use.");
container.insert(set);
// so far, we don't saturate anything
SaturationHydrogens.clear();
}
SaturatedFragment::~SaturatedFragment()
{
// release all saturation hydrogens if present
for (KeySet::iterator iter = SaturationHydrogens.begin();
!SaturationHydrogens.empty();
iter = SaturationHydrogens.begin()) {
hydrogens.releaseHydrogen(*iter);
SaturationHydrogens.erase(iter);
}
// remove ourselves from in-use container
KeySetsInUse_t::iterator iter = container.find(set);
ASSERT( container.find(set) != container.end(),
"SaturatedFragment::SaturatedFragment() - the set "
+toString(set)+" is not marked as in use.");
container.erase(iter);
}