00001 #ifndef singlech_h 00002 #define singelch_h 00003 00004 class SingleChanInfo; 00005 class SingleChanState; 00006 class NrnProperty; 00007 class Vect; 00008 class OcMatrix; 00009 class Rand; 00010 00011 class SingleChan { 00012 public: 00013 SingleChan(const char*); 00014 SingleChan(OcMatrix*); 00015 virtual ~SingleChan(); 00016 void set_rates(double v); 00017 void set_rates(OcMatrix*); 00018 void set_rates(int, int, double tau); 00019 const char* name(int); 00020 int index(const char*); 00021 int current_state(); 00022 void current_state(int); 00023 int cond(int); 00024 void cond(int, int); 00025 int current_cond(); 00026 double state_transition(); 00027 double cond_transition(); 00028 void state_transitions(Vect* dt, Vect* state); 00029 void cond_transitions(Vect* dt, Vect* cond); 00030 int n(); 00031 void get_rates(OcMatrix*); 00032 void setrand(Rand*); 00033 public: 00034 SingleChanState* state_; 00035 private: 00036 double (SingleChan::*erand_)(); 00037 double erand1(); 00038 double erand2(); 00039 Rand* r_; 00040 private: 00041 SingleChanInfo* info_; 00042 NrnProperty* nprop_; 00043 int current_; 00044 }; 00045 #endif