Mercurial > hg > sv-dependency-builds
view src/portaudio_20161030/bindings/cpp/include/portaudiocpp/CppFunCallbackStream.hxx @ 169:223a55898ab9 tip default
Add null config files
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Mon, 02 Mar 2020 14:03:47 +0000 |
parents | 59a8758c56b1 |
children |
line wrap: on
line source
#ifndef INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX #define INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX // --------------------------------------------------------------------------------------- #include "portaudio.h" #include "portaudiocpp/CallbackStream.hxx" // --------------------------------------------------------------------------------------- // Forward declaration(s): namespace portaudio { class StreamParameters; } // --------------------------------------------------------------------------------------- // Declaration(s): namespace portaudio { namespace impl { extern "C" { int cppCallbackToPaCallbackAdapter(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData); } // extern "C" } // ----------------------------------------------------------------------------------- ////// /// @brief Callback stream using a C++ function (either a free function or a static function) /// callback. ////// class FunCallbackStream : public CallbackStream { public: typedef int (*CallbackFunPtr)(const void *inputBuffer, void *outputBuffer, unsigned long numFrames, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData); // ------------------------------------------------------------------------------- ////// /// @brief Simple structure containing a function pointer to the C++ callback function and a /// (void) pointer to the user supplied data. ////// struct CppToCCallbackData { CppToCCallbackData(); CppToCCallbackData(CallbackFunPtr funPtr, void *userData); void init(CallbackFunPtr funPtr, void *userData); CallbackFunPtr funPtr; void *userData; }; // ------------------------------------------------------------------------------- FunCallbackStream(); FunCallbackStream(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData); ~FunCallbackStream(); void open(const StreamParameters ¶meters, CallbackFunPtr funPtr, void *userData); private: FunCallbackStream(const FunCallbackStream &); // non-copyable FunCallbackStream &operator=(const FunCallbackStream &); // non-copyable CppToCCallbackData adapterData_; void open(const StreamParameters ¶meters); }; } // portaudio // --------------------------------------------------------------------------------------- #endif // INCLUDED_PORTAUDIO_CPPFUNCALLBACKSTREAM_HXX