#include <stdint.h>
#include <string.h>
+#if defined(_WIN32) || defined(_WIN64)
+#define CEC_CDECL __cdecl
+#else
+#define CEC_CDECL
+#endif
+
#if !defined(DECLSPEC)
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#define CEC_MIN_LIB_VERSION 1
#define CEC_LIB_VERSION_MAJOR 1
-#define CEC_LIB_VERSION_MINOR 3
+#define CEC_LIB_VERSION_MINOR 4
typedef enum cec_abort_reason
{
#endif
} cec_logical_addresses;
-struct ICECCallbacks
+
+typedef int (CEC_CDECL* CBCecLogMessageType)(void *param, const CEC::cec_log_message &);
+typedef int (CEC_CDECL* CBCecKeyPressType)(void *param, const cec_keypress &key);
+typedef int (CEC_CDECL* CBCecCommandType)(void *param, const cec_command &command);
+
+typedef struct ICECCallbacks
{
/*!
* @brief Transfer a log message from libCEC to the client.
* @param message The message to transfer.
* @return 1 when ok, 0 otherwise.
*/
- int (*CecLogMessage)(const cec_log_message &message);
+ CBCecLogMessageType CBCecLogMessage;
/*!
* @brief Transfer a keypress from libCEC to the client.
* @param key The keypress to transfer.
* @return 1 when ok, 0 otherwise.
*/
- int (*CecKeyPress)(const cec_keypress &key);
+ CBCecKeyPressType CBCecKeyPress;
/*!
* @brief Transfer a CEC command from libCEC to the client.
* @param command The command to transfer.
* @return 1 when ok, 0 otherwise.
*/
- int (*CecCommand)(const cec_command &command);
-};
+ CBCecCommandType CBCecCommand;
+} ICECCallbacks;
#ifdef UNUSED
#elif defined(__GNUC__)