annotate src/portaudio_20140130/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 39:7ddb4fc30dac

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