Add some casting and namespace specifiers to keep MSVC happy
[ardour.git] / libs / backends / wavesaudio / portmidi / src / pm_win / pmwin.c
index 5b4dec63fce9b3963d3806ac69a8ba4cab5275ae..9d36f100a54abf59ae43cad9a10e474baddde45e 100644 (file)
-/* pmwin.c -- PortMidi os-dependent code */\r
-\r
-/* This file only needs to implement:\r
-       pm_init(), which calls various routines to register the \r
-           available midi devices,\r
-       Pm_GetDefaultInputDeviceID(), and\r
-       Pm_GetDefaultOutputDeviceID().\r
-   This file must\r
-   be separate from the main portmidi.c file because it is system\r
-   dependent, and it is separate from, say, pmwinmm.c, because it\r
-   might need to register devices for winmm, directx, and others.\r
-\r
- */\r
-\r
-#include "stdlib.h"\r
-#include "portmidi.h"\r
-#include "pmutil.h"\r
-#include "pminternal.h"\r
-#include "pmwinmm.h"\r
-#ifdef DEBUG\r
-#include "stdio.h"\r
-#endif\r
-#include <windows.h>\r
-\r
-/* pm_exit is called when the program exits.\r
-   It calls pm_term to make sure PortMidi is properly closed.\r
-   If DEBUG is on, we prompt for input to avoid losing error messages.\r
- */\r
-static void pm_exit(void) {\r
-    pm_term();\r
-#ifdef DEBUG\r
-#define STRING_MAX 80\r
-    {\r
-        char line[STRING_MAX];\r
-        printf("Type ENTER...\n");\r
-        /* note, w/o this prompting, client console application can not see one\r
-           of its errors before closing. */\r
-        fgets(line, STRING_MAX, stdin);\r
-    }\r
-#endif\r
-}\r
-\r
-\r
-/* pm_init is the windows-dependent initialization.*/\r
-void pm_init(void)\r
-{\r
-    atexit(pm_exit);\r
-#ifdef DEBUG\r
-    printf("registered pm_exit with atexit()\n");\r
-#endif\r
-    pm_winmm_init();\r
-    /* initialize other APIs (DirectX?) here */\r
-}\r
-\r
-\r
-void pm_term(void) {\r
-    pm_winmm_term();\r
-}\r
-\r
-\r
-static PmDeviceID pm_get_default_device_id(int is_input, char *key) {\r
-    HKEY hkey;\r
-#define PATTERN_MAX 256\r
-    char pattern[PATTERN_MAX];\r
-    long pattern_max = PATTERN_MAX;\r
-    DWORD dwType;\r
-    /* Find first input or device -- this is the default. */\r
-    PmDeviceID id = pmNoDevice;\r
-    int i, j;\r
-    Pm_Initialize(); /* make sure descriptors exist! */\r
-    for (i = 0; i < pm_descriptor_index; i++) {\r
-        if (descriptors[i].pub.input == is_input) {\r
-            id = i;\r
-            break;\r
-        }\r
-    }\r
-    /* Look in registry for a default device name pattern. */\r
-    if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software", 0, KEY_READ, &hkey) != \r
-        ERROR_SUCCESS) {\r
-        return id;\r
-    }\r
-    if (RegOpenKeyEx(hkey, "JavaSoft", 0, KEY_READ, &hkey) !=\r
-        ERROR_SUCCESS) {\r
-        return id;\r
-    }\r
-    if (RegOpenKeyEx(hkey, "Prefs", 0, KEY_READ, &hkey) !=\r
-        ERROR_SUCCESS) {\r
-        return id;\r
-    }\r
-    if (RegOpenKeyEx(hkey, "/Port/Midi", 0, KEY_READ, &hkey) !=\r
-        ERROR_SUCCESS) {\r
-        return id;\r
-    }\r
-    if (RegQueryValueEx(hkey, key, NULL, &dwType, pattern, &pattern_max) != \r
-       ERROR_SUCCESS) {\r
-        return id;\r
-    }\r
-\r
-    /* decode pattern: upper case encoded with "/" prefix */\r
-    i = j = 0;\r
-    while (pattern[i]) {\r
-        if (pattern[i] == '/' && pattern[i + 1]) {\r
-            pattern[j++] = toupper(pattern[++i]);\r
-       } else {\r
-            pattern[j++] = tolower(pattern[i]);\r
-       }\r
-        i++;\r
-    }\r
-    pattern[j] = 0; /* end of string */\r
-\r
-    /* now pattern is the string from the registry; search for match */\r
-    i = pm_find_default_device(pattern, is_input);\r
-    if (i != pmNoDevice) {\r
-        id = i;\r
-    }\r
-    return id;\r
-}\r
-\r
-\r
-PmDeviceID Pm_GetDefaultInputDeviceID() {\r
-    return pm_get_default_device_id(TRUE, \r
-           "/P/M_/R/E/C/O/M/M/E/N/D/E/D_/I/N/P/U/T_/D/E/V/I/C/E");\r
-}\r
-\r
-\r
-PmDeviceID Pm_GetDefaultOutputDeviceID() {\r
-  return pm_get_default_device_id(FALSE,\r
-          "/P/M_/R/E/C/O/M/M/E/N/D/E/D_/O/U/T/P/U/T_/D/E/V/I/C/E");\r
-}\r
-\r
-\r
-#include "stdio.h" \r
-\r
-void *pm_alloc(size_t s) {\r
-    return malloc(s); \r
-}\r
-\r
-\r
-void pm_free(void *ptr) { \r
-    free(ptr); \r
-}\r
-\r
-\r
+/* pmwin.c -- PortMidi os-dependent code */
+
+/* This file only needs to implement:
+       pm_init(), which calls various routines to register the 
+           available midi devices,
+       Pm_GetDefaultInputDeviceID(), and
+       Pm_GetDefaultOutputDeviceID().
+   This file must
+   be separate from the main portmidi.c file because it is system
+   dependent, and it is separate from, say, pmwinmm.c, because it
+   might need to register devices for winmm, directx, and others.
+
+ */
+
+#include "stdlib.h"
+#include "portmidi.h"
+#include "pmutil.h"
+#include "pminternal.h"
+#include "pmwinmm.h"
+#ifdef DEBUG
+#include "stdio.h"
+#endif
+#include <windows.h>
+
+/* pm_exit is called when the program exits.
+   It calls pm_term to make sure PortMidi is properly closed.
+   If DEBUG is on, we prompt for input to avoid losing error messages.
+ */
+static void pm_exit(void) {
+    pm_term();
+#ifdef DEBUG
+#define STRING_MAX 80
+    {
+        char line[STRING_MAX];
+        printf("Type ENTER...\n");
+        /* note, w/o this prompting, client console application can not see one
+           of its errors before closing. */
+        fgets(line, STRING_MAX, stdin);
+    }
+#endif
+}
+
+
+/* pm_init is the windows-dependent initialization.*/
+void pm_init(void)
+{
+    atexit(pm_exit);
+#ifdef DEBUG
+    printf("registered pm_exit with atexit()\n");
+#endif
+    pm_winmm_init();
+    /* initialize other APIs (DirectX?) here */
+}
+
+
+void pm_term(void) {
+    pm_winmm_term();
+}
+
+
+static PmDeviceID pm_get_default_device_id(int is_input, char *key) {
+    HKEY hkey;
+#define PATTERN_MAX 256
+    char pattern[PATTERN_MAX];
+    long pattern_max = PATTERN_MAX;
+    DWORD dwType;
+    /* Find first input or device -- this is the default. */
+    PmDeviceID id = pmNoDevice;
+    int i, j;
+    Pm_Initialize(); /* make sure descriptors exist! */
+    for (i = 0; i < pm_descriptor_index; i++) {
+        if (descriptors[i].pub.input == is_input) {
+            id = i;
+            break;
+        }
+    }
+    /* Look in registry for a default device name pattern. */
+    if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software", 0, KEY_READ, &hkey) != 
+        ERROR_SUCCESS) {
+        return id;
+    }
+    if (RegOpenKeyEx(hkey, "JavaSoft", 0, KEY_READ, &hkey) !=
+        ERROR_SUCCESS) {
+        return id;
+    }
+    if (RegOpenKeyEx(hkey, "Prefs", 0, KEY_READ, &hkey) !=
+        ERROR_SUCCESS) {
+        return id;
+    }
+    if (RegOpenKeyEx(hkey, "/Port/Midi", 0, KEY_READ, &hkey) !=
+        ERROR_SUCCESS) {
+        return id;
+    }
+    if (RegQueryValueEx(hkey, key, NULL, &dwType, (LPBYTE)pattern, (LPDWORD)&pattern_max) != 
+       ERROR_SUCCESS) {
+        return id;
+    }
+
+    /* decode pattern: upper case encoded with "/" prefix */
+    i = j = 0;
+    while (pattern[i]) {
+        if (pattern[i] == '/' && pattern[i + 1]) {
+            pattern[j++] = toupper(pattern[++i]);
+       } else {
+            pattern[j++] = tolower(pattern[i]);
+       }
+        i++;
+    }
+    pattern[j] = 0; /* end of string */
+
+    /* now pattern is the string from the registry; search for match */
+    i = pm_find_default_device(pattern, is_input);
+    if (i != pmNoDevice) {
+        id = i;
+    }
+    return id;
+}
+
+
+PmDeviceID Pm_GetDefaultInputDeviceID() {
+    return pm_get_default_device_id(TRUE, 
+           "/P/M_/R/E/C/O/M/M/E/N/D/E/D_/I/N/P/U/T_/D/E/V/I/C/E");
+}
+
+
+PmDeviceID Pm_GetDefaultOutputDeviceID() {
+  return pm_get_default_device_id(FALSE,
+          "/P/M_/R/E/C/O/M/M/E/N/D/E/D_/O/U/T/P/U/T_/D/E/V/I/C/E");
+}
+
+
+#include "stdio.h" 
+
+void *pm_alloc(size_t s) {
+    return malloc(s); 
+}
+
+
+void pm_free(void *ptr) { 
+    free(ptr); 
+}
+