//
//   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-92 Apple Computer, Inc.  All rights reserved.
/*
 * CLASS_NAME: somf_MCollectible
 *
 * DESCRIPTION: The class somf_MCollectible defines the generic object class
 *              from which all other classes are derived.  It is an abstract
 *              class in that many subclasses will define some or all of the
 *              methods presented below.
 *
 *
 */
// This file was generated by the SOM Compiler.
// FileName: MCollect.id2.
// Generated using:
//     SOM Precompiler spc: 6.13
//     SOM Emitter emitidl.dll: 6.18
#ifndef MCollect_idl
#define MCollect_idl
#include <somobj.idl>
#include <somcls.idl>
interface somf_MCollectible : SOMObject
{
  const long kReasonableLowerBound = 5;
  typedef somMToken somf_MCollectibleCompareFn;
  typedef somMToken somf_MCollectibleHashFn;
  somf_MCollectible somfClone();
  // somfClone provides a general function for creating a new instance of this.
  somf_MCollectible somfClonePointer(in somf_MCollectible clonee);
  // somfClonePointer returns a pointer to a Clone
  long somfHash();
  // somfHash returns a value suitable for use as a hashing probe for this.
  // The default function will simply return the address of the object.
  // The default function is almost certainly not adequate if you are overriding
  // somfIsEqual because you need to make sure that all objects that "are equal"
  // to each other return the same hash value.  For example, a TText object would
  // return a hash value computed using the characters in the string instead of
  // the address of the string.
  boolean somfIsEqual(in somf_MCollectible obj);
  // somfIsEqual returns TRUE if obj is isomorphic to this.  The default function
  // will give you a nasty message.  For example, the somfIsEqual method
  // for TText objects will do a string comparison.  All of the utility classes
  // allow you to specify what methods to use when comparing objects for
  // insertion, deletion, etc.
  boolean somfIsSame(in somf_MCollectible obj);
  // The default function for somfIsSame is a pointer comparison
  boolean somfIsNotEqual(in somf_MCollectible obj);
  // somfIsNotEqual returns TRUE if obj is NOT isomorphic to this.  It uses
  // somfIsEqual, so overriding somfIsEqual will handle the logic of somfIsNotEqual too.
#ifdef __SOMIDL__
  implementation {
    releaseorder: somfClone,somfClonePointer,somfHash,somfIsEqual,somfIsSame,
		  somfIsNotEqual;
    majorversion = 2;
    minorversion = 1;
    filestem = mcollect;
    dllname = "somuc.dll";
    passthru C_xh_after =  ""
""
"#define SOMF_NIL 0"
""
"#define SOMF_CALL_COMPARE_FN(obj,token,parameter) (((somTD_somf_MCollectible_somfIsEqual) somResolve(obj,token))(obj, ev, parameter))"
""
"#define SOMF_CALL_HASH_FN(obj,token) (((somTD_somf_MCollectible_somfHash) somResolve(obj,token))(obj, ev))"
""
"#define kDeleted (somf_MCollectible*) 0xFFFFFFFF";
    passthru C_h_after =  ""
""
"#define SOMF_NIL 0"
""
"#define SOMF_CALL_COMPARE_FN(obj,token,parameter) (((somTD_somf_MCollectible_somfIsEqual) somResolve(obj,token))(obj, ev, parameter))"
""
"#define SOMF_CALL_HASH_FN(obj,token) (((somTD_somf_MCollectible_somfHash) somResolve(obj,token))(obj, ev))"
""
"#define kDeleted (somf_MCollectible*) 0xFFFFFFFF";
    somfClone: nomodify;
    somfClonePointer: nooverride;
    somfHash: nomodify;
    somfIsEqual: nomodify;
    somfIsSame: nomodify;
    somfIsNotEqual: nomodify;
  };
#endif /* __SOMIDL__ */
};
#endif  /* MCollect_idl */
