00001 00005 #ifndef _IONCHANNEL_H_ 00006 #define _IONCHANNEL_H_ 00007 00008 #include "globaldefinitions.h" 00009 #include "advanceable.h" 00010 #include "membranepatchsimple.h" 00011 00012 class CbNeuron; 00013 class MembranePatchSimple; 00014 00016 00047 class IonChannel : public Advancable { 00048 00049 public: 00050 00051 // The constructor 00052 IonChannel(void) { Erev=0; g=0; membrane=0;}; 00053 00054 // The destructor 00055 virtual ~IonChannel(void) {} ; 00056 00057 virtual void reset(void)=0; 00058 00059 virtual int advance(void)=0; 00060 00062 virtual void membraneSpikeNotify(double t)=0; // this is a spiking input! 00063 00067 virtual double gInfty(void) {return 0;} 00068 00069 virtual int addIncoming(Advancable *Incoming); 00070 00071 virtual int addOutgoing(Advancable *Outgoing); 00072 00074 float Erev; // this isn analog output 00075 00077 double g; // this is an analog output 00078 00079 protected: 00080 friend class IonGate; 00081 00083 MembranePatchSimple *membrane; 00084 }; 00085 00086 #endif 00087 00088