//
//   COMPONENT_NAME: somx
//
//   ORIGINS: 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.
//
/* @(#) 1.3 src/win/somx/somd/cpp/stack/stack.idl, somx.somd, som2.1 9/21/94 17:00:53  [11/1/94 21:14:32] */
/*
 *
 * DISCLAIMER OF WARRANTIES.
 * The following [enclosed] code is sample code created by IBM
 * Corporation. This sample code is not part of any standard or IBM
 * product and is provided to you solely for the purpose of assisting
 * you in the development of your applications.  The code is provided
 * "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
 * NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
 * THIS CODE.  IBM shall not be liable for any damages arising out of
 * your use of the sample code, even if they have been advised of the
 * possibility of such damages.
 *
 * DISTRIBUTION.
 * This sample code can be freely distributed, copied, altered, and
 * incorporated into other software, provided that it bears the above
 * Copyright notice and DISCLAIMER intact.
 */

#include <somobj.idl>

interface Stack: SOMObject {

  const long stackSize = 100;
  exception  STACK_OVERFLOW{};		
  exception  STACK_UNDERFLOW{};				
  boolean full();
  boolean empty();
  long top() raises(STACK_UNDERFLOW);		
  long pop() raises(STACK_UNDERFLOW);			
  void push(in long el) raises(STACK_OVERFLOW);		

  #ifdef __SOMIDL__
    implementation {
      releaseorder: full, empty, top, pop, push;
      somDefaultInit: override;
      long stackTop;	                        	
      long stackimpl[stackSize];
      dllname = "stack.dll";
      memory_management = corba;
    };
  #endif

};
