00001 //--------------------------------------------------------------------------- 00002 00003 #ifndef MortalityBaseH 00004 #define MortalityBaseH 00005 //--------------------------------------------------------------------------- 00006 #include "BehaviorBase.h" 00007 00008 class clTree; 00009 class clMortalityOrg; 00010 class clSimManager; 00011 00040 class clMortalityBase : virtual public clBehaviorBase { 00041 //note: need the virtual keyword to avoid base class ambiguity. 00042 00043 friend class clMortalityOrg; 00044 00045 public: 00046 00053 clMortalityBase(clSimManager *p_oSimManager); 00054 00059 virtual ~clMortalityBase(); 00060 00067 void Action(); 00068 00079 virtual bool DoMort(clTree *p_oTree, const float &fDbh, const short int &iSpecies) = 0; 00080 00086 clMortalityOrg* GetMortOrg() {return mp_oMortalityOrg;}; 00087 00093 void RegisterTreeDataMembers(); 00094 00103 short int GetNewTreeBools(); 00104 00112 bool UsesThisMortality(short int iSp, short int iTp) 00113 {return mp_bUsesThisMortality[iSp][iTp];}; 00114 00123 virtual void PreMortCalcs( clTreePopulation *p_oPop ){;}; 00124 00125 protected: 00126 00127 static clMortalityOrg *mp_oMortalityOrg; 00130 short int m_iNumTotalSpecies; 00131 bool m_bHooked; 00134 bool **mp_bUsesThisMortality; 00146 void GetData(xercesc::DOMDocument *p_oDoc); 00147 00151 void PopulateUsesThisMortality(); 00152 00159 virtual void DoShellSetup(xercesc::DOMDocument *p_oDoc){;}; 00160 }; 00161 clMortalityOrg *clMortalityBase::mp_oMortalityOrg = NULL; 00162 //--------------------------------------------------------------------------- 00163 #endif