00001 //------------------------------------------------------------------------ 00002 // 00003 // Joe Kniss 00004 // 6-20-03 00005 // ________ ____ ___ 00006 // | \ / | / / 00007 // +---+ \/ |/ / 00008 // +--+| |\ /| < 00009 // | || | \ / | |\ \ 00010 // | | \/ | | \ \ 00011 // \_____| |__| \__\ 00012 // Copyright 2003 00013 // Joe Michael Kniss 00014 // <<< jmk@cs.utah.edu >>> 00015 // "All Your Base are Belong to Us" 00016 //------------------------------------------------------------------------- 00017 00018 ///SimModObj.h 00019 /// simian core, alg 00020 00021 #ifndef __SIMIAN_MODULE_OBJECT_DOT_H 00022 #define __SIMIAN_MODULE_OBJECT_DOT_H 00023 00024 #include <smartptr.h> 00025 #include <simBase/simBase.h> 00026 00027 class DataObjIF; 00028 00029 //////////////////////////////////////////////////////////////////////////// 00030 /// Module interface 00031 /// A public module interface, implements nothing 00032 //////////////////////////////////////////////////////////////////////////// 00033 00034 class SimModObjIF : public SimCore, public gutz::Counted { 00035 public: 00036 virtual ~SimModObjIF(){} 00037 00038 /////////////////////////////////////////// 00039 ///@name Public Execute Interface 00040 ///@{ 00041 00042 /// Execute if anything changed 00043 virtual void execute() = 0; 00044 /// Execute no matter what! 00045 virtual void force() = 0; 00046 00047 ///@} 00048 /////////////////////////////////////////// 00049 00050 /////////////////////////////////////////// 00051 ///@name framework interfaces NOT FOR GENERAL USE. 00052 /// do not call from user programs/modules 00053 ///@{ 00054 00055 /////////////////////////////////////////// 00056 /// Update Interface 00057 /////////////////////////////////////////// 00058 00059 /// input data modified notification 00060 virtual void update_(gutz::SmartPtr<DataObjIF> d) = 0; 00061 00062 ///@} 00063 /////////////////////////////////////////// 00064 00065 00066 protected: 00067 SimModObjIF():_forwardUpdate(false) {} 00068 00069 bool _forwardUpdate; 00070 private: 00071 /// not used 00072 SimModObjIF(const SimModObjIF &smo); 00073 SimModObjIF &operator=(const SimModObjIF &smo); 00074 }; 00075 00076 typedef gutz::SmartPtr<SimModObjIF> SimModObjSP; 00077 00078 #endif 00079 00080