annotate src/portaudio_20140130/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 124:e3d5853d5918

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