annotate src/portaudio_20161030/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 140:59a8758c56b1

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