flext  0.6.2
flsndobj.h
Go to the documentation of this file.
1 /*
2 flext - C++ layer for Max and Pure Data externals
3 
4 Copyright (c) 2001-2015 Thomas Grill (gr@grrrr.org)
5 For information on usage and redistribution, and for a DISCLAIMER OF ALL
6 WARRANTIES, see the file, "license.txt," in this distribution.
7 */
8 
9 #ifndef __FLEXT_SNDOBJ_H
10 #define __FLEXT_SNDOBJ_H
11 
12 #include "flext.h"
13 
14 // PI is defined in the Max/MSP SDK, but clashes with SndObj.h
15 #ifdef PI
16 #undef PI
17 #endif
18 
19 // SndObj needs WIN symbol when compiled under Windows
20 #if FLEXT_OS == FLEXT_OS_WIN && !defined(WIN)
21 #define WIN
22 #endif
23 
24 #ifndef FLEXT_THREADS
25 #define NOPTHREAD
26 #endif
27 
28 #include <SndObj/SndObj.h>
29 #include <SndObj/SndIO.h>
30 
31 #undef NOPTHREAD
32 
33 #include "flpushns.h"
34 
36  public flext_dsp
37 {
39 
40 public:
41  flext_sndobj();
42 
43  // these have to be overridden in child classes
44  virtual bool NewObjs() { return true; }
45  virtual void FreeObjs() {}
46  virtual void ProcessObjs() {}
47 
48  // inputs and outputs
49  SndObj &InObj(int i) { return *tmpobj[i]; }
50  SndIO &OutObj(int i) { return *outobj[i]; }
51 
52 protected:
53  virtual bool Init();
54  virtual void Exit();
55 
56 private:
58  class Inlet:
59  public SndIO
60  {
61  public:
62  Inlet(const t_sample *b,int vecsz,float sr);
63  virtual short Read();
64  virtual short Write();
65 
66  void SetBuf(const t_sample *b) { buf = b; }
67 
68  private:
69  const t_sample *buf;
70  };
71 
73  class Outlet:
74  public SndIO
75  {
76  public:
77  Outlet(t_sample *b,int vecsz,float sr);
78  virtual short Read();
79  virtual short Write();
80 
81  void SetBuf(t_sample *b) { buf = b; }
82 
83  private:
84  t_sample *buf;
85  };
86 
87  virtual bool CbDsp();
88  virtual void CbSignal();
89 
90  void ClearObjs();
91 
92  int inobjs,outobjs;
93  SndObj **tmpobj;
96 
97  float smprt;
98  int blsz;
99 };
100 
101 #include "flpopns.h"
102 
103 #ifdef FLEXT_INLINE
104 # include "flsndobj.cpp"
105 #endif
106 
107 #endif
virtual bool Init()
Set up inlets and outlets, method and attribute lists.
Definition: flext.cpp:62
Flext dsp enabled base object.
Definition: fldsp.h:33
virtual void Exit()
Deallocate all kinds of stuff.
Definition: fldsp.cpp:44
SndObj for reading from inlet buffer.
Definition: flsndobj.h:60
const t_sample * buf
Definition: flsndobj.h:69
void SetBuf(const t_sample *b)
Definition: flsndobj.h:66
SndObj for writing to outlet buffer.
Definition: flsndobj.h:75
t_sample * buf
Definition: flsndobj.h:84
void SetBuf(t_sample *b)
Definition: flsndobj.h:81
Definition: flsndobj.h:37
virtual bool NewObjs()
Definition: flsndobj.h:44
SndObj & InObj(int i)
Definition: flsndobj.h:49
SndObj ** tmpobj
Definition: flsndobj.h:93
SndIO & OutObj(int i)
Definition: flsndobj.h:50
int blsz
Definition: flsndobj.h:98
Outlet ** outobj
Definition: flsndobj.h:95
virtual void FreeObjs()
Definition: flsndobj.h:45
Inlet ** inobj
Definition: flsndobj.h:94
float smprt
Definition: flsndobj.h:97
virtual void ProcessObjs()
Definition: flsndobj.h:46
int inobjs
Definition: flsndobj.h:92
This is the main flext include file.
#define FLEXT_SHARE
Definition: flprefix.h:425
virtual bool CbDsp()
Called on every dsp init.
Definition: fldsp.cpp:139
virtual void CbSignal()
Called with every signal vector - here you do the dsp calculation flext_dsp::CbSignal fills all outpu...
Definition: fldsp.cpp:153
#define FLEXT_HEADER(NEW_CLASS, PARENT_CLASS)
Plain flext class header.
Definition: fldefs_hdr.h:29