
/*
 * This file was generated by the SOM Compiler.
 * FileName: sctmplt.xh.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.19
 *     SOM Emitter emitxh.dll: 2.108
 */

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


#ifndef SOM_SOMTTemplateOutputC_xh
#define SOM_SOMTTemplateOutputC_xh


#define SOMTTemplateOutputC_MajorVersion 2
#define SOMTTemplateOutputC_MinorVersion 1
class SOMTTemplateOutputC;

/*
 * Passthru lines: File: "C.xh", "before"
 */
#include <stdio.h>
typedef enum somtCommentStyleT { somtDashesE, somtCPPE, somtCSimpleE, somtCBlockE } somtCommentStyleT;

/* Parents */
#ifndef SOM_SOMObject_xh
#ifdef SOMLOCALINCLUDES
#include "somobj.xh"
#else
#include <somobj.xh>
#endif
#endif

/* Useful C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

#ifndef SOMTTemplateOutputC_API
#define SOMTTemplateOutputC_API
/*
 * -- The Class API
 */
#ifndef SOM_IMPORTEXPORT_some_sctmplt
#ifdef SOM_DLL_some
	/* export semantics */
	#if defined(SOM_DEFFILE_some)\
	||(defined(SOM_DEFFILE_BY_DEFAULT)&&!defined(SOM_NODEFFILE_some))\
	|| !defined(SOM_Module_sctmplt_Source)
	#define SOM_IMPORTEXPORT_some_sctmplt
	#else
	#define SOM_IMPORTEXPORT_some_sctmplt SOMDLLEXPORT
	#endif
#else
	#define SOM_IMPORTEXPORT_some_sctmplt SOMDLLIMPORT
#endif
#endif

/*
 * Start of bindings for IDL types
 */

class SOMClass;
class SOMObject;
class SOMStringTableC;
#define SOMTTemplateOutputC_MAX_INPUT_LINE_LENGTH 1024 /* 1024 */
#define SOMTTemplateOutputC_MAX_OUTPUT_LINE_LENGTH 4096 /* 4096 */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_MAX_INPUT_LINE_LENGTH
    #ifdef MAX_INPUT_LINE_LENGTH
        #undef MAX_INPUT_LINE_LENGTH
        #define SOMTGD_MAX_INPUT_LINE_LENGTH 1
    #else
        #define MAX_INPUT_LINE_LENGTH SOMTTemplateOutputC_MAX_INPUT_LINE_LENGTH
    #endif /* MAX_INPUT_LINE_LENGTH */
#endif /* SOMTGD_MAX_INPUT_LINE_LENGTH */
#ifndef SOMTGD_MAX_OUTPUT_LINE_LENGTH
    #ifdef MAX_OUTPUT_LINE_LENGTH
        #undef MAX_OUTPUT_LINE_LENGTH
        #define SOMTGD_MAX_OUTPUT_LINE_LENGTH 1
    #else
        #define MAX_OUTPUT_LINE_LENGTH SOMTTemplateOutputC_MAX_OUTPUT_LINE_LENGTH
    #endif /* MAX_OUTPUT_LINE_LENGTH */
#endif /* SOMTGD_MAX_OUTPUT_LINE_LENGTH */
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

/*
 * A function to create the SOMTTemplateOutputC class object...
 */
SOMEXTERN SOM_IMPORTEXPORT_some_sctmplt SOMClass * SOMLINK SOMTTemplateOutputCNewClass(
		integer4 majorVersion,
		integer4 minorVersion);


/*
 * The API 2 ClassData Structures...
 */
SOMEXTERN struct SOMTTemplateOutputCClassDataStructure {
	SOMClass *classObject;
	somMToken _get_somtCommentStyle;
	somMToken _set_somtCommentStyle;
	somMToken _get_somtLineLength;
	somMToken _set_somtLineLength;
	somMToken _set_somtCommentNewline;
	somMToken _get_somtCommentNewline;
	somMToken somtGetSymbol;
	somMToken somtSetSymbol;
	somMToken somtSetSymbolCopyName;
	somMToken somtSetSymbolCopyValue;
	somMToken somtSetSymbolCopyBoth;
	somMToken somtCheckSymbol;
	somMToken somtSetOutputFile;
	somMToken somto;
	somMToken somtOutputComment;
	somMToken somtOutputSection;
	somMToken somtAddSectionDefinitions;
	somMToken somtReadSectionDefinitions;
	somMToken somtExpandSymbol;
} SOMDLINK SOM_IMPORTEXPORT_some_sctmplt SOMTTemplateOutputCClassData;
SOMEXTERN struct SOMTTemplateOutputCCClassDataStructure {
	som3ClassDetailsPtr    parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK SOM_IMPORTEXPORT_some_sctmplt SOMTTemplateOutputCCClassData;


/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_SOMTTemplateOutputC (SOMTTemplateOutputCClassData.classObject)
#ifndef SOMGD_SOMTTemplateOutputC
    #if (defined(_SOMTTemplateOutputC) || defined(__SOMTTemplateOutputC))
        #undef _SOMTTemplateOutputC
        #undef __SOMTTemplateOutputC
        #define SOMGD_SOMTTemplateOutputC 1
    #else
        #define _SOMTTemplateOutputC _SOMCLASS_SOMTTemplateOutputC
    #endif /* _SOMTTemplateOutputC */
#endif /* SOMGD_SOMTTemplateOutputC */
#define SOMTTemplateOutputC_classObj _SOMCLASS_SOMTTemplateOutputC
#define _SOMMTOKEN_SOMTTemplateOutputC(method) ((somMToken)SOMTTemplateOutputCClassData.method)

/*
 * -- Typedefs for SOMTTemplateOutputC Method Procedures
 */
SOMEXTERN {
typedef somtCommentStyleT   SOMLINK somTP_SOMTTemplateOutputC__get_somtCommentStyle(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC__get_somtCommentStyle *somTD_SOMTTemplateOutputC__get_somtCommentStyle;
typedef void   SOMLINK somTP_SOMTTemplateOutputC__set_somtCommentStyle(SOMTTemplateOutputC *somSelf, 
		somtCommentStyleT somtCommentStyle);
typedef somTP_SOMTTemplateOutputC__set_somtCommentStyle *somTD_SOMTTemplateOutputC__set_somtCommentStyle;
typedef long   SOMLINK somTP_SOMTTemplateOutputC__get_somtLineLength(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC__get_somtLineLength *somTD_SOMTTemplateOutputC__get_somtLineLength;
typedef void   SOMLINK somTP_SOMTTemplateOutputC__set_somtLineLength(SOMTTemplateOutputC *somSelf, 
		long somtLineLength);
typedef somTP_SOMTTemplateOutputC__set_somtLineLength *somTD_SOMTTemplateOutputC__set_somtLineLength;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC__get_somtCommentNewline(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC__get_somtCommentNewline *somTD_SOMTTemplateOutputC__get_somtCommentNewline;
typedef void   SOMLINK somTP_SOMTTemplateOutputC__set_somtCommentNewline(SOMTTemplateOutputC *somSelf, 
		boolean somtCommentNewline);
typedef somTP_SOMTTemplateOutputC__set_somtCommentNewline *somTD_SOMTTemplateOutputC__set_somtCommentNewline;
typedef string   SOMLINK somTP_SOMTTemplateOutputC_somtGetSymbol(SOMTTemplateOutputC *somSelf, 
		string name);
typedef somTP_SOMTTemplateOutputC_somtGetSymbol *somTD_SOMTTemplateOutputC_somtGetSymbol;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtSetSymbol(SOMTTemplateOutputC *somSelf, 
		string name, 
		string value);
typedef somTP_SOMTTemplateOutputC_somtSetSymbol *somTD_SOMTTemplateOutputC_somtSetSymbol;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtSetSymbolCopyName(SOMTTemplateOutputC *somSelf, 
		string name, 
		string value);
typedef somTP_SOMTTemplateOutputC_somtSetSymbolCopyName *somTD_SOMTTemplateOutputC_somtSetSymbolCopyName;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtSetSymbolCopyValue(SOMTTemplateOutputC *somSelf, 
		string name, 
		string value);
typedef somTP_SOMTTemplateOutputC_somtSetSymbolCopyValue *somTD_SOMTTemplateOutputC_somtSetSymbolCopyValue;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtSetSymbolCopyBoth(SOMTTemplateOutputC *somSelf, 
		string name, 
		string value);
typedef somTP_SOMTTemplateOutputC_somtSetSymbolCopyBoth *somTD_SOMTTemplateOutputC_somtSetSymbolCopyBoth;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somtCheckSymbol(SOMTTemplateOutputC *somSelf, 
		string name);
typedef somTP_SOMTTemplateOutputC_somtCheckSymbol *somTD_SOMTTemplateOutputC_somtCheckSymbol;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtSetOutputFile(SOMTTemplateOutputC *somSelf, 
		FILE* fp);
typedef somTP_SOMTTemplateOutputC_somtSetOutputFile *somTD_SOMTTemplateOutputC_somtSetOutputFile;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somto(SOMTTemplateOutputC *somSelf, 
		string tmplt);
typedef somTP_SOMTTemplateOutputC_somto *somTD_SOMTTemplateOutputC_somto;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtOutputComment(SOMTTemplateOutputC *somSelf, 
		string comment);
typedef somTP_SOMTTemplateOutputC_somtOutputComment *somTD_SOMTTemplateOutputC_somtOutputComment;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtOutputSection(SOMTTemplateOutputC *somSelf, 
		string sectionName);
typedef somTP_SOMTTemplateOutputC_somtOutputSection *somTD_SOMTTemplateOutputC_somtOutputSection;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtAddSectionDefinitions(SOMTTemplateOutputC *somSelf, 
		string defString);
typedef somTP_SOMTTemplateOutputC_somtAddSectionDefinitions *somTD_SOMTTemplateOutputC_somtAddSectionDefinitions;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somtReadSectionDefinitions(SOMTTemplateOutputC *somSelf, 
		FILE* fp);
typedef somTP_SOMTTemplateOutputC_somtReadSectionDefinitions *somTD_SOMTTemplateOutputC_somtReadSectionDefinitions;
typedef string   SOMLINK somTP_SOMTTemplateOutputC_somtExpandSymbol(SOMTTemplateOutputC *somSelf, 
		string s, 
		string buf);
typedef somTP_SOMTTemplateOutputC_somtExpandSymbol *somTD_SOMTTemplateOutputC_somtExpandSymbol;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDefaultInit(SOMTTemplateOutputC *somSelf, 
		som3InitCtrl* ctrl);
typedef somTP_SOMTTemplateOutputC_somDefaultInit *somTD_SOMTTemplateOutputC_somDefaultInit;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDestruct(SOMTTemplateOutputC *somSelf, 
		octet doFree, 
		som3DestructCtrl* ctrl);
typedef somTP_SOMTTemplateOutputC_somDestruct *somTD_SOMTTemplateOutputC_somDestruct;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDefaultCopyInit(SOMTTemplateOutputC *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultCopyInit *somTD_SOMTTemplateOutputC_somDefaultCopyInit;
typedef SOMTTemplateOutputC*   SOMLINK somTP_SOMTTemplateOutputC_somDefaultAssign(SOMTTemplateOutputC *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultAssign *somTD_SOMTTemplateOutputC_somDefaultAssign;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDefaultConstCopyInit(SOMTTemplateOutputC *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultConstCopyInit *somTD_SOMTTemplateOutputC_somDefaultConstCopyInit;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDefaultVCopyInit(SOMTTemplateOutputC *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultVCopyInit *somTD_SOMTTemplateOutputC_somDefaultVCopyInit;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDefaultConstVCopyInit(SOMTTemplateOutputC *somSelf, 
		som3InitCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultConstVCopyInit *somTD_SOMTTemplateOutputC_somDefaultConstVCopyInit;
typedef SOMTTemplateOutputC*   SOMLINK somTP_SOMTTemplateOutputC_somDefaultConstAssign(SOMTTemplateOutputC *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultConstAssign *somTD_SOMTTemplateOutputC_somDefaultConstAssign;
typedef SOMTTemplateOutputC*   SOMLINK somTP_SOMTTemplateOutputC_somDefaultVAssign(SOMTTemplateOutputC *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultVAssign *somTD_SOMTTemplateOutputC_somDefaultVAssign;
typedef SOMTTemplateOutputC*   SOMLINK somTP_SOMTTemplateOutputC_somDefaultConstVAssign(SOMTTemplateOutputC *somSelf, 
		som3AssignCtrl* ctrl, 
		SOMObject* fromObj);
typedef somTP_SOMTTemplateOutputC_somDefaultConstVAssign *somTD_SOMTTemplateOutputC_somDefaultConstVAssign;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somInit(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somInit *somTD_SOMTTemplateOutputC_somInit;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somUninit(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somUninit *somTD_SOMTTemplateOutputC_somUninit;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somFree(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somFree *somTD_SOMTTemplateOutputC_somFree;
typedef SOMClass*   SOMLINK somTP_SOMTTemplateOutputC_somGetClass(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somGetClass *somTD_SOMTTemplateOutputC_somGetClass;
typedef string   SOMLINK somTP_SOMTTemplateOutputC_somGetClassName(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somGetClassName *somTD_SOMTTemplateOutputC_somGetClassName;
typedef long   SOMLINK somTP_SOMTTemplateOutputC_somGetSize(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somGetSize *somTD_SOMTTemplateOutputC_somGetSize;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somIsA(SOMTTemplateOutputC *somSelf, 
		SOMClass* aClassObj);
typedef somTP_SOMTTemplateOutputC_somIsA *somTD_SOMTTemplateOutputC_somIsA;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somIsInstanceOf(SOMTTemplateOutputC *somSelf, 
		SOMClass* aClassObj);
typedef somTP_SOMTTemplateOutputC_somIsInstanceOf *somTD_SOMTTemplateOutputC_somIsInstanceOf;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somRespondsTo(SOMTTemplateOutputC *somSelf, 
		somId mId);
typedef somTP_SOMTTemplateOutputC_somRespondsTo *somTD_SOMTTemplateOutputC_somRespondsTo;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somDispatch(SOMTTemplateOutputC *somSelf, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
typedef somTP_SOMTTemplateOutputC_somDispatch *somTD_SOMTTemplateOutputC_somDispatch;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somClassDispatch(SOMTTemplateOutputC *somSelf, 
		SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		va_list ap);
typedef somTP_SOMTTemplateOutputC_somClassDispatch *somTD_SOMTTemplateOutputC_somClassDispatch;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somCastObj(SOMTTemplateOutputC *somSelf, 
		SOMClass* castedCls);
typedef somTP_SOMTTemplateOutputC_somCastObj *somTD_SOMTTemplateOutputC_somCastObj;
typedef boolean   SOMLINK somTP_SOMTTemplateOutputC_somResetObj(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somResetObj *somTD_SOMTTemplateOutputC_somResetObj;
typedef SOMTTemplateOutputC*   SOMLINK somTP_SOMTTemplateOutputC_somPrintSelf(SOMTTemplateOutputC *somSelf);
typedef somTP_SOMTTemplateOutputC_somPrintSelf *somTD_SOMTTemplateOutputC_somPrintSelf;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDumpSelf(SOMTTemplateOutputC *somSelf, 
		long level);
typedef somTP_SOMTTemplateOutputC_somDumpSelf *somTD_SOMTTemplateOutputC_somDumpSelf;
typedef void   SOMLINK somTP_SOMTTemplateOutputC_somDumpSelfInt(SOMTTemplateOutputC *somSelf, 
		long level);
typedef somTP_SOMTTemplateOutputC_somDumpSelfInt *somTD_SOMTTemplateOutputC_somDumpSelfInt;
}

#endif /* SOMTTemplateOutputC_API */


/*
 * -- The C++ Wrapper Class for SOMTTemplateOutputC
 */
class SOMTTemplateOutputC : public SOMObject
{
public:

// SOMTTemplateOutputC::new creates the class object if necessary, and then uses
// somNewNoInit to allocate memory and create the object.
// Initialization is in ctors.
void *operator new(size_t)
{
   if (!_SOMTTemplateOutputC) SOMTTemplateOutputCNewClass(SOMTTemplateOutputC_MajorVersion,SOMTTemplateOutputC_MinorVersion);
   return (void*)
   (((somTD_SOMClass_somNewNoInit)(SOMClassClassData.somNewNoInit))
         ((SOMClass *)((void*)_SOMTTemplateOutputC)));
}

// SOMTTemplateOutputC::delete uses somFree.
void operator delete(void * obj)
{
   if (obj && *(void**)obj)
      ((SOMObject*)obj)->somFree();
}

SOMTTemplateOutputC& operator=(SOMTTemplateOutputC& fromObj)
{
   this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
   return *this;
}

SOMTTemplateOutputC()
{
   if (*(void**)this != (SOMTTemplateOutputCCClassData.parentMtab)->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

SOMTTemplateOutputC(SOMTTemplateOutputC* fromObj)
{
   if (*(void**)this != (SOMTTemplateOutputCCClassData.parentMtab)->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/* method: _get_somtCommentStyle */
somtCommentStyleT   _get_somtCommentStyle()
{
/*
 *  Controls the style in which comments are wrtten as follows:
 *    somtDashesE: "--" at the start of each line
 *    somtCPPE: C++ style, "//" at the start of each line
 *    somtCSimpleE: simple C style, each line wrapped in / * and * /
 *    somtCBlockE: block C style, block style, ie leading / * then a * on each
 *               line and then a final * /
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC__get_somtCommentStyle)(SOMTTemplateOutputCClassData._get_somtCommentStyle))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: _set_somtCommentStyle */
void   _set_somtCommentStyle(somtCommentStyleT somtCommentStyle)
{
/*
 *  Controls the style in which comments are wrtten as follows:
 *    somtDashesE: "--" at the start of each line
 *    somtCPPE: C++ style, "//" at the start of each line
 *    somtCSimpleE: simple C style, each line wrapped in / * and * /
 *    somtCBlockE: block C style, block style, ie leading / * then a * on each
 *               line and then a final * /
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC__set_somtCommentStyle)(SOMTTemplateOutputCClassData._set_somtCommentStyle))(((SOMTTemplateOutputC *)((void *)this)),somtCommentStyle)
	);
}


/* method: _get_somtLineLength */
long   _get_somtLineLength()
{
/*
 *  Controls list output only.  Default is 72.
 *  At least one list item will be output on each line, so making
 *  this value very short will cause list items to be placed on
 *  separate lines.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC__get_somtLineLength)(SOMTTemplateOutputCClassData._get_somtLineLength))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: _set_somtLineLength */
void   _set_somtLineLength(long somtLineLength)
{
/*
 *  Controls list output only.  Default is 72.
 *  At least one list item will be output on each line, so making
 *  this value very short will cause list items to be placed on
 *  separate lines.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC__set_somtLineLength)(SOMTTemplateOutputCClassData._set_somtLineLength))(((SOMTTemplateOutputC *)((void *)this)),somtLineLength)
	);
}


/* method: _get_somtCommentNewline */
boolean   _get_somtCommentNewline()
{
/*
 * Method from the IDL attribute statement:
 * "attribute boolean somtCommentNewline"
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC__get_somtCommentNewline)(SOMTTemplateOutputCClassData._get_somtCommentNewline))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: _set_somtCommentNewline */
void   _set_somtCommentNewline(boolean somtCommentNewline)
{
/*
 * Method from the IDL attribute statement:
 * "attribute boolean somtCommentNewline"
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC__set_somtCommentNewline)(SOMTTemplateOutputCClassData._set_somtCommentNewline))(((SOMTTemplateOutputC *)((void *)this)),somtCommentNewline)
	);
}


/* method: somtGetSymbol */
string   somtGetSymbol(string name)
{
/*
 *  Returns the value associated with <name>.  If no value is
 *  associated with <name> then NULL is returned
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtGetSymbol)(SOMTTemplateOutputCClassData.somtGetSymbol))(((SOMTTemplateOutputC *)((void *)this)),name)
	);
}


/* method: somtSetSymbol */
void   somtSetSymbol(string name, 
		string value)
{
/*
 *  Makes the symbol with name <name> have value <value>.  This will
 *  overwrite any previous value the symbol had, and add the symbol
 *  if necessary.
 *  Takes over ownership of both name and value.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtSetSymbol)(SOMTTemplateOutputCClassData.somtSetSymbol))(((SOMTTemplateOutputC *)((void *)this)),name,value)
	);
}


/* method: somtSetSymbolCopyName */
void   somtSetSymbolCopyName(string name, 
		string value)
{
/*
 *  See somtSetSymbol
 *  Only takes over ownership of value.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtSetSymbolCopyName)(SOMTTemplateOutputCClassData.somtSetSymbolCopyName))(((SOMTTemplateOutputC *)((void *)this)),name,value)
	);
}


/* method: somtSetSymbolCopyValue */
void   somtSetSymbolCopyValue(string name, 
		string value)
{
/*
 *  See somtSetSymbol
 *  Only takes over ownership of name.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtSetSymbolCopyValue)(SOMTTemplateOutputCClassData.somtSetSymbolCopyValue))(((SOMTTemplateOutputC *)((void *)this)),name,value)
	);
}


/* method: somtSetSymbolCopyBoth */
void   somtSetSymbolCopyBoth(string name, 
		string value)
{
/*
 *  See somtSetSymbol
 *  Does not take over ownership of either <name> or <value>
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtSetSymbolCopyBoth)(SOMTTemplateOutputCClassData.somtSetSymbolCopyBoth))(((SOMTTemplateOutputC *)((void *)this)),name,value)
	);
}


/* method: somtCheckSymbol */
boolean   somtCheckSymbol(string name)
{
/*
 *  Returns 1 (true) if the indicated symbol has non-null, non-zero
 *  length value, and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtCheckSymbol)(SOMTTemplateOutputCClassData.somtCheckSymbol))(((SOMTTemplateOutputC *)((void *)this)),name)
	);
}


/* method: somtSetOutputFile */
void   somtSetOutputFile(FILE* fp)
{
/*
 *  All template output will be directed to <fp>. Default is <stdout>.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtSetOutputFile)(SOMTTemplateOutputCClassData.somtSetOutputFile))(((SOMTTemplateOutputC *)((void *)this)),fp)
	);
}


/* method: somto */
void   somto(string tmplt)
{
/*
 *  Outputs a template, <tmplt>, after substitution for any symbols
 *  that occur in it.  Five substitutions are supported: simple,
 *  list, comment, tab, and conditional.
 *  Substitutable items in the template are bracketed with angle
 *  brackets. (Backslash can be used to escape an angle bracket.)
 *  Simple substitutions just replace a symbol with its value. If
 *  the symbol has no value in this template object then the symbol
 *  is replaced error string but no error is raised.
 *  List substitution assumes that the symbol has a value in output
 *  template list form. This is a newline separated string of
 *  values. The list substitution specification consists of four
 *  parts, a prefix, a symbol, a separator, and a list indicator.
 *  prefixes and separators can only be composed of blanks, comma,
 *  colons, and semi-colons.  The list indicator is "..." (three
 *  periods).  For example, the list substitution
 *  specification "<, name, ...> has a prefix of ", ", a symbol of
 *  "name" and a separator of ", ".  The prefix will be used
 *  whenever there is at least one item in the list and the separator
 *  will be used between any two list items.  After the first items
 *  of a list is placed each additional item is evaluated to see if
 *  it would begin after the line length limit (set by
 *  _set_somtLineLength), if it would then a new line is begun and the
 *  value is placed directly under the first item.
 *  Comment substitution assumes that the symbol has a value in
 *  output template list form.  A comment specification consists of
 *  a comment indicator followed by a symbol name. The comment
 *  indicator is "--".  Eg, <-- classComment> is a valid comment
 *  substitution specification.  The lines of the comment are output
 *  according to the current comment style (see <somtCommentStyle>)
 *  and alined with the starting column of the comment
 *  specification.
 *  Tab substitution is specified by <@dd> where "dd" is a valid
 *  positive integer. Blanks will be inserted into the output stream
 *  if necessary to position the next character of output at the
 *  column indicated by "dd".
 *  Conditional substitution is specified by puting a question mark,
 *  "?", in column one of the template line.  The line will not be
 *  output at all unless at least one valid, non-blank,  symbol
 *  substitution  occurs on the line.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somto)(SOMTTemplateOutputCClassData.somto))(((SOMTTemplateOutputC *)((void *)this)),tmplt)
	);
}


/* method: somtOutputComment */
void   somtOutputComment(string comment)
{
/*
 *  Inserts a comment into the output stream.  <comment> must be a
 *  string containing the comment with lines in the comment
 *  seperated by newlines.
 *  The style of output is controlled by <somtCommentStyle>
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtOutputComment)(SOMTTemplateOutputCClassData.somtOutputComment))(((SOMTTemplateOutputC *)((void *)this)),comment)
	);
}


/* method: somtOutputSection */
void   somtOutputSection(string sectionName)
{
/*
 *  Just like <somto> above, except <sectionName> must be a symbol
 *  whose value will be used as the template.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtOutputSection)(SOMTTemplateOutputCClassData.somtOutputSection))(((SOMTTemplateOutputC *)((void *)this)),sectionName)
	);
}


/* method: somtAddSectionDefinitions */
void   somtAddSectionDefinitions(string defString)
{
/*
 *  <defString> must be a string of the form:
 *  :section1
 *  value 1 line 1
 *  value 1 line 2
 *  :section2
 *  value 2 line 1
 *  :section3
 *  value 3 line 1
 *  Where the lines that contain a ":" in column 1 immediately followed
 *  by a single name are used to intro the start of a new section.
 *  The section is named by the name on the colon line.  A backslash
 *  can be used to escape a colon in column one that is not supposed
 *  to start a new section.
 *  Adds the indicated section definitions to this template.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtAddSectionDefinitions)(SOMTTemplateOutputCClassData.somtAddSectionDefinitions))(((SOMTTemplateOutputC *)((void *)this)),defString)
	);
}


/* method: somtReadSectionDefinitions */
void   somtReadSectionDefinitions(FILE* fp)
{
/*
 *  Reads section definitions from the indicated file.  The section
 *  definitions must be in the form defined above in
 *  <somtAddSectionDefinitions>.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtReadSectionDefinitions)(SOMTTemplateOutputCClassData.somtReadSectionDefinitions))(((SOMTTemplateOutputC *)((void *)this)),fp)
	);
}


/* method: somtExpandSymbol */
string   somtExpandSymbol(string s, 
		string buf)
{
/*
 *  Expands simple symbols in an already expanded string.  Thus if you
 *  have a symbol which is itself a Section in a template file, and this
 *  section could have other sections in it then you should call this
 *  method.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMTTemplateOutputC),
	 ((somTD_SOMTTemplateOutputC_somtExpandSymbol)(SOMTTemplateOutputCClassData.somtExpandSymbol))(((SOMTTemplateOutputC *)((void *)this)),s,buf)
	);
}


/*
 * Reintroduce inherited methods
 */

/* initializer method: somDefaultInit */
void   somDefaultInit(som3InitCtrl* ctrl)
{
/*
 *  A default initializer for a SOM object. Passing a null ctrl
 *  indicates to the receiver that its class is the class of the
 *  object being initialized, whereby the initializer will determine
 *  an appropriate control structure.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultInit)(SOMObjectClassData.somDefaultInit))(((SOMTTemplateOutputC *)((void *)this)),ctrl)
	);
}


/* method: somDestruct */
void   somDestruct(octet doFree, 
		som3DestructCtrl* ctrl)
{
/*
 *  The default destructor for a SOM object. A nonzero <doFree>
 *  indicates that the object storage should be freed by the
 *  object's class (via somDeallocate) after uninitialization.
 *  As with somDefaultInit, a null ctrl can be passed.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDestruct)(SOMObjectClassData.somDestruct))(((SOMTTemplateOutputC *)((void *)this)),doFree,ctrl)
	);
}


/* initializer method: somDefaultCopyInit */
void   somDefaultCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor. Use this to make copies of objects for
 *  calling methods with "by-value" argument semantics.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultCopyInit)(SOMObjectClassData.somDefaultCopyInit))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultAssign */
SOMTTemplateOutputC*  somDefaultAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator. Use this to "assign" the state of one
 *  object to another.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultAssign)(SOMObjectClassData.somDefaultAssign))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* initializer method: somDefaultConstCopyInit */
void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor that uses a const fromObj.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultConstCopyInit)(SOMObjectClassData.somDefaultConstCopyInit))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* initializer method: somDefaultVCopyInit */
void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor that uses a volatile fromObj.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultVCopyInit)(SOMObjectClassData.somDefaultVCopyInit))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* initializer method: somDefaultConstVCopyInit */
void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default copy constructor that uses a const volatile fromObj.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultConstVCopyInit)(SOMObjectClassData.somDefaultConstVCopyInit))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultConstAssign */
SOMTTemplateOutputC*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator that uses a const fromObj.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultConstAssign)(SOMObjectClassData.somDefaultConstAssign))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultVAssign */
SOMTTemplateOutputC*  somDefaultVAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator that uses a volatile fromObj.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultVAssign)(SOMObjectClassData.somDefaultVAssign))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somDefaultConstVAssign */
SOMTTemplateOutputC*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
		SOMObject* fromObj)
{
/*
 *  A default assignment operator that uses a const volatile fromObj.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDefaultConstVAssign)(SOMObjectClassData.somDefaultConstVAssign))(((SOMTTemplateOutputC *)((void *)this)),ctrl,fromObj)
	);
}


/* method: somInit */
void   somInit()
{
/*
 *  Obsolete but still supported. Override somDefaultInit instead of somInit.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somInit)(SOMObjectClassData.somInit))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somUninit */
void   somUninit()
{
/*
 *  Obsolete but still supported. Override somDestruct instead of somUninit.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somUninit)(SOMObjectClassData.somUninit))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somFree */
void   somFree()
{
/*
 *  The default implementation just calls somDestruct.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somFree)(SOMObjectClassData.somFree))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somGetClass */
SOMClass*   somGetClass()
{
/*
 *  Return the receiver's class.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somGetClass)(SOMObjectClassData.somGetClass))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somGetClassName */
string   somGetClassName()
{
/*
 *  Return the name of the receiver's class.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somGetClassName)(SOMObjectClassData.somGetClassName))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somGetSize */
long   somGetSize()
{
/*
 *  Return the size of the receiver.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somGetSize)(SOMObjectClassData.somGetSize))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somIsA */
boolean   somIsA(SOMClass* aClassObj)
{
/*
 *  Returns 1 (true) if the receiver responds to methods
 *  introduced by <aClassObj>, and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somIsA)(SOMObjectClassData.somIsA))(((SOMTTemplateOutputC *)((void *)this)),aClassObj)
	);
}


/* method: somIsInstanceOf */
boolean   somIsInstanceOf(SOMClass* aClassObj)
{
/*
 *  Returns 1 (true) if the receiver is an instance of
 *  <aClassObj> and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somIsInstanceOf)(SOMObjectClassData.somIsInstanceOf))(((SOMTTemplateOutputC *)((void *)this)),aClassObj)
	);
}


/* method: somRespondsTo */
boolean   somRespondsTo(somId mId)
{
/*
 *  Returns 1 (true) if the indicated method can be invoked
 *  on the receiver and 0 (false) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somRespondsTo)(SOMObjectClassData.somRespondsTo))(((SOMTTemplateOutputC *)((void *)this)),mId)
	);
}


/* va_list method: somDispatch */

/*
 *  This method provides a generic, class-specific dispatch mechanism.
 *  It accepts as input <retValue> a pointer to the memory area to be
 *  loaded with the result of dispatching the method indicated by
 *  <methodId> using the arguments in <ap>. <ap> contains the object
 *  on which the method is to be invoked as the first argument.
 * 
 *  Default redispatch stubs invoke this method.
 */
/* the va_list invocation form */
boolean   SOMObject_somDispatch(somToken* retValue, 
		somId methodId, 
		va_list ap)
{   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDispatch)(SOMObjectClassData.somDispatch))(((SOMTTemplateOutputC *)((void *)this)),retValue,methodId,ap)
	);
}

/* the varargs invocation form */
boolean   somDispatch(somToken* retValue, 
		somId methodId, 
		...)
{
/*
 *  This method provides a generic, class-specific dispatch mechanism.
 *  It accepts as input <retValue> a pointer to the memory area to be
 *  loaded with the result of dispatching the method indicated by
 *  <methodId> using the arguments in <ap>. <ap> contains the object
 *  on which the method is to be invoked as the first argument.
 * 
 *  Default redispatch stubs invoke this method.
 */
   va_list ap;
   va_start(ap, methodId);
   boolean __somResult = 
      	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDispatch)(SOMObjectClassData.somDispatch))(((SOMTTemplateOutputC *)((void *)this)),retValue,methodId,ap)
	);
   va_end(ap);
   return __somResult;
}


/* va_list method: somClassDispatch */

/*
 *  Like somDispatch, but method resolution for static methods is done
 *  according to the clsObj instance method table.
 */
/* the va_list invocation form */
boolean   SOMObject_somClassDispatch(SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		va_list ap)
{   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somClassDispatch)(SOMObjectClassData.somClassDispatch))(((SOMTTemplateOutputC *)((void *)this)),clsObj,retValue,methodId,ap)
	);
}

/* the varargs invocation form */
boolean   somClassDispatch(SOMClass* clsObj, 
		somToken* retValue, 
		somId methodId, 
		...)
{
/*
 *  Like somDispatch, but method resolution for static methods is done
 *  according to the clsObj instance method table.
 */
   va_list ap;
   va_start(ap, methodId);
   boolean __somResult = 
      	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somClassDispatch)(SOMObjectClassData.somClassDispatch))(((SOMTTemplateOutputC *)((void *)this)),clsObj,retValue,methodId,ap)
	);
   va_end(ap);
   return __somResult;
}


/* method: somCastObj */
boolean   somCastObj(SOMClass* castedCls)
{
/*
 *  Changes the behavior of the target object to that implemented
 *  by castedCls. This is possible when all concrete data in castedCls
 *  is also concrete in the true class of the target object.
 *  Returns true (1) on success, and false (0) otherwise.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somCastObj)(SOMObjectClassData.somCastObj))(((SOMTTemplateOutputC *)((void *)this)),castedCls)
	);
}


/* method: somResetObj */
boolean   somResetObj()
{
/*
 *  reset an object to its true class. Returns true always.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somResetObj)(SOMObjectClassData.somResetObj))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somPrintSelf */
SOMTTemplateOutputC*  somPrintSelf()
{
/*
 *  Uses <SOMOutCharRoutine> to write a brief string with identifying
 *  information about this object.  The default implementation just gives
 *  the object's class name and its address in memory.
 *  <self> is returned.
 */
   return 	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somPrintSelf)(SOMObjectClassData.somPrintSelf))(((SOMTTemplateOutputC *)((void *)this)))
	);
}


/* method: somDumpSelf */
void   somDumpSelf(long level)
{
/*
 *  Uses <SOMOutCharRoutine> to write a detailed description of this object
 *  and its current state.
 * 
 *  <level> indicates the nesting level for describing compound objects
 *  it must be greater than or equal to zero.  All lines in the
 *  description will be preceeded by <2*level> spaces.
 * 
 *  This routine only actually writes the data that concerns the object
 *  as a whole, such as class, and uses <somDumpSelfInt> to describe
 *  the object's current state.  This approach allows readable
 *  descriptions of compound objects to be constructed.
 * 
 *  Generally it is not necessary to override this method, if it is
 *  overriden it generally must be completely replaced.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDumpSelf)(SOMObjectClassData.somDumpSelf))(((SOMTTemplateOutputC *)((void *)this)),level)
	);
}


/* method: somDumpSelfInt */
void   somDumpSelfInt(long level)
{
/*
 *  Uses <SOMOutCharRoutine> to write in the current state of this object.
 *  Generally this method will need to be overridden.  When overriding
 *  it, begin by calling the parent class form of this method and then
 *  write in a description of your class's instance data. This will
 *  result in a description of all the object's instance data going
 *  from its root ancestor class to its specific class.
 */
   	(
	 SOM_TestCls(this,_SOMCLASS_SOMObject),
	 ((somTD_SOMTTemplateOutputC_somDumpSelfInt)(SOMObjectClassData.somDumpSelfInt))(((SOMTTemplateOutputC *)((void *)this)),level)
	);
}



};   /* SOMTTemplateOutputC */



#endif       /* SOM_SOMTTemplateOutputC_xh */
