/* * 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 "graph.hpp" class bond; class UniqueFragment; class PowerSetGenerator { public: PowerSetGenerator(); ~PowerSetGenerator(); void SPFragmentGenerator(int RootDistance, std::vector &BondsSet, int SetDimension, int SubOrder); int operator()(struct UniqueFragments *_FragmentSearch, int Order, KeySet RestrictedKeySet); 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: class UniqueFragments *FragmentSearch; }; #endif /* POWERSETGENERATOR_HPP_ */