1 /*
2  *  ring_buffer.cpp
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 #include "ring_buffer.h"
24 
RingBuffer()25 nest::RingBuffer::RingBuffer()
26   : buffer_( kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay(), 0.0 )
27 {
28 }
29 
30 void
resize()31 nest::RingBuffer::resize()
32 {
33   size_t size = kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay();
34   if ( buffer_.size() != size )
35   {
36     buffer_.resize( size );
37   }
38 }
39 
40 void
clear()41 nest::RingBuffer::clear()
42 {
43   resize(); // does nothing if size is fine
44   // clear all elements
45   buffer_.assign( buffer_.size(), 0.0 );
46 }
47 
48 
MultRBuffer()49 nest::MultRBuffer::MultRBuffer()
50   : buffer_( kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay(), 0.0 )
51 {
52 }
53 
54 void
resize()55 nest::MultRBuffer::resize()
56 {
57   size_t size = kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay();
58   if ( buffer_.size() != size )
59   {
60     buffer_.resize( size );
61   }
62 }
63 
64 void
clear()65 nest::MultRBuffer::clear()
66 {
67   // clear all elements
68   buffer_.assign( buffer_.size(), 0.0 );
69 }
70 
71 
ListRingBuffer()72 nest::ListRingBuffer::ListRingBuffer()
73   : buffer_( kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay() )
74 {
75 }
76 
77 void
resize()78 nest::ListRingBuffer::resize()
79 {
80   size_t size = kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay();
81   if ( buffer_.size() != size )
82   {
83     buffer_.resize( size );
84   }
85 }
86 
87 void
clear()88 nest::ListRingBuffer::clear()
89 {
90   resize(); // does nothing if size is fine
91   // clear all elements
92   for ( unsigned int i = 0; i < buffer_.size(); i++ )
93   {
94     buffer_[ i ].clear();
95   }
96 }
97