when mingw is mingw64, it appears that we need to use __declspec() and not __attribut...
[ardour.git] / libs / midi++2 / parser.cc
index 52de52c2d225ffe442e06a65f65371707db389ed..453fede251255b190ec9f720999fd6debe98351e 100644 (file)
@@ -104,9 +104,7 @@ Parser::midi_event_type_name (eventType t)
        }
 }
 
-Parser::Parser (Port &p) 
-       : _port (p)
-
+Parser::Parser () 
 {
        trace_stream = 0;
        trace_prefix = "";
@@ -134,11 +132,11 @@ Parser::Parser (Port &p)
 Parser::~Parser ()
 
 {
-       delete msgbuf;
+       free (msgbuf);
 }
 
 void
-Parser::trace_event (Parser &, byte *msg, size_t len)
+Parser::trace_event (Parser &, MIDI::byte *msg, size_t len)
 {
        eventType type;
        ostream *o;
@@ -326,6 +324,7 @@ void
 Parser::scanner (unsigned char inbyte)
 {
        bool statusbit;
+        boost::optional<int> edit_result;
 
        // cerr << "parse: " << hex << (int) inbyte << dec << " state = " << state << " msgindex = " << msgindex << " runnable = " << runnable << endl;
        
@@ -497,7 +496,10 @@ Parser::scanner (unsigned char inbyte)
                
        case NEEDONEBYTE:
                /* We've completed a 1 or 2 byte message. */
-               if (edit.empty() || !(*edit (msgbuf, msgindex) == 0)) {
+
+                edit_result = edit (msgbuf, msgindex);
+                
+               if (edit_result.get_value_or (1)) {
                        
                        /* message not cancelled by an editor */
                        
@@ -656,7 +658,7 @@ Parser::system_msg (unsigned char inbyte)
 }
 
 void 
-Parser::signal (byte *msg, size_t len)
+Parser::signal (MIDI::byte *msg, size_t len)
 {
        channel_t chan = msg[0]&0xF;
        int chan_i = chan;
@@ -759,7 +761,7 @@ Parser::signal (byte *msg, size_t len)
 }
 
 bool
-Parser::possible_mmc (byte *msg, size_t msglen)
+Parser::possible_mmc (MIDI::byte *msg, size_t msglen)
 {
        if (!MachineControl::is_mmc (msg, msglen)) {
                return false;