45#define OSE_CONTEXT_ALIGNMENT 4
58#ifdef OSE_CONF_CONTEXT_CACHE_SIZE
59#define OSE_CONTEXT_CACHE_SIZE OSE_CONF_CONTEXT_CACHE_SIZE
61#define OSE_CONTEXT_CACHE_SIZE 64
63#define OSE_CONTEXT_NUM_CACHE_ITEMS 3
64#define OSE_CONTEXT_CACHE_TYPETAG_STRLEN 8
66#define OSE_CONTEXT_BUNDLE_SIZE_OFFSET -4
67#define OSE_CONTEXT_TOTAL_SIZE_OFFSET -8
68#define OSE_CONTEXT_PARENT_BUNDLE_OFFSET_OFFSET -12
69#define OSE_CONTEXT_STATUS_OFFSET -16
70#define OSE_CONTEXT_MEMUSAGE_OFFSET -20
71#define OSE_CONTEXT_CHANGED_OFFSET -24
84#define OSE_CONTEXT_FLAGS_OFFSET -28
85#define OSE_CONTEXT_CACHE_OFFSET -(36 + OSE_CONTEXT_CACHE_SIZE)
87void ose_context_set_status(
ose_bundle b, int32_t s);
112void ose_context_cache_setGetFirstOffsetForMatchFn(
ose_bundle B,
125int32_t ose_context_getFirstOffsetForMatch(
ose_bundle B,
126 const char *
const address);
127ose_bundle ose_getTypeBundle(ose_constbundle bundle);
133#define ose_get_memusage(b) do{}while(0)
134#define ose_reset_memusage(b) do{}while(0)
162#define OSE_CONTEXT_MESSAGE_TYPETAGS ",bbiiiiiibb"
167#define OSE_CONTEXT_MESSAGE_TYPETAGS_PLEN 12
169#define OSE_CONTEXT_BUNDLE_OFFSET \
173 + 4 + OSE_CONTEXT_CACHE_SIZE \
186int32_t ose_readSize(ose_constbundle bundle);
194#define OSE_CONTEXT_MESSAGE_OVERHEAD \
195 (OSE_CONTEXT_BUNDLE_OFFSET \
196 + OSE_BUNDLE_HEADER_LEN \
205#define OSE_CONTEXT_STATUS_MESSAGE_SIZE 16
213#define OSE_CONTEXT_TYPE_MESSAGE_SIZE 1024
221#define OSE_CONTEXT_MAX_OVERHEAD \
222 ((OSE_CONTEXT_ALIGNMENT) \
223 + OSE_BUNDLE_HEADER_LEN \
224 + OSE_CONTEXT_MESSAGE_OVERHEAD \
225 + OSE_CONTEXT_STATUS_MESSAGE_SIZE \
226 + OSE_CONTEXT_MESSAGE_OVERHEAD \
227 + OSE_CONTEXT_MESSAGE_OVERHEAD \
228 + OSE_CONTEXT_TYPE_MESSAGE_SIZE)
244 const char *
const address);
261 const char *
const address);
262void ose_dropContextMessage(
ose_bundle bundle);
299 const char *
const address);
332 const char *
const address);
376int ose_incSize(
ose_bundle bundle, int32_t amt);
377int ose_decSize(
ose_bundle bundle, int32_t amt);
525#define ose_copyElem(src, dest) \
526 ose_copyElemAtOffset(ose_getLastBundleElemOffset(src), \
528#define ose_moveElem(src, dest) \
530 int32_t o = ose_getLastBundleElemOffset(src); \
531 ose_copyElemAtOffset(o, src, dest); \
532 ose_dropAtOffset(src, o); \
538int32_t ose_routeElemAtOffset(int32_t srcoffset,
572#define OSE_REGISTER_ADDRESS_LEN 3
612 const char *
const address,
633#if !defined(OSE_CONF_DEBUG) && !defined(OSE_INLINE_ACCESSORS_OFF)
634static inline int32_t ose_readSize_inline(ose_constbundle b)
635{
return ose_ntohl(*((
const int32_t *)(ose_getBundlePtr(b) + OSE_CONTEXT_BUNDLE_SIZE_OFFSET))); }
636#define ose_readSize(b) ose_readSize_inline(b)
provides global definitions and types
void ose_copyBundle(ose_bundle src, ose_bundle dest)
Copy the topmost bundle element to a destination at the same level.
Definition ose_context.c:951
int32_t ose_spaceAvailable(ose_bundle bundle)
Returns the number of unused bytes in the bundle.
Definition ose_context.c:627
void ose_appendBundle(ose_bundle src, ose_bundle dest)
Append the contents of the topmost element of src to dest. Equivalent to.
Definition ose_context.c:1043
int32_t ose_init(ose_bundle bundle, int32_t size, const char *const address)
Initializes a newly created bundle with a context message.
Definition ose_context.c:396
void ose_replaceBundle(ose_bundle src, ose_bundle dest)
Replace the contents of dest with those of the topmost element of src. Equivalent to.
Definition ose_context.c:1118
ose_bundle ose_exit(ose_bundle bundle)
Exit a bundle context and move one level up.
Definition ose_context.c:712
int32_t ose_addressToRegister(ose_bundle osevm, const char *const address, ose_bundle *reg, const char **rest)
Split an address into a register and the rest of the address.
Definition ose_context.c:565
ose_bundle ose_enterBundleAtOffset(ose_bundle bundle, int32_t offset)
Enter a new bundle context.
Definition ose_context.c:674
void ose_context_set_flags(ose_bundle b, int32_t flags)
Read and write the flags word of a context message.
Definition ose_context.c:125
int32_t ose_getContextMessageOffset(ose_bundle bundle, const char *const address)
Returns the offset of the context message for a given address.
Definition ose_context.c:642
int32_t ose_pushContextMessage(ose_bundle bundle, int32_t size, const char *const address)
Pushes a new context message onto the current bundle.
Definition ose_context.c:467
uint32_t ose_context_generation
Make a new context bundle (a register) inside bundle.
Definition ose_context.c:465
int ose_addToSize(ose_bundle bundle, int32_t amt)
Add an amount to the size of a bundle. This function takes care of adjusting the size of the blob of ...
Definition ose_context.c:736
void ose_copyElemAtOffset(int32_t srcoffset, ose_bundle src, ose_bundle dest)
Append the element at srcoffset in src to dest.
Definition ose_context.c:901
ose_bundle ose_enter(ose_bundle bundle, const char *const address)
Enter a new bundle context.
Definition ose_context.c:687
ose_bundle ose_newBundleFromCBytes(int32_t nbytes, char *bytes)
Initialize a new bundle from an array of bytes.
Definition ose_context.c:1147
#define B(...)
Instantiate a top-level OSC bundle.
Definition ose_test_ctosc.h:339