Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 2996af6cd7d4ee5653db1697d3e5d4cc > files > 36

liblo-devel-0.26-1.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>liblo: High-level OSC API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.1 -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<h1>High-level OSC API</h1>  </div>
</div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlo__timetag.html">lo_timetag</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A structure to store OSC TimeTag values.  <a href="structlo__timetag.html#_details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionlo__arg.html">lo_arg</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Union used to read values from incoming messages.  <a href="unionlo__arg.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gafa8cfc08b763b0c039fb64a73c4c77da">LO_TT_IMMEDIATE</a>&nbsp;&nbsp;&nbsp;((<a class="el" href="structlo__timetag.html">lo_timetag</a>){0U,1U})</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A timetag constant representing "now".  <a href="#gafa8cfc08b763b0c039fb64a73c4c77da"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga11838c576b0197c255ce805fd7434736">lo_type</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a4ba0490216baf238719e1200325b037d">LO_INT32</a> =  'i', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ab3245e1b7edacde57f71d200840b0aa3">LO_FLOAT</a> =  'f', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a6121bddbedc79af47d86a8a25af47ad2">LO_STRING</a> =  's', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a140f48c944b6c888846b8109ceaeb98b">LO_BLOB</a> =  'b', 
<br/>
&nbsp;&nbsp;<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736acfabb7d6ec1d4f9d033227de24c76b30">LO_INT64</a> =  'h', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a0516741a260e7109d2b0ed0c92beddbe">LO_TIMETAG</a> =  't', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a0ca92c843dfb45f4edabdefd60cdeca6">LO_DOUBLE</a> =  'd', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a4ae18ed5170672498406c36b16e7a948">LO_SYMBOL</a> =  'S', 
<br/>
&nbsp;&nbsp;<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736af93c0cdf731b1edf4b9d44ad7d7dba26">LO_CHAR</a> =  'c', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ad295b5f7669a7220102082e20fd14ec0">LO_MIDI</a> =  'm', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ace8c12ac58d6aaee426dc41cfa609009">LO_TRUE</a> =  'T', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ae85a45e7bc3999069d82da7245d172f4">LO_FALSE</a> =  'F', 
<br/>
&nbsp;&nbsp;<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a80fcaab02318c562b094ca407f81d2b3">LO_NIL</a> =  'N', 
<a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a9b77e96b653de1f91344549b9b9a0273">LO_INFINITUM</a> =  'I'
<br/>
 }</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>An enumeration of the OSC types liblo can send and receive. </p>
 <a href="group__liblo.html#ga11838c576b0197c255ce805fd7434736">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gae5af61a02ab08871d3ea070c8f770cfe">lo_address_new</a> (const char *host, const char *port)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Declare an OSC destination, given IP address and port number. Same as <a class="el" href="group__liblo.html#gaceb4b068bc48c2b075e790910cab3075" title="Declare an OSC destination, given IP address and port number, specifying protocol.">lo_address_new_with_proto()</a>, but using UDP.  <a href="#gae5af61a02ab08871d3ea070c8f770cfe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaceb4b068bc48c2b075e790910cab3075">lo_address_new_with_proto</a> (int proto, const char *host, const char *port)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Declare an OSC destination, given IP address and port number, specifying protocol.  <a href="#gaceb4b068bc48c2b075e790910cab3075"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga1af2cb3c80393cba838f64dfcdc35620">lo_address_new_from_url</a> (const char *url)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a lo_address object from an OSC URL.  <a href="#ga1af2cb3c80393cba838f64dfcdc35620"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga82b9a2d1d30214114eb5298f43aebac5">lo_address_free</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> t)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free the memory used by the lo_address object.  <a href="#ga82b9a2d1d30214114eb5298f43aebac5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gacd72097b92411db148844d89071fd281">lo_address_set_ttl</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> t, int ttl)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the Time-to-Live value for a given target address.  <a href="#gacd72097b92411db148844d89071fd281"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga3652ba694ba3c153dc96917e7321131c">lo_address_get_ttl</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> t)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the Time-to-Live value for a given target address.  <a href="#ga3652ba694ba3c153dc96917e7321131c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987">lo_send</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> targ, const char *path, const char *type,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a OSC formatted message to the address specified.  <a href="#gafa4253874f97c2c16254ac57d2b7c987"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaa4a314562b09e2fd00749a5d0b4d0955">lo_send_from</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> targ, <a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a> from, <a class="el" href="structlo__timetag.html">lo_timetag</a> ts, const char *path, const char *type,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a OSC formatted message to the address specified, from the same socket as the specificied server.  <a href="#gaa4a314562b09e2fd00749a5d0b4d0955"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga42ec6437789c7516c5b7909d8504751a">lo_send_timestamped</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> targ, <a class="el" href="structlo__timetag.html">lo_timetag</a> ts, const char *path, const char *type,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a OSC formatted message to the address specified, scheduled to be dispatch at some time in the future.  <a href="#ga42ec6437789c7516c5b7909d8504751a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga407e1694a2ec58ee5b90c6390e0a5d53">lo_address_errno</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> a)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the error number from the last failed <a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send()</a> or <a class="el" href="group__liblo.html#gae5af61a02ab08871d3ea070c8f770cfe" title="Declare an OSC destination, given IP address and port number. Same as lo_address_new_with_proto(), but using UDP.">lo_address_new()</a> call.  <a href="#ga407e1694a2ec58ee5b90c6390e0a5d53"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gace321bfb9e529d8640e96e894db5400c">lo_address_errstr</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> a)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the error string from the last failed <a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send()</a> or <a class="el" href="group__liblo.html#gae5af61a02ab08871d3ea070c8f770cfe" title="Declare an OSC destination, given IP address and port number. Same as lo_address_new_with_proto(), but using UDP.">lo_address_new()</a> call.  <a href="#gace321bfb9e529d8640e96e894db5400c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gabe3e0c31189adfd7624de6c507b610ba">lo_server_thread_new</a> (const char *port, <a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> err_h)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new server thread to handle incoming OSC messages.  <a href="#gabe3e0c31189adfd7624de6c507b610ba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga0fa9fcae4eabe09847d46b134dc33aa4">lo_server_thread_new_multicast</a> (const char *group, const char *port, <a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> err_h)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new server thread to handle incoming OSC messages, and join a UDP multicast group.  <a href="#ga0fa9fcae4eabe09847d46b134dc33aa4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga6713cedfb0b2c4f066ec8a19366bf095">lo_server_thread_new_with_proto</a> (const char *port, int proto, <a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> err_h)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new server thread to handle incoming OSC messages, specifying protocol.  <a href="#ga6713cedfb0b2c4f066ec8a19366bf095"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gad72be3f2a81b9583ad69dd007080c0e5">lo_server_thread_free</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free memory taken by a server thread.  <a href="#gad72be3f2a81b9583ad69dd007080c0e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a66faedf5da13231d8c0166870477dce5">lo_method</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gacff9c90a8efc400448276b2d20831010">lo_server_thread_add_method</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st, const char *path, const char *typespec, <a class="el" href="lo__types_8h.html#a3b1c86c0925d05e13b5438ce8fe80a6c">lo_method_handler</a> h, void *user_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an OSC method to the specifed server thread.  <a href="#gacff9c90a8efc400448276b2d20831010"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga072edf53338bc807444c4b510643a828">lo_server_thread_del_method</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st, const char *path, const char *typespec)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an OSC method from the specifed server thread.  <a href="#ga072edf53338bc807444c4b510643a828"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga4b284c1b96d0354c5de4ff7ba5a44fbc">lo_server_thread_start</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start the server thread.  <a href="#ga4b284c1b96d0354c5de4ff7ba5a44fbc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga06992ac46b04e58cb77d7c519a578f57">lo_server_thread_stop</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop the server thread.  <a href="#ga06992ac46b04e58cb77d7c519a578f57"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933">lo_server_thread_get_port</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the port number that the server thread has bound to.  <a href="#ga22f4b18eeac41490647ab9fe2333f933"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gac2805a7cbdd9465be4ca5101c569faf0">lo_server_thread_get_url</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a URL describing the address of the server thread.  <a href="#gac2805a7cbdd9465be4ca5101c569faf0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gab968d51fa6e0d4bea92e3f84f5556161">lo_server_thread_get_server</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the lo_server for a lo_server_thread.  <a href="#gab968d51fa6e0d4bea92e3f84f5556161"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga7bc3d8361b65e3ad112a1da956d9114e">lo_server_thread_events_pending</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return true if there are scheduled events (eg. from bundles) waiting to be dispatched by the thread.  <a href="#ga7bc3d8361b65e3ad112a1da956d9114e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaffb2348c70cb0e1214fd50bdc7574c39">lo_blob_new</a> (int32_t size, const void *data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new OSC blob type.  <a href="#gaffb2348c70cb0e1214fd50bdc7574c39"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaa46ef058cfdf14a16936c062ebac19b9">lo_blob_free</a> (<a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> b)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free the memory taken by a blob.  <a href="#gaa46ef058cfdf14a16936c062ebac19b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gab6c9184f0a54f19319d8a6409487b466">lo_blob_datasize</a> (<a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> b)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the amount of valid data in a lo_blob object.  <a href="#gab6c9184f0a54f19319d8a6409487b466"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga064e3435301e0df338b75023a7ebf38e">lo_blob_dataptr</a> (<a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> b)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a pointer to the start of the blob data to allow contents to be changed.  <a href="#ga064e3435301e0df338b75023a7ebf38e"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Defines the high-level API functions necessary to implement OSC support. Should be adequate for most applications, but if you require lower level control you can use the functions defined in <a class="el" href="lo__lowlevel_8h.html">lo_lowlevel.h</a> </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gafa8cfc08b763b0c039fb64a73c4c77da"></a><!-- doxytag: member="lo_osc_types.h::LO_TT_IMMEDIATE" ref="gafa8cfc08b763b0c039fb64a73c4c77da" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LO_TT_IMMEDIATE&nbsp;&nbsp;&nbsp;((<a class="el" href="structlo__timetag.html">lo_timetag</a>){0U,1U})</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A timetag constant representing "now". </p>

</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="ga11838c576b0197c255ce805fd7434736"></a><!-- doxytag: member="lo_osc_types.h::lo_type" ref="ga11838c576b0197c255ce805fd7434736" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__liblo.html#ga11838c576b0197c255ce805fd7434736">lo_type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>An enumeration of the OSC types liblo can send and receive. </p>
<p>The value of the enumeration is the typechar used to tag messages and to specify arguments with <a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send()</a>. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a4ba0490216baf238719e1200325b037d"></a><!-- doxytag: member="LO_INT32" ref="gga11838c576b0197c255ce805fd7434736a4ba0490216baf238719e1200325b037d" args="" -->LO_INT32</em>&nbsp;</td><td>
<p>32 bit signed integer. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ab3245e1b7edacde57f71d200840b0aa3"></a><!-- doxytag: member="LO_FLOAT" ref="gga11838c576b0197c255ce805fd7434736ab3245e1b7edacde57f71d200840b0aa3" args="" -->LO_FLOAT</em>&nbsp;</td><td>
<p>32 bit IEEE-754 float. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a6121bddbedc79af47d86a8a25af47ad2"></a><!-- doxytag: member="LO_STRING" ref="gga11838c576b0197c255ce805fd7434736a6121bddbedc79af47d86a8a25af47ad2" args="" -->LO_STRING</em>&nbsp;</td><td>
<p>Standard C, NULL terminated string. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a140f48c944b6c888846b8109ceaeb98b"></a><!-- doxytag: member="LO_BLOB" ref="gga11838c576b0197c255ce805fd7434736a140f48c944b6c888846b8109ceaeb98b" args="" -->LO_BLOB</em>&nbsp;</td><td>
<p>OSC binary blob type. Accessed using the lo_blob_*() functions. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736acfabb7d6ec1d4f9d033227de24c76b30"></a><!-- doxytag: member="LO_INT64" ref="gga11838c576b0197c255ce805fd7434736acfabb7d6ec1d4f9d033227de24c76b30" args="" -->LO_INT64</em>&nbsp;</td><td>
<p>64 bit signed integer. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a0516741a260e7109d2b0ed0c92beddbe"></a><!-- doxytag: member="LO_TIMETAG" ref="gga11838c576b0197c255ce805fd7434736a0516741a260e7109d2b0ed0c92beddbe" args="" -->LO_TIMETAG</em>&nbsp;</td><td>
<p>OSC TimeTag type, represented by the <a class="el" href="structlo__timetag.html" title="A structure to store OSC TimeTag values.">lo_timetag</a> structure. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a0ca92c843dfb45f4edabdefd60cdeca6"></a><!-- doxytag: member="LO_DOUBLE" ref="gga11838c576b0197c255ce805fd7434736a0ca92c843dfb45f4edabdefd60cdeca6" args="" -->LO_DOUBLE</em>&nbsp;</td><td>
<p>64 bit IEEE-754 double. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a4ae18ed5170672498406c36b16e7a948"></a><!-- doxytag: member="LO_SYMBOL" ref="gga11838c576b0197c255ce805fd7434736a4ae18ed5170672498406c36b16e7a948" args="" -->LO_SYMBOL</em>&nbsp;</td><td>
<p>Standard C, NULL terminated, string. Used in systems which distinguish strings and symbols. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736af93c0cdf731b1edf4b9d44ad7d7dba26"></a><!-- doxytag: member="LO_CHAR" ref="gga11838c576b0197c255ce805fd7434736af93c0cdf731b1edf4b9d44ad7d7dba26" args="" -->LO_CHAR</em>&nbsp;</td><td>
<p>Standard C, 8 bit, char variable. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ad295b5f7669a7220102082e20fd14ec0"></a><!-- doxytag: member="LO_MIDI" ref="gga11838c576b0197c255ce805fd7434736ad295b5f7669a7220102082e20fd14ec0" args="" -->LO_MIDI</em>&nbsp;</td><td>
<p>A 4 byte MIDI packet. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ace8c12ac58d6aaee426dc41cfa609009"></a><!-- doxytag: member="LO_TRUE" ref="gga11838c576b0197c255ce805fd7434736ace8c12ac58d6aaee426dc41cfa609009" args="" -->LO_TRUE</em>&nbsp;</td><td>
<p>Sybol representing the value True. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ae85a45e7bc3999069d82da7245d172f4"></a><!-- doxytag: member="LO_FALSE" ref="gga11838c576b0197c255ce805fd7434736ae85a45e7bc3999069d82da7245d172f4" args="" -->LO_FALSE</em>&nbsp;</td><td>
<p>Sybol representing the value False. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a80fcaab02318c562b094ca407f81d2b3"></a><!-- doxytag: member="LO_NIL" ref="gga11838c576b0197c255ce805fd7434736a80fcaab02318c562b094ca407f81d2b3" args="" -->LO_NIL</em>&nbsp;</td><td>
<p>Sybol representing the value Nil. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a9b77e96b653de1f91344549b9b9a0273"></a><!-- doxytag: member="LO_INFINITUM" ref="gga11838c576b0197c255ce805fd7434736a9b77e96b653de1f91344549b9b9a0273" args="" -->LO_INFINITUM</em>&nbsp;</td><td>
<p>Sybol representing the value Infinitum. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga407e1694a2ec58ee5b90c6390e0a5d53"></a><!-- doxytag: member="lo.h::lo_address_errno" ref="ga407e1694a2ec58ee5b90c6390e0a5d53" args="(lo_address a)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_address_errno </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>a</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the error number from the last failed <a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send()</a> or <a class="el" href="group__liblo.html#gae5af61a02ab08871d3ea070c8f770cfe" title="Declare an OSC destination, given IP address and port number. Same as lo_address_new_with_proto(), but using UDP.">lo_address_new()</a> call. </p>

</div>
</div>
<a class="anchor" id="gace321bfb9e529d8640e96e894db5400c"></a><!-- doxytag: member="lo.h::lo_address_errstr" ref="gace321bfb9e529d8640e96e894db5400c" args="(lo_address a)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* lo_address_errstr </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>a</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the error string from the last failed <a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send()</a> or <a class="el" href="group__liblo.html#gae5af61a02ab08871d3ea070c8f770cfe" title="Declare an OSC destination, given IP address and port number. Same as lo_address_new_with_proto(), but using UDP.">lo_address_new()</a> call. </p>

</div>
</div>
<a class="anchor" id="ga82b9a2d1d30214114eb5298f43aebac5"></a><!-- doxytag: member="lo.h::lo_address_free" ref="ga82b9a2d1d30214114eb5298f43aebac5" args="(lo_address t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lo_address_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>t</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free the memory used by the lo_address object. </p>

</div>
</div>
<a class="anchor" id="ga3652ba694ba3c153dc96917e7321131c"></a><!-- doxytag: member="lo.h::lo_address_get_ttl" ref="ga3652ba694ba3c153dc96917e7321131c" args="(lo_address t)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_address_get_ttl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>t</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the Time-to-Live value for a given target address. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>An OSC address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>An integer specifying the scope of a multicast UDP message. </dd></dl>

</div>
</div>
<a class="anchor" id="gae5af61a02ab08871d3ea070c8f770cfe"></a><!-- doxytag: member="lo.h::lo_address_new" ref="gae5af61a02ab08871d3ea070c8f770cfe" args="(const char *host, const char *port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> lo_address_new </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>host</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Declare an OSC destination, given IP address and port number. Same as <a class="el" href="group__liblo.html#gaceb4b068bc48c2b075e790910cab3075" title="Declare an OSC destination, given IP address and port number, specifying protocol.">lo_address_new_with_proto()</a>, but using UDP. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>host</em>&nbsp;</td><td>An IP address or number, or NULL for the local machine. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>a decimal port number or service name.</td></tr>
  </table>
  </dd>
</dl>
<p>The lo_address object may be used as the target of OSC messages.</p>
<p>Note: if you wish to receive replies from the target of this address, you must first create a lo_server_thread or lo_server object which will receive the replies. The last lo_server(_thread) object creted will be the receiver. </p>

</div>
</div>
<a class="anchor" id="ga1af2cb3c80393cba838f64dfcdc35620"></a><!-- doxytag: member="lo.h::lo_address_new_from_url" ref="ga1af2cb3c80393cba838f64dfcdc35620" args="(const char *url)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> lo_address_new_from_url </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>url</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a lo_address object from an OSC URL. </p>
<p>example: <code>"osc.udp://localhost:4444/my/path/"</code> </p>

</div>
</div>
<a class="anchor" id="gaceb4b068bc48c2b075e790910cab3075"></a><!-- doxytag: member="lo.h::lo_address_new_with_proto" ref="gaceb4b068bc48c2b075e790910cab3075" args="(int proto, const char *host, const char *port)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> lo_address_new_with_proto </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>proto</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>host</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>port</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Declare an OSC destination, given IP address and port number, specifying protocol. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>proto</em>&nbsp;</td><td>The protocol to use, must be one of LO_UDP, LO_TCP or LO_UNIX. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>host</em>&nbsp;</td><td>An IP address or number, or NULL for the local machine. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>a decimal port number or service name.</td></tr>
  </table>
  </dd>
</dl>
<p>The lo_address object may be used as the target of OSC messages.</p>
<p>Note: if you wish to receive replies from the target of this address, you must first create a lo_server_thread or lo_server object which will receive the replies. The last lo_server(_thread) object creted will be the receiver. </p>

</div>
</div>
<a class="anchor" id="gacd72097b92411db148844d89071fd281"></a><!-- doxytag: member="lo.h::lo_address_set_ttl" ref="gacd72097b92411db148844d89071fd281" args="(lo_address t, int ttl)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lo_address_set_ttl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>ttl</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the Time-to-Live value for a given target address. </p>
<p>This is required for sending multicast UDP messages. A value of 1 (the usual case) keeps the message within the subnet, while 255 means a global, unrestricted scope.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>An OSC address. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ttl</em>&nbsp;</td><td>An integer specifying the scope of a multicast UDP message. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga064e3435301e0df338b75023a7ebf38e"></a><!-- doxytag: member="lo.h::lo_blob_dataptr" ref="ga064e3435301e0df338b75023a7ebf38e" args="(lo_blob b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* lo_blob_dataptr </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a>&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a pointer to the start of the blob data to allow contents to be changed. </p>

</div>
</div>
<a class="anchor" id="gab6c9184f0a54f19319d8a6409487b466"></a><!-- doxytag: member="lo.h::lo_blob_datasize" ref="gab6c9184f0a54f19319d8a6409487b466" args="(lo_blob b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t lo_blob_datasize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a>&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the amount of valid data in a lo_blob object. </p>
<p>If you want to know the storage size, use <a class="el" href="group__liblolowlevel.html#gaf793bbd32346a91d7d680d91ae68d1bd" title="Return the storage size, in bytes, of the given argument.">lo_arg_size()</a>. </p>

</div>
</div>
<a class="anchor" id="gaa46ef058cfdf14a16936c062ebac19b9"></a><!-- doxytag: member="lo.h::lo_blob_free" ref="gaa46ef058cfdf14a16936c062ebac19b9" args="(lo_blob b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lo_blob_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a>&nbsp;</td>
          <td class="paramname"> <em>b</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free the memory taken by a blob. </p>

</div>
</div>
<a class="anchor" id="gaffb2348c70cb0e1214fd50bdc7574c39"></a><!-- doxytag: member="lo.h::lo_blob_new" ref="gaffb2348c70cb0e1214fd50bdc7574c39" args="(int32_t size, const void *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> lo_blob_new </td>
          <td>(</td>
          <td class="paramtype">int32_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new OSC blob type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The amount of space to allocate in the blob structure. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The data that will be used to initialise the blob, should be size bytes long. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gafa4253874f97c2c16254ac57d2b7c987"></a><!-- doxytag: member="lo.h::lo_send" ref="gafa4253874f97c2c16254ac57d2b7c987" args="(lo_address targ, const char *path, const char *type,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_send </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>targ</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send a OSC formatted message to the address specified. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>targ</em>&nbsp;</td><td>The target OSC address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>The OSC path the message will be delivered to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The types of the data items in the message, types are defined in <a class="el" href="lo__osc__types_8h.html">lo_osc_types.h</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>The data values to be transmitted. The types of the arguments passed here must agree with the types specified in the type parameter.</td></tr>
  </table>
  </dd>
</dl>
<p>example: </p>
<div class="fragment"><pre class="fragment"> <a class="code" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send</a>(t, <span class="stringliteral">&quot;/foo/bar&quot;</span>, <span class="stringliteral">&quot;ff&quot;</span>, 0.1f, 23.0f);
</pre></div><dl class="return"><dt><b>Returns:</b></dt><dd>-1 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa4a314562b09e2fd00749a5d0b4d0955"></a><!-- doxytag: member="lo.h::lo_send_from" ref="gaa4a314562b09e2fd00749a5d0b4d0955" args="(lo_address targ, lo_server from, lo_timetag ts, const char *path, const char *type,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_send_from </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>targ</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a>&nbsp;</td>
          <td class="paramname"> <em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structlo__timetag.html">lo_timetag</a>&nbsp;</td>
          <td class="paramname"> <em>ts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send a OSC formatted message to the address specified, from the same socket as the specificied server. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>targ</em>&nbsp;</td><td>The target OSC address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>from</em>&nbsp;</td><td>The server to send message from (can be NULL to use new socket) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ts</em>&nbsp;</td><td>The OSC timetag timestamp at which the message will be processed (can be LO_TT_IMMEDIATE if you don't want to attach a timetag) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>The OSC path the message will be delivered to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The types of the data items in the message, types are defined in <a class="el" href="lo__osc__types_8h.html">lo_osc_types.h</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>The data values to be transmitted. The types of the arguments passed here must agree with the types specified in the type parameter.</td></tr>
  </table>
  </dd>
</dl>
<p>example: </p>
<div class="fragment"><pre class="fragment"> serv = <a class="code" href="group__liblolowlevel.html#ga78cfb23346e44465695293d4393447ae" title="Create a new server instance.">lo_server_new</a>(NULL, err);
 <a class="code" href="group__liblolowlevel.html#ga0c183cabaac67eb9aad3265ae1efa580" title="Add an OSC method to the specifed server.">lo_server_add_method</a>(serv, <span class="stringliteral">&quot;/reply&quot;</span>, <span class="stringliteral">&quot;ss&quot;</span>, reply_handler, NULL);
 <a class="code" href="group__liblo.html#gaa4a314562b09e2fd00749a5d0b4d0955" title="Send a OSC formatted message to the address specified, from the same socket as the specificied server...">lo_send_from</a>(t, serv, <a class="code" href="group__liblo.html#gafa8cfc08b763b0c039fb64a73c4c77da" title="A timetag constant representing &amp;quot;now&amp;quot;.">LO_TT_IMMEDIATE</a>, <span class="stringliteral">&quot;/foo/bar&quot;</span>, <span class="stringliteral">&quot;ff&quot;</span>, 0.1f, 23.0f);
</pre></div><dl class="return"><dt><b>Returns:</b></dt><dd>on success, the number of bytes sent, or -1 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga42ec6437789c7516c5b7909d8504751a"></a><!-- doxytag: member="lo.h::lo_send_timestamped" ref="ga42ec6437789c7516c5b7909d8504751a" args="(lo_address targ, lo_timetag ts, const char *path, const char *type,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_send_timestamped </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a>&nbsp;</td>
          <td class="paramname"> <em>targ</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structlo__timetag.html">lo_timetag</a>&nbsp;</td>
          <td class="paramname"> <em>ts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send a OSC formatted message to the address specified, scheduled to be dispatch at some time in the future. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>targ</em>&nbsp;</td><td>The target OSC address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ts</em>&nbsp;</td><td>The OSC timetag timestamp at which the message will be processed </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>The OSC path the message will be delivered to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>The types of the data items in the message, types are defined in <a class="el" href="lo__osc__types_8h.html">lo_osc_types.h</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>The data values to be transmitted. The types of the arguments passed here must agree with the types specified in the type parameter.</td></tr>
  </table>
  </dd>
</dl>
<p>example: </p>
<div class="fragment"><pre class="fragment"> <a class="code" href="structlo__timetag.html" title="A structure to store OSC TimeTag values.">lo_timetag</a> now;&lt;br&gt;
 <a class="code" href="group__liblolowlevel.html#gad687e21ed611e68748e962502ae63d8e" title="Return a timetag for the current time.">lo_timetag_now</a>(&amp;now);&lt;br&gt;
 <a class="code" href="group__liblo.html#ga42ec6437789c7516c5b7909d8504751a" title="Send a OSC formatted message to the address specified, scheduled to be dispatch at some time in the f...">lo_send_timestamped</a>(t, now, <span class="stringliteral">&quot;/foo/bar&quot;</span>, <span class="stringliteral">&quot;ff&quot;</span>, 0.1f, 23.0f);
</pre></div><dl class="return"><dt><b>Returns:</b></dt><dd>on success, the number of bytes sent, or -1 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gacff9c90a8efc400448276b2d20831010"></a><!-- doxytag: member="lo.h::lo_server_thread_add_method" ref="gacff9c90a8efc400448276b2d20831010" args="(lo_server_thread st, const char *path, const char *typespec, lo_method_handler h, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#a66faedf5da13231d8c0166870477dce5">lo_method</a> lo_server_thread_add_method </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>typespec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a3b1c86c0925d05e13b5438ce8fe80a6c">lo_method_handler</a>&nbsp;</td>
          <td class="paramname"> <em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add an OSC method to the specifed server thread. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>st</em>&nbsp;</td><td>The server thread the method is to be added to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>The OSC path to register the method to. If NULL is passed the method will match all paths. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>typespec</em>&nbsp;</td><td>The typespec the method accepts. Incoming messages with similar typespecs (e.g. ones with numerical types in the same position) will be coerced to the typespec given here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>h</em>&nbsp;</td><td>The method handler callback function that will be called it a matching message is received </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>A value that will be passed to the callback function, h, when its invoked matching from this method. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga072edf53338bc807444c4b510643a828"></a><!-- doxytag: member="lo.h::lo_server_thread_del_method" ref="ga072edf53338bc807444c4b510643a828" args="(lo_server_thread st, const char *path, const char *typespec)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lo_server_thread_del_method </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>typespec</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete an OSC method from the specifed server thread. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>st</em>&nbsp;</td><td>The server thread the method is to be removed from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>The OSC path of the method to delete. If NULL is passed the method will match the generic handler. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>typespec</em>&nbsp;</td><td>The typespec the method accepts. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga7bc3d8361b65e3ad112a1da956d9114e"></a><!-- doxytag: member="lo.h::lo_server_thread_events_pending" ref="ga7bc3d8361b65e3ad112a1da956d9114e" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_server_thread_events_pending </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return true if there are scheduled events (eg. from bundles) waiting to be dispatched by the thread. </p>

</div>
</div>
<a class="anchor" id="gad72be3f2a81b9583ad69dd007080c0e5"></a><!-- doxytag: member="lo.h::lo_server_thread_free" ref="gad72be3f2a81b9583ad69dd007080c0e5" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void lo_server_thread_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free memory taken by a server thread. </p>
<p>Frees the memory, and, if currently running will stop the associated thread. </p>

</div>
</div>
<a class="anchor" id="ga22f4b18eeac41490647ab9fe2333f933"></a><!-- doxytag: member="lo.h::lo_server_thread_get_port" ref="ga22f4b18eeac41490647ab9fe2333f933" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_server_thread_get_port </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the port number that the server thread has bound to. </p>

</div>
</div>
<a class="anchor" id="gab968d51fa6e0d4bea92e3f84f5556161"></a><!-- doxytag: member="lo.h::lo_server_thread_get_server" ref="gab968d51fa6e0d4bea92e3f84f5556161" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a> lo_server_thread_get_server </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the lo_server for a lo_server_thread. </p>
<p>This function is useful for passing a thread's lo_server to <a class="el" href="group__liblo.html#gaa4a314562b09e2fd00749a5d0b4d0955" title="Send a OSC formatted message to the address specified, from the same socket as the specificied server...">lo_send_from()</a>. </p>

</div>
</div>
<a class="anchor" id="gac2805a7cbdd9465be4ca5101c569faf0"></a><!-- doxytag: member="lo.h::lo_server_thread_get_url" ref="gac2805a7cbdd9465be4ca5101c569faf0" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* lo_server_thread_get_url </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return a URL describing the address of the server thread. </p>
<p>Return value must be free()'d to reclaim memory. </p>

</div>
</div>
<a class="anchor" id="gabe3e0c31189adfd7624de6c507b610ba"></a><!-- doxytag: member="lo.h::lo_server_thread_new" ref="gabe3e0c31189adfd7624de6c507b610ba" args="(const char *port, lo_err_handler err_h)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> lo_server_thread_new </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a>&nbsp;</td>
          <td class="paramname"> <em>err_h</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new server thread to handle incoming OSC messages. </p>
<p>Server threads take care of the message reception and dispatch by transparently creating a system thread to handle incoming messages. Use this if you do not want to handle the threading yourself.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>If NULL is passed then an unused port will be chosen by the system, its number may be retrieved with <a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933" title="Return the port number that the server thread has bound to.">lo_server_thread_get_port()</a> so it can be passed to clients. Otherwise a decimal port number, service name or UNIX domain socket path may be passed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>err_h</em>&nbsp;</td><td>A function that will be called in the event of an error being raised. The function prototype is defined in <a class="el" href="lo__types_8h.html">lo_types.h</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga0fa9fcae4eabe09847d46b134dc33aa4"></a><!-- doxytag: member="lo.h::lo_server_thread_new_multicast" ref="ga0fa9fcae4eabe09847d46b134dc33aa4" args="(const char *group, const char *port, lo_err_handler err_h)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> lo_server_thread_new_multicast </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>group</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a>&nbsp;</td>
          <td class="paramname"> <em>err_h</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new server thread to handle incoming OSC messages, and join a UDP multicast group. </p>
<p>Server threads take care of the message reception and dispatch by transparently creating a system thread to handle incoming messages. Use this if you do not want to handle the threading yourself.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>group</em>&nbsp;</td><td>The multicast group to join. See documentation on IP multicast for the acceptable address range; e.g., <a href="http://tldp.org/HOWTO/Multicast-HOWTO-2.html">http://tldp.org/HOWTO/Multicast-HOWTO-2.html</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>If NULL is passed then an unused port will be chosen by the system, its number may be retrieved with <a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933" title="Return the port number that the server thread has bound to.">lo_server_thread_get_port()</a> so it can be passed to clients. Otherwise a decimal port number, service name or UNIX domain socket path may be passed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>err_h</em>&nbsp;</td><td>A function that will be called in the event of an error being raised. The function prototype is defined in <a class="el" href="lo__types_8h.html">lo_types.h</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga6713cedfb0b2c4f066ec8a19366bf095"></a><!-- doxytag: member="lo.h::lo_server_thread_new_with_proto" ref="ga6713cedfb0b2c4f066ec8a19366bf095" args="(const char *port, int proto, lo_err_handler err_h)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> lo_server_thread_new_with_proto </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>proto</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a>&nbsp;</td>
          <td class="paramname"> <em>err_h</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new server thread to handle incoming OSC messages, specifying protocol. </p>
<p>Server threads take care of the message reception and dispatch by transparently creating a system thread to handle incoming messages. Use this if you do not want to handle the threading yourself.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>If NULL is passed then an unused port will be chosen by the system, its number may be retrieved with <a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933" title="Return the port number that the server thread has bound to.">lo_server_thread_get_port()</a> so it can be passed to clients. Otherwise a decimal port number, service name or UNIX domain socket path may be passed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>proto</em>&nbsp;</td><td>The protocol to use, should be one of LO_UDP, LO_TCP or LO_UNIX. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>err_h</em>&nbsp;</td><td>A function that will be called in the event of an error being raised. The function prototype is defined in <a class="el" href="lo__types_8h.html">lo_types.h</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga4b284c1b96d0354c5de4ff7ba5a44fbc"></a><!-- doxytag: member="lo.h::lo_server_thread_start" ref="ga4b284c1b96d0354c5de4ff7ba5a44fbc" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_server_thread_start </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Start the server thread. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>st</em>&nbsp;</td><td>the server thread to start. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Less than 0 on failure, 0 on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga06992ac46b04e58cb77d7c519a578f57"></a><!-- doxytag: member="lo.h::lo_server_thread_stop" ref="ga06992ac46b04e58cb77d7c519a578f57" args="(lo_server_thread st)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lo_server_thread_stop </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a>&nbsp;</td>
          <td class="paramname"> <em>st</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Stop the server thread. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>st</em>&nbsp;</td><td>the server thread to start. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Less than 0 on failure, 0 on success. </dd></dl>

</div>
</div>
</div>
<hr size="1"><address style="text-align: right;"><small>
Generated for liblo by <a href="http://www.doxygen.org/
index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a>
1.7.1</small></address>
</body>
</html>