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

/*
 *   COMPONENT_NAME: some
 * 
 *   ORIGINS: 27
 * 
 * 
 *    25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1994,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.
 *  @(#) somc/sctypes.h 2.10 5/22/96 13:13:27 [12/22/96 21:12:13]
 * 
 */


#ifndef SOM_SOMTEmitC_h
#define SOM_SOMTEmitC_h


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


#include <som.h>
#ifndef SOM_IMPORTEXPORT_some_scemit
#ifdef SOM_DLL_some
	/* export semantics */
	#if defined(SOM_DEFFILE_some)\
	||(defined(SOM_DEFFILE_BY_DEFAULT)&&!defined(SOM_NODEFFILE_some))\
	|| !defined(SOM_Module_scemit_Source)
	#define SOM_IMPORTEXPORT_some_scemit
	#else
	#define SOM_IMPORTEXPORT_some_scemit SOMDLLEXPORT
	#endif
#else
	#define SOM_IMPORTEXPORT_some_scemit SOMDLLIMPORT
#endif
#endif

/*
 * -- 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 SOMTEmitC
#define SOMTEmitC SOMObject
#endif
/*
 *  This is the pluggable unit in the SOM emitter framework. An emitter
 *  is constructed by subclassing this class and then running the
 *  master emitter program providing the name of the subclass as one of
 *  its command line arguments.
 *  The concepts of this class are simple:
 * 
 *    Emitters always consist of a set of sections
 *    The sections are in a particular order for any particular
 *    emitter, and the order does not vary with the data processed by
 *    the emitter.
 *    A number of the sections of an emitter are common (maybe with
 *    slight variation) across several (or even most) emitters.
 *    There are a number of constructs that occur in varying numbers,
 *    eg, method declarations, data declarations, and attribute
 *    declarations.
 *  Consequently, this class provides methods for:
 *    Methods for many common sections, including several that may be
 *    useful without overridding in several different emitters
 *    Sequencing through the sections of the emitter
 *    Iterating through the constructs that occur in varying numbers
 */

/*
 * 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 SOMStringTableC
    #define SOMStringTableC SOMObject
#endif /* SOMStringTableC */
#ifndef SOMTEntryC
    #define SOMTEntryC SOMObject
#endif /* SOMTEntryC */
#ifndef SOMTEmitC
    #define SOMTEmitC SOMObject
#endif /* SOMTEmitC */
#ifndef SOMTMetaClassEntryC
    #define SOMTMetaClassEntryC SOMObject
#endif /* SOMTMetaClassEntryC */
#ifndef SOMTAttributeEntryC
    #define SOMTAttributeEntryC SOMObject
#endif /* SOMTAttributeEntryC */
#ifndef SOMTTypedefEntryC
    #define SOMTTypedefEntryC SOMObject
#endif /* SOMTTypedefEntryC */
#ifndef SOMTBaseClassEntryC
    #define SOMTBaseClassEntryC SOMObject
#endif /* SOMTBaseClassEntryC */
#ifndef SOMTPassthruEntryC
    #define SOMTPassthruEntryC SOMObject
#endif /* SOMTPassthruEntryC */
#ifndef SOMTDataEntryC
    #define SOMTDataEntryC SOMObject
#endif /* SOMTDataEntryC */
#ifndef SOMTMethodEntryC
    #define SOMTMethodEntryC SOMObject
#endif /* SOMTMethodEntryC */
#ifndef SOMTClassEntryC
    #define SOMTClassEntryC SOMObject
#endif /* SOMTClassEntryC */
#ifndef SOMTModuleEntryC
    #define SOMTModuleEntryC SOMObject
#endif /* SOMTModuleEntryC */
#ifndef SOMTParameterEntryC
    #define SOMTParameterEntryC SOMObject
#endif /* SOMTParameterEntryC */
#ifndef SOMTStructEntryC
    #define SOMTStructEntryC SOMObject
#endif /* SOMTStructEntryC */
#ifndef SOMTUnionEntryC
    #define SOMTUnionEntryC SOMObject
#endif /* SOMTUnionEntryC */
#ifndef SOMTEnumEntryC
    #define SOMTEnumEntryC SOMObject
#endif /* SOMTEnumEntryC */
#ifndef SOMTConstEntryC
    #define SOMTConstEntryC SOMObject
#endif /* SOMTConstEntryC */
#ifndef SOMTSequenceEntryC
    #define SOMTSequenceEntryC SOMObject
#endif /* SOMTSequenceEntryC */
#ifndef SOMTStringEntryC
    #define SOMTStringEntryC SOMObject
#endif /* SOMTStringEntryC */
#ifndef SOMTEnumNameEntryC
    #define SOMTEnumNameEntryC SOMObject
#endif /* SOMTEnumNameEntryC */
#ifndef SOMTCommonEntryC
    #define SOMTCommonEntryC SOMObject
#endif /* SOMTCommonEntryC */
#ifndef SOMTUserDefinedTypeEntryC
    #define SOMTUserDefinedTypeEntryC SOMObject
#endif /* SOMTUserDefinedTypeEntryC */

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

/*
 * Passthru lines: File: "C.h", "after"
 */
#include <sctypes.h>
#include <sctmplt.h>
#include <scclass.h>
#include <scmeta.h>
#include <scmethod.h>
#include <scpass.h>
    /*
     * These macros provide short-hands for the use of the Scan
     * Methods.
     */

    #define SCAN_NOFILTER(scan,method) \
        _##scan(somSelf, #method"Prolog", #method, #method"Epilog")
    #define SCAN_NOFILTER_SN(scan,method,base,newbase) \
        {_somtSetSymbolCopyBoth(_t, #base"PrologSN", #newbase"PrologS"); \
        _somtSetSymbolCopyBoth(_t, #base"SN", #newbase"S"); \
        _somtSetSymbolCopyBoth(_t, #base"EpilogSN", #newbase"EpilogS"); \
        _##scan(somSelf, #method"Prolog", #method, #method"Epilog");}
    #define SCAN_FILTER(scan,filt,method) \
        _##scan(somSelf, #filt, #method"Prolog", #method, #method"Epilog",0)
    #define SCAN_FILTER_SN(scan,filt,method,base,newbase) \
        {_somtSetSymbolCopyBoth(_t, #base"PrologSN", #newbase"PrologS"); \
        _somtSetSymbolCopyBoth(_t, #base"SN", #newbase"S"); \
        _somtSetSymbolCopyBoth(_t, #base"EpilogSN", #newbase"EpilogS"); \
        _##scan(somSelf, #filt, #method"Prolog", #method, #method"Epilog",0);}

#define SOMTEmitC_MajorVersion 2
#define SOMTEmitC_MinorVersion 1

/*
 * Declare the class creation procedure
 */
SOMEXTERN SOM_IMPORTEXPORT_some_scemit SOMClass  SOMLINK SOMTEmitCNewClass(integer4 somtmajorVersion,
		integer4 somtminorVersion);

/*
 * Declare the ABI 2 ClassData structure
 */
SOMEXTERN struct SOMTEmitCClassDataStructure {
	SOMClass classObject;
	somMToken _get_somtTemplate;
	somMToken _get_somtTargetFile;
	somMToken _set_somtTargetFile;
	somMToken _get_somtTargetClass;
	somMToken _set_somtTargetClass;
	somMToken _get_somtTargetModule;
	somMToken _set_somtTargetModule;
	somMToken _get_somtTargetType;
	somMToken _set_somtTargetType;
	somMToken somtGenerateSections;
	somMToken somtOpenSymbolsFile;
	somMToken somtSetPredefinedSymbols;
	somMToken somtFileSymbols;
	somMToken somtEmitProlog;
	somMToken somtEmitBaseIncludesProlog;
	somMToken somtEmitBaseIncludes;
	somMToken somtEmitBaseIncludesEpilog;
	somMToken somtEmitMetaInclude;
	somMToken somtEmitClass;
	somMToken somtEmitMeta;
	somMToken somtEmitBaseProlog;
	somMToken somtEmitBase;
	somMToken somtEmitBaseEpilog;
	somMToken somtEmitPassthruProlog;
	somMToken somtEmitPassthru;
	somMToken somtEmitPassthruEpilog;
	somMToken somtEmitRelease;
	somMToken somtEmitDataProlog;
	somMToken somtEmitData;
	somMToken somtEmitDataEpilog;
	somMToken somtEmitMethodsProlog;
	somMToken somtEmitMethods;
	somMToken somtEmitMethodsEpilog;
	somMToken somtEmitMethod;
	somMToken somtEmitEpilog;
	somMToken somtScanBases;
	somMToken somtScanConstants;
	somMToken somtCheckVisibility;
	somMToken somtNew;
	somMToken somtImplemented;
	somMToken somtOverridden;
	somMToken somtInherited;
	somMToken somtAllVisible;
	somMToken somtAll;
	somMToken somtNewNoProc;
	somMToken somtPrivOrPub;
	somMToken somtNewProc;
	somMToken somtLink;
	somMToken somtVA;
	somMToken somtScanMethods;
	somMToken somtScanData;
	somMToken somtScanPassthru;
	somMToken somtEmitFullPassthru;
	somMToken somtScanDataF;
	somMToken somtScanBasesF;
	somMToken _set_somtTemplate;
	somMToken _set_somtEmitterName;
	somMToken _get_somtEmitterName;
	somMToken somtEmitAttributeProlog;
	somMToken somtEmitAttribute;
	somMToken somtEmitAttributeEpilog;
	somMToken somtEmitConstantProlog;
	somMToken somtEmitConstant;
	somMToken somtEmitConstantEpilog;
	somMToken somtEmitTypedefProlog;
	somMToken somtEmitTypedef;
	somMToken somtEmitTypedefEpilog;
	somMToken somtEmitStructProlog;
	somMToken somtEmitStruct;
	somMToken somtEmitStructEpilog;
	somMToken somtEmitUnionProlog;
	somMToken somtEmitUnion;
	somMToken somtEmitUnionEpilog;
	somMToken somtEmitEnumProlog;
	somMToken somtEmitEnum;
	somMToken somtEmitEnumEpilog;
	somMToken somtEmitInterfaceProlog;
	somMToken somtEmitInterface;
	somMToken somtEmitInterfaceEpilog;
	somMToken somtEmitModuleProlog;
	somMToken somtEmitModule;
	somMToken somtEmitModuleEpilog;
	somMToken somtScanAttributes;
	somMToken somtScanTypedefs;
	somMToken somtScanStructs;
	somMToken somtScanUnions;
	somMToken somtScanEnums;
	somMToken somtScanInterfaces;
	somMToken somtScanModules;
	somMToken somtGetGlobalModifierValue;
	somMToken somtGetFirstGlobalDefinition;
	somMToken somtGetNextGlobalDefinition;
} SOM_IMPORTEXPORT_some_scemit SOMDLINK SOMTEmitCClassData;

/*
 * Declare the ABI 2 CClassData structure
 */
SOMEXTERN struct SOMTEmitCCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
} SOM_IMPORTEXPORT_some_scemit SOMDLINK SOMTEmitCCClassData;

/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_SOMTEmitC (SOMTEmitCClassData.classObject)
#ifndef SOMGD_SOMTEmitC
    #if (defined(_SOMTEmitC) || defined(__SOMTEmitC))
        #undef _SOMTEmitC
        #undef __SOMTEmitC
        #define SOMGD_SOMTEmitC 1
    #else
        #define _SOMTEmitC _SOMCLASS_SOMTEmitC
    #endif /* _SOMTEmitC */
#endif /* SOMGD_SOMTEmitC */
#define SOMTEmitC_classObj _SOMCLASS_SOMTEmitC
#define _SOMMTOKEN_SOMTEmitC(method) ((somMToken)SOMTEmitCClassData.method)

/*
 * New and Renew macros for SOMTEmitC
 */
#define SOMTEmitCNew() \
   ( _SOMTEmitC ? \
	_somNew(_SOMTEmitC) \
	: ( SOMTEmitCNewClass(\
		SOMTEmitC_MajorVersion, \
		SOMTEmitC_MinorVersion),\
	   _somNew(_SOMTEmitC)))
#define SOMTEmitCRenew(buf) \
   ( _SOMTEmitC ? \
	_somRenew(_SOMTEmitC, buf) \
	: ( SOMTEmitCNewClass(\
		SOMTEmitC_MajorVersion, \
		SOMTEmitC_MinorVersion),\
	   _somRenew(_SOMTEmitC, buf)))

/*
 * New Method: _get_somtTemplate
 */
typedef SOMTTemplateOutputC   SOMLINK somTP_SOMTEmitC__get_somtTemplate(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC__get_somtTemplate *somTD_SOMTEmitC__get_somtTemplate;
/*
 *  The template is to provide template output and maintains a symbol
 *  table that provides a sort of global context for the emitter.
 */
#define somMD_SOMTEmitC__get_somtTemplate "::SOMTEmitC::_get_somtTemplate"
#define SOMTEmitC__get_somtTemplate(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, _get_somtTemplate) \
	(somSelf))
#ifndef SOMGD_get_somtTemplate
    #if (defined(_get_somtTemplate) || defined(__get_somtTemplate))
        #undef _get_somtTemplate
        #undef __get_somtTemplate
        #define SOMGD_get_somtTemplate 1
    #else
        #define __get_somtTemplate SOMTEmitC__get_somtTemplate
    #endif /* __get_somtTemplate */
#endif /* SOMGD_get_somtTemplate */

/*
 * New Method: _set_somtTemplate
 */
typedef void   SOMLINK somTP_SOMTEmitC__set_somtTemplate(SOMTEmitC somSelf, 
		SOMTTemplateOutputC somtTemplate);
typedef somTP_SOMTEmitC__set_somtTemplate *somTD_SOMTEmitC__set_somtTemplate;
/*
 *  The template is to provide template output and maintains a symbol
 *  table that provides a sort of global context for the emitter.
 */
#define somMD_SOMTEmitC__set_somtTemplate "::SOMTEmitC::_set_somtTemplate"
#define SOMTEmitC__set_somtTemplate(somSelf,somtTemplate) \
    (SOM_Resolve(somSelf, SOMTEmitC, _set_somtTemplate) \
	(somSelf,somtTemplate))
#ifndef SOMGD_set_somtTemplate
    #if (defined(_set_somtTemplate) || defined(__set_somtTemplate))
        #undef _set_somtTemplate
        #undef __set_somtTemplate
        #define SOMGD_set_somtTemplate 1
    #else
        #define __set_somtTemplate SOMTEmitC__set_somtTemplate
    #endif /* __set_somtTemplate */
#endif /* SOMGD_set_somtTemplate */

/*
 * New Method: _get_somtTargetFile
 */
typedef FILE*   SOMLINK somTP_SOMTEmitC__get_somtTargetFile(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC__get_somtTargetFile *somTD_SOMTEmitC__get_somtTargetFile;
/*
 *  The target file is the one to which all emitter output is to be
 *  directed.
 */
#define somMD_SOMTEmitC__get_somtTargetFile "::SOMTEmitC::_get_somtTargetFile"
#define SOMTEmitC__get_somtTargetFile(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, _get_somtTargetFile) \
	(somSelf))
#ifndef SOMGD_get_somtTargetFile
    #if (defined(_get_somtTargetFile) || defined(__get_somtTargetFile))
        #undef _get_somtTargetFile
        #undef __get_somtTargetFile
        #define SOMGD_get_somtTargetFile 1
    #else
        #define __get_somtTargetFile SOMTEmitC__get_somtTargetFile
    #endif /* __get_somtTargetFile */
#endif /* SOMGD_get_somtTargetFile */

/*
 * New Method: _set_somtTargetFile
 */
typedef void   SOMLINK somTP_SOMTEmitC__set_somtTargetFile(SOMTEmitC somSelf, 
		FILE* somtTargetFile);
typedef somTP_SOMTEmitC__set_somtTargetFile *somTD_SOMTEmitC__set_somtTargetFile;
/*
 *  The target file is the one to which all emitter output is to be
 *  directed.
 */
#define somMD_SOMTEmitC__set_somtTargetFile "::SOMTEmitC::_set_somtTargetFile"
#define SOMTEmitC__set_somtTargetFile(somSelf,somtTargetFile) \
    (SOM_Resolve(somSelf, SOMTEmitC, _set_somtTargetFile) \
	(somSelf,somtTargetFile))
#ifndef SOMGD_set_somtTargetFile
    #if (defined(_set_somtTargetFile) || defined(__set_somtTargetFile))
        #undef _set_somtTargetFile
        #undef __set_somtTargetFile
        #define SOMGD_set_somtTargetFile 1
    #else
        #define __set_somtTargetFile SOMTEmitC__set_somtTargetFile
    #endif /* __set_somtTargetFile */
#endif /* SOMGD_set_somtTargetFile */

/*
 * New Method: _get_somtTargetClass
 */
typedef SOMTClassEntryC   SOMLINK somTP_SOMTEmitC__get_somtTargetClass(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC__get_somtTargetClass *somTD_SOMTEmitC__get_somtTargetClass;
/*
 *  The target class is the class definition for which code is to be
 *  emitted.
 */
#define somMD_SOMTEmitC__get_somtTargetClass "::SOMTEmitC::_get_somtTargetClass"
#define SOMTEmitC__get_somtTargetClass(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, _get_somtTargetClass) \
	(somSelf))
#ifndef SOMGD_get_somtTargetClass
    #if (defined(_get_somtTargetClass) || defined(__get_somtTargetClass))
        #undef _get_somtTargetClass
        #undef __get_somtTargetClass
        #define SOMGD_get_somtTargetClass 1
    #else
        #define __get_somtTargetClass SOMTEmitC__get_somtTargetClass
    #endif /* __get_somtTargetClass */
#endif /* SOMGD_get_somtTargetClass */

/*
 * New Method: _set_somtTargetClass
 */
typedef void   SOMLINK somTP_SOMTEmitC__set_somtTargetClass(SOMTEmitC somSelf, 
		SOMTClassEntryC somtTargetClass);
typedef somTP_SOMTEmitC__set_somtTargetClass *somTD_SOMTEmitC__set_somtTargetClass;
/*
 *  The target class is the class definition for which code is to be
 *  emitted.
 */
#define somMD_SOMTEmitC__set_somtTargetClass "::SOMTEmitC::_set_somtTargetClass"
#define SOMTEmitC__set_somtTargetClass(somSelf,somtTargetClass) \
    (SOM_Resolve(somSelf, SOMTEmitC, _set_somtTargetClass) \
	(somSelf,somtTargetClass))
#ifndef SOMGD_set_somtTargetClass
    #if (defined(_set_somtTargetClass) || defined(__set_somtTargetClass))
        #undef _set_somtTargetClass
        #undef __set_somtTargetClass
        #define SOMGD_set_somtTargetClass 1
    #else
        #define __set_somtTargetClass SOMTEmitC__set_somtTargetClass
    #endif /* __set_somtTargetClass */
#endif /* SOMGD_set_somtTargetClass */

/*
 * New Method: _get_somtTargetModule
 */
typedef SOMTModuleEntryC   SOMLINK somTP_SOMTEmitC__get_somtTargetModule(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC__get_somtTargetModule *somTD_SOMTEmitC__get_somtTargetModule;
/*
 *  The target module is the module definition for which code is to be
 *  emitted.
 */
#define somMD_SOMTEmitC__get_somtTargetModule "::SOMTEmitC::_get_somtTargetModule"
#define SOMTEmitC__get_somtTargetModule(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, _get_somtTargetModule) \
	(somSelf))
#ifndef SOMGD_get_somtTargetModule
    #if (defined(_get_somtTargetModule) || defined(__get_somtTargetModule))
        #undef _get_somtTargetModule
        #undef __get_somtTargetModule
        #define SOMGD_get_somtTargetModule 1
    #else
        #define __get_somtTargetModule SOMTEmitC__get_somtTargetModule
    #endif /* __get_somtTargetModule */
#endif /* SOMGD_get_somtTargetModule */

/*
 * New Method: _set_somtTargetModule
 */
typedef void   SOMLINK somTP_SOMTEmitC__set_somtTargetModule(SOMTEmitC somSelf, 
		SOMTModuleEntryC somtTargetModule);
typedef somTP_SOMTEmitC__set_somtTargetModule *somTD_SOMTEmitC__set_somtTargetModule;
/*
 *  The target module is the module definition for which code is to be
 *  emitted.
 */
#define somMD_SOMTEmitC__set_somtTargetModule "::SOMTEmitC::_set_somtTargetModule"
#define SOMTEmitC__set_somtTargetModule(somSelf,somtTargetModule) \
    (SOM_Resolve(somSelf, SOMTEmitC, _set_somtTargetModule) \
	(somSelf,somtTargetModule))
#ifndef SOMGD_set_somtTargetModule
    #if (defined(_set_somtTargetModule) || defined(__set_somtTargetModule))
        #undef _set_somtTargetModule
        #undef __set_somtTargetModule
        #define SOMGD_set_somtTargetModule 1
    #else
        #define __set_somtTargetModule SOMTEmitC__set_somtTargetModule
    #endif /* __set_somtTargetModule */
#endif /* SOMGD_set_somtTargetModule */

/*
 * New Method: _get_somtTargetType
 */
typedef SOMTTargetTypeT   SOMLINK somTP_SOMTEmitC__get_somtTargetType(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC__get_somtTargetType *somTD_SOMTEmitC__get_somtTargetType;
/*
 *  The target type indicates what type of output file is being
 *  produced, public, private, or implementation.  This allows the
 *  same emitter subclass to produce several different output files
 *  that generally differ only in how much of the class definition
 *  they cover. Eg, .csc, .sc, and .psc.
 *  This is attribute is for OIDL compatibility only.
 */
#define somMD_SOMTEmitC__get_somtTargetType "::SOMTEmitC::_get_somtTargetType"
#define SOMTEmitC__get_somtTargetType(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, _get_somtTargetType) \
	(somSelf))
#ifndef SOMGD_get_somtTargetType
    #if (defined(_get_somtTargetType) || defined(__get_somtTargetType))
        #undef _get_somtTargetType
        #undef __get_somtTargetType
        #define SOMGD_get_somtTargetType 1
    #else
        #define __get_somtTargetType SOMTEmitC__get_somtTargetType
    #endif /* __get_somtTargetType */
#endif /* SOMGD_get_somtTargetType */

/*
 * New Method: _set_somtTargetType
 */
typedef void   SOMLINK somTP_SOMTEmitC__set_somtTargetType(SOMTEmitC somSelf, 
		SOMTTargetTypeT somtTargetType);
typedef somTP_SOMTEmitC__set_somtTargetType *somTD_SOMTEmitC__set_somtTargetType;
/*
 *  The target type indicates what type of output file is being
 *  produced, public, private, or implementation.  This allows the
 *  same emitter subclass to produce several different output files
 *  that generally differ only in how much of the class definition
 *  they cover. Eg, .csc, .sc, and .psc.
 *  This is attribute is for OIDL compatibility only.
 */
#define somMD_SOMTEmitC__set_somtTargetType "::SOMTEmitC::_set_somtTargetType"
#define SOMTEmitC__set_somtTargetType(somSelf,somtTargetType) \
    (SOM_Resolve(somSelf, SOMTEmitC, _set_somtTargetType) \
	(somSelf,somtTargetType))
#ifndef SOMGD_set_somtTargetType
    #if (defined(_set_somtTargetType) || defined(__set_somtTargetType))
        #undef _set_somtTargetType
        #undef __set_somtTargetType
        #define SOMGD_set_somtTargetType 1
    #else
        #define __set_somtTargetType SOMTEmitC__set_somtTargetType
    #endif /* __set_somtTargetType */
#endif /* SOMGD_set_somtTargetType */

/*
 * New Method: _get_somtEmitterName
 */
typedef string   SOMLINK somTP_SOMTEmitC__get_somtEmitterName(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC__get_somtEmitterName *somTD_SOMTEmitC__get_somtEmitterName;
/*
 *  The short name of the emitter (the name used to invoke it via the
 *  SOM Compiler.  Typically this is the file stem of the subclass
 *  of SOMTEmitC. This attribute should be set in the driver program
 *  that runs the emitter.  It is used to filter passthrus so that only
 *  passthrus directed to a particular emitter are seen by it.
 */
#define somMD_SOMTEmitC__get_somtEmitterName "::SOMTEmitC::_get_somtEmitterName"
#define SOMTEmitC__get_somtEmitterName(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, _get_somtEmitterName) \
	(somSelf))
#ifndef SOMGD_get_somtEmitterName
    #if (defined(_get_somtEmitterName) || defined(__get_somtEmitterName))
        #undef _get_somtEmitterName
        #undef __get_somtEmitterName
        #define SOMGD_get_somtEmitterName 1
    #else
        #define __get_somtEmitterName SOMTEmitC__get_somtEmitterName
    #endif /* __get_somtEmitterName */
#endif /* SOMGD_get_somtEmitterName */

/*
 * New Method: _set_somtEmitterName
 */
typedef void   SOMLINK somTP_SOMTEmitC__set_somtEmitterName(SOMTEmitC somSelf, 
		string somtEmitterName);
typedef somTP_SOMTEmitC__set_somtEmitterName *somTD_SOMTEmitC__set_somtEmitterName;
/*
 *  The short name of the emitter (the name used to invoke it via the
 *  SOM Compiler.  Typically this is the file stem of the subclass
 *  of SOMTEmitC. This attribute should be set in the driver program
 *  that runs the emitter.  It is used to filter passthrus so that only
 *  passthrus directed to a particular emitter are seen by it.
 */
#define somMD_SOMTEmitC__set_somtEmitterName "::SOMTEmitC::_set_somtEmitterName"
#define SOMTEmitC__set_somtEmitterName(somSelf,somtEmitterName) \
    (SOM_Resolve(somSelf, SOMTEmitC, _set_somtEmitterName) \
	(somSelf,somtEmitterName))
#ifndef SOMGD_set_somtEmitterName
    #if (defined(_set_somtEmitterName) || defined(__set_somtEmitterName))
        #undef _set_somtEmitterName
        #undef __set_somtEmitterName
        #define SOMGD_set_somtEmitterName 1
    #else
        #define __set_somtEmitterName SOMTEmitC__set_somtEmitterName
    #endif /* __set_somtEmitterName */
#endif /* SOMGD_set_somtEmitterName */

/*
 * New Method: somtGenerateSections
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtGenerateSections(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtGenerateSections *somTD_SOMTEmitC_somtGenerateSections;
/*
 *  Calls each of the section methods in order.  The order is:
 * 
 *    somtEmitProlog
 *    when emitting a class:
 *    	  somtEmitClass
 *    	  somtEmitBase
 *    	  somtEmitMeta
 *    somtEmitConstant
 *    somtEmitTypedef
 *    somtEmitStruct
 *    somtEmitUnion
 *    somtEmitEnum
 *    when emitting a class:
 *       somtEmitAttribute
 *       somtEmitMethod
 *       somtEmitRelease
 *       somtEmitPassthru
 *       somtEmitData
 *    when emitting a module:
 *        somtEmitInterface
 *        somtEmitModule
 *    somtEmitEpilog
 * 
 *  This method will need to be overridden by many emitters in order
 *  to rearange the order of the sections and to add or delete
 *  sections.
 *  Note: repeating sections such as methods, data, and passthru,
 *  have a prolog and epilog method as well. The prolog method is
 *  called before the first sections is processed and the epilog method
 *  is called after the last section is processed.
 */
#define somMD_SOMTEmitC_somtGenerateSections "::SOMTEmitC::somtGenerateSections"
#define SOMTEmitC_somtGenerateSections(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtGenerateSections) \
	(somSelf))
#ifndef SOMGD_somtGenerateSections
    #if (defined(_somtGenerateSections) || defined(__somtGenerateSections))
        #undef _somtGenerateSections
        #undef __somtGenerateSections
        #define SOMGD_somtGenerateSections 1
    #else
        #define _somtGenerateSections SOMTEmitC_somtGenerateSections
    #endif /* _somtGenerateSections */
#endif /* SOMGD_somtGenerateSections */

/*
 * New Method: somtOpenSymbolsFile
 */
typedef FILE*   SOMLINK somTP_SOMTEmitC_somtOpenSymbolsFile(SOMTEmitC somSelf, 
		string file, 
		string mode);
typedef somTP_SOMTEmitC_somtOpenSymbolsFile *somTD_SOMTEmitC_somtOpenSymbolsFile;
/*
 *  This method attempts to open the symbols file.
 *  If file doesn't exist then it will attempt to find it in the
 *  directories specified in the SMINCLUDE environment variable.
 *  If the file can be found a FILE * pointer is returned, otherwise
 *  NULL is returned.
 */
#define somMD_SOMTEmitC_somtOpenSymbolsFile "::SOMTEmitC::somtOpenSymbolsFile"
#define SOMTEmitC_somtOpenSymbolsFile(somSelf,file,mode) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtOpenSymbolsFile) \
	(somSelf,file,mode))
#ifndef SOMGD_somtOpenSymbolsFile
    #if (defined(_somtOpenSymbolsFile) || defined(__somtOpenSymbolsFile))
        #undef _somtOpenSymbolsFile
        #undef __somtOpenSymbolsFile
        #define SOMGD_somtOpenSymbolsFile 1
    #else
        #define _somtOpenSymbolsFile SOMTEmitC_somtOpenSymbolsFile
    #endif /* _somtOpenSymbolsFile */
#endif /* SOMGD_somtOpenSymbolsFile */

/*
 * New Method: somtSetPredefinedSymbols
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtSetPredefinedSymbols(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtSetPredefinedSymbols *somTD_SOMTEmitC_somtSetPredefinedSymbols;
/*
 *  Set predefined symbols that are used for such things as section
 *  names etc.
 */
#define somMD_SOMTEmitC_somtSetPredefinedSymbols "::SOMTEmitC::somtSetPredefinedSymbols"
#define SOMTEmitC_somtSetPredefinedSymbols(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtSetPredefinedSymbols) \
	(somSelf))
#ifndef SOMGD_somtSetPredefinedSymbols
    #if (defined(_somtSetPredefinedSymbols) || defined(__somtSetPredefinedSymbols))
        #undef _somtSetPredefinedSymbols
        #undef __somtSetPredefinedSymbols
        #define SOMGD_somtSetPredefinedSymbols 1
    #else
        #define _somtSetPredefinedSymbols SOMTEmitC_somtSetPredefinedSymbols
    #endif /* _somtSetPredefinedSymbols */
#endif /* SOMGD_somtSetPredefinedSymbols */

/*
 * New Method: somtFileSymbols
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtFileSymbols(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtFileSymbols *somTD_SOMTEmitC_somtFileSymbols;
/*
 *  Symbols that are common to the file.  This includes the target
 *  class symbols, and the metaclass symbols, and special symbols
 *  like <timeStamp>.  IE, all symbols that have a single definition.
 */
#define somMD_SOMTEmitC_somtFileSymbols "::SOMTEmitC::somtFileSymbols"
#define SOMTEmitC_somtFileSymbols(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtFileSymbols) \
	(somSelf))
#ifndef SOMGD_somtFileSymbols
    #if (defined(_somtFileSymbols) || defined(__somtFileSymbols))
        #undef _somtFileSymbols
        #undef __somtFileSymbols
        #define SOMGD_somtFileSymbols 1
    #else
        #define _somtFileSymbols SOMTEmitC_somtFileSymbols
    #endif /* _somtFileSymbols */
#endif /* SOMGD_somtFileSymbols */

/*
 * New Method: somtEmitProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitProlog *somTD_SOMTEmitC_somtEmitProlog;
#define somMD_SOMTEmitC_somtEmitProlog "::SOMTEmitC::somtEmitProlog"
#define SOMTEmitC_somtEmitProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitProlog
    #if (defined(_somtEmitProlog) || defined(__somtEmitProlog))
        #undef _somtEmitProlog
        #undef __somtEmitProlog
        #define SOMGD_somtEmitProlog 1
    #else
        #define _somtEmitProlog SOMTEmitC_somtEmitProlog
    #endif /* _somtEmitProlog */
#endif /* SOMGD_somtEmitProlog */

/*
 * New Method: somtEmitBaseIncludesProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitBaseIncludesProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitBaseIncludesProlog *somTD_SOMTEmitC_somtEmitBaseIncludesProlog;
#define somMD_SOMTEmitC_somtEmitBaseIncludesProlog "::SOMTEmitC::somtEmitBaseIncludesProlog"
#define SOMTEmitC_somtEmitBaseIncludesProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitBaseIncludesProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitBaseIncludesProlog
    #if (defined(_somtEmitBaseIncludesProlog) || defined(__somtEmitBaseIncludesProlog))
        #undef _somtEmitBaseIncludesProlog
        #undef __somtEmitBaseIncludesProlog
        #define SOMGD_somtEmitBaseIncludesProlog 1
    #else
        #define _somtEmitBaseIncludesProlog SOMTEmitC_somtEmitBaseIncludesProlog
    #endif /* _somtEmitBaseIncludesProlog */
#endif /* SOMGD_somtEmitBaseIncludesProlog */

/*
 * New Method: somtEmitBaseIncludes
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitBaseIncludes(SOMTEmitC somSelf, 
		SOMTBaseClassEntryC base);
typedef somTP_SOMTEmitC_somtEmitBaseIncludes *somTD_SOMTEmitC_somtEmitBaseIncludes;
#define somMD_SOMTEmitC_somtEmitBaseIncludes "::SOMTEmitC::somtEmitBaseIncludes"
#define SOMTEmitC_somtEmitBaseIncludes(somSelf,base) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitBaseIncludes) \
	(somSelf,base))
#ifndef SOMGD_somtEmitBaseIncludes
    #if (defined(_somtEmitBaseIncludes) || defined(__somtEmitBaseIncludes))
        #undef _somtEmitBaseIncludes
        #undef __somtEmitBaseIncludes
        #define SOMGD_somtEmitBaseIncludes 1
    #else
        #define _somtEmitBaseIncludes SOMTEmitC_somtEmitBaseIncludes
    #endif /* _somtEmitBaseIncludes */
#endif /* SOMGD_somtEmitBaseIncludes */

/*
 * New Method: somtEmitBaseIncludesEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitBaseIncludesEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitBaseIncludesEpilog *somTD_SOMTEmitC_somtEmitBaseIncludesEpilog;
#define somMD_SOMTEmitC_somtEmitBaseIncludesEpilog "::SOMTEmitC::somtEmitBaseIncludesEpilog"
#define SOMTEmitC_somtEmitBaseIncludesEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitBaseIncludesEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitBaseIncludesEpilog
    #if (defined(_somtEmitBaseIncludesEpilog) || defined(__somtEmitBaseIncludesEpilog))
        #undef _somtEmitBaseIncludesEpilog
        #undef __somtEmitBaseIncludesEpilog
        #define SOMGD_somtEmitBaseIncludesEpilog 1
    #else
        #define _somtEmitBaseIncludesEpilog SOMTEmitC_somtEmitBaseIncludesEpilog
    #endif /* _somtEmitBaseIncludesEpilog */
#endif /* SOMGD_somtEmitBaseIncludesEpilog */

/*
 * New Method: somtEmitMetaInclude
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitMetaInclude(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitMetaInclude *somTD_SOMTEmitC_somtEmitMetaInclude;
#define somMD_SOMTEmitC_somtEmitMetaInclude "::SOMTEmitC::somtEmitMetaInclude"
#define SOMTEmitC_somtEmitMetaInclude(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitMetaInclude) \
	(somSelf))
#ifndef SOMGD_somtEmitMetaInclude
    #if (defined(_somtEmitMetaInclude) || defined(__somtEmitMetaInclude))
        #undef _somtEmitMetaInclude
        #undef __somtEmitMetaInclude
        #define SOMGD_somtEmitMetaInclude 1
    #else
        #define _somtEmitMetaInclude SOMTEmitC_somtEmitMetaInclude
    #endif /* _somtEmitMetaInclude */
#endif /* SOMGD_somtEmitMetaInclude */

/*
 * New Method: somtEmitClass
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitClass(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitClass *somTD_SOMTEmitC_somtEmitClass;
#define somMD_SOMTEmitC_somtEmitClass "::SOMTEmitC::somtEmitClass"
#define SOMTEmitC_somtEmitClass(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitClass) \
	(somSelf))
#ifndef SOMGD_somtEmitClass
    #if (defined(_somtEmitClass) || defined(__somtEmitClass))
        #undef _somtEmitClass
        #undef __somtEmitClass
        #define SOMGD_somtEmitClass 1
    #else
        #define _somtEmitClass SOMTEmitC_somtEmitClass
    #endif /* _somtEmitClass */
#endif /* SOMGD_somtEmitClass */

/*
 * New Method: somtEmitMeta
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitMeta(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitMeta *somTD_SOMTEmitC_somtEmitMeta;
#define somMD_SOMTEmitC_somtEmitMeta "::SOMTEmitC::somtEmitMeta"
#define SOMTEmitC_somtEmitMeta(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitMeta) \
	(somSelf))
#ifndef SOMGD_somtEmitMeta
    #if (defined(_somtEmitMeta) || defined(__somtEmitMeta))
        #undef _somtEmitMeta
        #undef __somtEmitMeta
        #define SOMGD_somtEmitMeta 1
    #else
        #define _somtEmitMeta SOMTEmitC_somtEmitMeta
    #endif /* _somtEmitMeta */
#endif /* SOMGD_somtEmitMeta */

/*
 * New Method: somtEmitBaseProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitBaseProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitBaseProlog *somTD_SOMTEmitC_somtEmitBaseProlog;
#define somMD_SOMTEmitC_somtEmitBaseProlog "::SOMTEmitC::somtEmitBaseProlog"
#define SOMTEmitC_somtEmitBaseProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitBaseProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitBaseProlog
    #if (defined(_somtEmitBaseProlog) || defined(__somtEmitBaseProlog))
        #undef _somtEmitBaseProlog
        #undef __somtEmitBaseProlog
        #define SOMGD_somtEmitBaseProlog 1
    #else
        #define _somtEmitBaseProlog SOMTEmitC_somtEmitBaseProlog
    #endif /* _somtEmitBaseProlog */
#endif /* SOMGD_somtEmitBaseProlog */

/*
 * New Method: somtEmitBase
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitBase(SOMTEmitC somSelf, 
		SOMTBaseClassEntryC base);
typedef somTP_SOMTEmitC_somtEmitBase *somTD_SOMTEmitC_somtEmitBase;
#define somMD_SOMTEmitC_somtEmitBase "::SOMTEmitC::somtEmitBase"
#define SOMTEmitC_somtEmitBase(somSelf,base) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitBase) \
	(somSelf,base))
#ifndef SOMGD_somtEmitBase
    #if (defined(_somtEmitBase) || defined(__somtEmitBase))
        #undef _somtEmitBase
        #undef __somtEmitBase
        #define SOMGD_somtEmitBase 1
    #else
        #define _somtEmitBase SOMTEmitC_somtEmitBase
    #endif /* _somtEmitBase */
#endif /* SOMGD_somtEmitBase */

/*
 * New Method: somtEmitBaseEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitBaseEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitBaseEpilog *somTD_SOMTEmitC_somtEmitBaseEpilog;
#define somMD_SOMTEmitC_somtEmitBaseEpilog "::SOMTEmitC::somtEmitBaseEpilog"
#define SOMTEmitC_somtEmitBaseEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitBaseEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitBaseEpilog
    #if (defined(_somtEmitBaseEpilog) || defined(__somtEmitBaseEpilog))
        #undef _somtEmitBaseEpilog
        #undef __somtEmitBaseEpilog
        #define SOMGD_somtEmitBaseEpilog 1
    #else
        #define _somtEmitBaseEpilog SOMTEmitC_somtEmitBaseEpilog
    #endif /* _somtEmitBaseEpilog */
#endif /* SOMGD_somtEmitBaseEpilog */

/*
 * New Method: somtEmitPassthruProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitPassthruProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitPassthruProlog *somTD_SOMTEmitC_somtEmitPassthruProlog;
#define somMD_SOMTEmitC_somtEmitPassthruProlog "::SOMTEmitC::somtEmitPassthruProlog"
#define SOMTEmitC_somtEmitPassthruProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitPassthruProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitPassthruProlog
    #if (defined(_somtEmitPassthruProlog) || defined(__somtEmitPassthruProlog))
        #undef _somtEmitPassthruProlog
        #undef __somtEmitPassthruProlog
        #define SOMGD_somtEmitPassthruProlog 1
    #else
        #define _somtEmitPassthruProlog SOMTEmitC_somtEmitPassthruProlog
    #endif /* _somtEmitPassthruProlog */
#endif /* SOMGD_somtEmitPassthruProlog */

/*
 * New Method: somtEmitPassthru
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitPassthru(SOMTEmitC somSelf, 
		SOMTPassthruEntryC entry);
typedef somTP_SOMTEmitC_somtEmitPassthru *somTD_SOMTEmitC_somtEmitPassthru;
#define somMD_SOMTEmitC_somtEmitPassthru "::SOMTEmitC::somtEmitPassthru"
#define SOMTEmitC_somtEmitPassthru(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitPassthru) \
	(somSelf,entry))
#ifndef SOMGD_somtEmitPassthru
    #if (defined(_somtEmitPassthru) || defined(__somtEmitPassthru))
        #undef _somtEmitPassthru
        #undef __somtEmitPassthru
        #define SOMGD_somtEmitPassthru 1
    #else
        #define _somtEmitPassthru SOMTEmitC_somtEmitPassthru
    #endif /* _somtEmitPassthru */
#endif /* SOMGD_somtEmitPassthru */

/*
 * New Method: somtEmitPassthruEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitPassthruEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitPassthruEpilog *somTD_SOMTEmitC_somtEmitPassthruEpilog;
#define somMD_SOMTEmitC_somtEmitPassthruEpilog "::SOMTEmitC::somtEmitPassthruEpilog"
#define SOMTEmitC_somtEmitPassthruEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitPassthruEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitPassthruEpilog
    #if (defined(_somtEmitPassthruEpilog) || defined(__somtEmitPassthruEpilog))
        #undef _somtEmitPassthruEpilog
        #undef __somtEmitPassthruEpilog
        #define SOMGD_somtEmitPassthruEpilog 1
    #else
        #define _somtEmitPassthruEpilog SOMTEmitC_somtEmitPassthruEpilog
    #endif /* _somtEmitPassthruEpilog */
#endif /* SOMGD_somtEmitPassthruEpilog */

/*
 * New Method: somtEmitRelease
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitRelease(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitRelease *somTD_SOMTEmitC_somtEmitRelease;
#define somMD_SOMTEmitC_somtEmitRelease "::SOMTEmitC::somtEmitRelease"
#define SOMTEmitC_somtEmitRelease(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitRelease) \
	(somSelf))
#ifndef SOMGD_somtEmitRelease
    #if (defined(_somtEmitRelease) || defined(__somtEmitRelease))
        #undef _somtEmitRelease
        #undef __somtEmitRelease
        #define SOMGD_somtEmitRelease 1
    #else
        #define _somtEmitRelease SOMTEmitC_somtEmitRelease
    #endif /* _somtEmitRelease */
#endif /* SOMGD_somtEmitRelease */

/*
 * New Method: somtEmitDataProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitDataProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitDataProlog *somTD_SOMTEmitC_somtEmitDataProlog;
#define somMD_SOMTEmitC_somtEmitDataProlog "::SOMTEmitC::somtEmitDataProlog"
#define SOMTEmitC_somtEmitDataProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitDataProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitDataProlog
    #if (defined(_somtEmitDataProlog) || defined(__somtEmitDataProlog))
        #undef _somtEmitDataProlog
        #undef __somtEmitDataProlog
        #define SOMGD_somtEmitDataProlog 1
    #else
        #define _somtEmitDataProlog SOMTEmitC_somtEmitDataProlog
    #endif /* _somtEmitDataProlog */
#endif /* SOMGD_somtEmitDataProlog */

/*
 * New Method: somtEmitData
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitData(SOMTEmitC somSelf, 
		SOMTDataEntryC entry);
typedef somTP_SOMTEmitC_somtEmitData *somTD_SOMTEmitC_somtEmitData;
#define somMD_SOMTEmitC_somtEmitData "::SOMTEmitC::somtEmitData"
#define SOMTEmitC_somtEmitData(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitData) \
	(somSelf,entry))
#ifndef SOMGD_somtEmitData
    #if (defined(_somtEmitData) || defined(__somtEmitData))
        #undef _somtEmitData
        #undef __somtEmitData
        #define SOMGD_somtEmitData 1
    #else
        #define _somtEmitData SOMTEmitC_somtEmitData
    #endif /* _somtEmitData */
#endif /* SOMGD_somtEmitData */

/*
 * New Method: somtEmitDataEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitDataEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitDataEpilog *somTD_SOMTEmitC_somtEmitDataEpilog;
#define somMD_SOMTEmitC_somtEmitDataEpilog "::SOMTEmitC::somtEmitDataEpilog"
#define SOMTEmitC_somtEmitDataEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitDataEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitDataEpilog
    #if (defined(_somtEmitDataEpilog) || defined(__somtEmitDataEpilog))
        #undef _somtEmitDataEpilog
        #undef __somtEmitDataEpilog
        #define SOMGD_somtEmitDataEpilog 1
    #else
        #define _somtEmitDataEpilog SOMTEmitC_somtEmitDataEpilog
    #endif /* _somtEmitDataEpilog */
#endif /* SOMGD_somtEmitDataEpilog */

/*
 * New Method: somtEmitAttributeProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitAttributeProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitAttributeProlog *somTD_SOMTEmitC_somtEmitAttributeProlog;
#define somMD_SOMTEmitC_somtEmitAttributeProlog "::SOMTEmitC::somtEmitAttributeProlog"
#define SOMTEmitC_somtEmitAttributeProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitAttributeProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitAttributeProlog
    #if (defined(_somtEmitAttributeProlog) || defined(__somtEmitAttributeProlog))
        #undef _somtEmitAttributeProlog
        #undef __somtEmitAttributeProlog
        #define SOMGD_somtEmitAttributeProlog 1
    #else
        #define _somtEmitAttributeProlog SOMTEmitC_somtEmitAttributeProlog
    #endif /* _somtEmitAttributeProlog */
#endif /* SOMGD_somtEmitAttributeProlog */

/*
 * New Method: somtEmitAttribute
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitAttribute(SOMTEmitC somSelf, 
		SOMTAttributeEntryC att);
typedef somTP_SOMTEmitC_somtEmitAttribute *somTD_SOMTEmitC_somtEmitAttribute;
#define somMD_SOMTEmitC_somtEmitAttribute "::SOMTEmitC::somtEmitAttribute"
#define SOMTEmitC_somtEmitAttribute(somSelf,att) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitAttribute) \
	(somSelf,att))
#ifndef SOMGD_somtEmitAttribute
    #if (defined(_somtEmitAttribute) || defined(__somtEmitAttribute))
        #undef _somtEmitAttribute
        #undef __somtEmitAttribute
        #define SOMGD_somtEmitAttribute 1
    #else
        #define _somtEmitAttribute SOMTEmitC_somtEmitAttribute
    #endif /* _somtEmitAttribute */
#endif /* SOMGD_somtEmitAttribute */

/*
 * New Method: somtEmitAttributeEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitAttributeEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitAttributeEpilog *somTD_SOMTEmitC_somtEmitAttributeEpilog;
#define somMD_SOMTEmitC_somtEmitAttributeEpilog "::SOMTEmitC::somtEmitAttributeEpilog"
#define SOMTEmitC_somtEmitAttributeEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitAttributeEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitAttributeEpilog
    #if (defined(_somtEmitAttributeEpilog) || defined(__somtEmitAttributeEpilog))
        #undef _somtEmitAttributeEpilog
        #undef __somtEmitAttributeEpilog
        #define SOMGD_somtEmitAttributeEpilog 1
    #else
        #define _somtEmitAttributeEpilog SOMTEmitC_somtEmitAttributeEpilog
    #endif /* _somtEmitAttributeEpilog */
#endif /* SOMGD_somtEmitAttributeEpilog */

/*
 * New Method: somtEmitConstantProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitConstantProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitConstantProlog *somTD_SOMTEmitC_somtEmitConstantProlog;
#define somMD_SOMTEmitC_somtEmitConstantProlog "::SOMTEmitC::somtEmitConstantProlog"
#define SOMTEmitC_somtEmitConstantProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitConstantProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitConstantProlog
    #if (defined(_somtEmitConstantProlog) || defined(__somtEmitConstantProlog))
        #undef _somtEmitConstantProlog
        #undef __somtEmitConstantProlog
        #define SOMGD_somtEmitConstantProlog 1
    #else
        #define _somtEmitConstantProlog SOMTEmitC_somtEmitConstantProlog
    #endif /* _somtEmitConstantProlog */
#endif /* SOMGD_somtEmitConstantProlog */

/*
 * New Method: somtEmitConstant
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitConstant(SOMTEmitC somSelf, 
		SOMTConstEntryC con);
typedef somTP_SOMTEmitC_somtEmitConstant *somTD_SOMTEmitC_somtEmitConstant;
#define somMD_SOMTEmitC_somtEmitConstant "::SOMTEmitC::somtEmitConstant"
#define SOMTEmitC_somtEmitConstant(somSelf,con) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitConstant) \
	(somSelf,con))
#ifndef SOMGD_somtEmitConstant
    #if (defined(_somtEmitConstant) || defined(__somtEmitConstant))
        #undef _somtEmitConstant
        #undef __somtEmitConstant
        #define SOMGD_somtEmitConstant 1
    #else
        #define _somtEmitConstant SOMTEmitC_somtEmitConstant
    #endif /* _somtEmitConstant */
#endif /* SOMGD_somtEmitConstant */

/*
 * New Method: somtEmitConstantEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitConstantEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitConstantEpilog *somTD_SOMTEmitC_somtEmitConstantEpilog;
#define somMD_SOMTEmitC_somtEmitConstantEpilog "::SOMTEmitC::somtEmitConstantEpilog"
#define SOMTEmitC_somtEmitConstantEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitConstantEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitConstantEpilog
    #if (defined(_somtEmitConstantEpilog) || defined(__somtEmitConstantEpilog))
        #undef _somtEmitConstantEpilog
        #undef __somtEmitConstantEpilog
        #define SOMGD_somtEmitConstantEpilog 1
    #else
        #define _somtEmitConstantEpilog SOMTEmitC_somtEmitConstantEpilog
    #endif /* _somtEmitConstantEpilog */
#endif /* SOMGD_somtEmitConstantEpilog */

/*
 * New Method: somtEmitTypedefProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitTypedefProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitTypedefProlog *somTD_SOMTEmitC_somtEmitTypedefProlog;
#define somMD_SOMTEmitC_somtEmitTypedefProlog "::SOMTEmitC::somtEmitTypedefProlog"
#define SOMTEmitC_somtEmitTypedefProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitTypedefProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitTypedefProlog
    #if (defined(_somtEmitTypedefProlog) || defined(__somtEmitTypedefProlog))
        #undef _somtEmitTypedefProlog
        #undef __somtEmitTypedefProlog
        #define SOMGD_somtEmitTypedefProlog 1
    #else
        #define _somtEmitTypedefProlog SOMTEmitC_somtEmitTypedefProlog
    #endif /* _somtEmitTypedefProlog */
#endif /* SOMGD_somtEmitTypedefProlog */

/*
 * New Method: somtEmitTypedef
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitTypedef(SOMTEmitC somSelf, 
		SOMTTypedefEntryC td);
typedef somTP_SOMTEmitC_somtEmitTypedef *somTD_SOMTEmitC_somtEmitTypedef;
#define somMD_SOMTEmitC_somtEmitTypedef "::SOMTEmitC::somtEmitTypedef"
#define SOMTEmitC_somtEmitTypedef(somSelf,td) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitTypedef) \
	(somSelf,td))
#ifndef SOMGD_somtEmitTypedef
    #if (defined(_somtEmitTypedef) || defined(__somtEmitTypedef))
        #undef _somtEmitTypedef
        #undef __somtEmitTypedef
        #define SOMGD_somtEmitTypedef 1
    #else
        #define _somtEmitTypedef SOMTEmitC_somtEmitTypedef
    #endif /* _somtEmitTypedef */
#endif /* SOMGD_somtEmitTypedef */

/*
 * New Method: somtEmitTypedefEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitTypedefEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitTypedefEpilog *somTD_SOMTEmitC_somtEmitTypedefEpilog;
#define somMD_SOMTEmitC_somtEmitTypedefEpilog "::SOMTEmitC::somtEmitTypedefEpilog"
#define SOMTEmitC_somtEmitTypedefEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitTypedefEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitTypedefEpilog
    #if (defined(_somtEmitTypedefEpilog) || defined(__somtEmitTypedefEpilog))
        #undef _somtEmitTypedefEpilog
        #undef __somtEmitTypedefEpilog
        #define SOMGD_somtEmitTypedefEpilog 1
    #else
        #define _somtEmitTypedefEpilog SOMTEmitC_somtEmitTypedefEpilog
    #endif /* _somtEmitTypedefEpilog */
#endif /* SOMGD_somtEmitTypedefEpilog */

/*
 * New Method: somtEmitStructProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitStructProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitStructProlog *somTD_SOMTEmitC_somtEmitStructProlog;
#define somMD_SOMTEmitC_somtEmitStructProlog "::SOMTEmitC::somtEmitStructProlog"
#define SOMTEmitC_somtEmitStructProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitStructProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitStructProlog
    #if (defined(_somtEmitStructProlog) || defined(__somtEmitStructProlog))
        #undef _somtEmitStructProlog
        #undef __somtEmitStructProlog
        #define SOMGD_somtEmitStructProlog 1
    #else
        #define _somtEmitStructProlog SOMTEmitC_somtEmitStructProlog
    #endif /* _somtEmitStructProlog */
#endif /* SOMGD_somtEmitStructProlog */

/*
 * New Method: somtEmitStruct
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitStruct(SOMTEmitC somSelf, 
		SOMTStructEntryC struc);
typedef somTP_SOMTEmitC_somtEmitStruct *somTD_SOMTEmitC_somtEmitStruct;
#define somMD_SOMTEmitC_somtEmitStruct "::SOMTEmitC::somtEmitStruct"
#define SOMTEmitC_somtEmitStruct(somSelf,struc) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitStruct) \
	(somSelf,struc))
#ifndef SOMGD_somtEmitStruct
    #if (defined(_somtEmitStruct) || defined(__somtEmitStruct))
        #undef _somtEmitStruct
        #undef __somtEmitStruct
        #define SOMGD_somtEmitStruct 1
    #else
        #define _somtEmitStruct SOMTEmitC_somtEmitStruct
    #endif /* _somtEmitStruct */
#endif /* SOMGD_somtEmitStruct */

/*
 * New Method: somtEmitStructEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitStructEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitStructEpilog *somTD_SOMTEmitC_somtEmitStructEpilog;
#define somMD_SOMTEmitC_somtEmitStructEpilog "::SOMTEmitC::somtEmitStructEpilog"
#define SOMTEmitC_somtEmitStructEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitStructEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitStructEpilog
    #if (defined(_somtEmitStructEpilog) || defined(__somtEmitStructEpilog))
        #undef _somtEmitStructEpilog
        #undef __somtEmitStructEpilog
        #define SOMGD_somtEmitStructEpilog 1
    #else
        #define _somtEmitStructEpilog SOMTEmitC_somtEmitStructEpilog
    #endif /* _somtEmitStructEpilog */
#endif /* SOMGD_somtEmitStructEpilog */

/*
 * New Method: somtEmitUnionProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitUnionProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitUnionProlog *somTD_SOMTEmitC_somtEmitUnionProlog;
#define somMD_SOMTEmitC_somtEmitUnionProlog "::SOMTEmitC::somtEmitUnionProlog"
#define SOMTEmitC_somtEmitUnionProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitUnionProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitUnionProlog
    #if (defined(_somtEmitUnionProlog) || defined(__somtEmitUnionProlog))
        #undef _somtEmitUnionProlog
        #undef __somtEmitUnionProlog
        #define SOMGD_somtEmitUnionProlog 1
    #else
        #define _somtEmitUnionProlog SOMTEmitC_somtEmitUnionProlog
    #endif /* _somtEmitUnionProlog */
#endif /* SOMGD_somtEmitUnionProlog */

/*
 * New Method: somtEmitUnion
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitUnion(SOMTEmitC somSelf, 
		SOMTUnionEntryC un);
typedef somTP_SOMTEmitC_somtEmitUnion *somTD_SOMTEmitC_somtEmitUnion;
#define somMD_SOMTEmitC_somtEmitUnion "::SOMTEmitC::somtEmitUnion"
#define SOMTEmitC_somtEmitUnion(somSelf,un) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitUnion) \
	(somSelf,un))
#ifndef SOMGD_somtEmitUnion
    #if (defined(_somtEmitUnion) || defined(__somtEmitUnion))
        #undef _somtEmitUnion
        #undef __somtEmitUnion
        #define SOMGD_somtEmitUnion 1
    #else
        #define _somtEmitUnion SOMTEmitC_somtEmitUnion
    #endif /* _somtEmitUnion */
#endif /* SOMGD_somtEmitUnion */

/*
 * New Method: somtEmitUnionEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitUnionEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitUnionEpilog *somTD_SOMTEmitC_somtEmitUnionEpilog;
#define somMD_SOMTEmitC_somtEmitUnionEpilog "::SOMTEmitC::somtEmitUnionEpilog"
#define SOMTEmitC_somtEmitUnionEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitUnionEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitUnionEpilog
    #if (defined(_somtEmitUnionEpilog) || defined(__somtEmitUnionEpilog))
        #undef _somtEmitUnionEpilog
        #undef __somtEmitUnionEpilog
        #define SOMGD_somtEmitUnionEpilog 1
    #else
        #define _somtEmitUnionEpilog SOMTEmitC_somtEmitUnionEpilog
    #endif /* _somtEmitUnionEpilog */
#endif /* SOMGD_somtEmitUnionEpilog */

/*
 * New Method: somtEmitEnumProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitEnumProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitEnumProlog *somTD_SOMTEmitC_somtEmitEnumProlog;
#define somMD_SOMTEmitC_somtEmitEnumProlog "::SOMTEmitC::somtEmitEnumProlog"
#define SOMTEmitC_somtEmitEnumProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitEnumProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitEnumProlog
    #if (defined(_somtEmitEnumProlog) || defined(__somtEmitEnumProlog))
        #undef _somtEmitEnumProlog
        #undef __somtEmitEnumProlog
        #define SOMGD_somtEmitEnumProlog 1
    #else
        #define _somtEmitEnumProlog SOMTEmitC_somtEmitEnumProlog
    #endif /* _somtEmitEnumProlog */
#endif /* SOMGD_somtEmitEnumProlog */

/*
 * New Method: somtEmitEnum
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitEnum(SOMTEmitC somSelf, 
		SOMTEnumEntryC en);
typedef somTP_SOMTEmitC_somtEmitEnum *somTD_SOMTEmitC_somtEmitEnum;
#define somMD_SOMTEmitC_somtEmitEnum "::SOMTEmitC::somtEmitEnum"
#define SOMTEmitC_somtEmitEnum(somSelf,en) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitEnum) \
	(somSelf,en))
#ifndef SOMGD_somtEmitEnum
    #if (defined(_somtEmitEnum) || defined(__somtEmitEnum))
        #undef _somtEmitEnum
        #undef __somtEmitEnum
        #define SOMGD_somtEmitEnum 1
    #else
        #define _somtEmitEnum SOMTEmitC_somtEmitEnum
    #endif /* _somtEmitEnum */
#endif /* SOMGD_somtEmitEnum */

/*
 * New Method: somtEmitEnumEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitEnumEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitEnumEpilog *somTD_SOMTEmitC_somtEmitEnumEpilog;
#define somMD_SOMTEmitC_somtEmitEnumEpilog "::SOMTEmitC::somtEmitEnumEpilog"
#define SOMTEmitC_somtEmitEnumEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitEnumEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitEnumEpilog
    #if (defined(_somtEmitEnumEpilog) || defined(__somtEmitEnumEpilog))
        #undef _somtEmitEnumEpilog
        #undef __somtEmitEnumEpilog
        #define SOMGD_somtEmitEnumEpilog 1
    #else
        #define _somtEmitEnumEpilog SOMTEmitC_somtEmitEnumEpilog
    #endif /* _somtEmitEnumEpilog */
#endif /* SOMGD_somtEmitEnumEpilog */

/*
 * New Method: somtEmitInterfaceProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitInterfaceProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitInterfaceProlog *somTD_SOMTEmitC_somtEmitInterfaceProlog;
#define somMD_SOMTEmitC_somtEmitInterfaceProlog "::SOMTEmitC::somtEmitInterfaceProlog"
#define SOMTEmitC_somtEmitInterfaceProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitInterfaceProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitInterfaceProlog
    #if (defined(_somtEmitInterfaceProlog) || defined(__somtEmitInterfaceProlog))
        #undef _somtEmitInterfaceProlog
        #undef __somtEmitInterfaceProlog
        #define SOMGD_somtEmitInterfaceProlog 1
    #else
        #define _somtEmitInterfaceProlog SOMTEmitC_somtEmitInterfaceProlog
    #endif /* _somtEmitInterfaceProlog */
#endif /* SOMGD_somtEmitInterfaceProlog */

/*
 * New Method: somtEmitInterface
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitInterface(SOMTEmitC somSelf, 
		SOMTClassEntryC intfc);
typedef somTP_SOMTEmitC_somtEmitInterface *somTD_SOMTEmitC_somtEmitInterface;
#define somMD_SOMTEmitC_somtEmitInterface "::SOMTEmitC::somtEmitInterface"
#define SOMTEmitC_somtEmitInterface(somSelf,intfc) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitInterface) \
	(somSelf,intfc))
#ifndef SOMGD_somtEmitInterface
    #if (defined(_somtEmitInterface) || defined(__somtEmitInterface))
        #undef _somtEmitInterface
        #undef __somtEmitInterface
        #define SOMGD_somtEmitInterface 1
    #else
        #define _somtEmitInterface SOMTEmitC_somtEmitInterface
    #endif /* _somtEmitInterface */
#endif /* SOMGD_somtEmitInterface */

/*
 * New Method: somtEmitInterfaceEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitInterfaceEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitInterfaceEpilog *somTD_SOMTEmitC_somtEmitInterfaceEpilog;
#define somMD_SOMTEmitC_somtEmitInterfaceEpilog "::SOMTEmitC::somtEmitInterfaceEpilog"
#define SOMTEmitC_somtEmitInterfaceEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitInterfaceEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitInterfaceEpilog
    #if (defined(_somtEmitInterfaceEpilog) || defined(__somtEmitInterfaceEpilog))
        #undef _somtEmitInterfaceEpilog
        #undef __somtEmitInterfaceEpilog
        #define SOMGD_somtEmitInterfaceEpilog 1
    #else
        #define _somtEmitInterfaceEpilog SOMTEmitC_somtEmitInterfaceEpilog
    #endif /* _somtEmitInterfaceEpilog */
#endif /* SOMGD_somtEmitInterfaceEpilog */

/*
 * New Method: somtEmitModuleProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitModuleProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitModuleProlog *somTD_SOMTEmitC_somtEmitModuleProlog;
#define somMD_SOMTEmitC_somtEmitModuleProlog "::SOMTEmitC::somtEmitModuleProlog"
#define SOMTEmitC_somtEmitModuleProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitModuleProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitModuleProlog
    #if (defined(_somtEmitModuleProlog) || defined(__somtEmitModuleProlog))
        #undef _somtEmitModuleProlog
        #undef __somtEmitModuleProlog
        #define SOMGD_somtEmitModuleProlog 1
    #else
        #define _somtEmitModuleProlog SOMTEmitC_somtEmitModuleProlog
    #endif /* _somtEmitModuleProlog */
#endif /* SOMGD_somtEmitModuleProlog */

/*
 * New Method: somtEmitModule
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitModule(SOMTEmitC somSelf, 
		SOMTModuleEntryC mod);
typedef somTP_SOMTEmitC_somtEmitModule *somTD_SOMTEmitC_somtEmitModule;
#define somMD_SOMTEmitC_somtEmitModule "::SOMTEmitC::somtEmitModule"
#define SOMTEmitC_somtEmitModule(somSelf,mod) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitModule) \
	(somSelf,mod))
#ifndef SOMGD_somtEmitModule
    #if (defined(_somtEmitModule) || defined(__somtEmitModule))
        #undef _somtEmitModule
        #undef __somtEmitModule
        #define SOMGD_somtEmitModule 1
    #else
        #define _somtEmitModule SOMTEmitC_somtEmitModule
    #endif /* _somtEmitModule */
#endif /* SOMGD_somtEmitModule */

/*
 * New Method: somtEmitModuleEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitModuleEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitModuleEpilog *somTD_SOMTEmitC_somtEmitModuleEpilog;
#define somMD_SOMTEmitC_somtEmitModuleEpilog "::SOMTEmitC::somtEmitModuleEpilog"
#define SOMTEmitC_somtEmitModuleEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitModuleEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitModuleEpilog
    #if (defined(_somtEmitModuleEpilog) || defined(__somtEmitModuleEpilog))
        #undef _somtEmitModuleEpilog
        #undef __somtEmitModuleEpilog
        #define SOMGD_somtEmitModuleEpilog 1
    #else
        #define _somtEmitModuleEpilog SOMTEmitC_somtEmitModuleEpilog
    #endif /* _somtEmitModuleEpilog */
#endif /* SOMGD_somtEmitModuleEpilog */

/*
 * New Method: somtEmitMethodsProlog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitMethodsProlog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitMethodsProlog *somTD_SOMTEmitC_somtEmitMethodsProlog;
#define somMD_SOMTEmitC_somtEmitMethodsProlog "::SOMTEmitC::somtEmitMethodsProlog"
#define SOMTEmitC_somtEmitMethodsProlog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitMethodsProlog) \
	(somSelf))
#ifndef SOMGD_somtEmitMethodsProlog
    #if (defined(_somtEmitMethodsProlog) || defined(__somtEmitMethodsProlog))
        #undef _somtEmitMethodsProlog
        #undef __somtEmitMethodsProlog
        #define SOMGD_somtEmitMethodsProlog 1
    #else
        #define _somtEmitMethodsProlog SOMTEmitC_somtEmitMethodsProlog
    #endif /* _somtEmitMethodsProlog */
#endif /* SOMGD_somtEmitMethodsProlog */

/*
 * New Method: somtEmitMethods
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitMethods(SOMTEmitC somSelf, 
		SOMTMethodEntryC method);
typedef somTP_SOMTEmitC_somtEmitMethods *somTD_SOMTEmitC_somtEmitMethods;
#define somMD_SOMTEmitC_somtEmitMethods "::SOMTEmitC::somtEmitMethods"
#define SOMTEmitC_somtEmitMethods(somSelf,method) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitMethods) \
	(somSelf,method))
#ifndef SOMGD_somtEmitMethods
    #if (defined(_somtEmitMethods) || defined(__somtEmitMethods))
        #undef _somtEmitMethods
        #undef __somtEmitMethods
        #define SOMGD_somtEmitMethods 1
    #else
        #define _somtEmitMethods SOMTEmitC_somtEmitMethods
    #endif /* _somtEmitMethods */
#endif /* SOMGD_somtEmitMethods */

/*
 * New Method: somtEmitMethodsEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitMethodsEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitMethodsEpilog *somTD_SOMTEmitC_somtEmitMethodsEpilog;
#define somMD_SOMTEmitC_somtEmitMethodsEpilog "::SOMTEmitC::somtEmitMethodsEpilog"
#define SOMTEmitC_somtEmitMethodsEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitMethodsEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitMethodsEpilog
    #if (defined(_somtEmitMethodsEpilog) || defined(__somtEmitMethodsEpilog))
        #undef _somtEmitMethodsEpilog
        #undef __somtEmitMethodsEpilog
        #define SOMGD_somtEmitMethodsEpilog 1
    #else
        #define _somtEmitMethodsEpilog SOMTEmitC_somtEmitMethodsEpilog
    #endif /* _somtEmitMethodsEpilog */
#endif /* SOMGD_somtEmitMethodsEpilog */

/*
 * New Method: somtEmitMethod
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitMethod(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtEmitMethod *somTD_SOMTEmitC_somtEmitMethod;
#define somMD_SOMTEmitC_somtEmitMethod "::SOMTEmitC::somtEmitMethod"
#define SOMTEmitC_somtEmitMethod(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitMethod) \
	(somSelf,entry))
#ifndef SOMGD_somtEmitMethod
    #if (defined(_somtEmitMethod) || defined(__somtEmitMethod))
        #undef _somtEmitMethod
        #undef __somtEmitMethod
        #define SOMGD_somtEmitMethod 1
    #else
        #define _somtEmitMethod SOMTEmitC_somtEmitMethod
    #endif /* _somtEmitMethod */
#endif /* SOMGD_somtEmitMethod */

/*
 * New Method: somtEmitEpilog
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitEpilog(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtEmitEpilog *somTD_SOMTEmitC_somtEmitEpilog;
#define somMD_SOMTEmitC_somtEmitEpilog "::SOMTEmitC::somtEmitEpilog"
#define SOMTEmitC_somtEmitEpilog(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitEpilog) \
	(somSelf))
#ifndef SOMGD_somtEmitEpilog
    #if (defined(_somtEmitEpilog) || defined(__somtEmitEpilog))
        #undef _somtEmitEpilog
        #undef __somtEmitEpilog
        #define SOMGD_somtEmitEpilog 1
    #else
        #define _somtEmitEpilog SOMTEmitC_somtEmitEpilog
    #endif /* _somtEmitEpilog */
#endif /* SOMGD_somtEmitEpilog */

/*
 * New Method: somtScanBases
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanBases(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanBases *somTD_SOMTEmitC_somtScanBases;
#define somMD_SOMTEmitC_somtScanBases "::SOMTEmitC::somtScanBases"
#define SOMTEmitC_somtScanBases(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanBases) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanBases
    #if (defined(_somtScanBases) || defined(__somtScanBases))
        #undef _somtScanBases
        #undef __somtScanBases
        #define SOMGD_somtScanBases 1
    #else
        #define _somtScanBases SOMTEmitC_somtScanBases
    #endif /* _somtScanBases */
#endif /* SOMGD_somtScanBases */

/*
 * New Method: somtCheckVisibility
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtCheckVisibility(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtCheckVisibility *somTD_SOMTEmitC_somtCheckVisibility;
/*
 *  Return 1 (true) if <entry> should be visible in the current
 *  target file.  This method is used by each of the following filter
 *  methods that are concerned with visibility.
 *  The default rule for visibility is:
 *    only private methods are visible in private target files,
 *    only public methods are visibile in public target files,
 *    all methods are visibile in implementation or <somtAllE> target
 *    files.
 */
#define somMD_SOMTEmitC_somtCheckVisibility "::SOMTEmitC::somtCheckVisibility"
#define SOMTEmitC_somtCheckVisibility(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtCheckVisibility) \
	(somSelf,entry))
#ifndef SOMGD_somtCheckVisibility
    #if (defined(_somtCheckVisibility) || defined(__somtCheckVisibility))
        #undef _somtCheckVisibility
        #undef __somtCheckVisibility
        #define SOMGD_somtCheckVisibility 1
    #else
        #define _somtCheckVisibility SOMTEmitC_somtCheckVisibility
    #endif /* _somtCheckVisibility */
#endif /* SOMGD_somtCheckVisibility */

/*
 * New Method: somtNew
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtNew(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtNew *somTD_SOMTEmitC_somtNew;
/*
 *  Returns 1 (true) if <entry> is a method introduced by the target
 *  class and its visibility matches <somtTargetType> (somtImplementationE
 *  matches both private and public)
 */
#define somMD_SOMTEmitC_somtNew "::SOMTEmitC::somtNew"
#define SOMTEmitC_somtNew(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtNew) \
	(somSelf,entry))
#ifndef SOMGD_somtNew
    #if (defined(_somtNew) || defined(__somtNew))
        #undef _somtNew
        #undef __somtNew
        #define SOMGD_somtNew 1
    #else
        #define _somtNew SOMTEmitC_somtNew
    #endif /* _somtNew */
#endif /* SOMGD_somtNew */

/*
 * New Method: somtImplemented
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtImplemented(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtImplemented *somTD_SOMTEmitC_somtImplemented;
/*
 *  Returns 1 (true) if <entry> is a method introduced or overridden
 *  by the target class and its visibility matches <somtTargetType>
 *  (somtImplementationE matches both private and public)
 */
#define somMD_SOMTEmitC_somtImplemented "::SOMTEmitC::somtImplemented"
#define SOMTEmitC_somtImplemented(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtImplemented) \
	(somSelf,entry))
#ifndef SOMGD_somtImplemented
    #if (defined(_somtImplemented) || defined(__somtImplemented))
        #undef _somtImplemented
        #undef __somtImplemented
        #define SOMGD_somtImplemented 1
    #else
        #define _somtImplemented SOMTEmitC_somtImplemented
    #endif /* _somtImplemented */
#endif /* SOMGD_somtImplemented */

/*
 * New Method: somtOverridden
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtOverridden(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtOverridden *somTD_SOMTEmitC_somtOverridden;
/*
 *  Returns 1 (true) if <entry> is an overridding method of the target class
 *  and its visibility matches <somtTargetType> (somtImplementationE
 *  matches both private and public)
 */
#define somMD_SOMTEmitC_somtOverridden "::SOMTEmitC::somtOverridden"
#define SOMTEmitC_somtOverridden(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtOverridden) \
	(somSelf,entry))
#ifndef SOMGD_somtOverridden
    #if (defined(_somtOverridden) || defined(__somtOverridden))
        #undef _somtOverridden
        #undef __somtOverridden
        #define SOMGD_somtOverridden 1
    #else
        #define _somtOverridden SOMTEmitC_somtOverridden
    #endif /* _somtOverridden */
#endif /* SOMGD_somtOverridden */

/*
 * New Method: somtInherited
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtInherited(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtInherited *somTD_SOMTEmitC_somtInherited;
/*
 *  Returns 1 (true) if <entry> is inherited
 *  by the target class and its visibility matches <somtTargetType>
 *  (somtImplementationE matches both private and public)
 */
#define somMD_SOMTEmitC_somtInherited "::SOMTEmitC::somtInherited"
#define SOMTEmitC_somtInherited(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtInherited) \
	(somSelf,entry))
#ifndef SOMGD_somtInherited
    #if (defined(_somtInherited) || defined(__somtInherited))
        #undef _somtInherited
        #undef __somtInherited
        #define SOMGD_somtInherited 1
    #else
        #define _somtInherited SOMTEmitC_somtInherited
    #endif /* _somtInherited */
#endif /* SOMGD_somtInherited */

/*
 * New Method: somtAllVisible
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtAllVisible(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtAllVisible *somTD_SOMTEmitC_somtAllVisible;
/*
 *  Returns 1 (true) if <entry> is supported by the target class and
 *  its visibility matches <somtTargetType> (somtImplementationE
 *  matches both private and public)
 */
#define somMD_SOMTEmitC_somtAllVisible "::SOMTEmitC::somtAllVisible"
#define SOMTEmitC_somtAllVisible(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtAllVisible) \
	(somSelf,entry))
#ifndef SOMGD_somtAllVisible
    #if (defined(_somtAllVisible) || defined(__somtAllVisible))
        #undef _somtAllVisible
        #undef __somtAllVisible
        #define SOMGD_somtAllVisible 1
    #else
        #define _somtAllVisible SOMTEmitC_somtAllVisible
    #endif /* _somtAllVisible */
#endif /* SOMGD_somtAllVisible */

/*
 * New Method: somtAll
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtAll(SOMTEmitC somSelf, 
		SOMTMethodEntryC entry);
typedef somTP_SOMTEmitC_somtAll *somTD_SOMTEmitC_somtAll;
/*
 *  Returns 1 (true) if <entry> is supported by the target class.
 */
#define somMD_SOMTEmitC_somtAll "::SOMTEmitC::somtAll"
#define SOMTEmitC_somtAll(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtAll) \
	(somSelf,entry))
#ifndef SOMGD_somtAll
    #if (defined(_somtAll) || defined(__somtAll))
        #undef _somtAll
        #undef __somtAll
        #define SOMGD_somtAll 1
    #else
        #define _somtAll SOMTEmitC_somtAll
    #endif /* _somtAll */
#endif /* SOMGD_somtAll */

/*
 * New Method: somtNewNoProc
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtNewNoProc(SOMTEmitC somSelf, 
		SOMTEntryC entry);
typedef somTP_SOMTEmitC_somtNewNoProc *somTD_SOMTEmitC_somtNewNoProc;
/*
 *  Returns 1 (true) if somtNew does and the method
 *  IS NOT a direct call Procedure.
 */
#define somMD_SOMTEmitC_somtNewNoProc "::SOMTEmitC::somtNewNoProc"
#define SOMTEmitC_somtNewNoProc(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtNewNoProc) \
	(somSelf,entry))
#ifndef SOMGD_somtNewNoProc
    #if (defined(_somtNewNoProc) || defined(__somtNewNoProc))
        #undef _somtNewNoProc
        #undef __somtNewNoProc
        #define SOMGD_somtNewNoProc 1
    #else
        #define _somtNewNoProc SOMTEmitC_somtNewNoProc
    #endif /* _somtNewNoProc */
#endif /* SOMGD_somtNewNoProc */

/*
 * New Method: somtPrivOrPub
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtPrivOrPub(SOMTEmitC somSelf, 
		SOMTEntryC entry);
typedef somTP_SOMTEmitC_somtPrivOrPub *somTD_SOMTEmitC_somtPrivOrPub;
/*
 *  Returns 1 (true) if entry is Private or Public.
 */
#define somMD_SOMTEmitC_somtPrivOrPub "::SOMTEmitC::somtPrivOrPub"
#define SOMTEmitC_somtPrivOrPub(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtPrivOrPub) \
	(somSelf,entry))
#ifndef SOMGD_somtPrivOrPub
    #if (defined(_somtPrivOrPub) || defined(__somtPrivOrPub))
        #undef _somtPrivOrPub
        #undef __somtPrivOrPub
        #define SOMGD_somtPrivOrPub 1
    #else
        #define _somtPrivOrPub SOMTEmitC_somtPrivOrPub
    #endif /* _somtPrivOrPub */
#endif /* SOMGD_somtPrivOrPub */

/*
 * New Method: somtNewProc
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtNewProc(SOMTEmitC somSelf, 
		SOMTEntryC entry);
typedef somTP_SOMTEmitC_somtNewProc *somTD_SOMTEmitC_somtNewProc;
/*
 *  Returns 1 (true) if somtNew does and the method
 *  IS a direct call Procedure.
 */
#define somMD_SOMTEmitC_somtNewProc "::SOMTEmitC::somtNewProc"
#define SOMTEmitC_somtNewProc(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtNewProc) \
	(somSelf,entry))
#ifndef SOMGD_somtNewProc
    #if (defined(_somtNewProc) || defined(__somtNewProc))
        #undef _somtNewProc
        #undef __somtNewProc
        #define SOMGD_somtNewProc 1
    #else
        #define _somtNewProc SOMTEmitC_somtNewProc
    #endif /* _somtNewProc */
#endif /* SOMGD_somtNewProc */

/*
 * New Method: somtLink
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtLink(SOMTEmitC somSelf, 
		SOMTEntryC entry);
typedef somTP_SOMTEmitC_somtLink *somTD_SOMTEmitC_somtLink;
/*
 *  Returns 1 (true) if "nolink" is not set.
 */
#define somMD_SOMTEmitC_somtLink "::SOMTEmitC::somtLink"
#define SOMTEmitC_somtLink(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtLink) \
	(somSelf,entry))
#ifndef SOMGD_somtLink
    #if (defined(_somtLink) || defined(__somtLink))
        #undef _somtLink
        #undef __somtLink
        #define SOMGD_somtLink 1
    #else
        #define _somtLink SOMTEmitC_somtLink
    #endif /* _somtLink */
#endif /* SOMGD_somtLink */

/*
 * New Method: somtVA
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtVA(SOMTEmitC somSelf, 
		SOMTEntryC entry);
typedef somTP_SOMTEmitC_somtVA *somTD_SOMTEmitC_somtVA;
/*
 *  Returns 1 (true) if entry is a VarArgs method.
 */
#define somMD_SOMTEmitC_somtVA "::SOMTEmitC::somtVA"
#define SOMTEmitC_somtVA(somSelf,entry) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtVA) \
	(somSelf,entry))
#ifndef SOMGD_somtVA
    #if (defined(_somtVA) || defined(__somtVA))
        #undef _somtVA
        #undef __somtVA
        #define SOMGD_somtVA 1
    #else
        #define _somtVA SOMTEmitC_somtVA
    #endif /* _somtVA */
#endif /* SOMGD_somtVA */

/*
 * New Method: somtScanMethods
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanMethods(SOMTEmitC somSelf, 
		string filter, 
		string prolog, 
		string each, 
		string epilog, 
		boolean forceProlog);
typedef somTP_SOMTEmitC_somtScanMethods *somTD_SOMTEmitC_somtScanMethods;
/*
 *  Will only call <each> on methods accepted by <filter>.
 *  If <forceProlog> is not true then the prolog and epilog emiters
 *  will be called only if there is at least one method that passes
 *  the filter.
 */
#define somMD_SOMTEmitC_somtScanMethods "::SOMTEmitC::somtScanMethods"
#define SOMTEmitC_somtScanMethods(somSelf,filter,prolog,each,epilog,forceProlog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanMethods) \
	(somSelf,filter,prolog,each,epilog,forceProlog))
#ifndef SOMGD_somtScanMethods
    #if (defined(_somtScanMethods) || defined(__somtScanMethods))
        #undef _somtScanMethods
        #undef __somtScanMethods
        #define SOMGD_somtScanMethods 1
    #else
        #define _somtScanMethods SOMTEmitC_somtScanMethods
    #endif /* _somtScanMethods */
#endif /* SOMGD_somtScanMethods */

/*
 * New Method: somtScanConstants
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanConstants(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanConstants *somTD_SOMTEmitC_somtScanConstants;
#define somMD_SOMTEmitC_somtScanConstants "::SOMTEmitC::somtScanConstants"
#define SOMTEmitC_somtScanConstants(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanConstants) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanConstants
    #if (defined(_somtScanConstants) || defined(__somtScanConstants))
        #undef _somtScanConstants
        #undef __somtScanConstants
        #define SOMGD_somtScanConstants 1
    #else
        #define _somtScanConstants SOMTEmitC_somtScanConstants
    #endif /* _somtScanConstants */
#endif /* SOMGD_somtScanConstants */

/*
 * New Method: somtScanTypedefs
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanTypedefs(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanTypedefs *somTD_SOMTEmitC_somtScanTypedefs;
#define somMD_SOMTEmitC_somtScanTypedefs "::SOMTEmitC::somtScanTypedefs"
#define SOMTEmitC_somtScanTypedefs(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanTypedefs) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanTypedefs
    #if (defined(_somtScanTypedefs) || defined(__somtScanTypedefs))
        #undef _somtScanTypedefs
        #undef __somtScanTypedefs
        #define SOMGD_somtScanTypedefs 1
    #else
        #define _somtScanTypedefs SOMTEmitC_somtScanTypedefs
    #endif /* _somtScanTypedefs */
#endif /* SOMGD_somtScanTypedefs */

/*
 * New Method: somtScanStructs
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanStructs(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanStructs *somTD_SOMTEmitC_somtScanStructs;
#define somMD_SOMTEmitC_somtScanStructs "::SOMTEmitC::somtScanStructs"
#define SOMTEmitC_somtScanStructs(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanStructs) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanStructs
    #if (defined(_somtScanStructs) || defined(__somtScanStructs))
        #undef _somtScanStructs
        #undef __somtScanStructs
        #define SOMGD_somtScanStructs 1
    #else
        #define _somtScanStructs SOMTEmitC_somtScanStructs
    #endif /* _somtScanStructs */
#endif /* SOMGD_somtScanStructs */

/*
 * New Method: somtScanUnions
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanUnions(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanUnions *somTD_SOMTEmitC_somtScanUnions;
#define somMD_SOMTEmitC_somtScanUnions "::SOMTEmitC::somtScanUnions"
#define SOMTEmitC_somtScanUnions(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanUnions) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanUnions
    #if (defined(_somtScanUnions) || defined(__somtScanUnions))
        #undef _somtScanUnions
        #undef __somtScanUnions
        #define SOMGD_somtScanUnions 1
    #else
        #define _somtScanUnions SOMTEmitC_somtScanUnions
    #endif /* _somtScanUnions */
#endif /* SOMGD_somtScanUnions */

/*
 * New Method: somtScanEnums
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanEnums(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanEnums *somTD_SOMTEmitC_somtScanEnums;
#define somMD_SOMTEmitC_somtScanEnums "::SOMTEmitC::somtScanEnums"
#define SOMTEmitC_somtScanEnums(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanEnums) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanEnums
    #if (defined(_somtScanEnums) || defined(__somtScanEnums))
        #undef _somtScanEnums
        #undef __somtScanEnums
        #define SOMGD_somtScanEnums 1
    #else
        #define _somtScanEnums SOMTEmitC_somtScanEnums
    #endif /* _somtScanEnums */
#endif /* SOMGD_somtScanEnums */

/*
 * New Method: somtScanData
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanData(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanData *somTD_SOMTEmitC_somtScanData;
#define somMD_SOMTEmitC_somtScanData "::SOMTEmitC::somtScanData"
#define SOMTEmitC_somtScanData(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanData) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanData
    #if (defined(_somtScanData) || defined(__somtScanData))
        #undef _somtScanData
        #undef __somtScanData
        #define SOMGD_somtScanData 1
    #else
        #define _somtScanData SOMTEmitC_somtScanData
    #endif /* _somtScanData */
#endif /* SOMGD_somtScanData */

/*
 * New Method: somtScanAttributes
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanAttributes(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanAttributes *somTD_SOMTEmitC_somtScanAttributes;
#define somMD_SOMTEmitC_somtScanAttributes "::SOMTEmitC::somtScanAttributes"
#define SOMTEmitC_somtScanAttributes(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanAttributes) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanAttributes
    #if (defined(_somtScanAttributes) || defined(__somtScanAttributes))
        #undef _somtScanAttributes
        #undef __somtScanAttributes
        #define SOMGD_somtScanAttributes 1
    #else
        #define _somtScanAttributes SOMTEmitC_somtScanAttributes
    #endif /* _somtScanAttributes */
#endif /* SOMGD_somtScanAttributes */

/*
 * New Method: somtScanInterfaces
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanInterfaces(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanInterfaces *somTD_SOMTEmitC_somtScanInterfaces;
#define somMD_SOMTEmitC_somtScanInterfaces "::SOMTEmitC::somtScanInterfaces"
#define SOMTEmitC_somtScanInterfaces(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanInterfaces) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanInterfaces
    #if (defined(_somtScanInterfaces) || defined(__somtScanInterfaces))
        #undef _somtScanInterfaces
        #undef __somtScanInterfaces
        #define SOMGD_somtScanInterfaces 1
    #else
        #define _somtScanInterfaces SOMTEmitC_somtScanInterfaces
    #endif /* _somtScanInterfaces */
#endif /* SOMGD_somtScanInterfaces */

/*
 * New Method: somtScanModules
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanModules(SOMTEmitC somSelf, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanModules *somTD_SOMTEmitC_somtScanModules;
#define somMD_SOMTEmitC_somtScanModules "::SOMTEmitC::somtScanModules"
#define SOMTEmitC_somtScanModules(somSelf,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanModules) \
	(somSelf,prolog,each,epilog))
#ifndef SOMGD_somtScanModules
    #if (defined(_somtScanModules) || defined(__somtScanModules))
        #undef _somtScanModules
        #undef __somtScanModules
        #define SOMGD_somtScanModules 1
    #else
        #define _somtScanModules SOMTEmitC_somtScanModules
    #endif /* _somtScanModules */
#endif /* SOMGD_somtScanModules */

/*
 * New Method: somtScanPassthru
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanPassthru(SOMTEmitC somSelf, 
		boolean before, 
		string prolog, 
		string each, 
		string epilog);
typedef somTP_SOMTEmitC_somtScanPassthru *somTD_SOMTEmitC_somtScanPassthru;
#define somMD_SOMTEmitC_somtScanPassthru "::SOMTEmitC::somtScanPassthru"
#define SOMTEmitC_somtScanPassthru(somSelf,before,prolog,each,epilog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanPassthru) \
	(somSelf,before,prolog,each,epilog))
#ifndef SOMGD_somtScanPassthru
    #if (defined(_somtScanPassthru) || defined(__somtScanPassthru))
        #undef _somtScanPassthru
        #undef __somtScanPassthru
        #define SOMGD_somtScanPassthru 1
    #else
        #define _somtScanPassthru SOMTEmitC_somtScanPassthru
    #endif /* _somtScanPassthru */
#endif /* SOMGD_somtScanPassthru */

/*
 * New Method: somtEmitFullPassthru
 */
typedef void   SOMLINK somTP_SOMTEmitC_somtEmitFullPassthru(SOMTEmitC somSelf, 
		boolean before, 
		string language);
typedef somTP_SOMTEmitC_somtEmitFullPassthru *somTD_SOMTEmitC_somtEmitFullPassthru;
/*
 *  Emits each passthru section defined for the language and targetType,
 *  and the result of the somtIsBeforePassthru method is equal to the
 *  before parameter.  (before = 1(true), or before = 0(false), i.e. after.)
 */
#define somMD_SOMTEmitC_somtEmitFullPassthru "::SOMTEmitC::somtEmitFullPassthru"
#define SOMTEmitC_somtEmitFullPassthru(somSelf,before,language) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtEmitFullPassthru) \
	(somSelf,before,language))
#ifndef SOMGD_somtEmitFullPassthru
    #if (defined(_somtEmitFullPassthru) || defined(__somtEmitFullPassthru))
        #undef _somtEmitFullPassthru
        #undef __somtEmitFullPassthru
        #define SOMGD_somtEmitFullPassthru 1
    #else
        #define _somtEmitFullPassthru SOMTEmitC_somtEmitFullPassthru
    #endif /* _somtEmitFullPassthru */
#endif /* SOMGD_somtEmitFullPassthru */

/*
 * New Method: somtScanDataF
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanDataF(SOMTEmitC somSelf, 
		string filter, 
		string prolog, 
		string each, 
		string epilog, 
		boolean forceProlog);
typedef somTP_SOMTEmitC_somtScanDataF *somTD_SOMTEmitC_somtScanDataF;
/*
 *  This method is like somtScanData but it also provides a paramater
 *  for a filter method.
 */
#define somMD_SOMTEmitC_somtScanDataF "::SOMTEmitC::somtScanDataF"
#define SOMTEmitC_somtScanDataF(somSelf,filter,prolog,each,epilog,forceProlog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanDataF) \
	(somSelf,filter,prolog,each,epilog,forceProlog))
#ifndef SOMGD_somtScanDataF
    #if (defined(_somtScanDataF) || defined(__somtScanDataF))
        #undef _somtScanDataF
        #undef __somtScanDataF
        #define SOMGD_somtScanDataF 1
    #else
        #define _somtScanDataF SOMTEmitC_somtScanDataF
    #endif /* _somtScanDataF */
#endif /* SOMGD_somtScanDataF */

/*
 * New Method: somtScanBasesF
 */
typedef boolean   SOMLINK somTP_SOMTEmitC_somtScanBasesF(SOMTEmitC somSelf, 
		string filter, 
		string prolog, 
		string each, 
		string epilog, 
		boolean forceProlog);
typedef somTP_SOMTEmitC_somtScanBasesF *somTD_SOMTEmitC_somtScanBasesF;
/*
 *  This method is like somtScanBases but it also provides a paramater
 *  for a filter method.
 */
#define somMD_SOMTEmitC_somtScanBasesF "::SOMTEmitC::somtScanBasesF"
#define SOMTEmitC_somtScanBasesF(somSelf,filter,prolog,each,epilog,forceProlog) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtScanBasesF) \
	(somSelf,filter,prolog,each,epilog,forceProlog))
#ifndef SOMGD_somtScanBasesF
    #if (defined(_somtScanBasesF) || defined(__somtScanBasesF))
        #undef _somtScanBasesF
        #undef __somtScanBasesF
        #define SOMGD_somtScanBasesF 1
    #else
        #define _somtScanBasesF SOMTEmitC_somtScanBasesF
    #endif /* _somtScanBasesF */
#endif /* SOMGD_somtScanBasesF */

/*
 * New Method: somtGetGlobalModifierValue
 */
typedef string   SOMLINK somTP_SOMTEmitC_somtGetGlobalModifierValue(SOMTEmitC somSelf, 
		string modifierName);
typedef somTP_SOMTEmitC_somtGetGlobalModifierValue *somTD_SOMTEmitC_somtGetGlobalModifierValue;
/*
 *  Returns the value of the specified global modifier.
 *  Global modifiers are specified when the SOM Compiler is invoked,
 *  via the "-a" option.  For example,
 *                        sc -a"foo=bar"  file.idl
 *  specifies to the SOM Compiler and the emitters being run that
 *  the global modifier "foo" has the value "bar."
 *  Values of global modifiers are transient; they last only for the
 *  duration of the compile for which they were specified.
 *  If a modifier is specified in the "sc" command with no value,
 *  as in
 *                        sc -afoo file.idl
 *  then the result of this method will be non-NULL.
 *  If no such modifier is specified, then the result is NULL.
 */
#define somMD_SOMTEmitC_somtGetGlobalModifierValue "::SOMTEmitC::somtGetGlobalModifierValue"
#define SOMTEmitC_somtGetGlobalModifierValue(somSelf,modifierName) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtGetGlobalModifierValue) \
	(somSelf,modifierName))
#ifndef SOMGD_somtGetGlobalModifierValue
    #if (defined(_somtGetGlobalModifierValue) || defined(__somtGetGlobalModifierValue))
        #undef _somtGetGlobalModifierValue
        #undef __somtGetGlobalModifierValue
        #define SOMGD_somtGetGlobalModifierValue 1
    #else
        #define _somtGetGlobalModifierValue SOMTEmitC_somtGetGlobalModifierValue
    #endif /* _somtGetGlobalModifierValue */
#endif /* SOMGD_somtGetGlobalModifierValue */

/*
 * New Method: somtGetFirstGlobalDefinition
 */
typedef SOMTEntryC   SOMLINK somTP_SOMTEmitC_somtGetFirstGlobalDefinition(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtGetFirstGlobalDefinition *somTD_SOMTEmitC_somtGetFirstGlobalDefinition;
/*
 *  Returns the first type or constant definition that is not
 *  associated with any interface or module.
 *  These global definitions must be surrounded by the somemittypes
 *  pragmas for them to be visible via this method.
 *  E.g., #pragma somemittypes on
 *        ....
 *        #pragma someemittypes off
 *  The list of global definitions returned by this method and
 *  the somtGetNextGlobalDefinition method may include entries
 *  for forward declarations as well as typedefs and constants.
 *  Global structs and unions are also included in the list.
 */
#define somMD_SOMTEmitC_somtGetFirstGlobalDefinition "::SOMTEmitC::somtGetFirstGlobalDefinition"
#define SOMTEmitC_somtGetFirstGlobalDefinition(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtGetFirstGlobalDefinition) \
	(somSelf))
#ifndef SOMGD_somtGetFirstGlobalDefinition
    #if (defined(_somtGetFirstGlobalDefinition) || defined(__somtGetFirstGlobalDefinition))
        #undef _somtGetFirstGlobalDefinition
        #undef __somtGetFirstGlobalDefinition
        #define SOMGD_somtGetFirstGlobalDefinition 1
    #else
        #define _somtGetFirstGlobalDefinition SOMTEmitC_somtGetFirstGlobalDefinition
    #endif /* _somtGetFirstGlobalDefinition */
#endif /* SOMGD_somtGetFirstGlobalDefinition */

/*
 * New Method: somtGetNextGlobalDefinition
 */
typedef SOMTEntryC   SOMLINK somTP_SOMTEmitC_somtGetNextGlobalDefinition(SOMTEmitC somSelf);
typedef somTP_SOMTEmitC_somtGetNextGlobalDefinition *somTD_SOMTEmitC_somtGetNextGlobalDefinition;
/*
 *  Returns the next type or constant definition that is not
 *  associated with any interface or module, relative to a
 *  previous call to somtGetFirstGlobalDefinition or
 *  somtGetNextGlobalDefinition.
 */
#define somMD_SOMTEmitC_somtGetNextGlobalDefinition "::SOMTEmitC::somtGetNextGlobalDefinition"
#define SOMTEmitC_somtGetNextGlobalDefinition(somSelf) \
    (SOM_Resolve(somSelf, SOMTEmitC, somtGetNextGlobalDefinition) \
	(somSelf))
#ifndef SOMGD_somtGetNextGlobalDefinition
    #if (defined(_somtGetNextGlobalDefinition) || defined(__somtGetNextGlobalDefinition))
        #undef _somtGetNextGlobalDefinition
        #undef __somtGetNextGlobalDefinition
        #define SOMGD_somtGetNextGlobalDefinition 1
    #else
        #define _somtGetNextGlobalDefinition SOMTEmitC_somtGetNextGlobalDefinition
    #endif /* _somtGetNextGlobalDefinition */
#endif /* SOMGD_somtGetNextGlobalDefinition */

/*
 * Full Names for Inherited Methods
 */
/* overridden methods */
#define SOMTEmitC_somInit SOMObject_somInit
#define SOMTEmitC_somUninit SOMObject_somUninit
#define SOMTEmitC_somDumpSelfInt SOMObject_somDumpSelfInt

#ifndef SOM_DONT_USE_INHERITED_MACROS
#define SOMTEmitC_somDefaultInit SOMObject_somDefaultInit
#define SOMTEmitC_somDestruct SOMObject_somDestruct
#define SOMTEmitC_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define SOMTEmitC_somDefaultAssign SOMObject_somDefaultAssign
#define SOMTEmitC_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define SOMTEmitC_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define SOMTEmitC_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define SOMTEmitC_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define SOMTEmitC_somDefaultVAssign SOMObject_somDefaultVAssign
#define SOMTEmitC_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define SOMTEmitC_somFree SOMObject_somFree
#define SOMTEmitC_somGetClass SOMObject_somGetClass
#define SOMTEmitC_somGetClassName SOMObject_somGetClassName
#define SOMTEmitC_somGetSize SOMObject_somGetSize
#define SOMTEmitC_somIsA SOMObject_somIsA
#define SOMTEmitC_somIsInstanceOf SOMObject_somIsInstanceOf
#define SOMTEmitC_somRespondsTo SOMObject_somRespondsTo
#define SOMTEmitC_somDispatch SOMObject_somDispatch
#define SOMTEmitC_somClassDispatch SOMObject_somClassDispatch
#define SOMTEmitC_somCastObj SOMObject_somCastObj
#define SOMTEmitC_somResetObj SOMObject_somResetObj
#define SOMTEmitC_somPrintSelf SOMObject_somPrintSelf
#define SOMTEmitC_somDumpSelf SOMObject_somDumpSelf
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_SOMTEmitC_h */
