// Description: Subset class
// Detail: Iterates through all fixed-sized subsets of an integer interval.
// Documentation: miscellaneous.txt
#ifndef PASTELSYS_SUBSET_H
#define PASTELSYS_SUBSET_H
#include "pastel/sys/mytypes.h"
#include <vector>
namespace Pastel
{
    //! Iterates through all fixed-sized subsets of an integer interval.
    class Subset
    {
    public:
        Subset();
        Subset(integer size, integer elements);
        void swap(Subset& that);
        void first();
        bool next();
        void setSize(integer size);
        void setSize(integer size, integer elements);
        integer size() const;
        integer elements() const;
        integer operator[](integer index) const;
    private:
        std::vector<integer> data_;
        integer elements_;
    };
}
#include "pastel/sys/subset.hpp"
#endif