/*--------------------------------------------------------------------------
   Author: Thomas Nowotny
  
   Institute: Institute for Nonlinear Dynamics
              University of California San Diego
              La Jolla, CA 92093-0402
  
   email to:  tnowotny@ucsd.edu
  
   initial version: 2005-08-17
  
--------------------------------------------------------------------------*/


#ifndef CN_SYNAPSE_H
#define CN_SYNAPSE_H

class synpase;

#include "CN_neuron.h"

class synapse
{
 protected:
  int idx;
  int enabled;
  
 public:
  int iVarNo;
  int pNo;
  int type;
  double *p;
  neuron *source;
  neuron *target;
  int trgiVar;
  
  synapse(neuron *, neuron *, int, int, int);
  virtual ~synapse();
  virtual void init(double *, double *);
  virtual void set_p(double *);
  virtual double gsyn()= 0;
  virtual void set_gsyn(double)= 0;
  virtual double Isyn(double *)= 0;
  void setIdx(int);
  int getIdx();
  virtual void derivative(double *, double *)= 0;
  virtual void noise(double *, double *) { }
};

#endif