
/*
**  This file forms part of the GOBLIN C++ Class Library.
**
**  Written by Christian Fremuth-Paeger, October 1998.
**  
**  Copying, compiling, distribution and modification
**  of this source code is permitted only in accordance
**  with the GOBLIN general licence information.
*/             

#if !defined(_SETFAM_H_)

#define _SETFAM_H_

#include <absfam.h>


template <class TItem>
class goblinSetFamily : public goblinDisjointSetSystem<TItem>
{
private:

    TItem*          B;
    TItem*          rank;         
    TItem           n;
    TItem           UNDEFINED;

public:

    goblinSetFamily(TItem nn,goblinController &thisContext) throw();
    ~goblinSetFamily() throw();

    void            Init() throw();
    unsigned long   Size() throw();
    unsigned long   Allocated() throw();
    char*           Display() throw();
    bool            Reversible() throw() {return 0;};

    void            Bud(TItem v) throw(ERRange);
    void            Merge(TItem u,TItem v) throw(ERRange);
    TItem           Find(TItem v) throw(ERRange);

};


#endif
