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()25nest::RingBuffer::RingBuffer() 26 : buffer_( kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay(), 0.0 ) 27 { 28 } 29 30 void resize()31nest::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()41nest::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()49nest::MultRBuffer::MultRBuffer() 50 : buffer_( kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay(), 0.0 ) 51 { 52 } 53 54 void resize()55nest::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()65nest::MultRBuffer::clear() 66 { 67 // clear all elements 68 buffer_.assign( buffer_.size(), 0.0 ); 69 } 70 71 ListRingBuffer()72nest::ListRingBuffer::ListRingBuffer() 73 : buffer_( kernel().connection_manager.get_min_delay() + kernel().connection_manager.get_max_delay() ) 74 { 75 } 76 77 void resize()78nest::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()88nest::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