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 00019 /// simCore.h 00020 00021 /// "What bubbles, bubbles up" 00022 00023 /// Feed forward sometimes needs bredth first exectution, 00024 /// so this class handles some of that. 00025 00026 #ifndef __SIMIAN_CORE_DOT_H 00027 #define __SIMIAN_CORE_DOT_H 00028 00029 #include <simBase/simBase.h> 00030 00031 ///TODO: Parallel Multi-threaded!!! 00032 00033 class SimCore : public SimBase { 00034 public: 00035 virtual ~SimCore(){} 00036 00037 //////////////////////////////////////////////////// 00038 ///@name Modified interface 00039 ///@{ 00040 bool isModified() const {return _modified;} 00041 void setModified(bool mod = true) {_modified = mod;} 00042 ///@} 00043 00044 //////////////////////////////////////////////////// 00045 ///@name Serialization 00046 /// TODO: should be pure virtual, SOON 00047 ///@{ 00048 00049 /// serialize 00050 virtual std::ostream &saveSelf(std::ostream &os) { return os; } 00051 /// unserialize 00052 virtual std::istream &readSelf(std::istream &is) { return is; } 00053 00054 ///@} 00055 //////////////////////////////////////////////////// 00056 00057 //////////////////////////////////////////////////// 00058 ///@name Forward Modify interface, NOT FOR GENERAL USE. 00059 /// framework interface. 00060 ///@{ 00061 00062 /// is this thing aready marked for future update? 00063 bool isForwardModified() {return _forward;} 00064 /// mark all children as forward modified 00065 virtual void setForwardModified() = 0; 00066 00067 ///@} 00068 //////////////////////////////////////////////////// 00069 00070 protected: 00071 SimCore():_modified(true), _updating(false), _forward(false){} 00072 00073 bool _modified; 00074 bool _forward; 00075 bool _updating; 00076 00077 private: 00078 /// not used 00079 SimCore(const SimCore &sc); 00080 SimCore &operator=(const SimCore &sc); 00081 }; 00082 00083 #endif 00084