//#====START_GENERATED_PROLOG======================================
//#
//#
//#   COMPONENT_NAME: odutils
//#
//#   CLASSES: none
//#
//#   ORIGINS: 81,82,27
//#
//#
//#   (C) COPYRIGHT International Business Machines Corp. 1995,1996
//#   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.
//#   	
//#   IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
//#   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//#   PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
//#   CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
//#   USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
//#   OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
//#   OR PERFORMANCE OF THIS SOFTWARE.
//#
//#====END_GENERATED_PROLOG========================================
//#
// @(#) 1.2 nt/src/utils/mlink.idl, odutils, od96nt, odnt9712d 11/1/96 19:07:57 [ 3/21/97 17:37:36 ]
//
//   Copyright  1988, 1989 Apple Computer, Inc. All rights reserved.

/*
 * DESCRIPTION: This class defines the general attributes of objects that
 *              contain links.  For example, TPrimitiveLinkedList uses
 *              somf_MLinkable.
 *
 */

#ifndef MLink_idl
#define MLink_idl

#include <somobj.idl>

interface somf_MLinkable : SOMObject
{
  somf_MLinkable somfMLinkableInit(in somf_MLinkable n,
				in somf_MLinkable p);

  // This method initialized the somf_MLinkable object using n and p.
  //#   MLinkable(MLinkable* n, MLinkable* p)   { fNext = n; fPrevious = p;}

  //# since MLinkable has no logic in it's destructor, the
  //# following destructor has been commented out.
  //#
  //#    ~MLinkable() {}

  somf_MLinkable somfGetNext();

  // This method returns a pointer to the next somf_MLinkable.
  //#   MLinkable* GetNext() const { return fNext;}

  void somfSetNext(in somf_MLinkable aLink);

  // This method sets the pointer to the next somf_MLinkable.
  //#   void SetNext(MLinkable* aLink) { fNext = aLink;}

  somf_MLinkable somfGetPrevious();

  // This method returns a pointer to the previous somf_MLinkable.
  //#   MLinkable* GetPrevious() const { return fPrevious;}

  void somfSetPrevious(in somf_MLinkable aLink);

  // This method sets the pointer to the previous somf_MLinkable.
  //#  void SetPrevious(MLinkable* aLink) { fPrevious = aLink;}



#ifdef __SOMIDL__
  implementation {

    releaseorder: somfGetNext,somfSetNext,somfGetPrevious,somfSetPrevious,
		  somfMLinkableInit;

    //# Class Modifiers
    majorversion = 2;
    minorversion = 1;
    filestem = mlink;
    dllname = "somuc.dll";


    //# Internal Instance Variables
    somf_MLinkable fNext;
    somf_MLinkable fPrevious;

    //# Method Modifiers
    somInit: override;
    somfMLinkableInit: nooverride;

    //# Data Modifiers

  };
#endif /* __SOMIDL__ */
};

#endif  /* MLink_idl */
