00001 #ifndef GenericBasicSynapse_H_
00002 #define GenericBasicSynapse_H_
00003
00004 #include "EvSimObject.h"
00005 #include "ResetRectSpikeResponse.h"
00006 #include "EvSimObjectTypeUtils.h"
00007 #include "Synapse.h"
00008 #include "SimException.h"
00009 #include "Neuron.h"
00010
00011 #ifndef SWIG
00012
00013 #include <boost/format.hpp>
00014 using boost::str;
00015
00016 #endif
00017
00018 template<class BaseSyn>
00019 class GenericBasicSynapse : public BaseSyn {
00020 public:
00021
00022 GenericBasicSynapse(float W = 1)
00023 {
00024 this->W = W;
00025 this->syn_resp = 0;
00026 };
00027
00028 virtual ~GenericBasicSynapse() {};
00029
00030 double W;
00031
00032 virtual void reset(SimContext &sim_ctxt)
00033 {
00034 BaseSyn::resetPSRs();
00035 };
00036
00037
00038 virtual void setPostSynResponse(SpikeResponse *response) {
00039 syn_resp = response;
00040 }
00041
00042 virtual void updateState(SimContext &sim_ctxt, Time time, update_id_t upd_id)
00043 {
00044 BaseSyn::updatePSR(W*syn_resp->get(), time);
00045 }
00046
00047 protected:
00048 SpikeResponse *syn_resp;
00049 };
00050
00051 #endif