annotate src/portaudio_20161030/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 55:284acf908dcd

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