source: Sophya/trunk/ArchTOIPipe/Kernel/toiseqbuff.h@ 1442

Last change on this file since 1442 was 1442, checked in by ansari, 25 years ago

Ajout de processeurs simples - Deglitcher + Filtre, + programme test - Reza 15/3/2001

File size: 1.8 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2#ifndef TOISEQBUFF_H
3#define TOISEQBUFF_H
4
5#include "toi.h"
6
7// Classe de TOI avec buffer, et echantillonnage regulier.
8// Pour le moment au moins,
9// il faut que les providers fassent arriver les donnees par samplenum croissant.
10class TOISeqBuffered : public TOIRegular {
11public:
12 TOISeqBuffered(int wsz=8192);
13 TOISeqBuffered(string nm, int wsz=8192);
14 virtual ~TOISeqBuffered();
15
16 virtual void PrintStatus(ostream & os) const;
17
18 inline void setDebugLevel(int lev=0) { dbglev=lev; }
19 inline int getDebugLevel() const { return dbglev; }
20
21 inline int getFirstIn() const { return first_in; }
22 inline int getFirstOut() const { return first_out; }
23 inline int getLastIn() const { return (next_in-1); }
24 inline int getLastOut() const { return (next_out-1); }
25
26
27 virtual DataStatus isDataAvailNL(int iStart, int iEnd);
28 virtual DataStatus isDataAvailNL(int i); // override required
29
30protected:
31 double* data;
32 int_4* flags;
33 int wsize;
34 int buffsize;
35 int next_in;
36 int next_out;
37 int first_in;
38 int first_out;
39 bool started;
40 double defaultValue;
41 int dbglev;
42
43 void AllocBuffer(int wsz);
44
45#ifdef WITH_SOPHYA
46 virtual Array doGetData(int iStart, int iEnd);
47 virtual TArray<int_4> doGetFlag(int iStart, int iEnd);
48#endif
49 virtual double doGetData(int i);
50 virtual int_4 doGetFlag(int i);
51
52 virtual void doPutData(int i, double value, int_4 flag=0);
53 virtual void doWontNeedBefore(int i);
54
55 virtual int nextDataAvail(int iAfter);
56 virtual bool hasSomeData();
57
58 inline double & dataRef(int i) { return data[i%buffsize]; }
59 inline int_4 & flagRef(int i) { return flags[i%buffsize]; }
60 inline bool isDataDeleted(int i)
61 { return((i < next_in-buffsize-1) ? true : false); }
62};
63
64
65#endif
Note: See TracBrowser for help on using the repository browser.