Home | Develop | Download | Contact
Namespaces | Estructuras de datos
Clase Pds::CircBuffer

Clase que implementa un buffer circular de tamaño fijo. Más...

Namespaces

namespace  Pds
 Nombre de espacio para Pds (Procesamiento Digital de Senales)
 

Estructuras de datos

class  Pds::CircBuffer< Datum >
 La clase tipo Pds::CircBuffer . Esta clase genera un objeto con un buffer circular de tamaño fijo. Para usar incluir Pds/CircBuffer. Más...
 

Varios tipos de constructores

Crean una objeto Pds::CircBuffer

 Pds::CircBuffer< Datum >::CircBuffer (void)
 Crea un objeto vacio de tipo Pds::CircBuffer. Más...
 
 Pds::CircBuffer< Datum >::CircBuffer (unsigned int Nel)
 Crea un objeto de tipo Pds::CircBuffer. Más...
 
 Pds::CircBuffer< Datum >::CircBuffer (const Pds::CircBuffer< Datum > &B)
 Crea un objeto de tipo Pds::CircBuffer de otro. Más...
 
 Pds::CircBuffer< Datum >::~CircBuffer ()
 

Lectura y escritura de datos en Pds::CircBuffer

Lectura y escritura de datos en el buffer

Datum & Pds::CircBuffer< Datum >::operator[] (const int &id)
 Lee y escribe datos en la memoria en el Pds::CircBuffer. Más...
 
bool Pds::CircBuffer< Datum >::Push (const Datum &Dat)
 Empuja un nuevo dato en la memoria Buff[0] del Pds::CircBuffer y descarta Buff[-1] $\equiv$ Buff[N-1]. Más...
 

Mostrando datos

bool Pds::CircBuffer< Datum >::IsEmpty (void) const
 Retorna true si el objeto esta vacio y false si no. Más...
 
unsigned int Pds::CircBuffer< Datum >::Nel (void) const
 Retorna el número de elementos del circular buffer. Más...
 

Descripción detallada

Clase que implementa un buffer circular de tamaño fijo.

#include <Pds/CircBuffer>
Pds::CircBuffer

Documentación de las funciones

◆ CircBuffer() [1/3]

template<typename Datum >
Pds::CircBuffer< Datum >::CircBuffer ( void  )

Crea un objeto vacio de tipo Pds::CircBuffer.


Pds::CircBuffer<double> V();

Definición en la línea 206 del archivo CircBuffer.hpp.

207{
208 this->nel = 0;
209 this->data = NULL;
210 this->front = 0;
211}
unsigned int front
Definition: CircBuffer.hpp:67
unsigned int nel
Definition: CircBuffer.hpp:61

◆ CircBuffer() [2/3]

template<typename Datum >
Pds::CircBuffer< Datum >::CircBuffer ( unsigned int  Nel)

Crea un objeto de tipo Pds::CircBuffer.


Pds::CircBuffer<double> V(5);
Parámetros
[in]NelEl número de elementos del buffer.

Definición en la línea 214 del archivo CircBuffer.hpp.

214 :CircBuffer()
215{
216 if (Nel==0) return;
217
218 this->data = new Datum[Nel];
219 if(this->data==NULL) return;
220
221 //for(unsigned int i=0;i<Nel;i++) this->data[i]=0;
222 this->nel = Nel;
223 this->front = 0;
224}
CircBuffer(void)
Crea un objeto vacio de tipo Pds::CircBuffer.
Definition: CircBuffer.hpp:206
unsigned int Nel(void) const
Retorna el número de elementos del circular buffer.
Definition: CircBuffer.hpp:280

Hace referencia a Pds::CircBuffer< Datum >::data, Pds::CircBuffer< Datum >::front, Pds::CircBuffer< Datum >::nel y Pds::CircBuffer< Datum >::Nel().

Gráfico de llamadas para esta función:

◆ CircBuffer() [3/3]

template<typename Datum >
Pds::CircBuffer< Datum >::CircBuffer ( const Pds::CircBuffer< Datum > &  B)

Crea un objeto de tipo Pds::CircBuffer de otro.


Pds::CircBuffer<double> V(3);
V[0]=1;V[1]=-1;V[2]=1;
Pds::CircBuffer<double> B(V);
Parámetros
[in]BDesde donde se copiarán los datos.

Definición en la línea 227 del archivo CircBuffer.hpp.

227 :CircBuffer()
228{
229 if(this!=&B) //Comprueba que no se esté intentando igualar un objeto a sí mismo
230 {
231 if (B.nel==0) return;
232
233 this->data = new Datum[B.nel];
234 if(this->data==NULL) return;
235
236 for(unsigned int i=0;i<B.nel;i++) this->data[i]=B.data[i];
237 this->nel = B.nel;
238 this->front = B.front;
239 }
240
241 return;
242}

Hace referencia a Pds::CircBuffer< Datum >::data, Pds::CircBuffer< Datum >::front y Pds::CircBuffer< Datum >::nel.

◆ operator[]()

template<typename Datum >
Datum & Pds::CircBuffer< Datum >::operator[] ( const int &  id)

Lee y escribe datos en la memoria en el Pds::CircBuffer.


Pds::CircBuffer<double> V(3);

V[0]=1;V[-2]=-1;V[2]=2;

std::cout<<V[0]<<"\t"<<V[1]<<"\t"<<V[2]<<"\n";

La salida sería:

1       -1      2
Parámetros
[in]idElemento a acceder en la memoria del buffer.

Definición en la línea 254 del archivo CircBuffer.hpp.

255{
256 int ID=id;
257 while(ID<0) ID=this->nel+ID;
258 return this->data[(this->front+ID)%this->nel];
259}

◆ Push()

template<typename Datum >
bool Pds::CircBuffer< Datum >::Push ( const Datum &  Dat)

Empuja un nuevo dato en la memoria Buff[0] del Pds::CircBuffer y descarta Buff[-1] $\equiv$ Buff[N-1].

Si nuestro objeto se llama Buff, el dato Dat pasa a ocupar la posicion Buff[0], y el antiguo dato Buff[0] ahora estará en la posición Buff[1] y Buff[N-1] es descartado.


Pds::CircBuffer<double> Buff(3);

Buff[0]=1;Buff[-2]=-1;Buff[2]=2;

Buff.Push(3);
std::cout<<V[0]<<"\t"<<V[1]<<"\t"<<V[2]<<"\n";

La salida sería:

3       1       -1
Pds::CircBuffer
Parámetros
[in]DatDato a colocar al frente del buffer.
Ejemplos
example_circbuffer.cpp.

Definición en la línea 262 del archivo CircBuffer.hpp.

263{
264 if(this->nel==0) return false;
265
266 this->front = (this->nel+this->front -1) % this->nel;
267 this->data[this->front] = Dat;
268 return true;
269}

◆ IsEmpty()

template<typename Datum >
bool Pds::CircBuffer< Datum >::IsEmpty ( void  ) const

Retorna true si el objeto esta vacio y false si no.


Pds::CircBuffer<double> V(3);
V[0]=1;V[-2]=-1;V[2]=2;

if(V.IsEmpty()==false)  
std::cout<<V[0]<<"\t"<<V[1]<<"\t"<<V[2]<<"\n";

La salida sería:

1       -1      2
Devuelve
Retorna true si el objeto esta vacio y false si no.
Ejemplos
example_circbuffer.cpp.

Definición en la línea 273 del archivo CircBuffer.hpp.

274{
275 if((this->nel==0)||(this->data==NULL)) return true;
276 return false;
277}

◆ Nel()

template<typename Datum >
unsigned int Pds::CircBuffer< Datum >::Nel ( void  ) const

Retorna el número de elementos del circular buffer.

Devuelve
Retorna el número de elementos del circular buffer.
Ejemplos
example_circbuffer.cpp.

Definición en la línea 280 del archivo CircBuffer.hpp.

281{
282 if((this->nel==0)||(this->data==NULL)) return 0;
283 return this->nel;
284}

Referenciado por Pds::CircBuffer< Datum >::CircBuffer().

◆ ~CircBuffer()

template<typename Datum >
Pds::CircBuffer< Datum >::~CircBuffer

Definición en la línea 245 del archivo CircBuffer.hpp.

246{
247 delete[] this->data;
248 this->data = NULL;
249 this->front = 0;
250 this->nel = 0;
251}

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed