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

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


#ifndef SOM_TPWord_h
#define SOM_TPWord_h


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


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

  #define TP_WORD 0
  #define TP_LINE_BREAK 1
  #define TP_PARAGRAPH_BREAK 2
  #define TP_TOKEN 3
  #define TP_BLANK_SPACE 4
  #define TP_EOF 5

  SOMObject readToken(fileMgr myFile);

#include <som.h>

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

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

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

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */

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

#define TPWord_MajorVersion 0
#define TPWord_MinorVersion 0

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

/*
 * Declare the ABI 2 ClassData structure
 */
SOMEXTERN struct TPWordClassDataStructure {
	SOMClass classObject;
	somMToken tpwType;
} 
#if defined(SOM_Module_tpword_Source)
        SOMDLLEXPORT
#else
    SOMDLLIMPORT
#endif
 SOMDLINK TPWordClassData;

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

/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_TPWord (TPWordClassData.classObject)
#ifndef SOMGD_TPWord
    #if (defined(_TPWord) || defined(__TPWord))
        #undef _TPWord
        #undef __TPWord
        #define SOMGD_TPWord 1
    #else
        #define _TPWord _SOMCLASS_TPWord
    #endif /* _TPWord */
#endif /* SOMGD_TPWord */
#define TPWord_classObj _SOMCLASS_TPWord
#define _SOMMTOKEN_TPWord(method) ((somMToken)TPWordClassData.method)

/*
 * New and Renew macros for TPWord
 */
#define TPWordNew() \
   ( _TPWord ? \
	_somNew(_TPWord) \
	: ( TPWordNewClass(\
		TPWord_MajorVersion, \
		TPWord_MinorVersion),\
	   _somNew(_TPWord)))
#define TPWordRenew(buf) \
   ( _TPWord ? \
	_somRenew(_TPWord, buf) \
	: ( TPWordNewClass(\
		TPWord_MajorVersion, \
		TPWord_MinorVersion),\
	   _somRenew(_TPWord, buf)))

/*
 * New Method: tpwType
 */
typedef long   SOMLINK somTP_TPWord_tpwType(TPWord somSelf);
typedef somTP_TPWord_tpwType *somTD_TPWord_tpwType;
/*
 *  Returns the type of a TPWord.
 */
#define somMD_TPWord_tpwType "::TPWord::tpwType"
#define TPWord_tpwType(somSelf) \
    (SOM_Resolve(somSelf, TPWord, tpwType) \
	(somSelf))
#ifndef SOMGD_tpwType
    #if (defined(_tpwType) || defined(__tpwType))
        #undef _tpwType
        #undef __tpwType
        #define SOMGD_tpwType 1
    #else
        #define _tpwType TPWord_tpwType
    #endif /* _tpwType */
#endif /* SOMGD_tpwType */

/*
 * Full Names for Inherited Methods
 */

#ifndef SOM_DONT_USE_INHERITED_MACROS
#define TPWord_wordInit1 word_wordInit1
#define TPWord_wordInit2 word_wordInit2
#define TPWord__get_length word__get_length
#define TPWord_wordToInt word_wordToInt
#define TPWord_wrdReplace word_wrdReplace
#define TPWord_match baseType_match
#define TPWord_print baseType_print
#define TPWord_somInit SOMObject_somInit
#define TPWord_somUninit SOMObject_somUninit
#define TPWord_somDumpSelfInt SOMObject_somDumpSelfInt
#define TPWord_somDefaultInit SOMObject_somDefaultInit
#define TPWord_somDestruct SOMObject_somDestruct
#define TPWord_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define TPWord_somDefaultAssign SOMObject_somDefaultAssign
#define TPWord_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define TPWord_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define TPWord_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define TPWord_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define TPWord_somDefaultVAssign SOMObject_somDefaultVAssign
#define TPWord_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define TPWord_somFree SOMObject_somFree
#define TPWord_somGetClass SOMObject_somGetClass
#define TPWord_somGetClassName SOMObject_somGetClassName
#define TPWord_somGetSize SOMObject_somGetSize
#define TPWord_somIsA SOMObject_somIsA
#define TPWord_somIsInstanceOf SOMObject_somIsInstanceOf
#define TPWord_somRespondsTo SOMObject_somRespondsTo
#define TPWord_somDispatch SOMObject_somDispatch
#define TPWord_somClassDispatch SOMObject_somClassDispatch
#define TPWord_somCastObj SOMObject_somCastObj
#define TPWord_somResetObj SOMObject_somResetObj
#define TPWord_somPrintSelf SOMObject_somPrintSelf
#define TPWord_somDumpSelf SOMObject_somDumpSelf
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_TPWord_h */
