//
//   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_TSortedSequenceNode
 *
 * DESCRIPTION: A TSortedSequenceNode is a node in a tree containing
 *              MOrderableCollectible elements.  It contains a key
 *              (the MOrderableCollectible) and a link to a left child and
 *              a right child.
 *
 */
#ifndef TSSNode_idl
#define TSSNode_idl
#include <somobj.idl>
#include <mcollect.idl>
interface somf_MOrderableCollectible;
interface somf_TSortedSequenceNode : SOMObject
{
  somf_TSortedSequenceNode somfTSortedSequenceNodeInitTMT(in somf_TSortedSequenceNode n1,
				in somf_MOrderableCollectible obj,
				in somf_TSortedSequenceNode n2);
  // Initialize the new TSortedSequenceNode
  somf_TSortedSequenceNode somfTSortedSequenceNodeInitTM(in somf_TSortedSequenceNode n1,
				in somf_MOrderableCollectible obj);
  // Initialize the new TSortedSequenceNode
  somf_TSortedSequenceNode somfTSortedSequenceNodeInitT(in somf_TSortedSequenceNode n1);
  // Initialize the new TSortedSequenceNode
  somf_TSortedSequenceNode somfGetLeftChild();
  // Determine the left child of the node.
  somf_TSortedSequenceNode somfGetRightChild();
  // Determine the right child of the node.
  somf_TSortedSequenceNode somfGetParent();
  // Determine the parent of the node.
  somf_MOrderableCollectible somfGetKey();
  // Determine the key to the node.
  boolean somfGetRed();
  // Determine if the node is red or black.
  void somfSetParent(in somf_TSortedSequenceNode n);
  // Set the parent of the node.
  void somfSetLeftChild(in somf_TSortedSequenceNode n);
  // Set the left child of the node.
  void somfSetRightChild(in somf_TSortedSequenceNode n);
  // Set the right child of the node.
  void somfSetKey(in somf_MOrderableCollectible k);
  // Set the key to the node.
  void somfSetRed(in boolean on);
  // Set the node to red or black.
  void somfSetRedOn();
  // Set the node to red.
#ifdef __SOMIDL__
  implementation {
    releaseorder: somfGetLeftChild, somfGetRightChild, somfGetParent,
		  somfGetKey, somfGetRed, somfSetParent, somfSetLeftChild,
		  somfSetRightChild, somfSetKey, somfSetRed, somfSetRedOn,
		  somfTSortedSequenceNodeInitTMT, somfTSortedSequenceNodeInitTM,
		  somfTSortedSequenceNodeInitT;
    majorversion = 2;
    minorversion = 1;
    filestem = tssnode;
    dllname = "somuc.dll";
    passthru C_xh_after =  ""
"#include <morder.xh>";
    passthru C_h_after =  ""
"#include <morder.h>";
    somf_TSortedSequenceNode          fLeftChild;
    somf_MOrderableCollectible        fKey;
    somf_TSortedSequenceNode          fRightChild;
    somf_TSortedSequenceNode          fParent;
    boolean                         fRed;
    somInit: override;
    somfTSortedSequenceNodeInitTMT : nooverride;
    somfTSortedSequenceNodeInitTM : nooverride;
    somfTSortedSequenceNodeInitT : nooverride;
    somfGetLeftChild : nooverride;
    somfGetRightChild : nooverride;
    somfGetParent : nooverride;
    somfGetKey : nooverride;
    somfGetRed : nooverride;
    somfSetParent : nooverride;
    somfSetLeftChild : nooverride;
    somfSetRightChild : nooverride;
    somfSetKey : nooverride;
    somfSetRed : nooverride;
  };
#endif /* __SOMIDL__ */
};
#endif  /* TSSNode_idl */
