/*
 *    @(#)23 1.1 9/28/93 11:45:32 [10/14/94] (c)IBM Corp. 1992
 */

// This file was generated by the SOM Compiler.
// FileName: ep.id2.
// Generated using:
//     SOM Precompiler spc: 6.9
//     SOM Emitter emitidl.dll: 6.8

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

  long epGetParagraphIndentation();
  
  // Get the indentation for a new paragraph for this environment.

  long epGetLineIndentation();
  
  // Get the indentation for a new line for this environment.

  page epGetPage();
  fileMgr epGetFileMgr();
  envProcessor epGetPreviousEnv();
  string epGetClassName();
  void epSetPage(in page newPage);
  void epSetFileMgr(in fileMgr newFileMgr);


#ifdef __SOMIDL__
  implementation {

    releaseorder: epInit1,epProcessEnvironment,epStartUpNewEnvironment, 
                  epInitializeEnvironment,epShutdownEnvironment,epPrepareForNewEnvironment, 
                  epGetParagraphIndentation,epGetLineIndentation,epGetPage, 
                  epGetFileMgr,epGetPreviousEnv,epGetClassName,epSetPage, 
                  epSetFileMgr;

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

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


    //# Internal Instance Variables
    page thisPage;                
    fileMgr thisFile;             
    envProcessor previousEnv;     

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

    //# Data Modifiers
    thisPage: ;
    thisFile: ;
    previousEnv: ;

  };
#endif /* __SOMIDL__ */
};

#endif  /* ep_idl */
