+ .beginWSPtrClass <Port> ("Port")
+ .addCast<MidiPort> ("to_midiport")
+ .addCast<AudioPort> ("to_audioport")
+ .addFunction ("name", &Port::name)
+ .addFunction ("pretty_name", &Port::pretty_name)
+ .addFunction ("receives_input", &Port::receives_input)
+ .addFunction ("sends_output", &Port::sends_output)
+ .addFunction ("connected", &Port::connected)
+ .addFunction ("disconnect_all", &Port::disconnect_all)
+ .addFunction ("connected_to_name", (bool (Port::*)(std::string const &)const)&Port::connected_to)
+ .addFunction ("connect_by_name", (int (Port::*)(std::string const &))&Port::connect)
+ .addFunction ("disconnect_by_name", (int (Port::*)(std::string const &))&Port::disconnect)
+ .addFunction ("connected_to", (bool (Port::*)(Port*)const)&Port::connected_to)
+ .addFunction ("connect", (int (Port::*)(Port*))&Port::connect)
+ .addFunction ("disconnect", (int (Port::*)(Port*))&Port::disconnect)
+ //.addStaticFunction ("port_offset", &Port::port_offset) // static
+ .endClass ()
+
+ .deriveWSPtrClass <AudioPort, Port> ("AudioPort")
+ .endClass ()
+
+ .deriveWSPtrClass <MidiPort, Port> ("MidiPort")
+ .addFunction ("input_active", &MidiPort::input_active)
+ .addFunction ("set_input_active", &MidiPort::set_input_active)
+ .addFunction ("get_midi_buffer", &MidiPort::get_midi_buffer) // DSP only
+ .endClass ()
+
+ .beginWSPtrClass <PortSet> ("PortSet")
+ .addFunction ("num_ports", (size_t (PortSet::*)(DataType)const)&PortSet::num_ports)
+ .addFunction ("add", &PortSet::add)
+ .addFunction ("remove", &PortSet::remove)
+ .addFunction ("port", (boost::shared_ptr<Port> (PortSet::*)(DataType, size_t)const)&PortSet::port)
+ .addFunction ("contains", &PortSet::contains)
+ .addFunction ("clear", &PortSet::clear)
+ .addFunction ("empty", &PortSet::empty)
+ .endClass ()
+
+ .deriveWSPtrClass <IO, SessionObject> ("IO")
+ .addFunction ("active", &IO::active)
+ .addFunction ("add_port", &IO::add_port)
+ .addFunction ("remove_port", &IO::remove_port)
+ .addFunction ("connect", &IO::connect)
+ .addFunction ("disconnect", (int (IO::*)(boost::shared_ptr<Port>, std::string, void *))&IO::disconnect)
+ .addFunction ("physically_connected", &IO::physically_connected)
+ .addFunction ("has_port", &IO::has_port)
+ .addFunction ("nth", &IO::nth)
+ .addFunction ("audio", &IO::audio)
+ .addFunction ("midi", &IO::midi)
+ .addFunction ("port_by_name", &IO::nth)
+ .addFunction ("n_ports", &IO::n_ports)
+ .endClass ()
+
+ .beginClass <RouteGroup> ("RouteGroup")
+ // stub RouteGroup* is needed for new_audio_track()
+ .endClass ()
+
+ .deriveWSPtrClass <Stripable, SessionObject> ("Stripable")
+ .addCast<Route> ("to_route")
+ .addFunction ("is_auditioner", &Stripable::is_auditioner)
+ .addFunction ("is_master", &Stripable::is_master)
+ .addFunction ("is_monitor", &Stripable::is_monitor)
+ .addFunction ("is_hidden", &Stripable::is_hidden)
+ .addFunction ("is_selected", &Stripable::is_selected)
+ .addFunction ("gain_control", &Stripable::gain_control)
+ .addFunction ("solo_control", &Stripable::solo_control)
+ .addFunction ("solo_isolate_control", &Stripable::solo_isolate_control)
+ .addFunction ("solo_safe_control", &Stripable::solo_safe_control)
+ .addFunction ("mute_control", &Stripable::mute_control)
+ .addFunction ("phase_control", &Stripable::phase_control)
+ .addFunction ("trim_control", &Stripable::trim_control)
+ .addFunction ("rec_enable_control", &Stripable::rec_enable_control)
+ .addFunction ("rec_safe_control", &Stripable::rec_safe_control)
+ .endClass ()
+
+ .deriveWSPtrClass <Route, Stripable> ("Route")
+ .addCast<Track> ("to_track")