//  The C++ Booch Components (Version 2.0)
//  (C) Copyright 1990-1993 Grady Booch. All Rights Reserved.
//
//  BCOCol.h
//
//  This file contains the declaration of the ordered collection abstract base class.

#ifndef BCOCOL_H
#define BCOCOL_H 1

#include "BCColl.h"

// Ordered collection abstract base class

template<class Collection_Item>
class BC_TOrderedCollection : public BC_TCollection<Collection_Item> {
public:

  BC_TOrderedCollection();
  BC_TOrderedCollection(BC_Index (*)(const Collection_Item&));
  BC_TOrderedCollection(const BC_TOrderedCollection<Collection_Item>&);
  virtual ~BC_TOrderedCollection();

  virtual void SetOrderFunction(BC_Index (*)(const Collection_Item&));

protected:

  BC_Index (*fRepOrder)(const Collection_Item&);

};

#endif
