// IBM Open Class Library
//
// Licensed Materials - Property of IBM
//
// (C) Copyright IBM Corporation, 1992, 1997 All Rights Reserved
//
// Revision: 64 1.4.3.2 source/core/collect/iissavl.c, collection, ioc.v400, 001006 
#ifndef _IISSAVL_C_
#define _IISSAVL_C_


#pragma info (nocls, nocnd, nocns, nocnv, noext, nognr, novft)


#ifdef IC_BUILD
#define __IOC_INLINE
#else
#define __IOC_INLINE inline
#endif

// ---
// ISortedSetAsAvlTreeOps
// ---

// public members

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
ISortedSetAsAvlTreeOps (INumber numberOfElements)
: ivBase (numberOfElements),
  ivImpl (*this, numberOfElements)
{
}

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
ISortedSetAsAvlTreeOps (INumber numberOfElements, void* opsArg)
: ivBase (numberOfElements, opsArg),
  ivImpl (*this, numberOfElements)
{
}

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
ISortedSetAsAvlTreeOps
  (ISortedSetAsAvlTreeOps
    <Element, ElementOps, Implementation> const& collection)
: ivBase (collection.ivBase),
  ivImpl (*this, collection.ivImpl)
{
}

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
~ISortedSetAsAvlTreeOps ()
{
}

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
IACollectionImpl*
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
Clone () const
{ return (Implementation*) *new Self (*this);
}

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
operator IKeySortedSetAsAvlTreeImpl& ()
{ return *(IKeySortedSetAsAvlTreeImpl*)ivBase ;
}

template <class Element, class ElementOps, class Implementation>
__IOC_INLINE
ISortedSetAsAvlTreeOps <Element, ElementOps, Implementation>::
operator Implementation* ()
{ ivImpl.CheckPointer (this);
  return &ivImpl ;
}


#pragma info (restore)


#endif // _IISSAVL_C_
