NEST main@caf0ae8
 
Loading...
Searching...
No Matches
modelrange_manager.h
Go to the documentation of this file.
1/*
2 * modelrange_manager.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 MODELRANGEMANAGER_H
24#define MODELRANGEMANAGER_H
25
26// C++ includes:
27#include <vector>
28
29// Includes from libnestutil:
30#include "manager_interface.h"
31
32// Includes from nestkernel:
33#include "modelrange.h"
34#include "nest_types.h"
35
36namespace nest
37{
38class Model;
39
41{
42public:
45 {
46 }
47
48 void initialize( const bool ) override;
49 void finalize( const bool ) override;
50 void set_status( const Dictionary& ) override;
51 void get_status( Dictionary& ) override;
52
56 void add_range( size_t model, size_t first_node_id, size_t last_node_id );
57
61 bool is_in_range( size_t node_id ) const;
62
66 size_t get_model_id( size_t node_id ) const;
67
71 Model* get_model_of_node_id( size_t );
72
77 const modelrange& get_contiguous_node_id_range( size_t node_id ) const;
78
79 std::vector< modelrange >::const_iterator begin() const;
80
81 std::vector< modelrange >::const_iterator end() const;
82
83private:
84 std::vector< modelrange > modelranges_;
87};
88
89inline void
93
94inline void
98
99inline bool
100ModelRangeManager::is_in_range( size_t node_id ) const
101{
102 return ( node_id > 0 and node_id <= last_node_id_ and node_id >= first_node_id_ );
103}
104
105inline std::vector< modelrange >::const_iterator
107{
108 return modelranges_.begin();
109}
110
111inline std::vector< modelrange >::const_iterator
113{
114 return modelranges_.end();
115}
116
117} // namespace nest end
118
119#endif
Dictionary class for interface to Python and C++ API.
Definition dictionary.h:213
Interface for kernel manager classes.
Definition manager_interface.h:46
Definition modelrange_manager.h:41
size_t first_node_id_
Definition modelrange_manager.h:85
~ModelRangeManager() override
Definition modelrange_manager.h:44
size_t get_model_id(size_t node_id) const
Get the ID of the model to which this node ID is assigned.
Definition modelrange_manager.cpp:81
void get_status(Dictionary &) override
Retrieve the status of the manager.
Definition modelrange_manager.h:95
ModelRangeManager()
Definition modelrange_manager.cpp:36
size_t last_node_id_
Definition modelrange_manager.h:86
void set_status(const Dictionary &) override
Set the status of the manager.
Definition modelrange_manager.h:90
void add_range(size_t model, size_t first_node_id, size_t last_node_id)
Assign a range of node IDs for the given model.
Definition modelrange_manager.cpp:57
std::vector< modelrange >::const_iterator end() const
Definition modelrange_manager.h:112
void initialize(const bool) override
Prepare manager for operation.
Definition modelrange_manager.cpp:44
bool is_in_range(size_t node_id) const
Check whether a node ID is with the range of assigned node IDs.
Definition modelrange_manager.h:100
void finalize(const bool) override
Take down manager after operation.
Definition modelrange_manager.cpp:49
std::vector< modelrange >::const_iterator begin() const
Definition modelrange_manager.h:106
const modelrange & get_contiguous_node_id_range(size_t node_id) const
Return the contiguous range of IDs of nodes assigned to the same model as the node with the given nod...
Definition modelrange_manager.cpp:120
std::vector< modelrange > modelranges_
Definition modelrange_manager.h:84
Model * get_model_of_node_id(size_t)
Return the Model for a given node ID.
Definition modelrange_manager.cpp:114
Base class for all Models.
Definition model.h:53
Definition modelrange.h:33
Namespace for the NEST simulation kernel.
Definition beta_normalization_factor.h:33