//
//   COMPONENT_NAME: somx
//
//   ORIGINS: 27
//
//
//   25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,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.
//

//   @(#) 1.1 src/somples.os2/somk/c/tp/ep.idl, somples.somk, som3.0 12/2/96 13:53:05 [12/4/96 15:12:06]

/*
 *
 * 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.
 */


//  This class is adapted from the book
//    Class Construction in C and C++, Object Oriented Fundamentals
//    by Roger Sessions, Copyright (c) 1992 Prentice Hall.
//  Reprinted with permission.

#ifndef ep_idl
#define ep_idl

#include <somobj.idl>

interface page;
interface TPWord;
interface fileMgr;

interface envProcessor : SOMObject
{
  void epInit1(in envProcessor lastEnv);
  // Used to initialize a new environment from an
  // existing environment.

  void epProcessEnvironment();
  // Defines what it means to process a given
  // environment.  This method MUST be overridden in
  // derived classes.

  void epStartUpNewEnvironment(in TPWord envName);
  // Defines what steps need to be taken at the start
  // of this environment.

  void epInitializeEnvironment();
  // Defines what steps need to be taken to initialize
  // a given environment.

  void epShutdownEnvironment();
  // Defines what steps need to be taken to shutdown this
  // environment.

  void epPrepareForNewEnvironment();
  // Defines what steps this environment should take as it
  // prepares to transfer control to a new environment.

  readonly attribute long paragraphIndentation;
  // The indentation for a new paragraph for this environment.

  readonly attribute long lineIndentation;
  // The indentation for a new line for this environment.

  attribute page currentPage;
  attribute fileMgr currentFileMgr;
  readonly attribute envProcessor previousEnv;

#ifdef __SOMIDL__
  implementation {

    releaseorder: epInit1,epProcessEnvironment,epStartUpNewEnvironment, 
                  epInitializeEnvironment,epShutdownEnvironment,
		  epPrepareForNewEnvironment, 
                  _get_paragraphIndentation,
		  _get_lineIndentation,
		  _get_currentPage, _set_currentPage, 
                  _get_currentFileMgr,_set_currentFileMgr,
		  _get_previousEnv;

    //# Class Modifiers
    callstyle = oidl;
    filestem = ep;

    passthru C_h = 
	"#include \"page.h\""
        "#include \"fm.h\""
        "#include \"tpword.h\"";

    //# Attribute Modifiers
    paragraphIndentation: nodata;
    lineIndentation: nodata;

    //# Method Modifiers
    somInit: override;
    somUninit: override;
    somDumpSelfInt: override;

  };
#endif /* __SOMIDL__ */
};

#endif  /* ep_idl */
