//----------------------------------------------------------------- // multiple loop with the restriction that the inner loop vars // are > the outer ones. //----------------------------------------------------------------- #include "multi_loop.h" template<class type> multi_loop<type>::multi_loop() { min= 0; max= 0; dpt= 1; cnt= new type[dpt]; } template<class type> multi_loop<type>::multi_loop(type mini, type maxi, short dpti) { min= mini; max= maxi; dpt= dpti; cnt= new type[dpt]; reset(); } template<class type> multi_loop<type>::~multi_loop() { delete[] cnt; } template<class type> void multi_loop<type>::reset() { cnt[0]= min; for(short d= 1; d < dpt; d ++) { cnt[d]= cnt[d-1]+1; } } template<class type> int multi_loop<type>::step() { d= dpt-1; while(1) { if (cnt[d] < max) { cnt[d]++; if (d < dpt-1) { d++; cnt[d]= cnt[d-1]; } else return 1; } else { d--; if (d < 0) return 0; } } } template<class type> type multi_loop<type>::operator[](short n) { return cnt[n]; } template<class type> type *multi_loop<type>::vals() { return cnt; } template<class type> short multi_loop<type>::depth() { return dpt; } template<class type> void multi_loop<type>::init(type mini, type maxi, short dpti) { min= mini; max= maxi; dpt= dpti; delete[] cnt; cnt= new type[dpt]; reset(); }