]> git.donarmstrong.com Git - lilypond.git/blobdiff - python/midi.c
(beam): add function.
[lilypond.git] / python / midi.c
index 00262016512a90933939e2344572c6a61a5a4f06..a8d8d4b8bff5cfd874d2b09c2ddd57ed7a687b48 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  2001--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
             Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
 /*
 
-python2
+python
 import midi
 s = open ("s.midi").read ()
 midi.parse_track (s)
@@ -18,28 +18,7 @@ midi.parse (s)
 
 */
 
-#include "config.h"
-
-/* urg */
-#if HAVE_PYTHON2_PYTHON_H
-#include <python2/Python.h>
-#elif HAVE_PYTHON2_2_PYTHON_H
-#include <python2.2/Python.h>
-#elif HAVE_PYTHON2_1_PYTHON_H
-#include <python2.1/Python.h>
-#elif HAVE_PYTHON2_0_PYTHON_H
-#include <python2.0/Python.h>
-#elif HAVE_PYTHON1_5_PYTHON_H
-#include <python1.5/Python.h>
-#elif HAVE_PYTHON_PYTHON_H
-#define assert(x)
-#include <python/Python.h>
-#elif HAVE_PYTHON_H
-#define assert(x)
 #include <Python.h>
-#else
-#error Need Python.h
-#endif
 
 #if 0
 int x = 0;
@@ -53,14 +32,19 @@ static PyObject *Midi_error;
 static PyObject *Midi_warning;
 
 static PyObject *
-midi_error (char *s)
+midi_error (char const *func, char *s)
 {
-  PyErr_SetString (Midi_error, s);
+  char*dest = (char*) malloc (sizeof (char) * (strlen (func) + strlen (s) + 1));
+  strcpy (dest, func);
+  strcat (dest, s);
+  PyErr_SetString (Midi_error, dest);
+  free (dest);
+  
   return 0;
 }
 
 static PyObject *
-midi_warning (char *s)
+midi_warning (char const *s)
 {
   PyErr_SetString (Midi_warning, s);
   return 0;
@@ -280,7 +264,7 @@ midi_parse_track (unsigned char **track, unsigned char *track_end)
 
   debug_print ("%s", "\n");
   if (strcmp (*track, "MTrk"))
-    return midi_error (__FUNCTION__ ": MTrk expected");
+    return midi_error (__FUNCTION__ ": MTrk expected");
   
   *track += 4;
 
@@ -293,7 +277,7 @@ midi_parse_track (unsigned char **track, unsigned char *track_end)
   debug_print ("track end: %p\n", track + track_len);
   
   if (track_len > track_size)
-    return midi_error (__FUNCTION__ ": track size corrupt");
+    return midi_error (__FUNCTION__ ": track size corrupt");
 
   pytrack = PyList_New (0);
 
@@ -335,7 +319,7 @@ pymidi_parse_track (PyObject *self, PyObject *args)
     return 0;
 
   if (track_size < 0)
-    return midi_error (__FUNCTION__  ": negative track size");
+    return midi_error (__FUNCTION__  ": negative track size");
 
   track_end = track + track_size;
   
@@ -358,13 +342,13 @@ midi_parse (unsigned char **midi,unsigned  char *midi_end)
 
   
   if (header_len < 6)
-    return midi_error (__FUNCTION__ ": header too short");
+    return midi_error (__FUNCTION__ ": header too short");
     
   format = get_number (midi, *midi + 2, 2);
   tracks = get_number (midi, *midi + 2, 2);
 
   if (tracks > 32)
-    return midi_error (__FUNCTION__ ": too many tracks");
+    return midi_error (__FUNCTION__ ": too many tracks");
   
   division = get_number (midi, *midi + 2, 2) * 4;
 
@@ -398,7 +382,7 @@ pymidi_parse (PyObject *self, PyObject *args)
     return 0;
 
   if (strcmp (midi, "MThd"))
-      return midi_error (__FUNCTION__ ": MThd expected");
+      return midi_error (__FUNCTION__ ": MThd expected");
   
   midi += 4;
 
@@ -415,6 +399,7 @@ static PyMethodDef MidiMethods[] =
   {0, 0}        /* Sentinel */
 };
 
+void
 initmidi ()
 {
   PyObject *m, *d;