• Main Page
  • Classes
  • Files
  • File List

CompositeSynapse.h

00001 #ifndef COMPOSITESYNAPSE_H_
00002 #define COMPOSITESYNAPSE_H_
00003 
00004 #include "Synapse.h"
00005 
00006 class CompositeSynapse : public SynapseFactory {
00007 
00008 public:
00009         CompositeSynapse(const Synapse &synapse,
00010                                  const SpikeResponse &post_syn_response, const SpikeResponse &backprop_ap_response,
00011                                          bool post_syn_resp_is_shared = true, bool bap_response_is_shared = true,
00012                                          Time delay = 0, Time bap_delay = 0)
00013                 :
00014                   delay(delay),
00015                   bap_delay(bap_delay),
00016                   synapse(dynamic_cast<Synapse *>(synapse.copy())),
00017                   post_syn_response(dynamic_cast<SpikeResponse *>(post_syn_response.copy())),
00018                   backprop_ap_response(dynamic_cast<SpikeResponse *>(backprop_ap_response.copy())),
00019                   psr_is_shared(post_syn_resp_is_shared),
00020                   bap_response_is_shared(bap_response_is_shared)
00021 
00022          {}
00023 
00024         CompositeSynapse(const Synapse &synapse, const SpikeResponse &post_syn_response,
00025                                  bool post_syn_resp_is_shared = true, Time delay = 0)
00026                 :
00027                   delay(delay),
00028                   bap_delay(-1),
00029                   synapse(dynamic_cast<Synapse *>(synapse.copy())),
00030                   post_syn_response(dynamic_cast<SpikeResponse *>(post_syn_response.copy())),
00031                   backprop_ap_response(0),
00032                   psr_is_shared(post_syn_resp_is_shared)
00033         {
00034 
00035         }
00036 
00037 
00038         virtual ~CompositeSynapse() {
00039                 delete synapse;
00040                 delete post_syn_response;
00041                 delete backprop_ap_response;
00042         }
00043 
00044         virtual EvSimObject* create( void ) const {
00045                 return synapse->copy(); };
00046 
00047         virtual EvSimObject* create( RandomEngine *rng ) const {
00048                 return synapse->copy();
00049         };
00050 
00051         virtual SpikeResponse *createSpikeResponseObject() const {
00052                 if (post_syn_response)
00053                         return dynamic_cast<SpikeResponse *>(post_syn_response->copy());
00054                 else
00055                         return 0;
00056         };
00057         virtual SpikeResponse *createBackpropAPResponseObject() const {
00058                 if (backprop_ap_response)
00059                         return dynamic_cast<SpikeResponse *>(backprop_ap_response->copy());
00060                 else
00061                         return 0;
00062         };
00063 
00064         virtual void setSharedPSResponse(bool shared_psr) {
00065                 psr_is_shared = shared_psr;
00066         }
00067 
00068         virtual void setSharedBackpropAPResponse(bool shared_bap_response) {
00069                 bap_response_is_shared = shared_bap_response;
00070         }
00071 
00072 
00073         virtual bool usesSharedPSResponse() const {return psr_is_shared;};
00074 
00075         virtual bool usesSharedBackpropAPResponse() const {return bap_response_is_shared;};
00076 
00077 
00078         bool managesDelay() const {
00079                 return true;
00080         }
00081 
00082         Time getManagedDelay() const {
00083                 return delay;
00084         }
00085 
00086         Time getBackpropAPDelay() const {
00087                 return bap_delay;
00088         }
00089 
00090 protected:
00091         Time delay;
00092         Time bap_delay;
00093         Synapse *synapse;
00094         SpikeResponse *post_syn_response;
00095         SpikeResponse *backprop_ap_response;
00096         bool psr_is_shared;
00097         bool bap_response_is_shared;
00098 };
00099 
00100 
00101 
00102 
00103 #endif /* COMPOSITESYNAPSE_H_ */

Generated on Wed Sep 18 2013 11:25:40 for NEVESIM by  doxygen 1.7.1