annotate src/portaudio/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 98:4188fd8db918

Add Rubber Band build
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 20 Mar 2013 15:58:55 +0000
parents 8a15ff55d9af
children
rev   line source
cannam@89 1 #ifndef INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
cannam@89 2 #define INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX
cannam@89 3
cannam@89 4 // ---------------------------------------------------------------------------------------
cannam@89 5
cannam@89 6 #include "portaudio.h"
cannam@89 7
cannam@89 8 #include "portaudiocpp/CallbackStream.hxx"
cannam@89 9
cannam@89 10 // ---------------------------------------------------------------------------------------
cannam@89 11
cannam@89 12 // Forward declaration(s):
cannam@89 13 namespace portaudio
cannam@89 14 {
cannam@89 15 class StreamParameters;
cannam@89 16 }
cannam@89 17
cannam@89 18 // ---------------------------------------------------------------------------------------
cannam@89 19
cannam@89 20 // Declaration(s):
cannam@89 21 namespace portaudio
cannam@89 22 {
cannam@89 23
cannam@89 24
cannam@89 25 namespace impl
cannam@89 26 {
cannam@89 27 extern "C"
cannam@89 28 {
cannam@89 29 int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
cannam@89 30 const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
cannam@89 31 void *userData);
cannam@89 32 } // extern "C"
cannam@89 33 }
cannam@89 34
cannam@89 35 // -----------------------------------------------------------------------------------
cannam@89 36
cannam@89 37 //////
cannam@89 38 /// @brief Callback stream using a C++ function (either a free function or a static function)
cannam@89 39 /// callback.
cannam@89 40 //////
cannam@89 41 class FunCallbackStream : public CallbackStream
cannam@89 42 {
cannam@89 43 public:
cannam@89 44 typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames,
cannam@89 45 const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags,
cannam@89 46 void *userData);
cannam@89 47
cannam@89 48 // -------------------------------------------------------------------------------
cannam@89 49
cannam@89 50 //////
cannam@89 51 /// @brief Simple structure containing a function pointer to the C++ callback function and a
cannam@89 52 /// (void) pointer to the user supplied data.
cannam@89 53 //////
cannam@89 54 struct CppToCCallbackData
cannam@89 55 {
cannam@89 56 CppToCCallbackData();
cannam@89 57 CppToCCallbackData(CallbackFunPtr funPtr, void *userData);
cannam@89 58 void init(CallbackFunPtr funPtr, void *userData);
cannam@89 59
cannam@89 60 CallbackFunPtr funPtr;
cannam@89 61 void *userData;
cannam@89 62 };
cannam@89 63
cannam@89 64 // -------------------------------------------------------------------------------
cannam@89 65
cannam@89 66 FunCallbackStream();
cannam@89 67 FunCallbackStream(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData);
cannam@89 68 ~FunCallbackStream();
cannam@89 69
cannam@89 70 void open(const StreamParameters &parameters, CallbackFunPtr funPtr, void *userData);
cannam@89 71
cannam@89 72 private:
cannam@89 73 FunCallbackStream(const FunCallbackStream &); // non-copyable
cannam@89 74 FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable
cannam@89 75
cannam@89 76 CppToCCallbackData adapterData_;
cannam@89 77
cannam@89 78 void open(const StreamParameters &parameters);
cannam@89 79 };
cannam@89 80
cannam@89 81
cannam@89 82 } // portaudio
cannam@89 83
cannam@89 84 // ---------------------------------------------------------------------------------------
cannam@89 85
cannam@89 86 #endif // INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX