36#include <initializer_list>
45typedef const char *msg_t;
71 void push_index(
int ind);
74 virtual void replyArray(
const char *path,
const char *args,
76 virtual void reply(
const char *path,
const char *args, ...);
78 virtual void reply(
const char *msg);
79 virtual void chain(
const char *path,
const char *args, ...);
81 virtual void chain(
const char *msg);
82 virtual void chainArray(
const char *path,
const char *args,
85 virtual void broadcast(
const char *path,
const char *args, ...);
87 virtual void broadcastArray(
const char *path,
const char *args,
90 virtual void forward(
const char *rational=NULL);
110 const MetaIterator& operator*(
void)
const {
return *
this;}
111 const MetaIterator* operator->(
void)
const {
return this;}
112 bool operator==(
MetaIterator a) {
return title == a.title;}
113 bool operator!=(
MetaIterator a) {
return title != a.title;}
115 operator bool()
const;
130 size_t length(
void)
const;
160 std::vector<Port> ports;
161 std::function<void(msg_t,
RtData&)> default_handler;
163 typedef std::vector<Port>::const_iterator itr_t;
166 itr_t
begin()
const {
return ports.begin();}
169 itr_t
end()
const {
return ports.end();}
172 size_t size()
const {
return ports.size();}
177 Ports(std::initializer_list<Port> l);
236 void refreshMagic(
void);
239 class Port_Matcher *impl;
246 std::function<void(msg_t,
RtData&)> cb;
252 std::initializer_list<ClonePort> c);
257 MergePorts(std::initializer_list<const Ports*> c);
304typedef void(*port_walker_t)(
const Port*,
const char*,
const char*,
305 const Ports&,
void*,
void*);
325 port_walker_t walker,
326 bool expand_bundles =
true,
327 void *runtime = NULL,
328 bool ranges =
false);
375 char *types, std::size_t max_types,
378 bool reply_with_query =
false);
404 std::size_t max_ports,
405 char *msgbuf, std::size_t bufsize,
407 bool reply_with_query =
false);
425 std::string prog_name;
427 std::string doc_origin;
428 std::string author_first;
429 std::string author_last;
int enum_key(Port::MetaContainer meta, const char *value)
Return the index with value value from the metadata's enumeration.
void map_arg_vals(rtosc_arg_val_t *av, size_t n, Port::MetaContainer meta)
Convert each of the given arguments to their mapped symbol, if possible.
void path_search(const rtosc::Ports &root, const char *str, const char *needle, char *types, std::size_t max_types, rtosc_arg_t *args, std::size_t max_args, path_search_opts opts=path_search_opts::sorted_and_unique_prefix, bool reply_with_query=false)
Returns paths and metadata of all direct children of a port, or of the port itself if that port has n...
path_search_opts
Options for path_search.
Definition ports.h:335
@ sorted
Return ports sorted, but not filtered.
@ unmodified
Return ports in the order they are found.
@ sorted_and_unique_prefix
Sorted and prefix-filtered: If "a/" is found, don't add any "a/...".
int canonicalize_arg_vals(rtosc_arg_val_t *av, size_t n, const char *port_args, Port::MetaContainer meta)
Convert given argument values to their canonical representation.
void walk_ports(const Ports *base, char *name_buffer, size_t buffer_size, void *data, port_walker_t walker, bool expand_bundles=true, void *runtime=NULL, bool ranges=false)
Call a function on all ports and subports.
Functions handling messages and arguments.
Port in rtosc dispatching hierarchy.
Definition ports.h:97
const char * metadata
Statically accessable data about port.
Definition ports.h:99
const char * name
Pattern for messages to match.
Definition ports.h:98
std::function< void(msg_t, RtData &)> cb
Callback for matching functions.
Definition ports.h:101
const Ports * ports
Pointer to further ports.
Definition ports.h:100
Ports - a dispatchable collection of Port entries.
Definition ports.h:159
const Port * operator[](const char *name) const
Retrieve local port by name TODO implement full matching.
void dispatch(const char *m, RtData &d, bool base_dispatch=false) const
Dispatches message to all matching ports.
const Port & operator[](unsigned i) const
Forwards to builtin container.
Definition ports.h:175
const Port * apropos(const char *path) const
Find the best match for a given path.
itr_t end() const
Forwards to builtin container.
Definition ports.h:169
static char * collapsePath(char *p)
Collapse path with parent path identifiers "/..".
itr_t begin() const
Forwards to builtin container.
Definition ports.h:166
size_t size() const
Forwards to builtin container.
Definition ports.h:172
data object for the dispatch routine
Definition ports.h:52
const Port * port
dispatch will write the matching port's pointer here
Definition ports.h:65
int matches
number of matches returned from dispatch routine
Definition ports.h:64
char * loc
Location of where the dispatch routine is currently being called.
Definition ports.h:61
virtual void chain(const char *msg)
Bypass message to some kind of backend if the message can not be handled.
virtual void reply(const char *msg)
Reply if information has been requested.
virtual void broadcast(const char *path, const char *args,...)
Transmit initialization/change of a value to all listeners.
void * obj
runtime object to dispatch this object to
Definition ports.h:63
const char * message
Will be set to point to the full OSC message in case of a base dispatch.
Definition ports.h:68