
/*
 * This file was generated by the SOM Compiler.
 * FileName: animals.ih.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.19
 *     SOM Emitter emitih.dll: 2.49
 */

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


#ifndef SOM_Animals_Animal_ih
#define SOM_Animals_Animal_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_Animals_Animal_h
#include "animals.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef struct {
	string name;
        /*
         *  The name of the animal.
         */
	string sound;
        /*
         *  The kind of sound that an animal makes.
         */
	long nsound;
} __somC_Animals_Animal_ProtectedPrivateData;
typedef __somC_Animals_Animal_ProtectedPrivateData Animals_AnimalData, *Animals_AnimalDataPtr;

/*
 * -- GetData macro
 */
typedef Animals_AnimalDataPtr SOMLINK somTP_Animals_Animal_DataThunk(void*);
typedef somTP_Animals_Animal_DataThunk *somTD_Animals_Animal_DataThunk;

#define Animals_AnimalGetData(somSelf) \
   (((somTD_Animals_Animal_DataThunk)(Animals_AnimalCClassData.instanceDataToken))(somSelf))
#define _name somThis->name
#define _sound somThis->sound
#define _nsound somThis->nsound

/*
 * -- Primary Implementation File Support
 */
#if (defined(Animals_Animal_Class_Source) || defined(SOM_Module_animals_Source))

#ifndef Animals_AnimalMethodDebug
   #define Animals_AnimalMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* Animals_AnimalMethodDebug */

static void SOMLINK __somC_Animals_Animal_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct Animals_AnimalClassDataStructure SOMDLLEXPORT SOMDLINK Animals_AnimalClassData = {0};
struct Animals_AnimalCClassDataStructure SOMDLLEXPORT SOMDLINK Animals_AnimalCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_Animals_Animal0[] = {"Animals::Animal"}; /* class name */
static char __somC_Strings_Animals_Animal1[] = {"_get_name"}; /* method name */
static char __somC_Strings_Animals_Animal2[] = {"_set_name"}; /* method name */
static char __somC_Strings_Animals_Animal3[] = {"_get_sound"}; /* method name */
static char __somC_Strings_Animals_Animal4[] = {"_set_sound"}; /* method name */
static char __somC_Strings_Animals_Animal5[] = {"_get_genus"}; /* method name */
static char __somC_Strings_Animals_Animal6[] = {"_get_species"}; /* method name */
static char __somC_Strings_Animals_Animal7[] = {"talk"}; /* method name */
static char __somC_Strings_Animals_Animal8[] = {"display"}; /* method name */
static char __somC_Strings_Animals_Animal9[] = {"Animals::M_Animal"}; /* explicit metaclass name */
static char __somC_Strings_Animals_Animal10[] = {"SOMObject"}; /* parent name */
static char __somC_Strings_Animals_Animal11[] = {"somFree"}; /* overridden method name */
static char __somC_Strings_Animals_Animal12[] = {"somInit"}; /* overridden method name */
static char __somC_Strings_Animals_Animal13[] = {"somUninit"}; /* overridden method name */
static char __somC_Strings_Animals_Animal14[] = {"somDumpSelfInt"}; /* overridden method name */
static char * __somC_Animals_Animal_regIdsArray[] = {
	__somC_Strings_Animals_Animal0,
#ifndef __somC_Animals_Animal_regIds__get_name
#define __somC_Animals_Animal_regIds__get_name 1
#endif
	__somC_Strings_Animals_Animal1,
#ifndef __somC_Animals_Animal_regIds__set_name
#define __somC_Animals_Animal_regIds__set_name 2
#endif
	__somC_Strings_Animals_Animal2,
#ifndef __somC_Animals_Animal_regIds__get_sound
#define __somC_Animals_Animal_regIds__get_sound 3
#endif
	__somC_Strings_Animals_Animal3,
#ifndef __somC_Animals_Animal_regIds__set_sound
#define __somC_Animals_Animal_regIds__set_sound 4
#endif
	__somC_Strings_Animals_Animal4,
#ifndef __somC_Animals_Animal_regIds__get_genus
#define __somC_Animals_Animal_regIds__get_genus 5
#endif
	__somC_Strings_Animals_Animal5,
#ifndef __somC_Animals_Animal_regIds__get_species
#define __somC_Animals_Animal_regIds__get_species 6
#endif
	__somC_Strings_Animals_Animal6,
#ifndef __somC_Animals_Animal_regIds_talk
#define __somC_Animals_Animal_regIds_talk 7
#endif
	__somC_Strings_Animals_Animal7,
#ifndef __somC_Animals_Animal_regIds_display
#define __somC_Animals_Animal_regIds_display 8
#endif
	__somC_Strings_Animals_Animal8,
	__somC_Strings_Animals_Animal9,
	__somC_Strings_Animals_Animal10,
#ifndef __somC_Animals_Animal_regIds_somFree
#define __somC_Animals_Animal_regIds_somFree 11
#endif
	__somC_Strings_Animals_Animal11,
#ifndef __somC_Animals_Animal_regIds_somInit
#define __somC_Animals_Animal_regIds_somInit 12
#endif
	__somC_Strings_Animals_Animal12,
#ifndef __somC_Animals_Animal_regIds_somUninit
#define __somC_Animals_Animal_regIds_somUninit 13
#endif
	__somC_Strings_Animals_Animal13,
#ifndef __somC_Animals_Animal_regIds_somDumpSelfInt
#define __somC_Animals_Animal_regIds_somDumpSelfInt 14
#endif
	__somC_Strings_Animals_Animal14
};


/*
 * Overridden method: somFree
 */
SOM_Scope void  SOMLINK a_somFree(Animals_Animal somSelf);
static somMethodProc* Animals_Animal_parent_SOMObject_somFree_resolved;
#define Animals_Animal_parent_SOMObject_somFree(somSelf) \
  ((( somTD_SOMObject_somFree ) \
    Animals_Animal_parent_SOMObject_somFree_resolved)(somSelf))
#ifndef SOMGD_pmc_SOMObject_somFree
  #ifdef parent_SOMObject_somFree
     #define SOMGD_pmc_SOMObject_somFree 1
     #undef parent_SOMObject_somFree
  #else
     #define parent_SOMObject_somFree Animals_Animal_parent_SOMObject_somFree
  #endif /* parent_SOMObject_somFree */
#endif /* SOMGD_pmc_SOMObject_somFree */
#ifndef SOMGD_pmc_parent_somFree
  #ifdef parent_somFree
    #define SOMGD_pmc_parent_somFree
    #undef parent_somFree
  #else
#define parent_somFree Animals_Animal_parent_SOMObject_somFree
  #endif
#endif
#define Animals_Animal_parents_somFree(somSelf) (\
   Animals_Animal_parent_SOMObject_somFree(somSelf))
#define SOMPCALLAnimals_Animal_somFree
static somMethodProc* Animals_Animal_pcall_somFree_resolved;
#define Animals_Animal_pcall_somFree(somSelf) \
  ((( somTD_SOMObject_somFree ) \
    Animals_Animal_pcall_somFree_resolved)(somSelf))
static void  SOMLINK Animals_Animal_pcallResolve_somFree(Animals_Animal somSelf)
{
   ((somTD_SOMObject_somFree) 
      somPCallResolve(somSelf, _Animals_Animal, _SOMMTOKEN_SOMObject(somFree)))(somSelf);
}


/*
 * Overridden method: somInit
 */
SOM_Scope void  SOMLINK a_somInit(Animals_Animal somSelf);
/* pcalls for somInit/somUninit are turned off */
#define Animals_Animal_parent_SOMObject_somInit(__somSelf) 
#ifndef parent_SOMObject_somInit
   #define parent_SOMObject_somInit(__somSelf) 
#endif
#ifndef parent_somInit
   #define parent_somInit(__somSelf) 
#endif
#define Animals_Animal_parents_somInit(__somSelf) 

/*
 * Overridden method: somUninit
 */
SOM_Scope void  SOMLINK a_somUninit(Animals_Animal somSelf);
/* pcalls for somInit/somUninit are turned off */
#define Animals_Animal_parent_SOMObject_somUninit(__somSelf) 
#ifndef parent_SOMObject_somUninit
   #define parent_SOMObject_somUninit(__somSelf) 
#endif
#ifndef parent_somUninit
   #define parent_somUninit(__somSelf) 
#endif
#define Animals_Animal_parents_somUninit(__somSelf) 

/*
 * Overridden method: somDumpSelfInt
 */
SOM_Scope void  SOMLINK a_somDumpSelfInt(Animals_Animal somSelf,
		long level);
static somMethodProc* Animals_Animal_parent_SOMObject_somDumpSelfInt_resolved;
#define Animals_Animal_parent_SOMObject_somDumpSelfInt(somSelf,level) \
  ((( somTD_SOMObject_somDumpSelfInt ) \
    Animals_Animal_parent_SOMObject_somDumpSelfInt_resolved)(somSelf,level))
#ifndef SOMGD_pmc_SOMObject_somDumpSelfInt
  #ifdef parent_SOMObject_somDumpSelfInt
     #define SOMGD_pmc_SOMObject_somDumpSelfInt 1
     #undef parent_SOMObject_somDumpSelfInt
  #else
     #define parent_SOMObject_somDumpSelfInt Animals_Animal_parent_SOMObject_somDumpSelfInt
  #endif /* parent_SOMObject_somDumpSelfInt */
#endif /* SOMGD_pmc_SOMObject_somDumpSelfInt */
#ifndef SOMGD_pmc_parent_somDumpSelfInt
  #ifdef parent_somDumpSelfInt
    #define SOMGD_pmc_parent_somDumpSelfInt
    #undef parent_somDumpSelfInt
  #else
#define parent_somDumpSelfInt Animals_Animal_parent_SOMObject_somDumpSelfInt
  #endif
#endif
#define Animals_Animal_parents_somDumpSelfInt(somSelf,level) (\
   Animals_Animal_parent_SOMObject_somDumpSelfInt(somSelf,level))
#define SOMPCALLAnimals_Animal_somDumpSelfInt
static somMethodProc* Animals_Animal_pcall_somDumpSelfInt_resolved;
#define Animals_Animal_pcall_somDumpSelfInt(somSelf,level) \
  ((( somTD_SOMObject_somDumpSelfInt ) \
    Animals_Animal_pcall_somDumpSelfInt_resolved)(somSelf,level))
static void  SOMLINK Animals_Animal_pcallResolve_somDumpSelfInt(Animals_Animal somSelf,
		long level)
{
   ((somTD_SOMObject_somDumpSelfInt) 
      somPCallResolve(somSelf, _Animals_Animal, _SOMMTOKEN_SOMObject(somDumpSelfInt)))(somSelf,level);
}


/*
 * New Method: _get_name
 */
SOM_Scope string  SOMLINK a__get_name(Animals_Animal somSelf, Environment *ev);
/*
 *  The name of the animal.
 */
#ifndef somId__get_name
#define somId__get_name ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds__get_name]))
#endif
#define SOM_MPR_MINFO_a__get_name {0, 8, 0}
static somMpRowMethodInfo Animals_Animal__get_name_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a__get_name};
#ifndef DEFINEDAnimals_Animal__get_name_mp
#define DEFINEDAnimals_Animal__get_name_mp
/*[ ::Animals::Animal::_get_name Animals_Animal__get_name_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal__get_name_mp={&Animals_Animal__get_name_mp_minfoRow, {
0x86, 0x01, 0x94},
};
#endif
#define a__get_name_somMethodInfoValue 0
#define a__get_name_somApplyStubValue &Animals_Animal__get_name_mp.csr
#define a__get_name_somHasMPlan 8

/*
 * New Method: _set_name
 */
SOM_Scope void  SOMLINK a__set_name(Animals_Animal somSelf, Environment *ev,
		string name);
/*
 *  The name of the animal.
 */
#ifndef somId__set_name
#define somId__set_name ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds__set_name]))
#endif
#define SOM_MPR_MINFO_a__set_name {0, 12, 0}
static somMpRowMethodInfo Animals_Animal__set_name_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a__set_name};
#ifndef DEFINEDAnimals_Animal__set_name_mp
#define DEFINEDAnimals_Animal__set_name_mp
/*[ ::Animals::Animal::_set_name Animals_Animal__set_name_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal__set_name_mp={&Animals_Animal__set_name_mp_minfoRow, {
0x82, 0x01, 0x54},
};
#endif
#define a__set_name_somMethodInfoValue 0
#define a__set_name_somApplyStubValue &Animals_Animal__set_name_mp.csr
#define a__set_name_somHasMPlan 8

/*
 * New Method: _get_sound
 */
SOM_Scope string  SOMLINK a__get_sound(Animals_Animal somSelf, Environment *ev);
/*
 *  The kind of sound that an animal makes.
 */
#ifndef somId__get_sound
#define somId__get_sound ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds__get_sound]))
#endif
#define SOM_MPR_MINFO_a__get_sound {0, 8, 0}
static somMpRowMethodInfo Animals_Animal__get_sound_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a__get_sound};
#ifndef DEFINEDAnimals_Animal__get_sound_mp
#define DEFINEDAnimals_Animal__get_sound_mp
/*[ ::Animals::Animal::_get_sound Animals_Animal__get_sound_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal__get_sound_mp={&Animals_Animal__get_sound_mp_minfoRow, {
0x86, 0x01, 0x94},
};
#endif
#define a__get_sound_somMethodInfoValue 0
#define a__get_sound_somApplyStubValue &Animals_Animal__get_sound_mp.csr
#define a__get_sound_somHasMPlan 8

/*
 * New Method: _set_sound
 */
SOM_Scope void  SOMLINK a__set_sound(Animals_Animal somSelf, Environment *ev,
		string sound);
/*
 *  The kind of sound that an animal makes.
 */
#ifndef somId__set_sound
#define somId__set_sound ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds__set_sound]))
#endif
#define SOM_MPR_MINFO_a__set_sound {0, 12, 0}
static somMpRowMethodInfo Animals_Animal__set_sound_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a__set_sound};
#ifndef DEFINEDAnimals_Animal__set_sound_mp
#define DEFINEDAnimals_Animal__set_sound_mp
/*[ ::Animals::Animal::_set_sound Animals_Animal__set_sound_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal__set_sound_mp={&Animals_Animal__set_sound_mp_minfoRow, {
0x82, 0x01, 0x54},
};
#endif
#define a__set_sound_somMethodInfoValue 0
#define a__set_sound_somApplyStubValue &Animals_Animal__set_sound_mp.csr
#define a__set_sound_somHasMPlan 8

/*
 * New Method: _get_genus
 */
SOM_Scope string  SOMLINK a__get_genus(Animals_Animal somSelf, Environment *ev);
/*
 *  The genus of animal.
 *  The "_get_" method for this attribute should be overridden
 *  by derived classes.  The default version here just gives
 *  "<unknown>" as the genus.
 */
#ifndef somId__get_genus
#define somId__get_genus ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds__get_genus]))
#endif
#define SOM_MPR_MINFO_a__get_genus {0, 8, 0}
static somMpRowMethodInfo Animals_Animal__get_genus_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a__get_genus};
#ifndef DEFINEDAnimals_Animal__get_genus_mp
#define DEFINEDAnimals_Animal__get_genus_mp
/*[ ::Animals::Animal::_get_genus Animals_Animal__get_genus_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal__get_genus_mp={&Animals_Animal__get_genus_mp_minfoRow, {
0x86, 0x01, 0x94},
};
#endif
#define a__get_genus_somMethodInfoValue 0
#define a__get_genus_somApplyStubValue &Animals_Animal__get_genus_mp.csr
#define a__get_genus_somHasMPlan 8

/*
 * New Method: _get_species
 */
SOM_Scope string  SOMLINK a__get_species(Animals_Animal somSelf, Environment *ev);
/*
 *  The species of animal.
 *  The "_get" method for this attribute should be overridden
 *  by derived classes.  The default version here just gives
 *  "<unknown>" as the species.
 */
#ifndef somId__get_species
#define somId__get_species ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds__get_species]))
#endif
#define SOM_MPR_MINFO_a__get_species {0, 8, 0}
static somMpRowMethodInfo Animals_Animal__get_species_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a__get_species};
#ifndef DEFINEDAnimals_Animal__get_species_mp
#define DEFINEDAnimals_Animal__get_species_mp
/*[ ::Animals::Animal::_get_species Animals_Animal__get_species_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal__get_species_mp={&Animals_Animal__get_species_mp_minfoRow, {
0x86, 0x01, 0x94},
};
#endif
#define a__get_species_somMethodInfoValue 0
#define a__get_species_somApplyStubValue &Animals_Animal__get_species_mp.csr
#define a__get_species_somHasMPlan 8

/*
 * New Method: talk
 */
SOM_Scope void  SOMLINK a_talk(Animals_Animal somSelf, Environment *ev);
/*
 *  Ask the animal to talk.  Normally this just prints out the
 *  string corresponding to the sound attribute, but it can be
 *  overridden to do something else.
 */
#ifndef somId_talk
#define somId_talk ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds_talk]))
#endif
#define SOM_MPR_MINFO_a_talk {0, 8, 0}
static somMpRowMethodInfo Animals_Animal_talk_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a_talk};
#ifndef DEFINEDAnimals_Animal_talk_mp
#define DEFINEDAnimals_Animal_talk_mp
/*[ ::Animals::Animal::talk Animals_Animal_talk_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal_talk_mp={&Animals_Animal_talk_mp_minfoRow, {
0x82, 0x00},
};
#endif
#define a_talk_somMethodInfoValue 0
#define a_talk_somApplyStubValue &Animals_Animal_talk_mp.csr
#define a_talk_somHasMPlan 8

/*
 * New Method: display
 */
SOM_Scope void  SOMLINK a_display(Animals_Animal somSelf, Environment *ev);
/*
 *  Displays an animal.    Derived classes should override this to
 *  display new derived information, and then call their parent
 *  version. Note: this method makes use of talk() to describe what
 *  the animal says.
 */
#ifndef somId_display
#define somId_display ((somId)&(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds_display]))
#endif
#define SOM_MPR_MINFO_a_display {0, 8, 0}
static somMpRowMethodInfo Animals_Animal_display_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_a_display};
#ifndef DEFINEDAnimals_Animal_display_mp
#define DEFINEDAnimals_Animal_display_mp
/*[ ::Animals::Animal::display Animals_Animal_display_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Animal_display_mp={&Animals_Animal_display_mp_minfoRow, {
0x82, 0x00},
};
#endif
#define a_display_somMethodInfoValue 0
#define a_display_somApplyStubValue &Animals_Animal_display_mp.csr
#define a_display_somHasMPlan 8

/*
 * Functions for attributes.
 */
SOM_Scope string  SOMLINK a__get_name(Animals_Animal somSelf, Environment *ev){
    Animals_AnimalData *somThis = Animals_AnimalGetData(somSelf);
    SOM_IgnoreWarning(ev);

    return  (somThis->name);
}
SOM_Scope string  SOMLINK a__get_sound(Animals_Animal somSelf, Environment *ev){
    Animals_AnimalData *somThis = Animals_AnimalGetData(somSelf);
    SOM_IgnoreWarning(ev);

    return  (somThis->sound);
}

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_Animals_Animal_parentArray[] = {
	NULL,
};
void * __somC_Animals_Animal_parentMtabs[1];

somMethodDefn __somC_Animals_Animal_newNDMethodsArray[] = {
	{  (0 | a__get_name_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a__get_name, 
	   0, (somMethodPtr)a__get_name_somApplyStubValue, 
	   (somMethodInfo *) a__get_name_somMethodInfoValue, &Animals_AnimalClassData._get_name, 0, 1 },
	{  (0 | a__set_name_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a__set_name, 
	   0, (somMethodPtr)a__set_name_somApplyStubValue, 
	   (somMethodInfo *) a__set_name_somMethodInfoValue, &Animals_AnimalClassData._set_name, 0, 1 },
	{  (0 | a__get_sound_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a__get_sound, 
	   0, (somMethodPtr)a__get_sound_somApplyStubValue, 
	   (somMethodInfo *) a__get_sound_somMethodInfoValue, &Animals_AnimalClassData._get_sound, 0, 1 },
	{  (0 | a__set_sound_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a__set_sound, 
	   0, (somMethodPtr)a__set_sound_somApplyStubValue, 
	   (somMethodInfo *) a__set_sound_somMethodInfoValue, &Animals_AnimalClassData._set_sound, 0, 1 },
	{  (0 | a__get_genus_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a__get_genus, 
	   0, (somMethodPtr)a__get_genus_somApplyStubValue, 
	   (somMethodInfo *) a__get_genus_somMethodInfoValue, &Animals_AnimalClassData._get_genus, 0, 1 },
	{  (0 | a__get_species_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a__get_species, 
	   0, (somMethodPtr)a__get_species_somApplyStubValue, 
	   (somMethodInfo *) a__get_species_somMethodInfoValue, &Animals_AnimalClassData._get_species, 0, 1 },
	{  (0 | a_talk_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a_talk, 
	   0, (somMethodPtr)a_talk_somApplyStubValue, 
	   (somMethodInfo *) a_talk_somMethodInfoValue, &Animals_AnimalClassData.talk, 0, 1 },
	{  (0 | a_display_somHasMPlan), 0, (somMToken)0, (somMethodPtr)a_display, 
	   0, (somMethodPtr)a_display_somApplyStubValue, 
	   (somMethodInfo *) a_display_somMethodInfoValue, &Animals_AnimalClassData.display, 0, 1 }
};

static somOverrideMethod_t2 __somC_Animals_Animal_overridesArray[] = {
{ &(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds_somFree]), 
#ifdef SOMPCALLAnimals_Animal_somFree
   (somMethodPtr*)&Animals_Animal_pcall_somFree_resolved, 
   (somMethodPtr)Animals_Animal_pcallResolve_somFree, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)a_somFree },
{ &(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds_somInit]), 
#ifdef SOMPCALLAnimals_Animal_somInit
   (somMethodPtr*)&Animals_Animal_pcall_somInit_resolved, 
   (somMethodPtr)Animals_Animal_pcallResolve_somInit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)a_somInit },
{ &(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds_somUninit]), 
#ifdef SOMPCALLAnimals_Animal_somUninit
   (somMethodPtr*)&Animals_Animal_pcall_somUninit_resolved, 
   (somMethodPtr)Animals_Animal_pcallResolve_somUninit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)a_somUninit },
{ &(__somC_Animals_Animal_regIdsArray[__somC_Animals_Animal_regIds_somDumpSelfInt]), 
#ifdef SOMPCALLAnimals_Animal_somDumpSelfInt
   (somMethodPtr*)&Animals_Animal_pcall_somDumpSelfInt_resolved, 
   (somMethodPtr)Animals_Animal_pcallResolve_somDumpSelfInt, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)a_somDumpSelfInt }
};

static somClassVars1 __somC_Animals_Animal_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	sizeof(Animals_AnimalData),	/* dataSize */
	4,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct Animals_AnimalClassDataStructure __somC_Animals_Animal_resolvedMTokens;

static void * __somC_Animals_Animal_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_Animals_Animal_ClassInfo; /* C forward reference */

SOM_CIB Animals_Animal_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_Animals_Animal_classVars1,
	&__somC_Animals_Animal_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	Animals_Animal_MajorVersion,
	Animals_Animal_MinorVersion,
	0x60004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	NULL,	/* classMeta */
	(somMethodPtr) __somC_Animals_Animal_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) a_somInit,	/* legacyInit */
	(somMethodPtr) a_somUninit,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	15,	/* numRegIds */
	__somC_Animals_Animal_regIdsArray,	/* regIds */
	(sizeof(struct Animals_AnimalClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&Animals_AnimalClassData,
	(somCClassDataStructurePtr)&Animals_AnimalCClassData,
	&__somC_Animals_Animal_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_Animals_Animal_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_Animals_Animal_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	8,	/* maxNDMethods */
	__somC_Animals_Animal_newNDMethodsArray,	/* newNDMethods */
	4,	/* numOverrides */
	__somC_Animals_Animal_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_Animals_Animal_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_Animals_Animal_parentMtabs,	/* parentMtabs */
	&Animals_Animal_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_Animals_Animal_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_Animals_Animal_ClassInfo = {
	0,	/* classObject */
	&__somC_Animals_Animal_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_Animals_Animal_classInit)
#pragma alloc_text (SEG0002, Animals_AnimalNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_Animals_Animal_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   Animals_Animal_parent_SOMObject_somDumpSelfInt_resolved = 
	somParentNumResolve(Animals_AnimalCClassData.parentMtab, 1, _SOMMTOKEN_SOMObject(somDumpSelfInt)); 
   Animals_Animal_parent_SOMObject_somFree_resolved = 
	somParentNumResolve(Animals_AnimalCClassData.parentMtab, 1, _SOMMTOKEN_SOMObject(somFree)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK Animals_AnimalNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_Animals_Animal && _somCheckVersion(_SOMCLASS_Animals_Animal,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_Animals_Animal;
__somC_Animals_Animal_parentArray[0] = (SOMClass *)&_SOMCLASS_SOMObject;
Animals_Animal_ClassInitBlock.classMeta= 
	(SOMClass *)&Animals_M_AnimalClassData.classObject;	/* classMeta */
   /* require parents */
   if (!_SOMCLASS_SOMObject) SOMObjectNewClass(SOMObject_MajorVersion,SOMObject_MinorVersion);
   /* require metaclass */
   if (!_SOMCLASS_Animals_M_Animal) Animals_M_AnimalNewClass(Animals_M_Animal_MajorVersion,Animals_M_Animal_MinorVersion);
   /* return new class */
   return somBuildClass2( &Animals_Animal_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_Animals_Animal_ih */

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


#ifndef SOM_Animals_M_Animal_ih
#define SOM_Animals_M_Animal_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_Animals_M_Animal_h
#include "animals.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef struct {
	_IDL_SEQUENCE_Animals_Animal instances;
        /*
         *  All of the Animal instances that currently exist
         */
} __somC_Animals_M_Animal_ProtectedPrivateData;
typedef __somC_Animals_M_Animal_ProtectedPrivateData Animals_M_AnimalData, *Animals_M_AnimalDataPtr;

/*
 * -- GetData macro
 */
typedef Animals_M_AnimalDataPtr SOMLINK somTP_Animals_M_Animal_DataThunk(void*);
typedef somTP_Animals_M_Animal_DataThunk *somTD_Animals_M_Animal_DataThunk;

#define Animals_M_AnimalGetData(somSelf) \
   (((somTD_Animals_M_Animal_DataThunk)(Animals_M_AnimalCClassData.instanceDataToken))(somSelf))
#define _instances somThis->instances

/*
 * -- Primary Implementation File Support
 */
#if (defined(Animals_Animal_Class_Source) || defined(Animals_M_Animal_Class_Source) || defined(SOM_Module_animals_Source))

#ifndef Animals_M_AnimalMethodDebug
   #define Animals_M_AnimalMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* Animals_M_AnimalMethodDebug */

static void SOMLINK __somC_Animals_M_Animal_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct Animals_M_AnimalClassDataStructure SOMDLLEXPORT SOMDLINK Animals_M_AnimalClassData = {0};
struct Animals_M_AnimalCClassDataStructure SOMDLLEXPORT SOMDLINK Animals_M_AnimalCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_Animals_M_Animal0[] = {"Animals::M_Animal"}; /* class name */
static char __somC_Strings_Animals_M_Animal1[] = {"newAnimal"}; /* method name */
static char __somC_Strings_Animals_M_Animal2[] = {"_get_instances"}; /* method name */
static char __somC_Strings_Animals_M_Animal3[] = {"_set_instances"}; /* method name */
static char __somC_Strings_Animals_M_Animal4[] = {"addInstance"}; /* method name */
static char __somC_Strings_Animals_M_Animal5[] = {"deleteInstance"}; /* method name */
static char __somC_Strings_Animals_M_Animal6[] = {"SOMClass"}; /* parent name */
static char __somC_Strings_Animals_M_Animal7[] = {"somNew"}; /* overridden method name */
static char __somC_Strings_Animals_M_Animal8[] = {"somInit"}; /* overridden method name */
static char __somC_Strings_Animals_M_Animal9[] = {"somUninit"}; /* overridden method name */
static char * __somC_Animals_M_Animal_regIdsArray[] = {
	__somC_Strings_Animals_M_Animal0,
#ifndef __somC_Animals_M_Animal_regIds_newAnimal
#define __somC_Animals_M_Animal_regIds_newAnimal 1
#endif
	__somC_Strings_Animals_M_Animal1,
#ifndef __somC_Animals_M_Animal_regIds__get_instances
#define __somC_Animals_M_Animal_regIds__get_instances 2
#endif
	__somC_Strings_Animals_M_Animal2,
#ifndef __somC_Animals_M_Animal_regIds__set_instances
#define __somC_Animals_M_Animal_regIds__set_instances 3
#endif
	__somC_Strings_Animals_M_Animal3,
#ifndef __somC_Animals_M_Animal_regIds_addInstance
#define __somC_Animals_M_Animal_regIds_addInstance 4
#endif
	__somC_Strings_Animals_M_Animal4,
#ifndef __somC_Animals_M_Animal_regIds_deleteInstance
#define __somC_Animals_M_Animal_regIds_deleteInstance 5
#endif
	__somC_Strings_Animals_M_Animal5,
	__somC_Strings_Animals_M_Animal6,
#ifndef __somC_Animals_M_Animal_regIds_somNew
#define __somC_Animals_M_Animal_regIds_somNew 7
#endif
	__somC_Strings_Animals_M_Animal7,
#ifndef __somC_Animals_M_Animal_regIds_somInit
#define __somC_Animals_M_Animal_regIds_somInit 8
#endif
	__somC_Strings_Animals_M_Animal8,
#ifndef __somC_Animals_M_Animal_regIds_somUninit
#define __somC_Animals_M_Animal_regIds_somUninit 9
#endif
	__somC_Strings_Animals_M_Animal9
};


/*
 * Overridden method: somNew
 */
SOM_Scope SOMObject  SOMLINK ma_somNew(Animals_M_Animal somSelf);
static somMethodProc* Animals_M_Animal_parent_SOMClass_somNew_resolved;
#define Animals_M_Animal_parent_SOMClass_somNew(somSelf) \
  ((( somTD_SOMClass_somNew ) \
    Animals_M_Animal_parent_SOMClass_somNew_resolved)(somSelf))
#ifndef SOMGD_pmc_SOMClass_somNew
  #ifdef parent_SOMClass_somNew
     #define SOMGD_pmc_SOMClass_somNew 1
     #undef parent_SOMClass_somNew
  #else
     #define parent_SOMClass_somNew Animals_M_Animal_parent_SOMClass_somNew
  #endif /* parent_SOMClass_somNew */
#endif /* SOMGD_pmc_SOMClass_somNew */
#ifndef SOMGD_pmc_parent_somNew
  #ifdef parent_somNew
    #define SOMGD_pmc_parent_somNew
    #undef parent_somNew
  #else
#define parent_somNew Animals_M_Animal_parent_SOMClass_somNew
  #endif
#endif
#define Animals_M_Animal_parents_somNew(somSelf) (\
   Animals_M_Animal_parent_SOMClass_somNew(somSelf))
#define SOMPCALLAnimals_M_Animal_somNew
static somMethodProc* Animals_M_Animal_pcall_somNew_resolved;
#define Animals_M_Animal_pcall_somNew(somSelf) \
  ((( somTD_SOMClass_somNew ) \
    Animals_M_Animal_pcall_somNew_resolved)(somSelf))
static SOMObject  SOMLINK Animals_M_Animal_pcallResolve_somNew(Animals_M_Animal somSelf)
{
   return ((somTD_SOMClass_somNew) 
      somPCallResolve(somSelf, _Animals_M_Animal, _SOMMTOKEN_SOMClass(somNew)))(somSelf);
}


/*
 * Overridden method: somInit
 */
SOM_Scope void  SOMLINK ma_somInit(Animals_M_Animal somSelf);
/* pcalls for somInit/somUninit are turned off */
#define Animals_M_Animal_parent_SOMClass_somInit(__somSelf) 
#ifndef parent_SOMClass_somInit
   #define parent_SOMClass_somInit(__somSelf) 
#endif
#ifndef parent_somInit
   #define parent_somInit(__somSelf) 
#endif
#define Animals_M_Animal_parents_somInit(__somSelf) 

/*
 * Overridden method: somUninit
 */
SOM_Scope void  SOMLINK ma_somUninit(Animals_M_Animal somSelf);
/* pcalls for somInit/somUninit are turned off */
#define Animals_M_Animal_parent_SOMClass_somUninit(__somSelf) 
#ifndef parent_SOMClass_somUninit
   #define parent_SOMClass_somUninit(__somSelf) 
#endif
#ifndef parent_somUninit
   #define parent_somUninit(__somSelf) 
#endif
#define Animals_M_Animal_parents_somUninit(__somSelf) 

/*
 * New Method: newAnimal
 */
SOM_Scope Animals_Animal  SOMLINK ma_newAnimal(Animals_M_Animal somSelf, Environment *ev,
		string name,
		string sound);
/*
 *  Create an instance of an Animal with a specific sound.
 */
#ifndef somId_newAnimal
#define somId_newAnimal ((somId)&(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds_newAnimal]))
#endif
#define SOM_MPR_MINFO_ma_newAnimal {0, 16, 0}
static somMpRowMethodInfo Animals_M_Animal_newAnimal_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_ma_newAnimal};
#ifndef DEFINEDAnimals_M_Animal_newAnimal_mp
#define DEFINEDAnimals_M_Animal_newAnimal_mp
/*[ ::Animals::M_Animal::newAnimal Animals_M_Animal_newAnimal_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: ObjREF
ARG 1[in]: String
ARG 2[in]: String
*/
static struct { void * rows; unsigned char csr[8]; } Animals_M_Animal_newAnimal_mp={&Animals_M_Animal_newAnimal_mp_minfoRow, {
0x86, 0x03, 0x96, 0x54, 0x54},
};
#endif
#define ma_newAnimal_somMethodInfoValue 0
#define ma_newAnimal_somApplyStubValue &Animals_M_Animal_newAnimal_mp.csr
#define ma_newAnimal_somHasMPlan 8

/*
 * New Method: _get_instances
 */
SOM_Scope _IDL_SEQUENCE_Animals_Animal  SOMLINK ma__get_instances(Animals_M_Animal somSelf, Environment *ev);
/*
 *  All of the Animal instances that currently exist
 */
#ifndef somId__get_instances
#define somId__get_instances ((somId)&(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds__get_instances]))
#endif
#define SOM_MPR_MINFO_ma__get_instances {8, 8, 0}
static somMpRowMethodInfo Animals_M_Animal__get_instances_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_ma__get_instances};
#ifndef DEFINEDAnimals_M_Animal__get_instances_mp
#define DEFINEDAnimals_M_Animal__get_instances_mp
/*[ ::Animals::M_Animal::_get_instances Animals_M_Animal__get_instances_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: [Sequence ObjREF]
*/
static struct { void * rows; unsigned char csr[4]; } Animals_M_Animal__get_instances_mp={&Animals_M_Animal__get_instances_mp_minfoRow, {
0x86, 0x02, 0x8d, 0x16},
};
#endif
#define ma__get_instances_somMethodInfoValue 0
#define ma__get_instances_somApplyStubValue &Animals_M_Animal__get_instances_mp.csr
#define ma__get_instances_somHasMPlan 8

/*
 * New Method: _set_instances
 */
SOM_Scope void  SOMLINK ma__set_instances(Animals_M_Animal somSelf, Environment *ev,
		_IDL_SEQUENCE_Animals_Animal* instances);
/*
 *  All of the Animal instances that currently exist
 */
#ifndef somId__set_instances
#define somId__set_instances ((somId)&(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds__set_instances]))
#endif
#define SOM_MPR_MINFO_ma__set_instances {0, 12, 0}
static somMpRowMethodInfo Animals_M_Animal__set_instances_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_ma__set_instances};
#ifndef DEFINEDAnimals_M_Animal__set_instances_mp
#define DEFINEDAnimals_M_Animal__set_instances_mp
/*[ ::Animals::M_Animal::_set_instances Animals_M_Animal__set_instances_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: [Sequence ObjREF]
*/
static struct { void * rows; unsigned char csr[4]; } Animals_M_Animal__set_instances_mp={&Animals_M_Animal__set_instances_mp_minfoRow, {
0x82, 0x02, 0x4d, 0x16},
};
#endif
#define ma__set_instances_somMethodInfoValue 0
#define ma__set_instances_somApplyStubValue &Animals_M_Animal__set_instances_mp.csr
#define ma__set_instances_somHasMPlan 8

/*
 * New Method: addInstance
 */
SOM_Scope void  SOMLINK ma_addInstance(Animals_M_Animal somSelf, Environment *ev,
		Animals_Animal obj);
/*
 *  Used to add an new instance to the instances sequence.
 */
#ifndef somId_addInstance
#define somId_addInstance ((somId)&(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds_addInstance]))
#endif
#define SOM_MPR_MINFO_ma_addInstance {0, 12, 0}
static somMpRowMethodInfo Animals_M_Animal_addInstance_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_ma_addInstance};
#ifndef DEFINEDAnimals_M_Animal_addInstance_mp
#define DEFINEDAnimals_M_Animal_addInstance_mp
/*[ ::Animals::M_Animal::addInstance Animals_M_Animal_addInstance_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: ObjREF
*/
static struct { void * rows; unsigned char csr[4]; } Animals_M_Animal_addInstance_mp={&Animals_M_Animal_addInstance_mp_minfoRow, {
0x82, 0x01, 0x56},
};
#endif
#define ma_addInstance_somMethodInfoValue 0
#define ma_addInstance_somApplyStubValue &Animals_M_Animal_addInstance_mp.csr
#define ma_addInstance_somHasMPlan 8

/*
 * New Method: deleteInstance
 */
SOM_Scope void  SOMLINK ma_deleteInstance(Animals_M_Animal somSelf, Environment *ev,
		Animals_Animal obj);
/*
 *  Used to remove an instance from the instances sequence.
 */
#ifndef somId_deleteInstance
#define somId_deleteInstance ((somId)&(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds_deleteInstance]))
#endif
#define SOM_MPR_MINFO_ma_deleteInstance {0, 12, 0}
static somMpRowMethodInfo Animals_M_Animal_deleteInstance_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_ma_deleteInstance};
#ifndef DEFINEDAnimals_M_Animal_deleteInstance_mp
#define DEFINEDAnimals_M_Animal_deleteInstance_mp
/*[ ::Animals::M_Animal::deleteInstance Animals_M_Animal_deleteInstance_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: ObjREF
*/
static struct { void * rows; unsigned char csr[4]; } Animals_M_Animal_deleteInstance_mp={&Animals_M_Animal_deleteInstance_mp_minfoRow, {
0x82, 0x01, 0x56},
};
#endif
#define ma_deleteInstance_somMethodInfoValue 0
#define ma_deleteInstance_somApplyStubValue &Animals_M_Animal_deleteInstance_mp.csr
#define ma_deleteInstance_somHasMPlan 8

/*
 * Functions for attributes.
 */
SOM_Scope _IDL_SEQUENCE_Animals_Animal  SOMLINK ma__get_instances(Animals_M_Animal somSelf, Environment *ev){
    Animals_M_AnimalData *somThis = Animals_M_AnimalGetData(somSelf);
    SOM_IgnoreWarning(ev);

    return  (somThis->instances);
}
SOM_Scope void  SOMLINK ma__set_instances(Animals_M_Animal somSelf, Environment *ev,
		_IDL_SEQUENCE_Animals_Animal* instances){
    Animals_M_AnimalData *somThis = Animals_M_AnimalGetData(somSelf);
    SOM_IgnoreWarning(ev);

    (somThis->instances) = *instances;
}

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_Animals_M_Animal_parentArray[] = {
	NULL,
};
void * __somC_Animals_M_Animal_parentMtabs[1];

somMethodDefn __somC_Animals_M_Animal_newNDMethodsArray[] = {
	{  (0 | ma_newAnimal_somHasMPlan), 0, (somMToken)0, (somMethodPtr)ma_newAnimal, 
	   0, (somMethodPtr)ma_newAnimal_somApplyStubValue, 
	   (somMethodInfo *) ma_newAnimal_somMethodInfoValue, &Animals_M_AnimalClassData.newAnimal, 0, 1 },
	{  (0 | ma__get_instances_somHasMPlan), 0, (somMToken)0, (somMethodPtr)ma__get_instances, 
	   0, (somMethodPtr)ma__get_instances_somApplyStubValue, 
	   (somMethodInfo *) ma__get_instances_somMethodInfoValue, &Animals_M_AnimalClassData._get_instances, 0, 1 },
	{  (0 | ma__set_instances_somHasMPlan), 0, (somMToken)0, (somMethodPtr)ma__set_instances, 
	   0, (somMethodPtr)ma__set_instances_somApplyStubValue, 
	   (somMethodInfo *) ma__set_instances_somMethodInfoValue, &Animals_M_AnimalClassData._set_instances, 0, 1 },
	{  (0 | ma_addInstance_somHasMPlan), 0, (somMToken)0, (somMethodPtr)ma_addInstance, 
	   0, (somMethodPtr)ma_addInstance_somApplyStubValue, 
	   (somMethodInfo *) ma_addInstance_somMethodInfoValue, &Animals_M_AnimalClassData.addInstance, 0, 1 },
	{  (0 | ma_deleteInstance_somHasMPlan), 0, (somMToken)0, (somMethodPtr)ma_deleteInstance, 
	   0, (somMethodPtr)ma_deleteInstance_somApplyStubValue, 
	   (somMethodInfo *) ma_deleteInstance_somMethodInfoValue, &Animals_M_AnimalClassData.deleteInstance, 0, 1 }
};

static somOverrideMethod_t2 __somC_Animals_M_Animal_overridesArray[] = {
{ &(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds_somNew]), 
#ifdef SOMPCALLAnimals_M_Animal_somNew
   (somMethodPtr*)&Animals_M_Animal_pcall_somNew_resolved, 
   (somMethodPtr)Animals_M_Animal_pcallResolve_somNew, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)ma_somNew },
{ &(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds_somInit]), 
#ifdef SOMPCALLAnimals_M_Animal_somInit
   (somMethodPtr*)&Animals_M_Animal_pcall_somInit_resolved, 
   (somMethodPtr)Animals_M_Animal_pcallResolve_somInit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)ma_somInit },
{ &(__somC_Animals_M_Animal_regIdsArray[__somC_Animals_M_Animal_regIds_somUninit]), 
#ifdef SOMPCALLAnimals_M_Animal_somUninit
   (somMethodPtr*)&Animals_M_Animal_pcall_somUninit_resolved, 
   (somMethodPtr)Animals_M_Animal_pcallResolve_somUninit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)ma_somUninit }
};

static somClassVars1 __somC_Animals_M_Animal_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	sizeof(Animals_M_AnimalData),	/* dataSize */
	4,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct Animals_M_AnimalClassDataStructure __somC_Animals_M_Animal_resolvedMTokens;

static void * __somC_Animals_M_Animal_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_Animals_M_Animal_ClassInfo; /* C forward reference */

SOM_CIB Animals_M_Animal_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_Animals_M_Animal_classVars1,
	&__somC_Animals_M_Animal_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	Animals_M_Animal_MajorVersion,
	Animals_M_Animal_MinorVersion,
	0x60004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	0,	/* classMeta */
	(somMethodPtr) __somC_Animals_M_Animal_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) ma_somInit,	/* legacyInit */
	(somMethodPtr) ma_somUninit,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	10,	/* numRegIds */
	__somC_Animals_M_Animal_regIdsArray,	/* regIds */
	(sizeof(struct Animals_M_AnimalClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&Animals_M_AnimalClassData,
	(somCClassDataStructurePtr)&Animals_M_AnimalCClassData,
	&__somC_Animals_M_Animal_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_Animals_M_Animal_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_Animals_M_Animal_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	5,	/* maxNDMethods */
	__somC_Animals_M_Animal_newNDMethodsArray,	/* newNDMethods */
	3,	/* numOverrides */
	__somC_Animals_M_Animal_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_Animals_M_Animal_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_Animals_M_Animal_parentMtabs,	/* parentMtabs */
	&Animals_M_Animal_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_Animals_M_Animal_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_Animals_M_Animal_ClassInfo = {
	0,	/* classObject */
	&__somC_Animals_M_Animal_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_Animals_M_Animal_classInit)
#pragma alloc_text (SEG0002, Animals_M_AnimalNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_Animals_M_Animal_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   Animals_M_Animal_parent_SOMClass_somNew_resolved = 
	somParentNumResolve(Animals_M_AnimalCClassData.parentMtab, 1, _SOMMTOKEN_SOMClass(somNew)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK Animals_M_AnimalNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_Animals_M_Animal && _somCheckVersion(_SOMCLASS_Animals_M_Animal,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_Animals_M_Animal;
__somC_Animals_M_Animal_parentArray[0] = (SOMClass *)&_SOMCLASS_SOMClass;
   /* require parents */
   if (!_SOMCLASS_SOMClass) SOMClassNewClass(SOMClass_MajorVersion,SOMClass_MinorVersion);
   /* return new class */
   return somBuildClass2( &Animals_M_Animal_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_Animals_M_Animal_ih */

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


#ifndef SOM_Animals_Dog_ih
#define SOM_Animals_Dog_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_Animals_Dog_h
#include "animals.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef struct {
	string breed;
        /*
         *  The breed of this Dog.
         */
	string color;
        /*
         *  The color of this Dog.
         */
} __somC_Animals_Dog_ProtectedPrivateData;
typedef __somC_Animals_Dog_ProtectedPrivateData Animals_DogData, *Animals_DogDataPtr;

/*
 * -- GetData macro
 */
typedef Animals_DogDataPtr SOMLINK somTP_Animals_Dog_DataThunk(void*);
typedef somTP_Animals_Dog_DataThunk *somTD_Animals_Dog_DataThunk;

#define Animals_DogGetData(somSelf) \
   (((somTD_Animals_Dog_DataThunk)(Animals_DogCClassData.instanceDataToken))(somSelf))
#define _breed somThis->breed
#define _color somThis->color

/*
 * -- Primary Implementation File Support
 */
#if (defined(Animals_Dog_Class_Source) || defined(SOM_Module_animals_Source))

#ifndef Animals_DogMethodDebug
   #define Animals_DogMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* Animals_DogMethodDebug */

static void SOMLINK __somC_Animals_Dog_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct Animals_DogClassDataStructure SOMDLLEXPORT SOMDLINK Animals_DogClassData = {0};
struct Animals_DogCClassDataStructure SOMDLLEXPORT SOMDLINK Animals_DogCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_Animals_Dog0[] = {"Animals::Dog"}; /* class name */
static char __somC_Strings_Animals_Dog1[] = {"_get_breed"}; /* method name */
static char __somC_Strings_Animals_Dog2[] = {"_set_breed"}; /* method name */
static char __somC_Strings_Animals_Dog3[] = {"_get_color"}; /* method name */
static char __somC_Strings_Animals_Dog4[] = {"_set_color"}; /* method name */
static char __somC_Strings_Animals_Dog5[] = {"Animals::Kennel"}; /* explicit metaclass name */
static char __somC_Strings_Animals_Dog6[] = {"Animals::Animal"}; /* parent name */
static char __somC_Strings_Animals_Dog7[] = {"_get_genus"}; /* overridden method name */
static char __somC_Strings_Animals_Dog8[] = {"_get_species"}; /* overridden method name */
static char __somC_Strings_Animals_Dog9[] = {"display"}; /* overridden method name */
static char __somC_Strings_Animals_Dog10[] = {"somInit"}; /* overridden method name */
static char __somC_Strings_Animals_Dog11[] = {"somUninit"}; /* overridden method name */
static char __somC_Strings_Animals_Dog12[] = {"somDumpSelfInt"}; /* overridden method name */
static char * __somC_Animals_Dog_regIdsArray[] = {
	__somC_Strings_Animals_Dog0,
#ifndef __somC_Animals_Dog_regIds__get_breed
#define __somC_Animals_Dog_regIds__get_breed 1
#endif
	__somC_Strings_Animals_Dog1,
#ifndef __somC_Animals_Dog_regIds__set_breed
#define __somC_Animals_Dog_regIds__set_breed 2
#endif
	__somC_Strings_Animals_Dog2,
#ifndef __somC_Animals_Dog_regIds__get_color
#define __somC_Animals_Dog_regIds__get_color 3
#endif
	__somC_Strings_Animals_Dog3,
#ifndef __somC_Animals_Dog_regIds__set_color
#define __somC_Animals_Dog_regIds__set_color 4
#endif
	__somC_Strings_Animals_Dog4,
	__somC_Strings_Animals_Dog5,
	__somC_Strings_Animals_Dog6,
#ifndef __somC_Animals_Dog_regIds__get_genus
#define __somC_Animals_Dog_regIds__get_genus 7
#endif
	__somC_Strings_Animals_Dog7,
#ifndef __somC_Animals_Dog_regIds__get_species
#define __somC_Animals_Dog_regIds__get_species 8
#endif
	__somC_Strings_Animals_Dog8,
#ifndef __somC_Animals_Dog_regIds_display
#define __somC_Animals_Dog_regIds_display 9
#endif
	__somC_Strings_Animals_Dog9,
#ifndef __somC_Animals_Dog_regIds_somInit
#define __somC_Animals_Dog_regIds_somInit 10
#endif
	__somC_Strings_Animals_Dog10,
#ifndef __somC_Animals_Dog_regIds_somUninit
#define __somC_Animals_Dog_regIds_somUninit 11
#endif
	__somC_Strings_Animals_Dog11,
#ifndef __somC_Animals_Dog_regIds_somDumpSelfInt
#define __somC_Animals_Dog_regIds_somDumpSelfInt 12
#endif
	__somC_Strings_Animals_Dog12
};


/*
 * Overridden method: _get_genus
 */
SOM_Scope string  SOMLINK d__get_genus(Animals_Dog somSelf, Environment *ev);
static somMethodProc* Animals_Dog_parent_Animals_Animal__get_genus_resolved;
#define Animals_Dog_parent_Animals_Animal__get_genus(somSelf,ev) \
  ((( somTD_Animals_Animal__get_genus ) \
    Animals_Dog_parent_Animals_Animal__get_genus_resolved)(somSelf,ev))
#ifndef SOMGD_pmc_Animals_Animal__get_genus
  #ifdef parent_Animals_Animal__get_genus
     #define SOMGD_pmc_Animals_Animal__get_genus 1
     #undef parent_Animals_Animal__get_genus
  #else
     #define parent_Animals_Animal__get_genus Animals_Dog_parent_Animals_Animal__get_genus
  #endif /* parent_Animals_Animal__get_genus */
#endif /* SOMGD_pmc_Animals_Animal__get_genus */
#ifndef SOMGD_pmc_parent__get_genus
  #ifdef parent__get_genus
    #define SOMGD_pmc_parent__get_genus
    #undef parent__get_genus
  #else
#define parent__get_genus Animals_Dog_parent_Animals_Animal__get_genus
  #endif
#endif
#define Animals_Dog_parents__get_genus(somSelf,ev) (\
   Animals_Dog_parent_Animals_Animal__get_genus(somSelf,ev))
#define SOMPCALLAnimals_Dog__get_genus
static somMethodProc* Animals_Dog_pcall__get_genus_resolved;
#define Animals_Dog_pcall__get_genus(somSelf,ev) \
  ((( somTD_Animals_Animal__get_genus ) \
    Animals_Dog_pcall__get_genus_resolved)(somSelf,ev))
static string  SOMLINK Animals_Dog_pcallResolve__get_genus(Animals_Dog somSelf, Environment *ev)
{
   return ((somTD_Animals_Animal__get_genus) 
      somPCallResolve(somSelf, _Animals_Dog, _SOMMTOKEN_Animals_Animal(_get_genus)))(somSelf,ev);
}


/*
 * Overridden method: _get_species
 */
SOM_Scope string  SOMLINK d__get_species(Animals_Dog somSelf, Environment *ev);
static somMethodProc* Animals_Dog_parent_Animals_Animal__get_species_resolved;
#define Animals_Dog_parent_Animals_Animal__get_species(somSelf,ev) \
  ((( somTD_Animals_Animal__get_species ) \
    Animals_Dog_parent_Animals_Animal__get_species_resolved)(somSelf,ev))
#ifndef SOMGD_pmc_Animals_Animal__get_species
  #ifdef parent_Animals_Animal__get_species
     #define SOMGD_pmc_Animals_Animal__get_species 1
     #undef parent_Animals_Animal__get_species
  #else
     #define parent_Animals_Animal__get_species Animals_Dog_parent_Animals_Animal__get_species
  #endif /* parent_Animals_Animal__get_species */
#endif /* SOMGD_pmc_Animals_Animal__get_species */
#ifndef SOMGD_pmc_parent__get_species
  #ifdef parent__get_species
    #define SOMGD_pmc_parent__get_species
    #undef parent__get_species
  #else
#define parent__get_species Animals_Dog_parent_Animals_Animal__get_species
  #endif
#endif
#define Animals_Dog_parents__get_species(somSelf,ev) (\
   Animals_Dog_parent_Animals_Animal__get_species(somSelf,ev))
#define SOMPCALLAnimals_Dog__get_species
static somMethodProc* Animals_Dog_pcall__get_species_resolved;
#define Animals_Dog_pcall__get_species(somSelf,ev) \
  ((( somTD_Animals_Animal__get_species ) \
    Animals_Dog_pcall__get_species_resolved)(somSelf,ev))
static string  SOMLINK Animals_Dog_pcallResolve__get_species(Animals_Dog somSelf, Environment *ev)
{
   return ((somTD_Animals_Animal__get_species) 
      somPCallResolve(somSelf, _Animals_Dog, _SOMMTOKEN_Animals_Animal(_get_species)))(somSelf,ev);
}


/*
 * Overridden method: display
 */
SOM_Scope void  SOMLINK d_display(Animals_Dog somSelf, Environment *ev);
static somMethodProc* Animals_Dog_parent_Animals_Animal_display_resolved;
#define Animals_Dog_parent_Animals_Animal_display(somSelf,ev) \
  ((( somTD_Animals_Animal_display ) \
    Animals_Dog_parent_Animals_Animal_display_resolved)(somSelf,ev))
#ifndef SOMGD_pmc_Animals_Animal_display
  #ifdef parent_Animals_Animal_display
     #define SOMGD_pmc_Animals_Animal_display 1
     #undef parent_Animals_Animal_display
  #else
     #define parent_Animals_Animal_display Animals_Dog_parent_Animals_Animal_display
  #endif /* parent_Animals_Animal_display */
#endif /* SOMGD_pmc_Animals_Animal_display */
#ifndef SOMGD_pmc_parent_display
  #ifdef parent_display
    #define SOMGD_pmc_parent_display
    #undef parent_display
  #else
#define parent_display Animals_Dog_parent_Animals_Animal_display
  #endif
#endif
#define Animals_Dog_parents_display(somSelf,ev) (\
   Animals_Dog_parent_Animals_Animal_display(somSelf,ev))
#define SOMPCALLAnimals_Dog_display
static somMethodProc* Animals_Dog_pcall_display_resolved;
#define Animals_Dog_pcall_display(somSelf,ev) \
  ((( somTD_Animals_Animal_display ) \
    Animals_Dog_pcall_display_resolved)(somSelf,ev))
static void  SOMLINK Animals_Dog_pcallResolve_display(Animals_Dog somSelf, Environment *ev)
{
   ((somTD_Animals_Animal_display) 
      somPCallResolve(somSelf, _Animals_Dog, _SOMMTOKEN_Animals_Animal(display)))(somSelf,ev);
}


/*
 * Overridden method: somInit
 */
SOM_Scope void  SOMLINK d_somInit(Animals_Dog somSelf);
/* pcalls for somInit/somUninit are turned off */
#define Animals_Dog_parent_Animals_Animal_somInit(__somSelf) 
#ifndef parent_Animals_Animal_somInit
   #define parent_Animals_Animal_somInit(__somSelf) 
#endif
#ifndef parent_somInit
   #define parent_somInit(__somSelf) 
#endif
#define Animals_Dog_parents_somInit(__somSelf) 

/*
 * Overridden method: somUninit
 */
SOM_Scope void  SOMLINK d_somUninit(Animals_Dog somSelf);
/* pcalls for somInit/somUninit are turned off */
#define Animals_Dog_parent_Animals_Animal_somUninit(__somSelf) 
#ifndef parent_Animals_Animal_somUninit
   #define parent_Animals_Animal_somUninit(__somSelf) 
#endif
#ifndef parent_somUninit
   #define parent_somUninit(__somSelf) 
#endif
#define Animals_Dog_parents_somUninit(__somSelf) 

/*
 * Overridden method: somDumpSelfInt
 */
SOM_Scope void  SOMLINK d_somDumpSelfInt(Animals_Dog somSelf,
		long level);
static somMethodProc* Animals_Dog_parent_Animals_Animal_somDumpSelfInt_resolved;
#define Animals_Dog_parent_Animals_Animal_somDumpSelfInt(somSelf,level) \
  ((( somTD_SOMObject_somDumpSelfInt ) \
    Animals_Dog_parent_Animals_Animal_somDumpSelfInt_resolved)(somSelf,level))
#ifndef SOMGD_pmc_Animals_Animal_somDumpSelfInt
  #ifdef parent_Animals_Animal_somDumpSelfInt
     #define SOMGD_pmc_Animals_Animal_somDumpSelfInt 1
     #undef parent_Animals_Animal_somDumpSelfInt
  #else
     #define parent_Animals_Animal_somDumpSelfInt Animals_Dog_parent_Animals_Animal_somDumpSelfInt
  #endif /* parent_Animals_Animal_somDumpSelfInt */
#endif /* SOMGD_pmc_Animals_Animal_somDumpSelfInt */
#ifndef SOMGD_pmc_parent_somDumpSelfInt
  #ifdef parent_somDumpSelfInt
    #define SOMGD_pmc_parent_somDumpSelfInt
    #undef parent_somDumpSelfInt
  #else
#define parent_somDumpSelfInt Animals_Dog_parent_Animals_Animal_somDumpSelfInt
  #endif
#endif
#define Animals_Dog_parents_somDumpSelfInt(somSelf,level) (\
   Animals_Dog_parent_Animals_Animal_somDumpSelfInt(somSelf,level))
#define SOMPCALLAnimals_Dog_somDumpSelfInt
static somMethodProc* Animals_Dog_pcall_somDumpSelfInt_resolved;
#define Animals_Dog_pcall_somDumpSelfInt(somSelf,level) \
  ((( somTD_SOMObject_somDumpSelfInt ) \
    Animals_Dog_pcall_somDumpSelfInt_resolved)(somSelf,level))
static void  SOMLINK Animals_Dog_pcallResolve_somDumpSelfInt(Animals_Dog somSelf,
		long level)
{
   ((somTD_SOMObject_somDumpSelfInt) 
      somPCallResolve(somSelf, _Animals_Dog, _SOMMTOKEN_SOMObject(somDumpSelfInt)))(somSelf,level);
}


/*
 * New Method: _get_breed
 */
SOM_Scope string  SOMLINK d__get_breed(Animals_Dog somSelf, Environment *ev);
/*
 *  The breed of this Dog.
 */
#ifndef somId__get_breed
#define somId__get_breed ((somId)&(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds__get_breed]))
#endif
#define SOM_MPR_MINFO_d__get_breed {0, 8, 0}
static somMpRowMethodInfo Animals_Dog__get_breed_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_d__get_breed};
#ifndef DEFINEDAnimals_Dog__get_breed_mp
#define DEFINEDAnimals_Dog__get_breed_mp
/*[ ::Animals::Dog::_get_breed Animals_Dog__get_breed_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Dog__get_breed_mp={&Animals_Dog__get_breed_mp_minfoRow, {
0x86, 0x01, 0x94},
};
#endif
#define d__get_breed_somMethodInfoValue 0
#define d__get_breed_somApplyStubValue &Animals_Dog__get_breed_mp.csr
#define d__get_breed_somHasMPlan 8

/*
 * New Method: _set_breed
 */
SOM_Scope void  SOMLINK d__set_breed(Animals_Dog somSelf, Environment *ev,
		string breed);
/*
 *  The breed of this Dog.
 */
#ifndef somId__set_breed
#define somId__set_breed ((somId)&(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds__set_breed]))
#endif
#define SOM_MPR_MINFO_d__set_breed {0, 12, 0}
static somMpRowMethodInfo Animals_Dog__set_breed_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_d__set_breed};
#ifndef DEFINEDAnimals_Dog__set_breed_mp
#define DEFINEDAnimals_Dog__set_breed_mp
/*[ ::Animals::Dog::_set_breed Animals_Dog__set_breed_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Dog__set_breed_mp={&Animals_Dog__set_breed_mp_minfoRow, {
0x82, 0x01, 0x54},
};
#endif
#define d__set_breed_somMethodInfoValue 0
#define d__set_breed_somApplyStubValue &Animals_Dog__set_breed_mp.csr
#define d__set_breed_somHasMPlan 8

/*
 * New Method: _get_color
 */
SOM_Scope string  SOMLINK d__get_color(Animals_Dog somSelf, Environment *ev);
/*
 *  The color of this Dog.
 */
#ifndef somId__get_color
#define somId__get_color ((somId)&(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds__get_color]))
#endif
#define SOM_MPR_MINFO_d__get_color {0, 8, 0}
static somMpRowMethodInfo Animals_Dog__get_color_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_d__get_color};
#ifndef DEFINEDAnimals_Dog__get_color_mp
#define DEFINEDAnimals_Dog__get_color_mp
/*[ ::Animals::Dog::_get_color Animals_Dog__get_color_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Dog__get_color_mp={&Animals_Dog__get_color_mp_minfoRow, {
0x86, 0x01, 0x94},
};
#endif
#define d__get_color_somMethodInfoValue 0
#define d__get_color_somApplyStubValue &Animals_Dog__get_color_mp.csr
#define d__get_color_somHasMPlan 8

/*
 * New Method: _set_color
 */
SOM_Scope void  SOMLINK d__set_color(Animals_Dog somSelf, Environment *ev,
		string color);
/*
 *  The color of this Dog.
 */
#ifndef somId__set_color
#define somId__set_color ((somId)&(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds__set_color]))
#endif
#define SOM_MPR_MINFO_d__set_color {0, 12, 0}
static somMpRowMethodInfo Animals_Dog__set_color_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_d__set_color};
#ifndef DEFINEDAnimals_Dog__set_color_mp
#define DEFINEDAnimals_Dog__set_color_mp
/*[ ::Animals::Dog::_set_color Animals_Dog__set_color_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][VERSION 0]
ARG 0[in]: String
*/
static struct { void * rows; unsigned char csr[4]; } Animals_Dog__set_color_mp={&Animals_Dog__set_color_mp_minfoRow, {
0x82, 0x01, 0x54},
};
#endif
#define d__set_color_somMethodInfoValue 0
#define d__set_color_somApplyStubValue &Animals_Dog__set_color_mp.csr
#define d__set_color_somHasMPlan 8

/*
 * Functions for attributes.
 */
SOM_Scope string  SOMLINK d__get_breed(Animals_Dog somSelf, Environment *ev){
    Animals_DogData *somThis = Animals_DogGetData(somSelf);
    SOM_IgnoreWarning(ev);

    return  (somThis->breed);
}
SOM_Scope string  SOMLINK d__get_color(Animals_Dog somSelf, Environment *ev){
    Animals_DogData *somThis = Animals_DogGetData(somSelf);
    SOM_IgnoreWarning(ev);

    return  (somThis->color);
}

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_Animals_Dog_parentArray[] = {
	NULL,
};
void * __somC_Animals_Dog_parentMtabs[1];

somMethodDefn __somC_Animals_Dog_newNDMethodsArray[] = {
	{  (0 | d__get_breed_somHasMPlan), 0, (somMToken)0, (somMethodPtr)d__get_breed, 
	   0, (somMethodPtr)d__get_breed_somApplyStubValue, 
	   (somMethodInfo *) d__get_breed_somMethodInfoValue, &Animals_DogClassData._get_breed, 0, 1 },
	{  (0 | d__set_breed_somHasMPlan), 0, (somMToken)0, (somMethodPtr)d__set_breed, 
	   0, (somMethodPtr)d__set_breed_somApplyStubValue, 
	   (somMethodInfo *) d__set_breed_somMethodInfoValue, &Animals_DogClassData._set_breed, 0, 1 },
	{  (0 | d__get_color_somHasMPlan), 0, (somMToken)0, (somMethodPtr)d__get_color, 
	   0, (somMethodPtr)d__get_color_somApplyStubValue, 
	   (somMethodInfo *) d__get_color_somMethodInfoValue, &Animals_DogClassData._get_color, 0, 1 },
	{  (0 | d__set_color_somHasMPlan), 0, (somMToken)0, (somMethodPtr)d__set_color, 
	   0, (somMethodPtr)d__set_color_somApplyStubValue, 
	   (somMethodInfo *) d__set_color_somMethodInfoValue, &Animals_DogClassData._set_color, 0, 1 }
};

static somOverrideMethod_t2 __somC_Animals_Dog_overridesArray[] = {
{ &(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds__get_genus]), 
#ifdef SOMPCALLAnimals_Dog__get_genus
   (somMethodPtr*)&Animals_Dog_pcall__get_genus_resolved, 
   (somMethodPtr)Animals_Dog_pcallResolve__get_genus, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)d__get_genus },
{ &(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds__get_species]), 
#ifdef SOMPCALLAnimals_Dog__get_species
   (somMethodPtr*)&Animals_Dog_pcall__get_species_resolved, 
   (somMethodPtr)Animals_Dog_pcallResolve__get_species, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)d__get_species },
{ &(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds_display]), 
#ifdef SOMPCALLAnimals_Dog_display
   (somMethodPtr*)&Animals_Dog_pcall_display_resolved, 
   (somMethodPtr)Animals_Dog_pcallResolve_display, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)d_display },
{ &(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds_somInit]), 
#ifdef SOMPCALLAnimals_Dog_somInit
   (somMethodPtr*)&Animals_Dog_pcall_somInit_resolved, 
   (somMethodPtr)Animals_Dog_pcallResolve_somInit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)d_somInit },
{ &(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds_somUninit]), 
#ifdef SOMPCALLAnimals_Dog_somUninit
   (somMethodPtr*)&Animals_Dog_pcall_somUninit_resolved, 
   (somMethodPtr)Animals_Dog_pcallResolve_somUninit, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)d_somUninit },
{ &(__somC_Animals_Dog_regIdsArray[__somC_Animals_Dog_regIds_somDumpSelfInt]), 
#ifdef SOMPCALLAnimals_Dog_somDumpSelfInt
   (somMethodPtr*)&Animals_Dog_pcall_somDumpSelfInt_resolved, 
   (somMethodPtr)Animals_Dog_pcallResolve_somDumpSelfInt, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)d_somDumpSelfInt }
};

static somClassVars1 __somC_Animals_Dog_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	sizeof(Animals_DogData),	/* dataSize */
	4,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct Animals_DogClassDataStructure __somC_Animals_Dog_resolvedMTokens;

static void * __somC_Animals_Dog_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_Animals_Dog_ClassInfo; /* C forward reference */

SOM_CIB Animals_Dog_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_Animals_Dog_classVars1,
	&__somC_Animals_Dog_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	Animals_Dog_MajorVersion,
	Animals_Dog_MinorVersion,
	0x60004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	NULL,	/* classMeta */
	(somMethodPtr) __somC_Animals_Dog_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) d_somInit,	/* legacyInit */
	(somMethodPtr) d_somUninit,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	13,	/* numRegIds */
	__somC_Animals_Dog_regIdsArray,	/* regIds */
	(sizeof(struct Animals_DogClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&Animals_DogClassData,
	(somCClassDataStructurePtr)&Animals_DogCClassData,
	&__somC_Animals_Dog_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_Animals_Dog_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_Animals_Dog_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	4,	/* maxNDMethods */
	__somC_Animals_Dog_newNDMethodsArray,	/* newNDMethods */
	6,	/* numOverrides */
	__somC_Animals_Dog_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_Animals_Dog_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_Animals_Dog_parentMtabs,	/* parentMtabs */
	&Animals_Dog_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_Animals_Dog_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_Animals_Dog_ClassInfo = {
	0,	/* classObject */
	&__somC_Animals_Dog_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_Animals_Dog_classInit)
#pragma alloc_text (SEG0002, Animals_DogNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_Animals_Dog_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   Animals_Dog_parent_Animals_Animal_somDumpSelfInt_resolved = 
	somParentNumResolve(Animals_DogCClassData.parentMtab, 1, _SOMMTOKEN_SOMObject(somDumpSelfInt)); 
   Animals_Dog_parent_Animals_Animal_display_resolved = 
	somParentNumResolve(Animals_DogCClassData.parentMtab, 1, _SOMMTOKEN_Animals_Animal(display)); 
   Animals_Dog_parent_Animals_Animal__get_species_resolved = 
	somParentNumResolve(Animals_DogCClassData.parentMtab, 1, _SOMMTOKEN_Animals_Animal(_get_species)); 
   Animals_Dog_parent_Animals_Animal__get_genus_resolved = 
	somParentNumResolve(Animals_DogCClassData.parentMtab, 1, _SOMMTOKEN_Animals_Animal(_get_genus)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK Animals_DogNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_Animals_Dog && _somCheckVersion(_SOMCLASS_Animals_Dog,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_Animals_Dog;
__somC_Animals_Dog_parentArray[0] = (SOMClass *)&_SOMCLASS_Animals_Animal;
Animals_Dog_ClassInitBlock.classMeta= 
	(SOMClass *)&Animals_KennelClassData.classObject;	/* classMeta */
   /* require parents */
   if (!_SOMCLASS_Animals_Animal) Animals_AnimalNewClass(Animals_Animal_MajorVersion,Animals_Animal_MinorVersion);
   /* require metaclass */
   if (!_SOMCLASS_Animals_Kennel) Animals_KennelNewClass(Animals_Kennel_MajorVersion,Animals_Kennel_MinorVersion);
   /* return new class */
   return somBuildClass2( &Animals_Dog_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_Animals_Dog_ih */

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


#ifndef SOM_Animals_Kennel_ih
#define SOM_Animals_Kennel_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_Animals_Kennel_h
#include "animals.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef struct {
	string classcolor;
} __somC_Animals_Kennel_ProtectedPrivateData;
typedef __somC_Animals_Kennel_ProtectedPrivateData Animals_KennelData, *Animals_KennelDataPtr;

/*
 * -- GetData macro
 */
typedef Animals_KennelDataPtr SOMLINK somTP_Animals_Kennel_DataThunk(void*);
typedef somTP_Animals_Kennel_DataThunk *somTD_Animals_Kennel_DataThunk;

#define Animals_KennelGetData(somSelf) \
   (((somTD_Animals_Kennel_DataThunk)(Animals_KennelCClassData.instanceDataToken))(somSelf))
#define _classcolor somThis->classcolor

/*
 * -- Primary Implementation File Support
 */
#if (defined(Animals_Dog_Class_Source) || defined(Animals_Kennel_Class_Source) || defined(SOM_Module_animals_Source))

#ifndef Animals_KennelMethodDebug
   #define Animals_KennelMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* Animals_KennelMethodDebug */

static void SOMLINK __somC_Animals_Kennel_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct Animals_KennelClassDataStructure SOMDLLEXPORT SOMDLINK Animals_KennelClassData = {0};
struct Animals_KennelCClassDataStructure SOMDLLEXPORT SOMDLINK Animals_KennelCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_Animals_Kennel0[] = {"Animals::Kennel"}; /* class name */
static char __somC_Strings_Animals_Kennel1[] = {"newDog"}; /* method name */
static char __somC_Strings_Animals_Kennel2[] = {"SOMClass"}; /* parent name */
static char __somC_Strings_Animals_Kennel3[] = {"somNew"}; /* overridden method name */
static char * __somC_Animals_Kennel_regIdsArray[] = {
	__somC_Strings_Animals_Kennel0,
#ifndef __somC_Animals_Kennel_regIds_newDog
#define __somC_Animals_Kennel_regIds_newDog 1
#endif
	__somC_Strings_Animals_Kennel1,
	__somC_Strings_Animals_Kennel2,
#ifndef __somC_Animals_Kennel_regIds_somNew
#define __somC_Animals_Kennel_regIds_somNew 3
#endif
	__somC_Strings_Animals_Kennel3
};


/*
 * Overridden method: somNew
 */
SOM_Scope SOMObject  SOMLINK md_somNew(Animals_Kennel somSelf);
static somMethodProc* Animals_Kennel_parent_SOMClass_somNew_resolved;
#define Animals_Kennel_parent_SOMClass_somNew(somSelf) \
  ((( somTD_SOMClass_somNew ) \
    Animals_Kennel_parent_SOMClass_somNew_resolved)(somSelf))
#ifndef SOMGD_pmc_SOMClass_somNew
  #ifdef parent_SOMClass_somNew
     #define SOMGD_pmc_SOMClass_somNew 1
     #undef parent_SOMClass_somNew
  #else
     #define parent_SOMClass_somNew Animals_Kennel_parent_SOMClass_somNew
  #endif /* parent_SOMClass_somNew */
#endif /* SOMGD_pmc_SOMClass_somNew */
#ifndef SOMGD_pmc_parent_somNew
  #ifdef parent_somNew
    #define SOMGD_pmc_parent_somNew
    #undef parent_somNew
  #else
#define parent_somNew Animals_Kennel_parent_SOMClass_somNew
  #endif
#endif
#define Animals_Kennel_parents_somNew(somSelf) (\
   Animals_Kennel_parent_SOMClass_somNew(somSelf))
#define SOMPCALLAnimals_Kennel_somNew
static somMethodProc* Animals_Kennel_pcall_somNew_resolved;
#define Animals_Kennel_pcall_somNew(somSelf) \
  ((( somTD_SOMClass_somNew ) \
    Animals_Kennel_pcall_somNew_resolved)(somSelf))
static SOMObject  SOMLINK Animals_Kennel_pcallResolve_somNew(Animals_Kennel somSelf)
{
   return ((somTD_SOMClass_somNew) 
      somPCallResolve(somSelf, _Animals_Kennel, _SOMMTOKEN_SOMClass(somNew)))(somSelf);
}


/*
 * New Method: newDog
 */
SOM_Scope Animals_Dog  SOMLINK md_newDog(Animals_Kennel somSelf, Environment *ev,
		string name,
		string sound,
		string breed,
		string color);
/*
 *  Create an instance of a Dog with a specific name,
 *  sound, breed, & color.
 */
#ifndef somId_newDog
#define somId_newDog ((somId)&(__somC_Animals_Kennel_regIdsArray[__somC_Animals_Kennel_regIds_newDog]))
#endif
#define SOM_MPR_MINFO_md_newDog {0, 24, 0}
static somMpRowMethodInfo Animals_Kennel_newDog_mp_minfoRow = {{0, SOM_MP_ROWTYPE_METHODINFO}, SOM_MPR_MINFO_md_newDog};
#ifndef DEFINEDAnimals_Kennel_newDog_mp
#define DEFINEDAnimals_Kennel_newDog_mp
/*[ ::Animals::Kennel::newDog Animals_Kennel_newDog_mp ]*/
/* Contract specification:
[CALLTYPE_IDL (2)][RESULT][VERSION 0]
RESULT[out]: ObjREF
ARG 1[in]: String
ARG 2[in]: String
ARG 3[in]: String
ARG 4[in]: String
*/
static struct { void * rows; unsigned char csr[8]; } Animals_Kennel_newDog_mp={&Animals_Kennel_newDog_mp_minfoRow, {
0x86, 0x05, 0x96, 0x54, 0x54, 0x54, 0x54},
};
#endif
#define md_newDog_somMethodInfoValue 0
#define md_newDog_somApplyStubValue &Animals_Kennel_newDog_mp.csr
#define md_newDog_somHasMPlan 8

/*
 * Functions for attributes.
 */

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_Animals_Kennel_parentArray[] = {
	NULL,
};
void * __somC_Animals_Kennel_parentMtabs[1];

somMethodDefn __somC_Animals_Kennel_newNDMethodsArray[] = {
	{  (0 | md_newDog_somHasMPlan), 0, (somMToken)0, (somMethodPtr)md_newDog, 
	   0, (somMethodPtr)md_newDog_somApplyStubValue, 
	   (somMethodInfo *) md_newDog_somMethodInfoValue, &Animals_KennelClassData.newDog, 0, 1 }
};

static somOverrideMethod_t2 __somC_Animals_Kennel_overridesArray[] = {
{ &(__somC_Animals_Kennel_regIdsArray[__somC_Animals_Kennel_regIds_somNew]), 
#ifdef SOMPCALLAnimals_Kennel_somNew
   (somMethodPtr*)&Animals_Kennel_pcall_somNew_resolved, 
   (somMethodPtr)Animals_Kennel_pcallResolve_somNew, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)md_somNew }
};

static somClassVars1 __somC_Animals_Kennel_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	sizeof(Animals_KennelData),	/* dataSize */
	4,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct Animals_KennelClassDataStructure __somC_Animals_Kennel_resolvedMTokens;

static void * __somC_Animals_Kennel_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_Animals_Kennel_ClassInfo; /* C forward reference */

SOM_CIB Animals_Kennel_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_Animals_Kennel_classVars1,
	&__somC_Animals_Kennel_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	Animals_Kennel_MajorVersion,
	Animals_Kennel_MinorVersion,
	0x60004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	0,	/* classMeta */
	(somMethodPtr) __somC_Animals_Kennel_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) 0,	/* legacyInit */
	(somMethodPtr) 0,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	4,	/* numRegIds */
	__somC_Animals_Kennel_regIdsArray,	/* regIds */
	(sizeof(struct Animals_KennelClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&Animals_KennelClassData,
	(somCClassDataStructurePtr)&Animals_KennelCClassData,
	&__somC_Animals_Kennel_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_Animals_Kennel_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_Animals_Kennel_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	1,	/* maxNDMethods */
	__somC_Animals_Kennel_newNDMethodsArray,	/* newNDMethods */
	1,	/* numOverrides */
	__somC_Animals_Kennel_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_Animals_Kennel_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_Animals_Kennel_parentMtabs,	/* parentMtabs */
	&Animals_Kennel_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_Animals_Kennel_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_Animals_Kennel_ClassInfo = {
	0,	/* classObject */
	&__somC_Animals_Kennel_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_Animals_Kennel_classInit)
#pragma alloc_text (SEG0002, Animals_KennelNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_Animals_Kennel_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   Animals_Kennel_parent_SOMClass_somNew_resolved = 
	somParentNumResolve(Animals_KennelCClassData.parentMtab, 1, _SOMMTOKEN_SOMClass(somNew)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK Animals_KennelNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_Animals_Kennel && _somCheckVersion(_SOMCLASS_Animals_Kennel,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_Animals_Kennel;
__somC_Animals_Kennel_parentArray[0] = (SOMClass *)&_SOMCLASS_SOMClass;
   /* require parents */
   if (!_SOMCLASS_SOMClass) SOMClassNewClass(SOMClass_MajorVersion,SOMClass_MinorVersion);
   /* return new class */
   return somBuildClass2( &Animals_Kennel_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_Animals_Kennel_ih */

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


#ifndef SOM_Animals_BigDog_ih
#define SOM_Animals_BigDog_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_Animals_BigDog_h
#include "animals.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef void Animals_BigDogData;
#define __somC_Animals_BigDog_NODATA

/*
 * This class introduces no instance data, so no GetData macro is provided
 */

/*
 * -- Primary Implementation File Support
 */
#if (defined(Animals_BigDog_Class_Source) || defined(SOM_Module_animals_Source))

#ifndef Animals_BigDogMethodDebug
   #define Animals_BigDogMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* Animals_BigDogMethodDebug */

static void SOMLINK __somC_Animals_BigDog_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct Animals_BigDogClassDataStructure SOMDLLEXPORT SOMDLINK Animals_BigDogClassData = {0};
struct Animals_BigDogCClassDataStructure SOMDLLEXPORT SOMDLINK Animals_BigDogCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_Animals_BigDog0[] = {"Animals::BigDog"}; /* class name */
static char __somC_Strings_Animals_BigDog1[] = {"Animals::Dog"}; /* parent name */
static char __somC_Strings_Animals_BigDog2[] = {"talk"}; /* overridden method name */
static char * __somC_Animals_BigDog_regIdsArray[] = {
	__somC_Strings_Animals_BigDog0,
	__somC_Strings_Animals_BigDog1,
#ifndef __somC_Animals_BigDog_regIds_talk
#define __somC_Animals_BigDog_regIds_talk 2
#endif
	__somC_Strings_Animals_BigDog2
};


/*
 * Overridden method: talk
 */
SOM_Scope void  SOMLINK bd_talk(Animals_BigDog somSelf, Environment *ev);
static somMethodProc* Animals_BigDog_parent_Animals_Dog_talk_resolved;
#define Animals_BigDog_parent_Animals_Dog_talk(somSelf,ev) \
  ((( somTD_Animals_Animal_talk ) \
    Animals_BigDog_parent_Animals_Dog_talk_resolved)(somSelf,ev))
#ifndef SOMGD_pmc_Animals_Dog_talk
  #ifdef parent_Animals_Dog_talk
     #define SOMGD_pmc_Animals_Dog_talk 1
     #undef parent_Animals_Dog_talk
  #else
     #define parent_Animals_Dog_talk Animals_BigDog_parent_Animals_Dog_talk
  #endif /* parent_Animals_Dog_talk */
#endif /* SOMGD_pmc_Animals_Dog_talk */
#ifndef SOMGD_pmc_parent_talk
  #ifdef parent_talk
    #define SOMGD_pmc_parent_talk
    #undef parent_talk
  #else
#define parent_talk Animals_BigDog_parent_Animals_Dog_talk
  #endif
#endif
#define Animals_BigDog_parents_talk(somSelf,ev) (\
   Animals_BigDog_parent_Animals_Dog_talk(somSelf,ev))
#define SOMPCALLAnimals_BigDog_talk
static somMethodProc* Animals_BigDog_pcall_talk_resolved;
#define Animals_BigDog_pcall_talk(somSelf,ev) \
  ((( somTD_Animals_Animal_talk ) \
    Animals_BigDog_pcall_talk_resolved)(somSelf,ev))
static void  SOMLINK Animals_BigDog_pcallResolve_talk(Animals_BigDog somSelf, Environment *ev)
{
   ((somTD_Animals_Animal_talk) 
      somPCallResolve(somSelf, _Animals_BigDog, _SOMMTOKEN_Animals_Animal(talk)))(somSelf,ev);
}


/*
 * Functions for attributes.
 */

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_Animals_BigDog_parentArray[] = {
	NULL,
};
void * __somC_Animals_BigDog_parentMtabs[1];

static somOverrideMethod_t2 __somC_Animals_BigDog_overridesArray[] = {
{ &(__somC_Animals_BigDog_regIdsArray[__somC_Animals_BigDog_regIds_talk]), 
#ifdef SOMPCALLAnimals_BigDog_talk
   (somMethodPtr*)&Animals_BigDog_pcall_talk_resolved, 
   (somMethodPtr)Animals_BigDog_pcallResolve_talk, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)bd_talk }
};

static somClassVars1 __somC_Animals_BigDog_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	0,	/* dataSize */
	0,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct Animals_BigDogClassDataStructure __somC_Animals_BigDog_resolvedMTokens;

static void * __somC_Animals_BigDog_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_Animals_BigDog_ClassInfo; /* C forward reference */

SOM_CIB Animals_BigDog_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_Animals_BigDog_classVars1,
	&__somC_Animals_BigDog_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	Animals_BigDog_MajorVersion,
	Animals_BigDog_MinorVersion,
	0x60004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	0,	/* classMeta */
	(somMethodPtr) __somC_Animals_BigDog_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) 0,	/* legacyInit */
	(somMethodPtr) 0,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	3,	/* numRegIds */
	__somC_Animals_BigDog_regIdsArray,	/* regIds */
	(sizeof(struct Animals_BigDogClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&Animals_BigDogClassData,
	(somCClassDataStructurePtr)&Animals_BigDogCClassData,
	&__somC_Animals_BigDog_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_Animals_BigDog_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_Animals_BigDog_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	0,	/* maxNDMethods */
	0,	/* newNDMethods */
	1,	/* numOverrides */
	__somC_Animals_BigDog_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_Animals_BigDog_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_Animals_BigDog_parentMtabs,	/* parentMtabs */
	&Animals_BigDog_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_Animals_BigDog_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_Animals_BigDog_ClassInfo = {
	0,	/* classObject */
	&__somC_Animals_BigDog_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_Animals_BigDog_classInit)
#pragma alloc_text (SEG0002, Animals_BigDogNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_Animals_BigDog_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   Animals_BigDog_parent_Animals_Dog_talk_resolved = 
	somParentNumResolve(Animals_BigDogCClassData.parentMtab, 1, _SOMMTOKEN_Animals_Animal(talk)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK Animals_BigDogNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_Animals_BigDog && _somCheckVersion(_SOMCLASS_Animals_BigDog,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_Animals_BigDog;
__somC_Animals_BigDog_parentArray[0] = (SOMClass *)&_SOMCLASS_Animals_Dog;
   /* require parents */
   if (!_SOMCLASS_Animals_Dog) Animals_DogNewClass(Animals_Dog_MajorVersion,Animals_Dog_MinorVersion);
   /* return new class */
   return somBuildClass2( &Animals_BigDog_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_Animals_BigDog_ih */

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


#ifndef SOM_Animals_LittleDog_ih
#define SOM_Animals_LittleDog_ih


/*
 * Set the scope of method functions
 */
#ifndef SOM_Scope
#define SOM_Scope static
#endif

#ifndef SOM_Animals_LittleDog_h
#include "animals.h"
#endif
#include <somcsr.h>
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(none)
#else
  #if defined(__IBMC__)
     #pragma checkout(suspend)
  #endif
#endif


/*
 * -- Instance data
 */
typedef void Animals_LittleDogData;
#define __somC_Animals_LittleDog_NODATA

/*
 * This class introduces no instance data, so no GetData macro is provided
 */

/*
 * -- Primary Implementation File Support
 */
#if (defined(Animals_LittleDog_Class_Source) || defined(SOM_Module_animals_Source))

#ifndef Animals_LittleDogMethodDebug
   #define Animals_LittleDogMethodDebug(c,m) SOMMethodDebug(c,m)
#endif  /* Animals_LittleDogMethodDebug */

static void SOMLINK __somC_Animals_LittleDog_classInit(SOMClass cls);


/*
 * Init ClassData Structures
 */
struct Animals_LittleDogClassDataStructure SOMDLLEXPORT SOMDLINK Animals_LittleDogClassData = {0};
struct Animals_LittleDogCClassDataStructure SOMDLLEXPORT SOMDLINK Animals_LittleDogCClassData = {0};


/*
 * Identifiers
 */
static char __somC_Strings_Animals_LittleDog0[] = {"Animals::LittleDog"}; /* class name */
static char __somC_Strings_Animals_LittleDog1[] = {"Animals::Dog"}; /* parent name */
static char __somC_Strings_Animals_LittleDog2[] = {"talk"}; /* overridden method name */
static char * __somC_Animals_LittleDog_regIdsArray[] = {
	__somC_Strings_Animals_LittleDog0,
	__somC_Strings_Animals_LittleDog1,
#ifndef __somC_Animals_LittleDog_regIds_talk
#define __somC_Animals_LittleDog_regIds_talk 2
#endif
	__somC_Strings_Animals_LittleDog2
};


/*
 * Overridden method: talk
 */
SOM_Scope void  SOMLINK ld_talk(Animals_LittleDog somSelf, Environment *ev);
static somMethodProc* Animals_LittleDog_parent_Animals_Dog_talk_resolved;
#define Animals_LittleDog_parent_Animals_Dog_talk(somSelf,ev) \
  ((( somTD_Animals_Animal_talk ) \
    Animals_LittleDog_parent_Animals_Dog_talk_resolved)(somSelf,ev))
#ifndef SOMGD_pmc_Animals_Dog_talk
  #ifdef parent_Animals_Dog_talk
     #define SOMGD_pmc_Animals_Dog_talk 1
     #undef parent_Animals_Dog_talk
  #else
     #define parent_Animals_Dog_talk Animals_LittleDog_parent_Animals_Dog_talk
  #endif /* parent_Animals_Dog_talk */
#endif /* SOMGD_pmc_Animals_Dog_talk */
#ifndef SOMGD_pmc_parent_talk
  #ifdef parent_talk
    #define SOMGD_pmc_parent_talk
    #undef parent_talk
  #else
#define parent_talk Animals_LittleDog_parent_Animals_Dog_talk
  #endif
#endif
#define Animals_LittleDog_parents_talk(somSelf,ev) (\
   Animals_LittleDog_parent_Animals_Dog_talk(somSelf,ev))
#define SOMPCALLAnimals_LittleDog_talk
static somMethodProc* Animals_LittleDog_pcall_talk_resolved;
#define Animals_LittleDog_pcall_talk(somSelf,ev) \
  ((( somTD_Animals_Animal_talk ) \
    Animals_LittleDog_pcall_talk_resolved)(somSelf,ev))
static void  SOMLINK Animals_LittleDog_pcallResolve_talk(Animals_LittleDog somSelf, Environment *ev)
{
   ((somTD_Animals_Animal_talk) 
      somPCallResolve(somSelf, _Animals_LittleDog, _SOMMTOKEN_Animals_Animal(talk)))(somSelf,ev);
}


/*
 * Functions for attributes.
 */

/*
 * Special Method Support
 */

/*
 * -- Routines and Structures to create the class object
 */
static SOMClass * __somC_Animals_LittleDog_parentArray[] = {
	NULL,
};
void * __somC_Animals_LittleDog_parentMtabs[1];

static somOverrideMethod_t2 __somC_Animals_LittleDog_overridesArray[] = {
{ &(__somC_Animals_LittleDog_regIdsArray[__somC_Animals_LittleDog_regIds_talk]), 
#ifdef SOMPCALLAnimals_LittleDog_talk
   (somMethodPtr*)&Animals_LittleDog_pcall_talk_resolved, 
   (somMethodPtr)Animals_LittleDog_pcallResolve_talk, 
#else
   (somMethodPtr*)0, 
   (somMethodPtr)0, 
#endif
(somMethodPtr)ld_talk }
};

static somClassVars1 __somC_Animals_LittleDog_classVars1 = {
	1,		/* layoutVersion */
	(void *)NULL,	/* extension */
	0,	/* dataSize */
	0,		/* type code dataAlignment */
	(somMethodPtr)0,	/* classAllocate */
	(somMethodPtr)0	/* classDeallocate */
};

static struct Animals_LittleDogClassDataStructure __somC_Animals_LittleDog_resolvedMTokens;

static void * __somC_Animals_LittleDog_CIB_unsharedClassVariablesPtr = 0;
som3ClassInfoStruct __somC_Animals_LittleDog_ClassInfo; /* C forward reference */

SOM_CIB Animals_LittleDog_ClassInitBlock = {
	1,	/* layoutVersion */
	&__somC_Animals_LittleDog_classVars1,
	&__somC_Animals_LittleDog_CIB_unsharedClassVariablesPtr,	/* unsharedVars */
	Animals_LittleDog_MajorVersion,
	Animals_LittleDog_MinorVersion,
	0x60004,	/* constFlags */
	0xFFFFFFFF,	/* inheritVars */
	0,	/* classMeta */
	(somMethodPtr) __somC_Animals_LittleDog_classInit,	/* classInit */
	(somMethodPtr) 0,	/* classUninit */
	(somMethodPtr) 0,	/* legacyInit */
	(somMethodPtr) 0,	/* legacyUninit */
	(somMethodPtr) 0,	/* udaAssign */
	(somMethodPtr) 0,	/* udaConstAssign */
	0,	/* protectedDataOffset */
	0,	/* numEmbeddedObjs */
	0,	/* embeddedObjs */
	3,	/* numRegIds */
	__somC_Animals_LittleDog_regIdsArray,	/* regIds */
	(sizeof(struct Animals_LittleDogClassDataStructure) - sizeof(SOMClass *))/sizeof(somMToken),	/* numClassDataEntries */
	(somClassDataStructurePtr)&Animals_LittleDogClassData,
	(somCClassDataStructurePtr)&Animals_LittleDogCClassData,
	&__somC_Animals_LittleDog_ClassInfo,
	1,	/* numParents */
	(SOMClass**)__somC_Animals_LittleDog_parentArray,	/* parents */
	1,	/* numDirectInitClasses */
	(SOMClass**)__somC_Animals_LittleDog_parentArray,	/* directInitClasses */
	0,	/* numNewInitializers */
	0,	/* newInitializerSymbols */
	0,	/* numOvInitializers */
	0,	/* ovInitializerSymbols */
	0,	/* special overrides */
	0,	/* maxNDMethods */
	0,	/* newNDMethods */
	1,	/* numOverrides */
	__somC_Animals_LittleDog_overridesArray,	/* overrides */
	0,	/* numInheritedSelections */
	0,	/* inheritedSelections */
	0,	/* numMigratedMethods */
	0 	/* migrated methods */
};	/* CIB */

static som3ClassDetails __somC_Animals_LittleDog_ClassDetails = {
	(somMethodTabPtr)NULL,	/* mtab */
	(somMethodTabPtr *)__somC_Animals_LittleDog_parentMtabs,	/* parentMtabs */
	&Animals_LittleDog_ClassInitBlock,	/* CIB pointer */
	(somTD_somRenewNoInitNoZeroThunk)0,	/* somRenewNoInitNoZeroThunk */
	(long)0,	/* instanceSize */
	(somMethodProc**)NULL,	/* resolvedInits */
	(somClassDataStructure *)&__somC_Animals_LittleDog_resolvedMTokens,	/* resolvedMTokens */
	{0,0,0,0},	/* initCtrl */
	{0,0,0,0},	/* destructCtrl */
	{0,0,0,0},	/* assignCtrl */
	(long)1,	/* layoutVersion */
	(void*)NULL,	/* extension */
	(somDToken)NULL,	/* publicDataToken */
	(somDToken)NULL,	/* protectedDataToken */
};
som3ClassInfoStruct __somC_Animals_LittleDog_ClassInfo = {
	0,	/* classObject */
	&__somC_Animals_LittleDog_ClassDetails	/* class details */
};


/*
 * Class Creation and Initialization
 */

#if defined(__IBMC__) && (defined(_WIN32) || defined(__OS2__)) && !defined(SOM_PREWARP)
#pragma alloc_text (SEG0002, __somC_Animals_LittleDog_classInit)
#pragma alloc_text (SEG0002, Animals_LittleDogNewClass)
#endif

/* classinit function */
SOM_Scope void SOMLINK __somC_Animals_LittleDog_classInit(SOMClass somSelf)
{
   SOM_IgnoreWarning(somSelf);
   Animals_LittleDog_parent_Animals_Dog_talk_resolved = 
	somParentNumResolve(Animals_LittleDogCClassData.parentMtab, 1, _SOMMTOKEN_Animals_Animal(talk)); 
}

/* NewClass Function */
SOMEXTERN SOMDLLEXPORT SOMClass  SOMLINK Animals_LittleDogNewClass (long reqMajorVersion, long reqMinorVersion)
{
   if (_SOMCLASS_Animals_LittleDog && _somCheckVersion(_SOMCLASS_Animals_LittleDog,reqMajorVersion,reqMinorVersion))
      return _SOMCLASS_Animals_LittleDog;
__somC_Animals_LittleDog_parentArray[0] = (SOMClass *)&_SOMCLASS_Animals_Dog;
   /* require parents */
   if (!_SOMCLASS_Animals_Dog) Animals_DogNewClass(Animals_Dog_MajorVersion,Animals_Dog_MinorVersion);
   /* return new class */
   return somBuildClass2( &Animals_LittleDog_ClassInitBlock, reqMajorVersion, reqMinorVersion );
}

#endif       /* Primary Implementation Support */
#if defined(__IBMC__) && (__IBMC__ >= 300)
  #pragma info(restore)
#else
  #if defined(__IBMC__)
    #pragma checkout(resume)
  #endif
#endif

#endif       /* SOM_Animals_LittleDog_ih */
