Listing 1: Set.h : Declarations for Set template class

//
// Developed by Jim Beveridge, May, 1997
//

#ifndef _SET_H_
#define _SET_H_

// Deal with compilers that aren't up to snuff
#if defined(_MSC_VER) && _MSC_VER < 1100
#define bool int
#define true 1
#define false 0
#endif

///////////////////////////////////////////////////
// class Set Definition
// Keeps a collection of items with no duplicates.
// This is a "toy" collection class and not
// suitable for production work.

template <class T>
class Set
{
public:

    // Default constructor.
    Set();

    // Destructor.
    ~Set();

    // Determine if a value is in the set
    bool Lookup(const T&) const;

    // Add a value to the set
    void Add(const T&);

    // Delete everything in the set
    void Empty();

    // Assignment operator
    Set<T>& operator=(const Set<T>&);

    private:
    // Pointer to array of elements in set
    T*  m_Values;

    // Number of elements in set
    int m_Count;
};
#endif // _SET_H_
//End of File