
/*
 * This file was generated by the SOM Compiler.
 * FileName: bt.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_baseType_h
#define SOM_baseType_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 <stdio.h>

#include <som.h>

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

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

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

/*
 * Start of bindings for IDL types
 */

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

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

#define baseType_MajorVersion 0
#define baseType_MinorVersion 0

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

/*
 * Declare the ABI 2 ClassData structure
 */
SOMEXTERN struct baseTypeClassDataStructure {
	SOMClass classObject;
	somMToken match;
	somMToken print;
} 
#if defined(SOM_Module_bt_Source)
        SOMDLLEXPORT
#else
    SOMDLLIMPORT
#endif
 SOMDLINK baseTypeClassData;

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

/*
 * Class Object and Method Token Macros
 */
#define _SOMCLASS_baseType (baseTypeClassData.classObject)
#ifndef SOMGD_baseType
    #if (defined(_baseType) || defined(__baseType))
        #undef _baseType
        #undef __baseType
        #define SOMGD_baseType 1
    #else
        #define _baseType _SOMCLASS_baseType
    #endif /* _baseType */
#endif /* SOMGD_baseType */
#define baseType_classObj _SOMCLASS_baseType
#define _SOMMTOKEN_baseType(method) ((somMToken)baseTypeClassData.method)

/*
 * New and Renew macros for baseType
 */
#define baseTypeNew() \
   ( _baseType ? \
	_somNew(_baseType) \
	: ( baseTypeNewClass(\
		baseType_MajorVersion, \
		baseType_MinorVersion),\
	   _somNew(_baseType)))
#define baseTypeRenew(buf) \
   ( _baseType ? \
	_somRenew(_baseType, buf) \
	: ( baseTypeNewClass(\
		baseType_MajorVersion, \
		baseType_MinorVersion),\
	   _somRenew(_baseType, buf)))

/*
 * New Method: match
 */
typedef boolean   SOMLINK somTP_baseType_match(baseType somSelf, 
		string target);
typedef somTP_baseType_match *somTD_baseType_match;
/*
 *   Returns TRUE if the target object matches target,
 *   FALSE otherwise.
 */
#define somMD_baseType_match "::baseType::match"
#define baseType_match(somSelf,target) \
    (SOM_Resolve(somSelf, baseType, match) \
	(somSelf,target))
#ifndef SOMGD_match
    #if (defined(_match) || defined(__match))
        #undef _match
        #undef __match
        #define SOMGD_match 1
    #else
        #define _match baseType_match
    #endif /* _match */
#endif /* SOMGD_match */

/*
 * New Method: print
 */
typedef void   SOMLINK somTP_baseType_print(baseType somSelf, 
		FILE* outputFile);
typedef somTP_baseType_print *somTD_baseType_print;
/*
 *    Prints the target object in some reasonable format.
 */
#define somMD_baseType_print "::baseType::print"
#define baseType_print(somSelf,outputFile) \
    (SOM_Resolve(somSelf, baseType, print) \
	(somSelf,outputFile))
#ifndef SOMGD_print
    #if (defined(_print) || defined(__print))
        #undef _print
        #undef __print
        #define SOMGD_print 1
    #else
        #define _print baseType_print
    #endif /* _print */
#endif /* SOMGD_print */

/*
 * Full Names for Inherited Methods
 */

#ifndef SOM_DONT_USE_INHERITED_MACROS
#define baseType_somDefaultInit SOMObject_somDefaultInit
#define baseType_somDestruct SOMObject_somDestruct
#define baseType_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define baseType_somDefaultAssign SOMObject_somDefaultAssign
#define baseType_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define baseType_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define baseType_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define baseType_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define baseType_somDefaultVAssign SOMObject_somDefaultVAssign
#define baseType_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define baseType_somInit SOMObject_somInit
#define baseType_somUninit SOMObject_somUninit
#define baseType_somFree SOMObject_somFree
#define baseType_somGetClass SOMObject_somGetClass
#define baseType_somGetClassName SOMObject_somGetClassName
#define baseType_somGetSize SOMObject_somGetSize
#define baseType_somIsA SOMObject_somIsA
#define baseType_somIsInstanceOf SOMObject_somIsInstanceOf
#define baseType_somRespondsTo SOMObject_somRespondsTo
#define baseType_somDispatch SOMObject_somDispatch
#define baseType_somClassDispatch SOMObject_somClassDispatch
#define baseType_somCastObj SOMObject_somCastObj
#define baseType_somResetObj SOMObject_somResetObj
#define baseType_somPrintSelf SOMObject_somPrintSelf
#define baseType_somDumpSelf SOMObject_somDumpSelf
#define baseType_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_baseType_h */
