/* * PowerSetGenerator.hpp * * Created on: Oct 18, 2011 * Author: heber */ #ifndef POWERSETGENERATOR_HPP_ #define POWERSETGENERATOR_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include #include #include "Fragmentation/BondsPerShortestPath.hpp" #include "Fragmentation/HydrogenSaturation_enum.hpp" class bond; class UniqueFragments; class PowerSetGenerator { public: PowerSetGenerator(UniqueFragments *_FragmentSearch, int Order); ~PowerSetGenerator(); void SPFragmentGenerator(int RootDistance, std::vector &BondsSet, int SetDimension, int SubOrder); int operator()(KeySet &RestrictedKeySet, const enum HydrogenSaturation saturation); void RemoveAllTouchedFromSnakeStack(int verbosity, KeySet *FragmentSet, int *&TouchedList, int &TouchedIndex); int FillBondsList(std::vector &BondsList, std::list::const_iterator SetFirst, std::list::const_iterator SetLast, int *&TouchedList, int TouchedIndex); int CountSetMembers(std::list::const_iterator SetFirst, std::list::const_iterator SetLast, int *&TouchedList, int TouchedIndex); int AddPowersetToSnakeStack(int verbosity, int CurrentCombination, int SetDimension, KeySet *FragmentSet, std::vector &BondsSet, int *&TouchedList, int &TouchedIndex); void ClearingTouched(int verbosity, int *&TouchedList, int SubOrder, int &TouchedIndex); private: BondsPerShortestPath BondsPerSPList; class UniqueFragments *FragmentSearch; }; #endif /* POWERSETGENERATOR_HPP_ */