36 #include <initializer_list> 45 typedef const char *msg_t;
70 void push_index(
int ind);
73 virtual void replyArray(
const char *path,
const char *args,
75 virtual void reply(
const char *path,
const char *args, ...);
77 virtual void reply(
const char *msg);
78 virtual void chain(
const char *path,
const char *args, ...);
80 virtual void chain(
const char *msg);
81 virtual void chainArray(
const char *path,
const char *args,
84 virtual void broadcast(
const char *path,
const char *args, ...);
86 virtual void broadcastArray(
const char *path,
const char *args,
89 virtual void forward(
const char *rational=NULL);
109 const MetaIterator& operator*(
void)
const {
return *
this;}
110 const MetaIterator* operator->(
void)
const {
return this;}
111 bool operator==(
MetaIterator a) {
return title == a.title;}
112 bool operator!=(
MetaIterator a) {
return title != a.title;}
114 operator bool()
const;
129 size_t length(
void)
const;
132 const char *
operator[](
const char *str)
const;
159 std::vector<Port> ports;
160 std::function<void(msg_t,
RtData&)> default_handler;
162 typedef std::vector<Port>::const_iterator itr_t;
165 itr_t
begin()
const {
return ports.begin();}
168 itr_t
end()
const {
return ports.end();}
171 size_t size()
const {
return ports.size();}
176 Ports(std::initializer_list<Port> l);
199 void dispatch(
const char *m,
RtData &d,
bool base_dispatch=
false)
const;
235 void refreshMagic(
void);
238 class Port_Matcher *impl;
245 std::function<void(msg_t,
RtData&)> cb;
251 std::initializer_list<ClonePort> c);
256 MergePorts(std::initializer_list<const Ports*> c);
303 typedef void(*port_walker_t)(
const Port*,
const char*,
const char*,
304 const Ports&,
void*,
void*);
324 port_walker_t walker,
325 bool expand_bundles =
true,
326 void *runtime = NULL);
345 char *types, std::size_t max_types,
370 std::size_t max_ports,
371 char *msgbuf, std::size_t bufsize);
389 std::string prog_name;
391 std::string doc_origin;
392 std::string author_first;
393 std::string author_last;
itr_t begin() const
Forwards to builtin container.
Definition: ports.h:165
virtual void broadcast(const char *path, const char *args,...)
Transmit initialization/change of a value to all listeners.
Port in rtosc dispatching hierarchy.
Definition: ports.h:96
const Port & operator[](unsigned i) const
Forwards to builtin container.
Definition: ports.h:174
const Ports * ports
Pointer to further ports.
Definition: ports.h:99
size_t size() const
Forwards to builtin container.
Definition: ports.h:171
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.
itr_t end() const
Forwards to builtin container.
Definition: ports.h:168
char * loc
Location of where the dispatch routine is currently being called.
Definition: ports.h:60
void * obj
runtime object to dispatch this object to
Definition: ports.h:62
Ports - a dispatchable collection of Port entries.
Definition: ports.h:157
static char * collapsePath(char *p)
Collapse path with parent path identifiers "/..".
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.
std::function< void(msg_t, RtData &)> cb
Callback for matching functions.
Definition: ports.h:100
int enum_key(Port::MetaContainer meta, const char *value)
Return the index with value value from the metadata's enumeration.
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)
Returns paths and metadata of all direct children of a port, or of the port itself if that port has n...
Functions handling messages and arguments.
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)
Call a function on all ports and subports.
const char * metadata
Statically accessable data about port.
Definition: ports.h:98
const Port * apropos(const char *path) const
Find the best match for a given path.
const char * name
Pattern for messages to match.
Definition: ports.h:97
data object for the dispatch routine
Definition: ports.h:51
void dispatch(const char *m, RtData &d, bool base_dispatch=false) const
Dispatches message to all matching ports.
const Port * port
dispatch will write the matching port's pointer here
Definition: ports.h:64
const char * message
Will be set to point to the full OSC message in case of a base dispatch.
Definition: ports.h:67
int matches
number of matches returned from dispatch routine
Definition: ports.h:63