annotate src/portaudio_20140130/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 7ddb4fc30dac
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