require jack 0.118.2 for weakjack.h
[ardour.git] / libs / midi++2 / midi++ / coremidi_midiport.h
index 30e07e01a50b4ab41a20ef0f125078378f290c70..74207238ad031349e190dd21005a5ff674c287b0 100644 (file)
 
 #include <list>
 #include <string>
+#include <vector>
 
 #include <fcntl.h>
 #include <unistd.h>
 
-#include <midi++/port.h>
+#include "midi++/port.h"
 
 #include <CoreMIDI/CoreMIDI.h>
 
 namespace MIDI {
 
-class CoreMidi_MidiPort:public Port {
-       public:
-               CoreMidi_MidiPort(PortRequest & req);
-               virtual ~ CoreMidi_MidiPort();
-
-               virtual int selectable() const {
-                       return -1;
-               }
-       protected:
-               /* Direct I/O */
-               int write (byte *msg, size_t msglen, timestamp_t timestamp);    
-               int read (byte *buf, size_t max, timestamp_t timestamp);
-
-               /* CoreMidi callback */
-               static void read_proc(const MIDIPacketList * pktlist,
-                               void *refCon, void *connRefCon);
-
-       private:
-               byte midi_buffer[1024];
-               MIDIClientRef midi_client;
-               MIDIEndpointRef midi_destination;
-               MIDIEndpointRef midi_source;
-
-               int Open(PortRequest & req);
-               void Close();
-               static MIDITimeStamp MIDIGetCurrentHostTime();
-
-               bool firstrecv;
-};
+    class CoreMidi_MidiPort:public Port {
+      public:
+       CoreMidi_MidiPort(const XMLNode& node);
+       virtual ~ CoreMidi_MidiPort();
+
+       int write (byte * msg, size_t msglen, timestamp_t timestamp);
+       int read (byte * buf, size_t max) {
+           return 0;
+       } 
+
+       virtual int selectable() const {
+           return -1;
+       }
+
+       static int discover (std::vector<PortSet>&);
+       static std::string typestring;
+
+      protected:
+
+        /* CoreMidi callback */
+       static void read_proc(const MIDIPacketList * pktlist,
+                             void *refCon, void *connRefCon);
+       
+       std::string get_typestring () const {
+               return typestring;
+       }
+
+      private:
+       byte midi_buffer[1024];
+       MIDIClientRef midi_client;
+       MIDIEndpointRef midi_destination;
+       MIDIEndpointRef midi_source;
+
+       int Open(const Port::Descriptor&);
+       void Close();
+       static MIDITimeStamp MIDIGetCurrentHostTime();
+
+       bool firstrecv;
+       
+    };
 
 } // namespace MIDI