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

Last change on this file was 2454, checked in by aubourg, 22 years ago

pb longs sur magique

File size: 2.9 KB
RevLine 
[1437]1// This may look like C code, but it is really -*- C++ -*-
[1738]2
3// ArchTOIPipe (C) CEA/DAPNIA/SPP IN2P3/LAL
4// Eric Aubourg
5// Christophe Magneville
6// Reza Ansari
[2454]7// $Id: toiseqbuff.h,v 1.11 2003-11-14 12:34:56 aubourg Exp $
[1738]8
[1437]9#ifndef TOISEQBUFF_H
10#define TOISEQBUFF_H
11
12#include "toi.h"
13
[1484]14// ------------------- TOISeqBuffered ---------------------------
[1437]15// Classe de TOI avec buffer, et echantillonnage regulier.
16// Pour le moment au moins,
17// il faut que les providers fassent arriver les donnees par samplenum croissant.
[1484]18// ---------------------------------------------------------------
19
[1437]20class TOISeqBuffered : public TOIRegular {
21public:
22 TOISeqBuffered(int wsz=8192);
23 TOISeqBuffered(string nm, int wsz=8192);
24 virtual ~TOISeqBuffered();
25
[1484]26
27 inline void SetBufferSize(int wsz) // ATTENTION - Ne doit pas etre appele
28 { AllocBuffer(wsz); } // apres le demarrage des threads
29
[1762]30 virtual void PrintStatus(::ostream & os) const;
[1437]31
32 inline void setDebugLevel(int lev=0) { dbglev=lev; }
33 inline int getDebugLevel() const { return dbglev; }
34
[2454]35 virtual double getData(long i);
36 virtual void getData(long i, double& data, uint_8& flag);
37 virtual void getData(long i, int n, double* data, uint_8* flg=0);
38 virtual void putData(long i, double value, uint_8 flag=0);
39 virtual void putData(long i, int n, double const* val, uint_8 const* flg=0);
40 virtual void wontNeedBefore(long i);
[1985]41
[2454]42 inline long getFirstIn() const { return first_in; }
43 inline long getFirstOut() const { return first_out; }
44 inline long getLastIn() const { return (next_in-1); }
45 inline long getLastOut() const { return (next_out-1); }
[1437]46
47
[2454]48 virtual DataStatus isDataAvailNL(long iStart, long iEnd);
49 virtual DataStatus isDataAvailNL(long i); // override required
[1437]50
51protected:
52 double* data;
[1532]53 uint_8* flags;
[1437]54 int wsize;
55 int buffsize;
[2454]56 long next_in;
57 long next_out;
58 long first_in;
59 long first_out;
[1437]60 bool started;
61 double defaultValue;
62 int dbglev;
63
64 void AllocBuffer(int wsz);
65
66#ifdef WITH_SOPHYA
[1464]67 /* ---- l'interface va etre modifiee, NE PAS UTILISER
[2454]68 virtual Array doGetData(long iStart, long iEnd);
69 virtual TArray<int_4> doGetFlag(long iStart, long iEnd);
[1464]70 l'interface va etre modifiee, NE PAS UTILISER ---- */
[1437]71#endif
[2454]72 virtual void doGetData(long i, double & val, uint_8 & flg);
[1437]73
[2454]74 virtual void doPutData(long i, double value, uint_8 flag=0);
75 // virtual void doWontNeedBefore(long i); plus besoin ? - Reza Mai 2002
[1437]76
[2454]77 virtual long nextDataAvail(long iAfter);
[1437]78 virtual bool hasSomeData();
79
[2454]80 inline double & dataRef(long i) { return data[i%buffsize]; }
81 inline uint_8 & flagRef(long i) { return flags[i%buffsize]; }
82 inline bool isDataDeleted(long i)
[1442]83 { return((i < next_in-buffsize-1) ? true : false); }
[1437]84};
85
86
87#endif
Note: See TracBrowser for help on using the repository browser.