NEST main@caf0ae8
 
Loading...
Searching...
No Matches
connector_model.h
Go to the documentation of this file.
1/*
2 * connector_model.h
3 *
4 * This file is part of NEST.
5 *
6 * Copyright (C) 2004 The NEST Initiative
7 *
8 * NEST is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * NEST is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with NEST. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23#ifndef CONNECTOR_MODEL_H
24#define CONNECTOR_MODEL_H
25
26// C++ includes:
27#include <cmath>
28#include <string>
29
30// Includes from libnestutil:
31#include "numerics.h"
32
33// Includes from nestkernel:
34#include "enum_bitfield.h"
35#include "event.h"
36#include "nest_time.h"
37#include "nest_types.h"
38#include "secondary_event.h"
39
40
41namespace nest
42{
43class ConnectorBase;
44class CommonSynapseProperties;
45class TimeConverter;
46class Node;
47
48enum class ConnectionModelProperties : unsigned
49{
50 NONE = 0,
51 SUPPORTS_HPC = 1 << 0,
52 SUPPORTS_LBL = 1 << 1,
53 IS_PRIMARY = 1 << 2,
54 HAS_DELAY = 1 << 3,
55 SUPPORTS_WFR = 1 << 4,
56 REQUIRES_SYMMETRIC = 1 << 5,
60};
61
62template <>
64{
65 static const bool enable = true;
66};
67
69{
70
71public:
72 ConnectorModel( const std::string, const ConnectionModelProperties& properties );
73 ConnectorModel( const ConnectorModel&, const std::string );
75 {
76 }
77
94 virtual void add_connection( Node& src,
95 Node& tgt,
96 std::vector< ConnectorBase* >& hetconn,
97 const synindex syn_id,
98 const Dictionary& d,
99 const double delay = NAN,
100 const double weight = NAN ) = 0;
101
102 virtual ConnectorModel* clone( std::string, synindex syn_id ) const = 0;
103
104 virtual void calibrate( const TimeConverter& tc ) = 0;
105
106 virtual void get_status( Dictionary& ) const = 0;
107 virtual void set_status( const Dictionary& ) = 0;
108
110
118 virtual void check_synapse_params( const Dictionary& ) const = 0;
119
120 virtual std::unique_ptr< SecondaryEvent > get_secondary_event() = 0;
121
122 virtual size_t get_syn_id() const = 0;
123 virtual void set_syn_id( synindex syn_id ) = 0;
124
125 std::string
126 get_name() const
127 {
128 return name_;
129 }
130
131 bool
133 {
134 return flag_is_set( properties_, property );
135 }
136
139 {
140 return properties_;
141 }
142
143protected:
144 std::string name_;
147};
148
149
150template < typename ConnectionT >
152{
153private:
154 typename ConnectionT::CommonPropertiesType cp_;
155
158
159public:
160 GenericConnectorModel( const std::string name )
161 : ConnectorModel( name, ConnectionT::properties )
162 , receptor_type_( 0 )
163 {
164 }
165
166 GenericConnectorModel( const GenericConnectorModel& cm, const std::string name )
167 : ConnectorModel( cm, name )
168 , cp_( cm.cp_ )
171 {
172 }
173
174 void add_connection( Node& src,
175 Node& tgt,
176 std::vector< ConnectorBase* >& hetconn,
177 const synindex syn_id,
178 const Dictionary& d,
179 const double delay,
180 const double weight ) override;
181
182 ConnectorModel* clone( std::string, synindex ) const override;
183
184 void calibrate( const TimeConverter& tc ) override;
185
186 void get_status( Dictionary& ) const override;
187 void set_status( const Dictionary& ) override;
188
189 typename ConnectionT::CommonPropertiesType const&
190 get_common_properties() const override
191 {
192 return cp_;
193 }
194
195 size_t get_syn_id() const override;
196 void set_syn_id( synindex syn_id ) override;
197
198 void check_synapse_params( const Dictionary& syn_spec ) const override;
199
200 std::unique_ptr< SecondaryEvent >
202 {
203 return default_connection_.get_secondary_event();
204 }
205
206 ConnectionT const&
208 {
209 return default_connection_;
210 }
211
212private:
213 void used_default_delay();
214
215 void add_connection_( Node& src,
216 Node& tgt,
217 std::vector< ConnectorBase* >& hetconn,
218 const synindex syn_id,
219 ConnectionT& c,
220 const size_t receptor_type );
221
222}; // GenericConnectorModel
223
224} // namespace nest
225
226#endif /* #ifndef CONNECTOR_MODEL_H */
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Class containing the common properties for all connections of a certain type.
Definition common_synapse_properties.h:50
Definition connector_model.h:69
virtual size_t get_syn_id() const =0
virtual ConnectorModel * clone(std::string, synindex syn_id) const =0
bool has_property(const ConnectionModelProperties &property) const
Definition connector_model.h:132
std::string name_
name of the ConnectorModel
Definition connector_model.h:144
virtual void calibrate(const TimeConverter &tc)=0
ConnectionModelProperties get_properties() const
Definition connector_model.h:138
virtual ~ConnectorModel()
Definition connector_model.h:74
virtual void set_status(const Dictionary &)=0
std::string get_name() const
Definition connector_model.h:126
virtual const CommonSynapseProperties & get_common_properties() const =0
virtual void set_syn_id(synindex syn_id)=0
virtual std::unique_ptr< SecondaryEvent > get_secondary_event()=0
virtual void get_status(Dictionary &) const =0
virtual void check_synapse_params(const Dictionary &) const =0
Checks to see if illegal parameters are given in syn_spec.
bool default_delay_needs_check_
indicates whether the default delay must be checked
Definition connector_model.h:145
ConnectionModelProperties properties_
connection properties
Definition connector_model.h:146
virtual void add_connection(Node &src, Node &tgt, std::vector< ConnectorBase * > &hetconn, const synindex syn_id, const Dictionary &d, const double delay=NAN, const double weight=NAN)=0
Adds a connection.
Definition connector_model.h:152
void add_connection(Node &src, Node &tgt, std::vector< ConnectorBase * > &hetconn, const synindex syn_id, const Dictionary &d, const double delay, const double weight) override
Adds a connection.
Definition connector_model_impl.h:220
void used_default_delay()
Definition connector_model_impl.h:163
size_t get_syn_id() const override
Definition connector_model_impl.h:206
ConnectionT::CommonPropertiesType cp_
Definition connector_model.h:154
void add_connection_(Node &src, Node &tgt, std::vector< ConnectorBase * > &hetconn, const synindex syn_id, ConnectionT &c, const size_t receptor_type)
Definition connector_model_impl.h:296
std::unique_ptr< SecondaryEvent > get_secondary_event() override
Definition connector_model.h:201
ConnectionT default_connection_
Definition connector_model.h:156
void set_syn_id(synindex syn_id) override
Definition connector_model_impl.h:213
ConnectionT::CommonPropertiesType const & get_common_properties() const override
Definition connector_model.h:190
ConnectionT const & get_default_connection() const
Definition connector_model.h:207
void calibrate(const TimeConverter &tc) override
Definition connector_model_impl.h:81
ConnectorModel * clone(std::string, synindex) const override
Definition connector_model_impl.h:65
size_t receptor_type_
Definition connector_model.h:157
GenericConnectorModel(const std::string name)
Definition connector_model.h:160
void check_synapse_params(const Dictionary &syn_spec) const override
Checks to see if illegal parameters are given in syn_spec.
Definition connector_model_impl.h:141
void get_status(Dictionary &) const override
Definition connector_model_impl.h:95
GenericConnectorModel(const GenericConnectorModel &cm, const std::string name)
Definition connector_model.h:166
void set_status(const Dictionary &) override
Definition connector_model_impl.h:113
Base class for all NEST network objects.
Definition node.h:99
Class to convert times from one representation to another.
Definition nest_timeconverter.h:42
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33
bool flag_is_set(const Enum en, const Enum flag)
Definition enum_bitfield.h:136
ConnectionModelProperties
Definition connector_model.h:49
@ NONE
Definition nest_types.h:166
size_t synindex
For enumerations of synapse types.
Definition nest_types.h:115
These methods support type-safe bitfields using C++'s enum classes.
Definition enum_bitfield.h:79
static const bool enable
Definition enum_bitfield.h:80