LMMS
Loading...
Searching...
No Matches
port-sugar.h File Reference
#include <assert.h>
#include <type_traits>

Go to the source code of this file.

Macros

#define STRINGIFY2(a)
#define STRINGIFY(a)
#define IMPL(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, N, ...)
#define LAST_IMP(...)
#define DOC_IMP9(a, b, c, d, e, f, g, h, i)
#define DOC_IMP8(a, b, c, d, e, f, g, h)
#define DOC_IMP7(a, b, c, d, e, f, g)
#define DOC_IMP6(a, b, c, d, e, f)
#define DOC_IMP5(a, b, c, d, e)
#define DOC_IMP4(a, b, c, d)
#define DOC_IMP3(a, b, c)
#define DOC_IMP2(a, b)
#define DOC_IMP1(a)
#define DOC_IMP0()
#define DOC_IMP(count, ...)
#define DOC_I(count, ...)
#define DOC(...)
#define rINC(x)
#define rINC_0   1
#define rINC_1   2
#define rINC_2   3
#define rINC_3   4
#define rINC_4   5
#define rINC_5   6
#define rINC_6   7
#define rINC_7   8
#define rINC_8   9
#define rINC_9   10
#define rINC_10   11
#define rINC_11   12
#define rINC_12   13
#define rINC_13   14
#define rINC_14   15
#define rINC_15   16
#define MAC_EACH_0(o, m, x, ...)
#define MAC_EACH_1(o, m, x, ...)
#define MAC_EACH_2(o, m, x, ...)
#define MAC_EACH_3(o, m, x, ...)
#define MAC_EACH_4(o, m, x, ...)
#define MAC_EACH_5(o, m, x, ...)
#define MAC_EACH_6(o, m, x, ...)
#define MAC_EACH_7(o, m, x, ...)
#define MAC_EACH_8(o, m, x, ...)
#define MAC_EACH_9(o, m, x, ...)
#define MAC_EACH_10(o, m, x, ...)
#define MAC_EACH_11(o, m, x, ...)
#define MAC_EACH_12(o, m, x, ...)
#define MAC_EACH_13(o, m, x, ...)
#define MAC_EACH_14(o, m, x, ...)
#define MAC_EACH_15(o, m, x, ...)
#define MAC_EACH_16(o, m, x, ...)
#define MAC_EACH_IMP(off, mac, count, ...)
#define MAC_EACH_I(off, mac, count, ...)
#define MAC_EACH_OFF(off, mac, ...)
#define MAC_EACH(mac, ...)
#define OPTIONS_IMP16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
#define OPTIONS_IMP15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
#define OPTIONS_IMP14(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
#define OPTIONS_IMP13(a, b, c, d, e, f, g, h, i, j, k, l, m)
#define OPTIONS_IMP12(a, b, c, d, e, f, g, h, i, j, k, l)
#define OPTIONS_IMP11(a, b, c, d, e, f, g, h, i, j, k)
#define OPTIONS_IMP10(a, b, c, d, e, f, g, h, i, j)
#define OPTIONS_IMP9(a, b, c, d, e, f, g, h, i)
#define OPTIONS_IMP8(a, b, c, d, e, f, g, h)
#define OPTIONS_IMP7(a, b, c, d, e, f, g)
#define OPTIONS_IMP6(a, b, c, d, e, f)
#define OPTIONS_IMP5(a, b, c, d, e)
#define OPTIONS_IMP4(a, b, c, d)
#define OPTIONS_IMP3(a, b, c)
#define OPTIONS_IMP2(a, b)
#define OPTIONS_IMP1(a)
#define OPTIONS_IMP0()
#define OPTIONS_IMP(count, ...)
#define OPTIONS_I(count, ...)
#define OPTIONS(...)
#define rChangeCb
#define rParam(name, ...)
#define rParamF(name, ...)
#define rParamI(name, ...)
#define rToggle(name, ...)
#define rOption(name, ...)
#define rArrayF(name, length, ...)
#define rArray(name, length, ...)
#define rArrayT(name, length, ...)
#define rArrayI(name, length, ...)
#define rArrayOption(name, length, ...)
#define rAction(name, ...)
#define rActioni(name, ...)
#define rParams(name, length, ...)
#define rRecur(name, ...)
#define rRecurp(name, ...)
#define rRecurs(name, length, ...)
#define rRecursp(name, length, ...)
#define rEnabledBy(portname)
#define rEnabledByCondition(cond_name)
#define rEnabledCondition(cond_name, condition)
#define rEnabledIfCb(condition)
#define rSelf(type, ...)
#define rDummy(name, ...)
#define rString(name, len, ...)
#define rMap(name, value)
#define rProp(name)
#define rLinear(min_, max_)
#define rLog(min_, max_)
#define rSpecial(doc)
#define rCentered   ":centered\0"
#define rDefault(default_value_)
#define rDefaultId(default_value_)
#define rPreset(no, default_value)
#define rPresetsAt(offs, ...)
#define rPresets(...)
#define rDefaultDepends(dep_path_)
#define rDefaultMissing   ""
#define rNoWalk   rProp(no walk)
 Denote that this port and its children must always be skipped from port-walking if a runtime is being given.
#define rDoc(doc)
#define rOpt(numeric, symbolic)
#define rOptions(...)
#define rShort(name)
#define rBOIL_BEGIN
#define rBOIL_END   }
#define rLIMIT(var, convert)
#define rTYPE(n)
#define rCAPPLY(getcode, t, setcode)
#define rAPPLY(n, t)
#define rParamCb(name)
#define rParamFCb(name)
#define rParamICb(name)
#define rCOptionCb_(getcode, setcode)
#define rOptionCb_(name)
#define rOptionCb(name)
#define rCOptionCb(getcode, setcode)
#define rToggleCb(name)
#define SNIP
#define rRecurCb(name)
#define rRecurPtrCb(name)
#define rRecurpCb(name)
#define rRecursCb(name, length)
#define rRecurspCb(name)
#define rActionCb(name)
#define rActioniCb(name)
#define rBOILS_BEGIN
#define rBOILS_END   rBOIL_END
#define rArrayCb(name)
#define rArrayFCb(name)
#define rArrayTCb(name)
#define rArrayTCbMember(name, member)
#define rArrayICb(name)
#define rArrayOptionCb(name)
#define rParamsCb(name, length)
#define rStringCb(name, length)

Functions

template<class T>
constexprspice (T *t)

Macro Definition Documentation

◆ DOC

#define DOC ( ...)
Value:
DOC_I(LAST_IMP(__VA_ARGS__), __VA_ARGS__)
#define DOC_I(count,...)
Definition port-sugar.h:64
#define LAST_IMP(...)
Definition port-sugar.h:52

◆ DOC_I

#define DOC_I ( count,
... )
Value:
DOC_IMP(count,__VA_ARGS__)
#define DOC_IMP(count,...)
Definition port-sugar.h:63
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263

◆ DOC_IMP

#define DOC_IMP ( count,
... )
Value:
DOC_IMP ##count(__VA_ARGS__)

◆ DOC_IMP0

#define DOC_IMP0 ( )
Value:
YOU_MUST_DOCUMENT_YOUR_PORTS

◆ DOC_IMP1

#define DOC_IMP1 ( a)
Value:
uint8_t a
Definition Spc_Cpu.h:141
#define rDoc(doc)
Definition port-sugar.h:278

◆ DOC_IMP2

#define DOC_IMP2 ( a,
b )
Value:
b
Definition crypt.c:628

◆ DOC_IMP3

#define DOC_IMP3 ( a,
b,
c )
Value:
return c
Definition crypt.c:175

◆ DOC_IMP4

#define DOC_IMP4 ( a,
b,
c,
d )
Value:
unsigned d
Definition inflate.c:940

◆ DOC_IMP5

#define DOC_IMP5 ( a,
b,
c,
d,
e )
Value:
a b c d rDoc(e)
* e
Definition inflate.c:1404

◆ DOC_IMP6

#define DOC_IMP6 ( a,
b,
c,
d,
e,
f )
Value:
a b c d e rDoc(f)
unsigned f
Definition inflate.c:1572

◆ DOC_IMP7

#define DOC_IMP7 ( a,
b,
c,
d,
e,
f,
g )
Value:
a b c d e f rDoc(g)
int g
Definition inflate.c:1573

◆ DOC_IMP8

#define DOC_IMP8 ( a,
b,
c,
d,
e,
f,
g,
h )
Value:
a b c d e f g rDoc(h)
uch h[RAND_HEAD_LEN]
Definition crypt.c:459

◆ DOC_IMP9

#define DOC_IMP9 ( a,
b,
c,
d,
e,
f,
g,
h,
i )
Value:
a b c d e f g h rDoc(i)
register unsigned i
Definition inflate.c:1575

◆ IMPL

#define IMPL ( _1,
_2,
_3,
_4,
_5,
_6,
_7,
_8,
_9,
_10,
_11,
_12,
_13,
_14,
_15,
_16,
N,
... )
Value:
#define N
Definition nseel-cfunc.c:36

◆ LAST_IMP

#define LAST_IMP ( ...)
Value:
IMPL(__VA_ARGS__,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0)
#define IMPL(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, N,...)
Definition port-sugar.h:51

◆ MAC_EACH

#define MAC_EACH ( mac,
... )
Value:
MAC_EACH_OFF(0, mac, __VA_ARGS__)
#define MAC_EACH_OFF(off, mac,...)
Definition port-sugar.h:110

◆ MAC_EACH_0

#define MAC_EACH_0 ( o,
m,
x,
... )
Value:
INSUFFICIENT_ARGUMENTS_PROVIDED_TO_MAC_EACH

◆ MAC_EACH_1

#define MAC_EACH_1 ( o,
m,
x,
... )
Value:
m(o, x)
unsigned * m
Definition inflate.c:1559
unsigned x[BMAX+1]
Definition inflate.c:1586

◆ MAC_EACH_10

#define MAC_EACH_10 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_9(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_9(o, m, x,...)
Definition port-sugar.h:97
#define rINC(x)
Definition port-sugar.h:68

◆ MAC_EACH_11

#define MAC_EACH_11 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_10(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_10(o, m, x,...)
Definition port-sugar.h:98

◆ MAC_EACH_12

#define MAC_EACH_12 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_11(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_11(o, m, x,...)
Definition port-sugar.h:99

◆ MAC_EACH_13

#define MAC_EACH_13 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_12(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_12(o, m, x,...)
Definition port-sugar.h:100

◆ MAC_EACH_14

#define MAC_EACH_14 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_13(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_13(o, m, x,...)
Definition port-sugar.h:101

◆ MAC_EACH_15

#define MAC_EACH_15 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_14(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_14(o, m, x,...)
Definition port-sugar.h:102

◆ MAC_EACH_16

#define MAC_EACH_16 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_15(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_15(o, m, x,...)
Definition port-sugar.h:103

◆ MAC_EACH_2

#define MAC_EACH_2 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_1(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_1(o, m, x,...)
Definition port-sugar.h:89

◆ MAC_EACH_3

#define MAC_EACH_3 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_2(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_2(o, m, x,...)
Definition port-sugar.h:90

◆ MAC_EACH_4

#define MAC_EACH_4 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_3(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_3(o, m, x,...)
Definition port-sugar.h:91

◆ MAC_EACH_5

#define MAC_EACH_5 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_4(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_4(o, m, x,...)
Definition port-sugar.h:92

◆ MAC_EACH_6

#define MAC_EACH_6 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_5(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_5(o, m, x,...)
Definition port-sugar.h:93

◆ MAC_EACH_7

#define MAC_EACH_7 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_6(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_6(o, m, x,...)
Definition port-sugar.h:94

◆ MAC_EACH_8

#define MAC_EACH_8 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_7(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_7(o, m, x,...)
Definition port-sugar.h:95

◆ MAC_EACH_9

#define MAC_EACH_9 ( o,
m,
x,
... )
Value:
m(o, x) MAC_EACH_8(rINC(o), m, __VA_ARGS__)
#define MAC_EACH_8(o, m, x,...)
Definition port-sugar.h:96

◆ MAC_EACH_I

#define MAC_EACH_I ( off,
mac,
count,
... )
Value:
MAC_EACH_IMP(off, mac, count, __VA_ARGS__)
#define MAC_EACH_IMP(off, mac, count,...)
Definition port-sugar.h:106

◆ MAC_EACH_IMP

#define MAC_EACH_IMP ( off,
mac,
count,
... )
Value:
MAC_EACH_ ##count(off, mac,__VA_ARGS__)

◆ MAC_EACH_OFF

#define MAC_EACH_OFF ( off,
mac,
... )
Value:
MAC_EACH_I(off, mac, LAST_IMP(__VA_ARGS__), __VA_ARGS__)
#define MAC_EACH_I(off, mac, count,...)
Definition port-sugar.h:108

◆ OPTIONS

#define OPTIONS ( ...)
Value:
OPTIONS_I(LAST_IMP(__VA_ARGS__), __VA_ARGS__)
#define OPTIONS_I(count,...)
Definition port-sugar.h:160

◆ OPTIONS_I

#define OPTIONS_I ( count,
... )
Value:
OPTIONS_IMP(count, __VA_ARGS__)
#define OPTIONS_IMP(count,...)
Definition port-sugar.h:159

◆ OPTIONS_IMP

#define OPTIONS_IMP ( count,
... )
Value:
OPTIONS_IMP ##count(__VA_ARGS__)

◆ OPTIONS_IMP0

#define OPTIONS_IMP0 ( )
Value:
YOU_MUST_PROVIDE_OPTIONS

◆ OPTIONS_IMP1

#define OPTIONS_IMP1 ( a)
Value:
rOpt(0,a)
#define rOpt(numeric, symbolic)
Definition port-sugar.h:279

◆ OPTIONS_IMP10

#define OPTIONS_IMP10 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j)
register unsigned j
Definition inflate.c:1576

◆ OPTIONS_IMP11

#define OPTIONS_IMP11 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j) rOpt(10,k)
register unsigned k
Definition inflate.c:946

◆ OPTIONS_IMP12

#define OPTIONS_IMP12 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j) rOpt(10,k)rOpt(11,l)
int * l
Definition inflate.c:1579

◆ OPTIONS_IMP13

#define OPTIONS_IMP13 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l,
m )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j) rOpt(10,k)rOpt(11,l)rOpt(12,m)

◆ OPTIONS_IMP14

#define OPTIONS_IMP14 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l,
m,
n )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j) rOpt(10,k)rOpt(11,l)rOpt(12,m)rOpt(13,n)
int n
Definition crypt.c:458

◆ OPTIONS_IMP15

#define OPTIONS_IMP15 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l,
m,
n,
o )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j) rOpt(10,k)rOpt(11,l)rOpt(12,m)rOpt(13,n)\
rOpt(14,o)

◆ OPTIONS_IMP16

#define OPTIONS_IMP16 ( a,
b,
c,
d,
e,
f,
g,
h,
i,
j,
k,
l,
m,
n,
o,
p )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i) rOpt(9,j) rOpt(10,k)rOpt(11,l)rOpt(12,m)rOpt(13,n)\
rOpt(14,o)rOpt(15,p)
uch * p
Definition crypt.c:594

◆ OPTIONS_IMP2

#define OPTIONS_IMP2 ( a,
b )
Value:
rOpt(0,a) rOpt(1,b)

◆ OPTIONS_IMP3

#define OPTIONS_IMP3 ( a,
b,
c )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c)

◆ OPTIONS_IMP4

#define OPTIONS_IMP4 ( a,
b,
c,
d )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d)

◆ OPTIONS_IMP5

#define OPTIONS_IMP5 ( a,
b,
c,
d,
e )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e)

◆ OPTIONS_IMP6

#define OPTIONS_IMP6 ( a,
b,
c,
d,
e,
f )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f)

◆ OPTIONS_IMP7

#define OPTIONS_IMP7 ( a,
b,
c,
d,
e,
f,
g )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g)

◆ OPTIONS_IMP8

#define OPTIONS_IMP8 ( a,
b,
c,
d,
e,
f,
g,
h )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h)

◆ OPTIONS_IMP9

#define OPTIONS_IMP9 ( a,
b,
c,
d,
e,
f,
g,
h,
i )
Value:
rOpt(0,a) rOpt(1,b) rOpt(2,c) rOpt(3,d) rOpt(4,e) rOpt(5,f) rOpt(6,g) \
rOpt(7,h) rOpt(8,i)

◆ rAction

#define rAction ( name,
... )
Value:
{STRINGIFY(name) ":", DOC(__VA_ARGS__), NULL, rActionCb(name)}
#define NULL
Definition CarlaBridgeFormat.cpp:30
static const char * name
Definition pugl.h:1582
#define DOC(...)
Definition port-sugar.h:65
#define STRINGIFY(a)
Definition port-sugar.h:48
#define rActionCb(name)
Definition port-sugar.h:421

◆ rActionCb

#define rActionCb ( name)
Value:
rBOIL_BEGIN obj->name(); rBOIL_END
#define rBOIL_END
Definition port-sugar.h:294
#define rBOIL_BEGIN
Definition port-sugar.h:287

◆ rActioni

#define rActioni ( name,
... )
Value:
{STRINGIFY(name) ":i", DOC(__VA_ARGS__), NULL, rActioniCb(name)}
#define rActioniCb(name)
Definition port-sugar.h:422

◆ rActioniCb

#define rActioniCb ( name)
Value:
rBOIL_BEGIN \
obj->name(rtosc_argument(msg,0).i); rBOIL_END
const char * msg
Definition missing_descriptor.c:20
rtosc_arg_t rtosc_argument(const char *msg, unsigned idx)
Definition rtosc.c:732

◆ rAPPLY

#define rAPPLY ( n,
t )
Value:
rCAPPLY(obj->n, t, obj->n = var)
struct huft * t
Definition inflate.c:943
#define rCAPPLY(getcode, t, setcode)
Definition port-sugar.h:305

◆ rArray

#define rArray ( name,
length,
... )
Value:
{STRINGIFY(name) "#" STRINGIFY(length) "::c:i", rProp(parameter) DOC(__VA_ARGS__), NULL, rArrayCb(name)}
png_uint_32 length
Definition png.c:2247
#define rArrayCb(name)
Definition port-sugar.h:435
#define rProp(name)
Definition port-sugar.h:252

◆ rArrayCb

#define rArrayCb ( name)
Value:
rBOILS_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "c", obj->name[idx]); \
} else { \
char var = rtosc_argument(msg, 0).i; \
rLIMIT(var, atoi) \
rAPPLY(name[idx], c) \
data.broadcast(loc, "c", obj->name[idx]);\
JSAMPIMAGE data
Definition jpeglib.h:945
#define rBOILS_END
Definition port-sugar.h:432
int32_t i
Definition rtosc.h:47
#define rChangeCb
Definition zynaddsubfx-src.cpp:96

◆ rArrayF

#define rArrayF ( name,
length,
... )
Value:
{STRINGIFY(name) "#" STRINGIFY(length) "::f", rProp(parameter) DOC(__VA_ARGS__), NULL, rArrayFCb(name)}
#define rArrayFCb(name)
Definition port-sugar.h:446

◆ rArrayFCb

#define rArrayFCb ( name)
Value:
rBOILS_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "f", obj->name[idx]); \
} else { \
float var = rtosc_argument(msg, 0).f; \
rLIMIT(var, atof) \
rAPPLY(name[idx], f) \
data.broadcast(loc, "f", obj->name[idx]);\
float f
Definition rtosc.h:49

◆ rArrayI

#define rArrayI ( name,
length,
... )
Value:
{STRINGIFY(name) "#" STRINGIFY(length) "::i", rProp(parameter) DOC(__VA_ARGS__), NULL, rArrayICb(name)}
#define rArrayICb(name)
Definition port-sugar.h:479

◆ rArrayICb

#define rArrayICb ( name)
Value:
rBOILS_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "i", obj->name[idx]); \
} else { \
char var = rtosc_argument(msg, 0).i; \
rLIMIT(var, atoi) \
rAPPLY(name[idx], i) \
data.broadcast(loc, "i", obj->name[idx]);\

◆ rArrayOption

#define rArrayOption ( name,
length,
... )
Value:
{STRINGIFY(name) "#" STRINGIFY(length) "::i:c:S", rProp(parameter) DOC(__VA_ARGS__), NULL, rArrayOptionCb(name)}
#define rArrayOptionCb(name)
Definition port-sugar.h:491

◆ rArrayOptionCb

#define rArrayOptionCb ( name)
Value:
rBOILS_BEGIN \
rOptionCb_(name[idx]) \

◆ rArrayT

#define rArrayT ( name,
length,
... )
Value:
{STRINGIFY(name) "#" STRINGIFY(length) "::T:F", rProp(parameter) DOC(__VA_ARGS__), NULL, rArrayTCb(name)}
#define rArrayTCb(name)
Definition port-sugar.h:456

◆ rArrayTCb

#define rArrayTCb ( name)
Value:
rBOILS_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, obj->name[idx] ? "T" : "F"); \
} else { \
if(obj->name[idx] != rtosc_argument(msg, 0).T) { \
data.broadcast(loc, args);\
} \
obj->name[idx] = rtosc_argument(msg, 0).T; \
char T
Definition rtosc.h:48

◆ rArrayTCbMember

#define rArrayTCbMember ( name,
member )
Value:
rBOILS_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, obj->name[idx].member ? "T" : "F"); \
} else { \
if(obj->name[idx].member != rtosc_argument(msg, 0).T) { \
data.broadcast(loc, args);\
} \
obj->name[idx].member = rtosc_argument(msg, 0).T; \

◆ rBOIL_BEGIN

#define rBOIL_BEGIN
Value:
[](const char *msg, rtosc::RtData &data) { \
(void) msg; (void) data; \
rObject *obj = (rObject*) data.obj;(void) obj; \
const char *args = rtosc_argument_string(msg); (void) args;\
const char *loc = data.loc; (void) loc;\
auto prop = data.port->meta(); (void) prop;
#define rObject
Definition Alienwah.cpp:24
const char * rtosc_argument_string(const char *msg)
Definition rtosc.c:11
data object for the dispatch routine
Definition ports.h:55
#define void
Definition unzip.h:396

◆ rBOIL_END

#define rBOIL_END   }

◆ rBOILS_BEGIN

#define rBOILS_BEGIN
Value:
rBOIL_BEGIN \
const char *mm = msg; \
while(*mm && !isdigit(*mm)) ++mm; \
unsigned idx = atoi(mm);
mm
Definition zipinfo.c:2291

◆ rBOILS_END

#define rBOILS_END   rBOIL_END

◆ rCAPPLY

#define rCAPPLY ( getcode,
t,
setcode )
Value:
if(getcode != var) data.reply("undo_change", "s" #t #t, data.loc, getcode, var); setcode;

◆ rCentered

#define rCentered   ":centered\0"

◆ rChangeCb

#define rChangeCb

◆ rCOptionCb

#define rCOptionCb ( getcode,
setcode )
Value:
rBOIL_BEGIN \
rCOptionCb_(getcode, setcode) \

◆ rCOptionCb_

#define rCOptionCb_ ( getcode,
setcode )
Value:
{ \
if(!strcmp("", args)) {\
data.reply(loc, "i", getcode); \
} else if(!strcmp("s", args) || !strcmp("S", args)) { \
auto var = \
enum_key(prop, rtosc_argument(msg, 0).s); \
/* make sure we have no out-of-bound options */ \
assert(!prop["min"] || \
var >= atoi(prop["min"])); \
assert(!prop["max"] || \
var <= atoi(prop["max"])); \
rCAPPLY(getcode, i, setcode) \
data.broadcast(loc, "i", getcode); \
} else {\
auto var = \
rtosc_argument(msg, 0).i; \
rLIMIT(var, atoi) \
rCAPPLY(getcode, i, setcode) \
data.broadcast(loc, rtosc_argument_string(msg), getcode);\
} \
}
unsigned s
Definition inflate.c:1555

◆ rDefault

#define rDefault ( default_value_)
Value:
rMap(default, default_value_)
#define rMap(name, value)
Definition port-sugar.h:251

◆ rDefaultDepends

#define rDefaultDepends ( dep_path_)
Value:
rMap(default depends, dep_path_)

◆ rDefaultId

#define rDefaultId ( default_value_)
Value:
":default\0=\"" STRINGIFY(default_value_) "\"S\0"

◆ rDefaultMissing

#define rDefaultMissing   ""

◆ rDoc

#define rDoc ( doc)
Value:
":documentation\0=" doc "\0"

◆ rDummy

#define rDummy ( name,
... )
Value:
{STRINGIFY(name), rProp(dummy), NULL, [](msg_t, rtosc::RtData &){}}

◆ rEnabledBy

#define rEnabledBy ( portname)
Value:
rMap(enabled by, portname)

◆ rEnabledByCondition

#define rEnabledByCondition ( cond_name)
Value:
rEnabledBy(cond_name)
#define rEnabledBy(portname)
Definition port-sugar.h:231

◆ rEnabledCondition

#define rEnabledCondition ( cond_name,
condition )
Value:
{STRINGIFY(cond_name) ":", rProp(internal), NULL, rEnabledIfCb(condition)}
#define rEnabledIfCb(condition)
Definition port-sugar.h:235

◆ rEnabledIfCb

#define rEnabledIfCb ( condition)
Value:
rBOIL_BEGIN \
assert(!rtosc_narguments(msg)); \
data.reply(loc, (condition)?"T":"F"); \
unsigned rtosc_narguments(const char *msg)
Definition rtosc.c:19

◆ rINC

#define rINC ( x)
Value:
rINC_ ## x

◆ rINC_0

#define rINC_0   1

◆ rINC_1

#define rINC_1   2

◆ rINC_10

#define rINC_10   11

◆ rINC_11

#define rINC_11   12

◆ rINC_12

#define rINC_12   13

◆ rINC_13

#define rINC_13   14

◆ rINC_14

#define rINC_14   15

◆ rINC_15

#define rINC_15   16

◆ rINC_2

#define rINC_2   3

◆ rINC_3

#define rINC_3   4

◆ rINC_4

#define rINC_4   5

◆ rINC_5

#define rINC_5   6

◆ rINC_6

#define rINC_6   7

◆ rINC_7

#define rINC_7   8

◆ rINC_8

#define rINC_8   9

◆ rINC_9

#define rINC_9   10

◆ rLIMIT

#define rLIMIT ( var,
convert )
Value:
if(prop["min"] && var < (decltype(var)) convert(prop["min"])) \
var = convert(prop["min"]);\
if(prop["max"] && var > (decltype(var)) convert(prop["max"])) \
var = convert(prop["max"]);

◆ rLinear

#define rLinear ( min_,
max_ )
Value:
rMap(min, min_) rMap(max, max_) rMap(scale, linear)
#define min(x, y)
Definition os.h:74
#define max(x, y)
Definition os.h:78

◆ rLog

#define rLog ( min_,
max_ )
Value:
rMap(min, min_) rMap(max, max_) rMap(scale, logarithmic)

◆ rMap

#define rMap ( name,
value )
Value:
":" STRINGIFY(name) "\0=" STRINGIFY(value) "\0"
static PuglViewHint int value
Definition pugl.h:1708

◆ rNoWalk

#define rNoWalk   rProp(no walk)

Denote that this port and its children must always be skipped from port-walking if a runtime is being given.

◆ rOpt

#define rOpt ( numeric,
symbolic )
Value:
rMap(map numeric, symbolic)

◆ rOption

#define rOption ( name,
... )
Value:
{STRINGIFY(name) "::i:c:S",rProp(parameter) rProp(enumerated) DOC(__VA_ARGS__), NULL, rOptionCb(name)}
#define rOptionCb(name)
Definition port-sugar.h:367

◆ rOptionCb

#define rOptionCb ( name)
Value:
rBOIL_BEGIN \
rOptionCb_(name) \

◆ rOptionCb_

#define rOptionCb_ ( name)
Value:
rCOptionCb_(obj->name, obj->name = var)
#define rCOptionCb_(getcode, setcode)
Definition port-sugar.h:341

◆ rOptions

#define rOptions ( ...)
Value:
OPTIONS(__VA_ARGS__)
#define OPTIONS(...)
Definition port-sugar.h:161

◆ rParam

#define rParam ( name,
... )
Value:
{STRINGIFY(name) "::c", rProp(parameter) rMap(min, 0) rMap(max, 127) DOC(__VA_ARGS__), NULL, rParamCb(name)}
#define rParamCb(name)
Definition port-sugar.h:308

◆ rParamCb

#define rParamCb ( name)
Value:
rBOIL_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "c", obj->name); \
} else { \
rTYPE(name) var = rtosc_argument(msg, 0).i; \
rLIMIT(var, atoi) \
rAPPLY(name, c) \
data.broadcast(loc, "c", obj->name);\

◆ rParamF

#define rParamF ( name,
... )
Value:
{STRINGIFY(name) "::f", rProp(parameter) DOC(__VA_ARGS__), NULL, rParamFCb(name)}
#define rParamFCb(name)
Definition port-sugar.h:319

◆ rParamFCb

#define rParamFCb ( name)
Value:
rBOIL_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "f", obj->name); \
} else { \
rTYPE(name) var = rtosc_argument(msg, 0).f; \
rLIMIT(var, atof) \
rAPPLY(name, f) \
data.broadcast(loc, "f", obj->name);\

◆ rParamI

#define rParamI ( name,
... )
Value:
{STRINGIFY(name) "::i", rProp(parameter) DOC(__VA_ARGS__), NULL, rParamICb(name)}
#define rParamICb(name)
Definition port-sugar.h:330

◆ rParamICb

#define rParamICb ( name)
Value:
rBOIL_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "i", obj->name); \
} else { \
rTYPE(name) var = rtosc_argument(msg, 0).i; \
rLIMIT(var, atoi) \
rAPPLY(name, i) \
data.broadcast(loc, "i", obj->name);\

◆ rParams

#define rParams ( name,
length,
... )
Value:
rArray(name, length, __VA_ARGS__), \
{STRINGIFY(name) ":", rProp(alias) rDoc("get all data from aliased array"), NULL, rParamsCb(name, length)}
#define rParamsCb(name, length)
Definition port-sugar.h:495
#define rArray(name, length,...)
Definition port-sugar.h:182

◆ rParamsCb

#define rParamsCb ( name,
length )
Value:
rBOIL_BEGIN \
data.reply(loc, "b", length, obj->name); rBOIL_END

◆ rPreset

#define rPreset ( no,
default_value )
Value:
":default " STRINGIFY(no) "\0=" STRINGIFY(default_value) "\0"

◆ rPresets

#define rPresets ( ...)
Value:
rPresetsAt(0, __VA_ARGS__)
#define rPresetsAt(offs,...)
Definition port-sugar.h:268

◆ rPresetsAt

#define rPresetsAt ( offs,
... )
Value:
MAC_EACH_OFF(offs, rPreset, __VA_ARGS__)
#define rPreset(no, default_value)
Definition port-sugar.h:266

◆ rProp

#define rProp ( name)
Value:
":" STRINGIFY(name) "\0"

◆ rRecur

#define rRecur ( name,
... )
Value:
{STRINGIFY(name) "/", DOC(__VA_ARGS__), &decltype(rObject::name)::ports, rRecurCb(name)}, \
{STRINGIFY(name) ":", rProp(internal) rDoc("get obj pointer"), NULL, rRecurPtrCb(name)}
#define rRecurCb(name)
Definition port-sugar.h:391
#define rRecurPtrCb(name)
Definition port-sugar.h:397

◆ rRecurCb

#define rRecurCb ( name)
Value:
rBOIL_BEGIN \
data.obj = &obj->name; \
SNIP \
decltype(obj->name)::ports.dispatch(msg, data); \

◆ rRecurp

#define rRecurp ( name,
... )
Value:
{STRINGIFY(name) "/", DOC(__VA_ARGS__), \
&decltype(spice(rObject::name))::ports, \
constexpr T spice(T *t)
Definition port-sugar.h:205
#define rRecurpCb(name)
Definition port-sugar.h:402

◆ rRecurpCb

#define rRecurpCb ( name)
Value:
rBOIL_BEGIN \
data.obj = obj->name; \
if(obj->name == NULL) return; \
SNIP \
decltype(spice(rObject::name))::ports.dispatch(msg, data); \

◆ rRecurPtrCb

#define rRecurPtrCb ( name)
Value:
rBOIL_BEGIN \
void *ptr = &obj->name; \
data.reply(loc, "b", sizeof(void*), &ptr); \

◆ rRecurs

#define rRecurs ( name,
length,
... )
Value:
{STRINGIFY(name) "#" STRINGIFY(length)"/", DOC(__VA_ARGS__), \
&decltype(spice(&rObject::name[0]))::ports, \
#define rRecursCb(name, length)
Definition port-sugar.h:409

◆ rRecursCb

#define rRecursCb ( name,
length )
Value:
rBOILS_BEGIN \
data.obj = &obj->name[idx]; \
SNIP \
decltype(spice(rObject::name))::ports.dispatch(msg, data); \

◆ rRecursp

#define rRecursp ( name,
length,
... )
Value:
{STRINGIFY(name)"#" STRINGIFY(length) "/", DOC(__VA_ARGS__), \
&decltype(spice(rObject::name[0]))::ports, \
#define rRecurspCb(name)
Definition port-sugar.h:415

◆ rRecurspCb

#define rRecurspCb ( name)
Value:
rBOILS_BEGIN \
data.obj = obj->name[idx]; \
SNIP \
decltype(spice(rObject::name[0]))::ports.dispatch(msg, data); \

◆ rSelf

#define rSelf ( type,
... )
Value:
{"self:", rProp(internal) rMap(class, type) __VA_ARGS__ rDoc("port metadata"), 0, \
[](const char *, rtosc::RtData &d){ \
d.reply(d.loc, "b", sizeof(d.obj), &d.obj);}}\
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93

◆ rShort

#define rShort ( name)
Value:
":shortname\0=" name "\0"

◆ rSpecial

#define rSpecial ( doc)
Value:
":special\0" STRINGIFY(doc) "\0"

◆ rString

#define rString ( name,
len,
... )
Value:
{STRINGIFY(name) "::s", rMap(length, len) rProp(parameter) DOC(__VA_ARGS__), NULL, rStringCb(name,len)}
#define rStringCb(name, length)
Definition port-sugar.h:498

◆ rStringCb

#define rStringCb ( name,
length )
Value:
rBOIL_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, "s", obj->name); \
} else { \
strncpy(obj->name, rtosc_argument(msg, 0).s, length-1); \
obj->name[length-1] = '\0'; \
data.broadcast(loc, "s", obj->name);\

◆ rToggle

#define rToggle ( name,
... )
Value:
{STRINGIFY(name) "::T:F",rProp(parameter) DOC(__VA_ARGS__), NULL, rToggleCb(name)}
#define rToggleCb(name)
Definition port-sugar.h:376

◆ rToggleCb

#define rToggleCb ( name)
Value:
rBOIL_BEGIN \
if(!strcmp("", args)) {\
data.reply(loc, obj->name ? "T" : "F"); \
} else { \
if(obj->name != rtosc_argument(msg, 0).T) { \
data.broadcast(loc, args);\
obj->name = rtosc_argument(msg, 0).T; \
} \

◆ rTYPE

#define rTYPE ( n)
Value:
decltype(obj->n)

◆ SNIP

#define SNIP
Value:
while(*msg && *msg!='/') ++msg; \
msg = *msg ? msg+1 : msg;

◆ STRINGIFY

#define STRINGIFY ( a)
Value:
#define STRINGIFY2(a)
Definition port-sugar.h:47

◆ STRINGIFY2

#define STRINGIFY2 ( a)
Value:
#a

Function Documentation

◆ spice()

template<class T>
T spice ( T * t)
constexpr