Welcome to mirror list, hosted at ThFree Co, Russian Federation.

verse.h « dist « verse « extern - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 53ce674725a99b3956e8982780edb24e1c48303c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
/*
** Verse API Header file (for use with libverse.a).
** This is automatically generated code; do not edit.
*/


#if !defined VERSE_H

#if defined __cplusplus		/* Declare as C symbols for C++ users. */
extern "C" {
#endif

#define	VERSE_H

#if !defined VERSE_TYPES
#define	VERSE_TYPES

#include <stdlib.h>

/* Release information. */
#define	V_RELEASE_NUMBER	6
#define	V_RELEASE_PATCH		1
#define	V_RELEASE_LABEL		""

typedef unsigned char	boolean;
typedef signed char	int8;
typedef unsigned char	uint8;
typedef short		int16;
typedef unsigned short	uint16;
typedef int		int32;
typedef unsigned int	uint32;
typedef float		real32;
typedef double		real64;

#define V_REAL64_MAX         1.7976931348623158e+308
#define V_REAL32_MAX         3.402823466e+38f

#if !defined TRUE
#define TRUE  1
#define FALSE 0
#endif

#define V_HOST_ID_SIZE	(3 * (512 / 8))		/* The size of host IDs (keys), in 8-bit bytes. */

typedef enum {
	V_NT_OBJECT = 0, 
	V_NT_GEOMETRY, 
	V_NT_MATERIAL, 
	V_NT_BITMAP, 
	V_NT_TEXT, 
	V_NT_CURVE, 
	V_NT_AUDIO, 
	V_NT_NUM_TYPES, 
	V_NT_SYSTEM = V_NT_NUM_TYPES, 
	V_NT_NUM_TYPES_NETPACK
} VNodeType;

typedef uint32		VNodeID;
typedef uint16		VLayerID;		/* Commonly used to identify layers, nodes that have them. */
typedef uint16		VBufferID;		/* Commonly used to identify buffers, nodes that have them. */
typedef uint16		VNMFragmentID;

typedef void *		VSession;

#define V_MAX_NAME_LENGTH_SHORT 16
#define V_MAX_NAME_LENGTH_LONG 48
#define V_MAX_NAME_PASS_LENGTH 128

typedef enum {
	VN_OWNER_OTHER = 0,
	VN_OWNER_MINE
} VNodeOwner;

typedef enum {
	VN_O_METHOD_PTYPE_INT8 = 0,
	VN_O_METHOD_PTYPE_INT16,
	VN_O_METHOD_PTYPE_INT32,

	VN_O_METHOD_PTYPE_UINT8,
	VN_O_METHOD_PTYPE_UINT16,
	VN_O_METHOD_PTYPE_UINT32,

	VN_O_METHOD_PTYPE_REAL32,
	VN_O_METHOD_PTYPE_REAL64,

	VN_O_METHOD_PTYPE_REAL32_VEC2,
	VN_O_METHOD_PTYPE_REAL32_VEC3,
	VN_O_METHOD_PTYPE_REAL32_VEC4,

	VN_O_METHOD_PTYPE_REAL64_VEC2,
	VN_O_METHOD_PTYPE_REAL64_VEC3,
	VN_O_METHOD_PTYPE_REAL64_VEC4,

	VN_O_METHOD_PTYPE_REAL32_MAT4,
	VN_O_METHOD_PTYPE_REAL32_MAT9,
	VN_O_METHOD_PTYPE_REAL32_MAT16,

	VN_O_METHOD_PTYPE_REAL64_MAT4,
	VN_O_METHOD_PTYPE_REAL64_MAT9,
	VN_O_METHOD_PTYPE_REAL64_MAT16,

	VN_O_METHOD_PTYPE_STRING,

	VN_O_METHOD_PTYPE_NODE,
	VN_O_METHOD_PTYPE_LAYER
} VNOParamType;

typedef	union {
	int8		vint8;
	int16		vint16;
	int32		vint32;
	uint8		vuint8;
	uint16		vuint16;
	uint32		vuint32;
	real32		vreal32;
	real64		vreal64;
	real32		vreal32_vec[4];
	real32		vreal32_mat[16];
	real64		vreal64_vec[4];
	real64		vreal64_mat[16];
	char		*vstring;
	VNodeID		vnode;
	VLayerID	vlayer;
} VNOParam;

#define VN_TAG_MAX_BLOB_SIZE 500

typedef enum {
	VN_TAG_BOOLEAN = 0,
	VN_TAG_UINT32,
	VN_TAG_REAL64,
	VN_TAG_STRING,
	VN_TAG_REAL64_VEC3,
	VN_TAG_LINK,
	VN_TAG_ANIMATION,
	VN_TAG_BLOB,
	VN_TAG_TYPE_COUNT
} VNTagType;

typedef enum {
	VN_TAG_GROUP_SIZE = 16,
	VN_TAG_NAME_SIZE = 16,
	VN_TAG_FULL_NAME_SIZE = 64,
	VN_TAG_STRING_SIZE = 128
} VNTagConstants;

typedef union {
	boolean vboolean;
	uint32	vuint32;
	real64	vreal64;
	char	*vstring;
	real64	vreal64_vec3[3];
	VNodeID	vlink;
	struct {
		VNodeID curve;
		uint32 start;
		uint32 end;
	} vanimation;
	struct {
		uint16	size;
		void	*blob;
	} vblob;
} VNTag;

typedef enum {
	VN_S_CONNECT_NAME_SIZE = 32,
	VN_S_CONNECT_KEY_SIZE = 4,
	VN_S_CONNECT_DATA_SIZE = 32,
	VS_S_CONNECT_HOSTID_PRIVATE_SIZE = 3 * 2048 / 8,
	VS_S_CONNECT_HOSTID_PUBLIC_SIZE  = 2 * 2048 / 8
} VNSConnectConstants;

typedef enum {
	VN_FORMAT_REAL32,
	VN_FORMAT_REAL64
} VNRealFormat;

typedef struct {
	real32	x, y, z, w;
} VNQuat32;

typedef struct {
	real64	x, y, z, w;
} VNQuat64;

typedef enum {
	VN_O_METHOD_GROUP_NAME_SIZE = 16,
	VN_O_METHOD_NAME_SIZE = 16,
	VN_O_METHOD_SIG_SIZE = 256
} VNOMethodConstants;

typedef void VNOPackedParams;	/* Opaque type. */

typedef enum {
	VN_G_LAYER_VERTEX_XYZ = 0,
	VN_G_LAYER_VERTEX_UINT32,
	VN_G_LAYER_VERTEX_REAL,
	VN_G_LAYER_POLYGON_CORNER_UINT32 = 128,
	VN_G_LAYER_POLYGON_CORNER_REAL,
	VN_G_LAYER_POLYGON_FACE_UINT8,
	VN_G_LAYER_POLYGON_FACE_UINT32,
	VN_G_LAYER_POLYGON_FACE_REAL
} VNGLayerType;

typedef enum {
	VN_M_LIGHT_DIRECT = 0,
	VN_M_LIGHT_AMBIENT,
	VN_M_LIGHT_DIRECT_AND_AMBIENT,
	VN_M_LIGHT_BACK_DIRECT,
	VN_M_LIGHT_BACK_AMBIENT,
	VN_M_LIGHT_BACK_DIRECT_AND_AMBIENT
} VNMLightType;

typedef enum {
	VN_M_NOISE_PERLIN_ZERO_TO_ONE = 0,
	VN_M_NOISE_PERLIN_MINUS_ONE_TO_ONE,
	VN_M_NOISE_POINT_ZERO_TO_ONE,
	VN_M_NOISE_POINT_MINUS_ONE_TO_ONE
} VNMNoiseType;

typedef enum {
	VN_M_RAMP_SQUARE = 0,
	VN_M_RAMP_LINEAR,
	VN_M_RAMP_SMOOTH
} VNMRampType;

typedef enum {
	VN_M_RAMP_RED = 0,
	VN_M_RAMP_GREEN,
	VN_M_RAMP_BLUE
} VNMRampChannel;

typedef struct {
	real64	pos;
	real64	red;
	real64	green;
	real64	blue;
} VNMRampPoint;

typedef enum {
	VN_M_BLEND_FADE = 0,
	VN_M_BLEND_ADD,
	VN_M_BLEND_SUBTRACT,
	VN_M_BLEND_MULTIPLY,
	VN_M_BLEND_DIVIDE,
} VNMBlendType;

typedef enum {
	VN_M_FT_COLOR = 0,
	VN_M_FT_LIGHT,
	VN_M_FT_REFLECTION,
	VN_M_FT_TRANSPARENCY,
	VN_M_FT_VOLUME,
	VN_M_FT_VIEW,
	VN_M_FT_GEOMETRY,
	VN_M_FT_TEXTURE,
	VN_M_FT_NOISE,
	VN_M_FT_BLENDER,
	VN_M_FT_CLAMP,
	VN_M_FT_MATRIX,
	VN_M_FT_RAMP,
	VN_M_FT_ANIMATION,
	VN_M_FT_ALTERNATIVE,
	VN_M_FT_OUTPUT
} VNMFragmentType;

typedef union {
	struct {
		real64 red;
		real64 green;
		real64 blue;
	} color;
	struct {
		uint8 type;
		real64 normal_falloff; 
		VNodeID brdf;
		char brdf_r[16];
		char brdf_g[16];
		char brdf_b[16];
	} light;
	struct {
		real64 normal_falloff;
	} reflection;
	struct {
		real64 normal_falloff;
		real64 refraction_index;
	} transparency;
	struct {
		real64 diffusion;
		real64 col_r;
		real64 col_g;
		real64 col_b;
	} volume;
	struct {
		char layer_r[16];
		char layer_g[16];
		char layer_b[16];
	} geometry;
	struct{
		VNodeID bitmap;
		char layer_r[16];
		char layer_g[16];
		char layer_b[16];
		boolean filtered;
		VNMFragmentID mapping;
	} texture;
	struct {
		uint8 type;
		VNMFragmentID mapping;
	} noise;
	struct {
		uint8 type;
		VNMFragmentID data_a;
		VNMFragmentID data_b; 
		VNMFragmentID control;
	} blender;
	struct {
		boolean min;
		real64 red;
		real64 green;
		real64 blue;
		VNMFragmentID data;
	} clamp;
	struct {
		real64 matrix[16];
		VNMFragmentID data;
	} matrix;
	struct {
		uint8 type;
		uint8 channel;
		VNMFragmentID mapping; 
		uint8 point_count;
		VNMRampPoint ramp[48];
	} ramp;
	struct {
		char label[16];
	} animation;
	struct {
		VNMFragmentID alt_a;
		VNMFragmentID alt_b;
	} alternative;
	struct {
		char label[16];
		VNMFragmentID front;
		VNMFragmentID back;
	} output;
} VMatFrag;

typedef enum {
	VN_B_LAYER_UINT1 = 0,
	VN_B_LAYER_UINT8,
	VN_B_LAYER_UINT16,
	VN_B_LAYER_REAL32,
	VN_B_LAYER_REAL64
} VNBLayerType;

#define VN_B_TILE_SIZE 8

typedef union{
	uint8 vuint1[8];
	uint8 vuint8[64];
	uint16 vuint16[64];
	real32 vreal32[64];
	real64 vreal64[64];
} VNBTile;

typedef enum {
	VN_T_CONTENT_LANGUAGE_SIZE = 32,
	VN_T_CONTENT_INFO_SIZE = 256,
	VN_T_BUFFER_NAME_SIZE = 16,
	VN_T_MAX_TEXT_CMD_SIZE = 1450
} VNTConstants;

/* This is how many *samples* are included in a block of the given type. Not bytes. */
typedef enum {
	VN_A_BLOCK_SIZE_INT8 = 1024,
	VN_A_BLOCK_SIZE_INT16 = 512,
	VN_A_BLOCK_SIZE_INT24 = 384,
	VN_A_BLOCK_SIZE_INT32 = 256,
	VN_A_BLOCK_SIZE_REAL32 = 256,
	VN_A_BLOCK_SIZE_REAL64 = 128
} VNAConstants;

typedef enum {
	VN_A_BLOCK_INT8,
	VN_A_BLOCK_INT16,
	VN_A_BLOCK_INT24,
	VN_A_BLOCK_INT32,
	VN_A_BLOCK_REAL32,
	VN_A_BLOCK_REAL64
} VNABlockType;

/* Audio commands take pointers to blocks of these. They are not packed as unions. */
typedef union {
	int8	vint8[VN_A_BLOCK_SIZE_INT8];
	int16	vint16[VN_A_BLOCK_SIZE_INT16];
	int32	vint24[VN_A_BLOCK_SIZE_INT24];
	int32	vint32[VN_A_BLOCK_SIZE_INT32];
	real32	vreal32[VN_A_BLOCK_SIZE_REAL32];
	real64	vreal64[VN_A_BLOCK_SIZE_REAL64];
} VNABlock;

extern void		verse_set_port(uint16 port);
extern void		verse_host_id_create(uint8 *id);
extern void		verse_host_id_set(uint8 *id);
extern void		verse_callback_set(void *send_func, void *callback, void *user_data);
extern void		verse_callback_update(uint32 microseconds);
extern void		verse_session_set(VSession session);
extern VSession		verse_session_get(void);
extern void		verse_session_destroy(VSession session);
extern size_t	verse_session_get_size(void);
extern VNodeID	verse_session_get_avatar(void);
extern void		verse_session_get_time(uint32 *seconds, uint32 *fractions);

extern VNOPackedParams * verse_method_call_pack(uint32 param_count, const VNOParamType *param_type, const VNOParam *params);
extern boolean	verse_method_call_unpack(const VNOPackedParams *data, uint32 param_count, const VNOParamType *param_type, VNOParam *params);

/*
#define V_PRINT_SEND_COMMANDS
#define V_PRINT_RECEIVE_COMMANDS
*/

#endif		/* VERSE_TYPES */

/* Command sending functions begin. ----------------------------------------- */

extern VSession verse_send_connect(const char *name, const char *pass, const char *address, const uint8 *expected_host_id);
extern VSession verse_send_connect_accept(VNodeID avatar, const char *address, uint8 *host_id);
extern void verse_send_connect_terminate(const char *address, const char *bye);
extern void verse_send_ping(const char *address, const char *message);
extern void verse_send_node_index_subscribe(uint32 mask);
extern void verse_send_node_create(VNodeID node_id, VNodeType type, VNodeOwner owner);
extern void verse_send_node_destroy(VNodeID node_id);
extern void verse_send_node_subscribe(VNodeID node_id);
extern void verse_send_node_unsubscribe(VNodeID node_id);
extern void verse_send_tag_group_create(VNodeID node_id, uint16 group_id, const char *name);
extern void verse_send_tag_group_destroy(VNodeID node_id, uint16 group_id);
extern void verse_send_tag_group_subscribe(VNodeID node_id, uint16 group_id);
extern void verse_send_tag_group_unsubscribe(VNodeID node_id, uint16 group_id);
extern void verse_send_tag_create(VNodeID node_id, uint16 group_id, uint16 tag_id, const char *name, VNTagType type, const VNTag *tag);
extern void verse_send_tag_destroy(VNodeID node_id, uint16 group_id, uint16 tag_id);
extern void verse_send_node_name_set(VNodeID node_id, const char *name);

extern void verse_send_o_transform_pos_real32(VNodeID node_id, uint32 time_s, uint32 time_f, const real32 *pos, const real32 *speed, const real32 *accelerate, const real32 *drag_normal, real32 drag);
extern void verse_send_o_transform_rot_real32(VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat32 *rot, const VNQuat32 *speed, const VNQuat32 *accelerate, const VNQuat32 *drag_normal, real32 drag);
extern void verse_send_o_transform_scale_real32(VNodeID node_id, real32 scale_x, real32 scale_y, real32 scale_z);
extern void verse_send_o_transform_pos_real64(VNodeID node_id, uint32 time_s, uint32 time_f, const real64 *pos, const real64 *speed, const real64 *accelerate, const real64 *drag_normal, real64 drag);
extern void verse_send_o_transform_rot_real64(VNodeID node_id, uint32 time_s, uint32 time_f, const VNQuat64 *rot, const VNQuat64 *speed, const VNQuat64 *accelerate, const VNQuat64 *drag_normal, real64 drag);
extern void verse_send_o_transform_scale_real64(VNodeID node_id, real64 scale_x, real64 scale_y, real64 scale_z);
extern void verse_send_o_transform_subscribe(VNodeID node_id, VNRealFormat type);
extern void verse_send_o_transform_unsubscribe(VNodeID node_id, VNRealFormat type);
extern void verse_send_o_light_set(VNodeID node_id, real64 light_r, real64 light_g, real64 light_b);
extern void verse_send_o_link_set(VNodeID node_id, uint16 link_id, VNodeID link, const char *label, uint32 target_id);
extern void verse_send_o_link_destroy(VNodeID node_id, uint16 link_id);
extern void verse_send_o_method_group_create(VNodeID node_id, uint16 group_id, const char *name);
extern void verse_send_o_method_group_destroy(VNodeID node_id, uint16 group_id);
extern void verse_send_o_method_group_subscribe(VNodeID node_id, uint16 group_id);
extern void verse_send_o_method_group_unsubscribe(VNodeID node_id, uint16 group_id);
extern void verse_send_o_method_create(VNodeID node_id, uint16 group_id, uint16 method_id, const char *name, uint8 param_count, const VNOParamType *param_types, const char * *param_names);
extern void verse_send_o_method_destroy(VNodeID node_id, uint16 group_id, uint16 method_id);
extern void verse_send_o_method_call(VNodeID node_id, uint16 group_id, uint16 method_id, VNodeID sender, const VNOPackedParams *params);
extern void verse_send_o_anim_run(VNodeID node_id, uint16 link_id, uint32 time_s, uint32 time_f, uint8 dimensions, const real64 *pos, const real64 *speed, const real64 *accel, const real64 *scale, const real64 *scale_speed);
extern void verse_send_o_hide(VNodeID node_id, uint8 hidden);

extern void verse_send_g_layer_create(VNodeID node_id, VLayerID layer_id, const char *name, VNGLayerType type, uint32 def_uint, real64 def_real);
extern void verse_send_g_layer_destroy(VNodeID node_id, VLayerID layer_id);
extern void verse_send_g_layer_subscribe(VNodeID node_id, VLayerID layer_id, VNRealFormat type);
extern void verse_send_g_layer_unsubscribe(VNodeID node_id, VLayerID layer_id);
extern void verse_send_g_vertex_set_xyz_real32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 x, real32 y, real32 z);
extern void verse_send_g_vertex_delete_real32(VNodeID node_id, uint32 vertex_id);
extern void verse_send_g_vertex_set_xyz_real64(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 x, real64 y, real64 z);
extern void verse_send_g_vertex_delete_real64(VNodeID node_id, uint32 vertex_id);
extern void verse_send_g_vertex_set_uint32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, uint32 value);
extern void verse_send_g_vertex_set_real64(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real64 value);
extern void verse_send_g_vertex_set_real32(VNodeID node_id, VLayerID layer_id, uint32 vertex_id, real32 value);
extern void verse_send_g_polygon_set_corner_uint32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 v0, uint32 v1, uint32 v2, uint32 v3);
extern void verse_send_g_polygon_delete(VNodeID node_id, uint32 polygon_id);
extern void verse_send_g_polygon_set_corner_real64(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 v0, real64 v1, real64 v2, real64 v3);
extern void verse_send_g_polygon_set_corner_real32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 v0, real32 v1, real32 v2, real32 v3);
extern void verse_send_g_polygon_set_face_uint8(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint8 value);
extern void verse_send_g_polygon_set_face_uint32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, uint32 value);
extern void verse_send_g_polygon_set_face_real64(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real64 value);
extern void verse_send_g_polygon_set_face_real32(VNodeID node_id, VLayerID layer_id, uint32 polygon_id, real32 value);
extern void verse_send_g_crease_set_vertex(VNodeID node_id, const char *layer, uint32 def_crease);
extern void verse_send_g_crease_set_edge(VNodeID node_id, const char *layer, uint32 def_crease);
extern void verse_send_g_bone_create(VNodeID node_id, uint16 bone_id, const char *weight, const char *reference, uint16 parent, real64 pos_x, real64 pos_y, real64 pos_z, const char *position_label, const char *rotation_label, const char *scale_label);
extern void verse_send_g_bone_destroy(VNodeID node_id, uint16 bone_id);

extern void verse_send_m_fragment_create(VNodeID node_id, VNMFragmentID frag_id, VNMFragmentType type, const VMatFrag *fragment);
extern void verse_send_m_fragment_destroy(VNodeID node_id, VNMFragmentID frag_id);

extern void verse_send_b_dimensions_set(VNodeID node_id, uint16 width, uint16 height, uint16 depth);
extern void verse_send_b_layer_create(VNodeID node_id, VLayerID layer_id, const char *name, VNBLayerType type);
extern void verse_send_b_layer_destroy(VNodeID node_id, VLayerID layer_id);
extern void verse_send_b_layer_subscribe(VNodeID node_id, VLayerID layer_id, uint8 level);
extern void verse_send_b_layer_unsubscribe(VNodeID node_id, VLayerID layer_id);
extern void verse_send_b_tile_set(VNodeID node_id, VLayerID layer_id, uint16 tile_x, uint16 tile_y, uint16 z, VNBLayerType type, const VNBTile *tile);

extern void verse_send_t_language_set(VNodeID node_id, const char *language);
extern void verse_send_t_buffer_create(VNodeID node_id, VBufferID buffer_id, const char *name);
extern void verse_send_t_buffer_destroy(VNodeID node_id, VBufferID buffer_id);
extern void verse_send_t_buffer_subscribe(VNodeID node_id, VBufferID buffer_id);
extern void verse_send_t_buffer_unsubscribe(VNodeID node_id, VBufferID buffer_id);
extern void verse_send_t_text_set(VNodeID node_id, VBufferID buffer_id, uint32 pos, uint32 length, const char *text);

extern void verse_send_c_curve_create(VNodeID node_id, VLayerID curve_id, const char *name, uint8 dimensions);
extern void verse_send_c_curve_destroy(VNodeID node_id, VLayerID curve_id);
extern void verse_send_c_curve_subscribe(VNodeID node_id, VLayerID curve_id);
extern void verse_send_c_curve_unsubscribe(VNodeID node_id, VLayerID curve_id);
extern void verse_send_c_key_set(VNodeID node_id, VLayerID curve_id, uint32 key_id, uint8 dimensions, const real64 *pre_value, const uint32 *pre_pos, const real64 *value, real64 pos, const real64 *post_value, const uint32 *post_pos);
extern void verse_send_c_key_destroy(VNodeID node_id, VLayerID curve_id, uint32 key_id);

extern void verse_send_a_buffer_create(VNodeID node_id, VBufferID buffer_id, const char *name, VNABlockType type, real64 frequency);
extern void verse_send_a_buffer_destroy(VNodeID node_id, VBufferID buffer_id);
extern void verse_send_a_buffer_subscribe(VNodeID node_id, VBufferID layer_id);
extern void verse_send_a_buffer_unsubscribe(VNodeID node_id, VBufferID layer_id);
extern void verse_send_a_block_set(VNodeID node_id, VLayerID buffer_id, uint32 block_index, VNABlockType type, const VNABlock *samples);
extern void verse_send_a_block_clear(VNodeID node_id, VLayerID buffer_id, uint32 block_index);
extern void verse_send_a_stream_create(VNodeID node_id, VLayerID stream_id, const char *name);
extern void verse_send_a_stream_destroy(VNodeID node_id, VLayerID stream_id);
extern void verse_send_a_stream_subscribe(VNodeID node_id, VLayerID stream_id);
extern void verse_send_a_stream_unsubscribe(VNodeID node_id, VLayerID stream_id);
extern void verse_send_a_stream(VNodeID node_id, VLayerID stream_id, uint32 time_s, uint32 time_f, VNABlockType type, real64 frequency, const VNABlock *samples);


#if defined __cplusplus
}
#endif

#endif		/* VERSE_H */