00001
00022 #ifndef JezabelTool_included
00023 #define JezabelTool_included
00024
00026 typedef float JezabelData;
00027
00029 typedef long long JezabelPosition;
00030
00032 #define JezabelLengthMax 0x7fffffffffffffff
00033
00126 class JezabelTool {
00127 public:
00128
00130 enum JezabelPortType {portInput,portOutput};
00131
00133 enum JezabelProperty {Property_RealTime = 0x01};
00134
00137 JezabelTool();
00138
00140 virtual void activate(){}
00141
00144 virtual void run(int samples) = 0;
00145
00148 virtual void seek(JezabelPosition position){}
00149
00153 virtual JezabelPosition length(){return JezabelLengthMax;}
00154
00157 virtual void deactivate(){}
00158
00163 virtual int blockSize(){return 0;}
00164
00165 virtual ~JezabelTool();
00166
00168 int numPorts();
00169
00171 JezabelPortType portType(int port);
00172
00176 virtual void setBuffer(int port, JezabelData *buffer);
00177
00180 virtual const char *strerror(){return 0;}
00181
00182 protected:
00183
00186 void makePort(JezabelPortType);
00187
00190 JezabelData *portBuffer(int n);
00191
00192 public:
00193 class JezabelToolPrivateData *__private;
00194 };
00195
00196 #endif
00197
00198