//
//   COMPONENT_NAME: somuc
//
//   ORIGINS: 82, 81, 27
//
//
//   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
//   All Rights Reserved
//   Licensed Materials - Property of IBM
//   US Government Users Restricted Rights - Use, duplication or
//   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//
//   Copyright © 1988, 1989 Apple Computer, Inc. All rights reserved.
/*
 * CLASS_NAME: somf_TSortedSequence
 *
 * DESCRIPTION: A TSortedSequence is a TSequence.  It is ordered based on
 *              how the elements in the collections relate to each other.
 *              Any element in the TSortedSequence is Less Than or Equal to
 *              the element in front of it, and Greater Than or Equal to
 *              the element behind it.
 *
 */
#ifndef TSS_idl
#define TSS_idl
#include <tseq.idl>
#include <morder.idl>
/* interface somf_MCollectible; */
interface somf_TSortedSequenceNode;
interface somf_TSequenceIterator;
interface somf_TSortedSequence : somf_TSequence
{
  somf_TSortedSequence somfTSortedSequenceInitF(in somf_MOrderableCollectible::somf_MBetterOrderableCompareFn testfn);
  // Initialize the new TSortedSequence
  somf_TSortedSequence somfTSortedSequenceInitS(in somf_TSortedSequence s);
  // Initialize the new TSortedSequence
  void somfAssign(in somf_TSortedSequence s);
  // Assign the instance of this equal to the instance of source.
  somf_TSequenceIterator  somfCreateSequenceIterator();
  // This method returns a new iterator which is suitable for use in iterating
  // over the objects in this collection.
  somf_MOrderableCollectible::somf_MBetterOrderableCompareFn  somfGetSequencingFunction();
  // Return a pointer to the function used to compare elements in the
  // collection, and consequently determines the sequence of the collection.
  void somfSetSequencingFunction(in somf_MOrderableCollectible::somf_MBetterOrderableCompareFn fn);
  // Sets the pointer to the function used to compare elements in the
  // collection, and consequently determines the sequence of the collection.
  somf_TSortedSequenceNode somfCreateSortedSequenceNode(in somf_TSortedSequenceNode n1,
				       in somf_MOrderableCollectible obj,
				       in somf_TSortedSequenceNode n2);
  // Create a new TSortedSequenceNode in the TSortedSequence.
#ifdef __SOMIDL__
  implementation {
    releaseorder: somfCreateSequenceIterator, somfGetSequencingFunction,
		  somfSetSequencingFunction, somfCreateSortedSequenceNode,
		  somfRotate, somfSplit, somfBalance,
		  somfInternalRemoveAll, somfInternalDeleteAll,
		  somfAssign, somfTSortedSequenceInitF,
		  somfTSortedSequenceInitS;
    majorversion = 2;
    minorversion = 1;
    filestem = tss;
    dllname = "somuc.dll";
    passthru C_xh_after =  ""
"#include <mcollect.xh>"
"#include <morder.xh>"
"#include <tssnode.xh>";
    passthru C_h_after =  ""
"#include <mcollect.h>"
"#include <morder.h>"
"#include <tssnode.h>";
    unsigned long                 fSeed;
    somf_TSortedSequenceNode        fSuperRoot;
    somf_TSortedSequenceNode        fNilNode;
    long                          fCount;
    somf_MOrderableCollectible::somf_MBetterOrderableCompareFn fSequencingFunction;
    somInit: override;
    somUninit: override;
    somfAdd: override;
    somfRemove: override;
    somfDeleteAll: override;
    somfRemoveAll: override;
    somfCount: override;
    somfAfter: override;
    somfBefore: override;
    somfLast: override;
    somfFirst: override;
    somfMember: override;
    somfCreateIterator: override;
    somfOccurrencesOf: override;
    somfTSortedSequenceInitF : nomodify, nooverride;
    somfTSortedSequenceInitS : nomodify, nooverride;
    somfAssign : nomodify;
    somfGetSequencingFunction : nomodify;
    somfSetSequencingFunction : nomodify;
    somfRotate : nomodify;
    somfSplit : nomodify;
    somfBalance : nomodify;
    somfInternalRemoveAll : nomodify;
    somfInternalDeleteAll : nomodify;
  };
#endif /* __SOMIDL__ */
};
#endif  /* TSS_idl */
