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

Last change on this file since 1462 was 1462, checked in by cmv, 24 years ago

changement getData... intermediaire NE COMPILE PAS cmv+rz 10/4/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 void doGetData(int i, double & val, int_4 & flg);
50
51 virtual void doPutData(int i, double value, int_4 flag=0);
52 virtual void doWontNeedBefore(int i);
53
54 virtual int nextDataAvail(int iAfter);
55 virtual bool hasSomeData();
56
57 inline double & dataRef(int i) { return data[i%buffsize]; }
58 inline int_4 & flagRef(int i) { return flags[i%buffsize]; }
59 inline bool isDataDeleted(int i)
60 { return((i < next_in-buffsize-1) ? true : false); }
61};
62
63
64#endif
Note: See TracBrowser for help on using the repository browser.