Merge branch 'master' into cairocanvas
[ardour.git] / libs / midi++2 / midi++ / parser.h
index 497a50abe8376ce2b0c0200744abbb03e8ae1ab2..e4126b210bac34db57ae7ee4b8bdcc897679a2b3 100644 (file)
@@ -23,8 +23,9 @@
 #include <string>
 #include <iostream>
 
-#include <boost/signals2.hpp>
+#include "pbd/signals.h"
 
+#include "midi++/libmidi_visibility.h"
 #include "midi++/types.h"
 
 namespace MIDI {
@@ -32,16 +33,16 @@ namespace MIDI {
 class Port;
 class Parser;
 
-typedef boost::signals2::signal<void(Parser&)>                   ZeroByteSignal;
-typedef boost::signals2::signal<void(Parser&,nframes_t)>         TimestampedSignal;
-typedef boost::signals2::signal<void(Parser&, byte)>             OneByteSignal;
-typedef boost::signals2::signal<void(Parser &, EventTwoBytes *)> TwoByteSignal;
-typedef boost::signals2::signal<void(Parser &, pitchbend_t)>     PitchBendSignal;
-typedef boost::signals2::signal<void(Parser &, byte *, size_t)>  Signal;
+typedef PBD::Signal1<void,Parser&>                   ZeroByteSignal;
+typedef PBD::Signal2<void,Parser&,framecnt_t>        TimestampedSignal;
+typedef PBD::Signal2<void,Parser&, byte>             OneByteSignal;
+typedef PBD::Signal2<void,Parser &, EventTwoBytes *> TwoByteSignal;
+typedef PBD::Signal2<void,Parser &, pitchbend_t>     PitchBendSignal;
+typedef PBD::Signal3<void,Parser &, byte *, size_t>  Signal;
 
-class Parser {
+class LIBMIDIPP_API Parser {
  public:
-       Parser (Port &p);
+       Parser ();
        ~Parser ();
 
        /* sets the time that will be reported for any MTC or MIDI Clock
@@ -49,8 +50,8 @@ class Parser {
           therefore be set before every byte passed into ::scanner().
        */
        
-       nframes_t get_timestamp() const { return _timestamp; }
-       void set_timestamp (const nframes_t timestamp) { _timestamp = timestamp; } 
+       framecnt_t get_timestamp() const { return _timestamp; }
+       void set_timestamp (const framecnt_t timestamp) { _timestamp = timestamp; } 
 
        /* signals that anyone can connect to */
        
@@ -105,13 +106,12 @@ class Parser {
        const char *midi_event_type_name (MIDI::eventType);
        void trace (bool onoff, std::ostream *o, const std::string &prefix = "");
        bool tracing() { return trace_stream != 0; }
-       Port &port() { return _port; }
 
        void set_offline (bool);
        bool offline() const { return _offline; }
-       boost::signals2::signal<void()> OfflineStatusChanged;
+       PBD::Signal0<void> OfflineStatusChanged;
 
-       boost::signals2::signal<int(byte *, size_t)> edit;
+       PBD::Signal2<int,byte *, size_t> edit;
 
        void set_mmc_forwarding (bool yn) {
                _mmc_forward = yn;
@@ -124,10 +124,10 @@ class Parser {
        const byte *mtc_current() const { return _mtc_time; }
        bool        mtc_locked() const  { return _mtc_locked; }
        
-       boost::signals2::signal<void(Parser&,int,nframes_t)>      mtc_qtr;
-       boost::signals2::signal<void(const byte*,bool,nframes_t)> mtc_time;
-       boost::signals2::signal<void(MTC_Status)>                 mtc_status;
-       boost::signals2::signal<bool()>                           mtc_skipped;
+       PBD::Signal3<void, Parser &, int, framecnt_t>      mtc_qtr;
+       PBD::Signal3<void, const byte *, bool, framecnt_t> mtc_time;
+       PBD::Signal1<void, MTC_Status>                     mtc_status;
+       PBD::Signal0<bool>                                 mtc_skipped;
 
        void set_mtc_forwarding (bool yn) {
                _mtc_forward = yn;
@@ -136,13 +136,12 @@ class Parser {
        void reset_mtc_state ();
        
   private:
-       Port &_port;
        /* tracing */
-
+       
        std::ostream *trace_stream;
        std::string trace_prefix;
        void trace_event (Parser &p, byte *msg, size_t len);
-       boost::signals2::scoped_connection trace_connection;
+       PBD::ScopedConnection trace_connection;
 
        size_t message_counter[256];
 
@@ -172,7 +171,7 @@ class Parser {
        bool       _mtc_locked;
        byte last_qtr_frame;
        
-       nframes_t _timestamp;
+       framecnt_t _timestamp;
 
        ParseState pre_variable_state;
        MIDI::eventType pre_variable_msgtype;