
/*
 * This file was generated by the SOM Compiler.
 * FileName: ep.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.19
 *     SOM Emitter emith.dll: 2.31.1.64
 */

/*
 *   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 SOM_envProcessor_h
#define SOM_envProcessor_h


/*
 * The SOM_STRICT_IDL macro means that we can ignore stars
 * in our declarations of objects.
 */
#define SOM_STRICT_IDL 1


/*
 * Passthru lines: File: "C.h", "before"
 */
#include "page.h"
#include "fm.h"
#include "tpword.h"

#include <som.h>

/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))

/*
 * Define the class name as an object type
 */
#ifndef envProcessor
#define envProcessor SOMObject
#endif

/*
 * Include Parent Bindings
 */
#ifndef SOM_SOMObject_h
#ifdef SOMLOCALINCLUDES
#include "somobj.h"
#else
#include <somobj.h>
#endif
#endif

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef page
    #define page SOMObject
#endif /* page */
#ifndef TPWord
    #define TPWord SOMObject
#endif /* TPWord */
#ifndef fileMgr
    #define fileMgr SOMObject
#endif /* fileMgr */

/*
 * End of bindings for IDL types.
 */

#define envProcessor_MajorVersion 0
#define envProcessor_MinorVersion 0

/*
 * Declare the class creation procedure
 */
SOMEXTERN 
#if defined(SOM_Module_ep_Source)
        SOMDLLEXPORT
#else
    SOMDLLIMPORT
#endif
 SOMClass  SOMLINK envProcessorNewClass(integer4 somtmajorVersion,
		integer4 somtminorVersion);

/*
 * Declare the ABI 2 ClassData structure
 */
SOMEXTERN struct envProcessorClassDataStructure {
	SOMClass classObject;
	somMToken epInit1;
	somMToken epProcessEnvironment;
	somMToken epStartUpNewEnvironment;
	somMToken epInitializeEnvironment;
	somMToken epShutdownEnvironment;
	somMToken epPrepareForNewEnvironment;
	somMToken _get_paragraphIndentation;
	somMToken _get_lineIndentation;
	somMToken _get_currentPage;
	somMToken _set_currentPage;
	somMToken _get_currentFileMgr;
	somMToken _set_currentFileMgr;
	somMToken _get_previousEnv;
} 
#if defined(SOM_Module_ep_Source)
        SOMDLLEXPORT
#else
    SOMDLLIMPORT
#endif
 SOMDLINK envProcessorClassData;

/*
 * Declare the ABI 2 CClassData structure
 */
SOMEXTERN struct envProcessorCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
} 
#if defined(SOM_Module_ep_Source)
        SOMDLLEXPORT
#else
    SOMDLLIMPORT
#endif
 SOMDLINK envProcessorCClassData;

/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_envProcessor (envProcessorClassData.classObject)
#ifndef SOMGD_envProcessor
    #if (defined(_envProcessor) || defined(__envProcessor))
        #undef _envProcessor
        #undef __envProcessor
        #define SOMGD_envProcessor 1
    #else
        #define _envProcessor _SOMCLASS_envProcessor
    #endif /* _envProcessor */
#endif /* SOMGD_envProcessor */
#define envProcessor_classObj _SOMCLASS_envProcessor
#define _SOMMTOKEN_envProcessor(method) ((somMToken)envProcessorClassData.method)

/*
 * New and Renew macros for envProcessor
 */
#define envProcessorNew() \
   ( _envProcessor ? \
	_somNew(_envProcessor) \
	: ( envProcessorNewClass(\
		envProcessor_MajorVersion, \
		envProcessor_MinorVersion),\
	   _somNew(_envProcessor)))
#define envProcessorRenew(buf) \
   ( _envProcessor ? \
	_somRenew(_envProcessor, buf) \
	: ( envProcessorNewClass(\
		envProcessor_MajorVersion, \
		envProcessor_MinorVersion),\
	   _somRenew(_envProcessor, buf)))

/*
 * New Method: epInit1
 */
typedef void   SOMLINK somTP_envProcessor_epInit1(envProcessor somSelf, 
		envProcessor lastEnv);
typedef somTP_envProcessor_epInit1 *somTD_envProcessor_epInit1;
/*
 *  Used to initialize a new environment from an
 *  existing environment.
 */
#define somMD_envProcessor_epInit1 "::envProcessor::epInit1"
#define envProcessor_epInit1(somSelf,lastEnv) \
    (SOM_Resolve(somSelf, envProcessor, epInit1) \
	(somSelf,lastEnv))
#ifndef SOMGD_epInit1
    #if (defined(_epInit1) || defined(__epInit1))
        #undef _epInit1
        #undef __epInit1
        #define SOMGD_epInit1 1
    #else
        #define _epInit1 envProcessor_epInit1
    #endif /* _epInit1 */
#endif /* SOMGD_epInit1 */

/*
 * New Method: epProcessEnvironment
 */
typedef void   SOMLINK somTP_envProcessor_epProcessEnvironment(envProcessor somSelf);
typedef somTP_envProcessor_epProcessEnvironment *somTD_envProcessor_epProcessEnvironment;
/*
 *  Defines what it means to process a given
 *  environment.  This method MUST be overridden in
 *  derived classes.
 */
#define somMD_envProcessor_epProcessEnvironment "::envProcessor::epProcessEnvironment"
#define envProcessor_epProcessEnvironment(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, epProcessEnvironment) \
	(somSelf))
#ifndef SOMGD_epProcessEnvironment
    #if (defined(_epProcessEnvironment) || defined(__epProcessEnvironment))
        #undef _epProcessEnvironment
        #undef __epProcessEnvironment
        #define SOMGD_epProcessEnvironment 1
    #else
        #define _epProcessEnvironment envProcessor_epProcessEnvironment
    #endif /* _epProcessEnvironment */
#endif /* SOMGD_epProcessEnvironment */

/*
 * New Method: epStartUpNewEnvironment
 */
typedef void   SOMLINK somTP_envProcessor_epStartUpNewEnvironment(envProcessor somSelf, 
		TPWord envName);
typedef somTP_envProcessor_epStartUpNewEnvironment *somTD_envProcessor_epStartUpNewEnvironment;
/*
 *  Defines what steps need to be taken at the start
 *  of this environment.
 */
#define somMD_envProcessor_epStartUpNewEnvironment "::envProcessor::epStartUpNewEnvironment"
#define envProcessor_epStartUpNewEnvironment(somSelf,envName) \
    (SOM_Resolve(somSelf, envProcessor, epStartUpNewEnvironment) \
	(somSelf,envName))
#ifndef SOMGD_epStartUpNewEnvironment
    #if (defined(_epStartUpNewEnvironment) || defined(__epStartUpNewEnvironment))
        #undef _epStartUpNewEnvironment
        #undef __epStartUpNewEnvironment
        #define SOMGD_epStartUpNewEnvironment 1
    #else
        #define _epStartUpNewEnvironment envProcessor_epStartUpNewEnvironment
    #endif /* _epStartUpNewEnvironment */
#endif /* SOMGD_epStartUpNewEnvironment */

/*
 * New Method: epInitializeEnvironment
 */
typedef void   SOMLINK somTP_envProcessor_epInitializeEnvironment(envProcessor somSelf);
typedef somTP_envProcessor_epInitializeEnvironment *somTD_envProcessor_epInitializeEnvironment;
/*
 *  Defines what steps need to be taken to initialize
 *  a given environment.
 */
#define somMD_envProcessor_epInitializeEnvironment "::envProcessor::epInitializeEnvironment"
#define envProcessor_epInitializeEnvironment(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, epInitializeEnvironment) \
	(somSelf))
#ifndef SOMGD_epInitializeEnvironment
    #if (defined(_epInitializeEnvironment) || defined(__epInitializeEnvironment))
        #undef _epInitializeEnvironment
        #undef __epInitializeEnvironment
        #define SOMGD_epInitializeEnvironment 1
    #else
        #define _epInitializeEnvironment envProcessor_epInitializeEnvironment
    #endif /* _epInitializeEnvironment */
#endif /* SOMGD_epInitializeEnvironment */

/*
 * New Method: epShutdownEnvironment
 */
typedef void   SOMLINK somTP_envProcessor_epShutdownEnvironment(envProcessor somSelf);
typedef somTP_envProcessor_epShutdownEnvironment *somTD_envProcessor_epShutdownEnvironment;
/*
 *  Defines what steps need to be taken to shutdown this
 *  environment.
 */
#define somMD_envProcessor_epShutdownEnvironment "::envProcessor::epShutdownEnvironment"
#define envProcessor_epShutdownEnvironment(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, epShutdownEnvironment) \
	(somSelf))
#ifndef SOMGD_epShutdownEnvironment
    #if (defined(_epShutdownEnvironment) || defined(__epShutdownEnvironment))
        #undef _epShutdownEnvironment
        #undef __epShutdownEnvironment
        #define SOMGD_epShutdownEnvironment 1
    #else
        #define _epShutdownEnvironment envProcessor_epShutdownEnvironment
    #endif /* _epShutdownEnvironment */
#endif /* SOMGD_epShutdownEnvironment */

/*
 * New Method: epPrepareForNewEnvironment
 */
typedef void   SOMLINK somTP_envProcessor_epPrepareForNewEnvironment(envProcessor somSelf);
typedef somTP_envProcessor_epPrepareForNewEnvironment *somTD_envProcessor_epPrepareForNewEnvironment;
/*
 *  Defines what steps this environment should take as it
 *  prepares to transfer control to a new environment.
 */
#define somMD_envProcessor_epPrepareForNewEnvironment "::envProcessor::epPrepareForNewEnvironment"
#define envProcessor_epPrepareForNewEnvironment(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, epPrepareForNewEnvironment) \
	(somSelf))
#ifndef SOMGD_epPrepareForNewEnvironment
    #if (defined(_epPrepareForNewEnvironment) || defined(__epPrepareForNewEnvironment))
        #undef _epPrepareForNewEnvironment
        #undef __epPrepareForNewEnvironment
        #define SOMGD_epPrepareForNewEnvironment 1
    #else
        #define _epPrepareForNewEnvironment envProcessor_epPrepareForNewEnvironment
    #endif /* _epPrepareForNewEnvironment */
#endif /* SOMGD_epPrepareForNewEnvironment */

/*
 * New Method: _get_paragraphIndentation
 */
typedef long   SOMLINK somTP_envProcessor__get_paragraphIndentation(envProcessor somSelf);
typedef somTP_envProcessor__get_paragraphIndentation *somTD_envProcessor__get_paragraphIndentation;
/*
 *  The indentation for a new paragraph for this environment.
 */
#define somMD_envProcessor__get_paragraphIndentation "::envProcessor::_get_paragraphIndentation"
#define envProcessor__get_paragraphIndentation(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, _get_paragraphIndentation) \
	(somSelf))
#ifndef SOMGD_get_paragraphIndentation
    #if (defined(_get_paragraphIndentation) || defined(__get_paragraphIndentation))
        #undef _get_paragraphIndentation
        #undef __get_paragraphIndentation
        #define SOMGD_get_paragraphIndentation 1
    #else
        #define __get_paragraphIndentation envProcessor__get_paragraphIndentation
    #endif /* __get_paragraphIndentation */
#endif /* SOMGD_get_paragraphIndentation */

/*
 * New Method: _get_lineIndentation
 */
typedef long   SOMLINK somTP_envProcessor__get_lineIndentation(envProcessor somSelf);
typedef somTP_envProcessor__get_lineIndentation *somTD_envProcessor__get_lineIndentation;
/*
 *  The indentation for a new line for this environment.
 */
#define somMD_envProcessor__get_lineIndentation "::envProcessor::_get_lineIndentation"
#define envProcessor__get_lineIndentation(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, _get_lineIndentation) \
	(somSelf))
#ifndef SOMGD_get_lineIndentation
    #if (defined(_get_lineIndentation) || defined(__get_lineIndentation))
        #undef _get_lineIndentation
        #undef __get_lineIndentation
        #define SOMGD_get_lineIndentation 1
    #else
        #define __get_lineIndentation envProcessor__get_lineIndentation
    #endif /* __get_lineIndentation */
#endif /* SOMGD_get_lineIndentation */

/*
 * New Method: _get_currentPage
 */
typedef page   SOMLINK somTP_envProcessor__get_currentPage(envProcessor somSelf);
typedef somTP_envProcessor__get_currentPage *somTD_envProcessor__get_currentPage;
/*
 * Method from the IDL attribute statement:
 * "attribute page currentPage"
 */
#define somMD_envProcessor__get_currentPage "::envProcessor::_get_currentPage"
#define envProcessor__get_currentPage(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, _get_currentPage) \
	(somSelf))
#ifndef SOMGD_get_currentPage
    #if (defined(_get_currentPage) || defined(__get_currentPage))
        #undef _get_currentPage
        #undef __get_currentPage
        #define SOMGD_get_currentPage 1
    #else
        #define __get_currentPage envProcessor__get_currentPage
    #endif /* __get_currentPage */
#endif /* SOMGD_get_currentPage */

/*
 * New Method: _set_currentPage
 */
typedef void   SOMLINK somTP_envProcessor__set_currentPage(envProcessor somSelf, 
		page currentPage);
typedef somTP_envProcessor__set_currentPage *somTD_envProcessor__set_currentPage;
/*
 * Method from the IDL attribute statement:
 * "attribute page currentPage"
 */
#define somMD_envProcessor__set_currentPage "::envProcessor::_set_currentPage"
#define envProcessor__set_currentPage(somSelf,currentPage) \
    (SOM_Resolve(somSelf, envProcessor, _set_currentPage) \
	(somSelf,currentPage))
#ifndef SOMGD_set_currentPage
    #if (defined(_set_currentPage) || defined(__set_currentPage))
        #undef _set_currentPage
        #undef __set_currentPage
        #define SOMGD_set_currentPage 1
    #else
        #define __set_currentPage envProcessor__set_currentPage
    #endif /* __set_currentPage */
#endif /* SOMGD_set_currentPage */

/*
 * New Method: _get_currentFileMgr
 */
typedef fileMgr   SOMLINK somTP_envProcessor__get_currentFileMgr(envProcessor somSelf);
typedef somTP_envProcessor__get_currentFileMgr *somTD_envProcessor__get_currentFileMgr;
/*
 * Method from the IDL attribute statement:
 * "attribute fileMgr currentFileMgr"
 */
#define somMD_envProcessor__get_currentFileMgr "::envProcessor::_get_currentFileMgr"
#define envProcessor__get_currentFileMgr(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, _get_currentFileMgr) \
	(somSelf))
#ifndef SOMGD_get_currentFileMgr
    #if (defined(_get_currentFileMgr) || defined(__get_currentFileMgr))
        #undef _get_currentFileMgr
        #undef __get_currentFileMgr
        #define SOMGD_get_currentFileMgr 1
    #else
        #define __get_currentFileMgr envProcessor__get_currentFileMgr
    #endif /* __get_currentFileMgr */
#endif /* SOMGD_get_currentFileMgr */

/*
 * New Method: _set_currentFileMgr
 */
typedef void   SOMLINK somTP_envProcessor__set_currentFileMgr(envProcessor somSelf, 
		fileMgr currentFileMgr);
typedef somTP_envProcessor__set_currentFileMgr *somTD_envProcessor__set_currentFileMgr;
/*
 * Method from the IDL attribute statement:
 * "attribute fileMgr currentFileMgr"
 */
#define somMD_envProcessor__set_currentFileMgr "::envProcessor::_set_currentFileMgr"
#define envProcessor__set_currentFileMgr(somSelf,currentFileMgr) \
    (SOM_Resolve(somSelf, envProcessor, _set_currentFileMgr) \
	(somSelf,currentFileMgr))
#ifndef SOMGD_set_currentFileMgr
    #if (defined(_set_currentFileMgr) || defined(__set_currentFileMgr))
        #undef _set_currentFileMgr
        #undef __set_currentFileMgr
        #define SOMGD_set_currentFileMgr 1
    #else
        #define __set_currentFileMgr envProcessor__set_currentFileMgr
    #endif /* __set_currentFileMgr */
#endif /* SOMGD_set_currentFileMgr */

/*
 * New Method: _get_previousEnv
 */
typedef envProcessor   SOMLINK somTP_envProcessor__get_previousEnv(envProcessor somSelf);
typedef somTP_envProcessor__get_previousEnv *somTD_envProcessor__get_previousEnv;
/*
 * Method from the IDL attribute statement:
 * "readonly attribute envProcessor previousEnv"
 */
#define somMD_envProcessor__get_previousEnv "::envProcessor::_get_previousEnv"
#define envProcessor__get_previousEnv(somSelf) \
    (SOM_Resolve(somSelf, envProcessor, _get_previousEnv) \
	(somSelf))
#ifndef SOMGD_get_previousEnv
    #if (defined(_get_previousEnv) || defined(__get_previousEnv))
        #undef _get_previousEnv
        #undef __get_previousEnv
        #define SOMGD_get_previousEnv 1
    #else
        #define __get_previousEnv envProcessor__get_previousEnv
    #endif /* __get_previousEnv */
#endif /* SOMGD_get_previousEnv */

/*
 * Full Names for Inherited Methods
 */
/* overridden methods */
#define envProcessor_somInit SOMObject_somInit
#define envProcessor_somUninit SOMObject_somUninit
#define envProcessor_somDumpSelfInt SOMObject_somDumpSelfInt

#ifndef SOM_DONT_USE_INHERITED_MACROS
#define envProcessor_somDefaultInit SOMObject_somDefaultInit
#define envProcessor_somDestruct SOMObject_somDestruct
#define envProcessor_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define envProcessor_somDefaultAssign SOMObject_somDefaultAssign
#define envProcessor_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define envProcessor_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define envProcessor_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define envProcessor_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define envProcessor_somDefaultVAssign SOMObject_somDefaultVAssign
#define envProcessor_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define envProcessor_somFree SOMObject_somFree
#define envProcessor_somGetClass SOMObject_somGetClass
#define envProcessor_somGetClassName SOMObject_somGetClassName
#define envProcessor_somGetSize SOMObject_somGetSize
#define envProcessor_somIsA SOMObject_somIsA
#define envProcessor_somIsInstanceOf SOMObject_somIsInstanceOf
#define envProcessor_somRespondsTo SOMObject_somRespondsTo
#define envProcessor_somDispatch SOMObject_somDispatch
#define envProcessor_somClassDispatch SOMObject_somClassDispatch
#define envProcessor_somCastObj SOMObject_somCastObj
#define envProcessor_somResetObj SOMObject_somResetObj
#define envProcessor_somPrintSelf SOMObject_somPrintSelf
#define envProcessor_somDumpSelf SOMObject_somDumpSelf
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_envProcessor_h */
