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

Last change on this file since 1480 was 1464, checked in by ansari, 24 years ago

1) Fin de passage des flags en int_8
2) TOIRegularWindow mis ds un fichier spare , Reza 11/4/2001

File size: 1.9 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_8* 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 /* ---- l'interface va etre modifiee, NE PAS UTILISER
47 virtual Array doGetData(int iStart, int iEnd);
48 virtual TArray<int_4> doGetFlag(int iStart, int iEnd);
49 l'interface va etre modifiee, NE PAS UTILISER ---- */
50#endif
51 virtual void doGetData(int i, double & val, int_8 & flg);
52
53 virtual void doPutData(int i, double value, int_8 flag=0);
54 virtual void doWontNeedBefore(int i);
55
56 virtual int nextDataAvail(int iAfter);
57 virtual bool hasSomeData();
58
59 inline double & dataRef(int i) { return data[i%buffsize]; }
60 inline int_8 & flagRef(int i) { return flags[i%buffsize]; }
61 inline bool isDataDeleted(int i)
62 { return((i < next_in-buffsize-1) ? true : false); }
63};
64
65
66#endif
Note: See TracBrowser for help on using the repository browser.