-
Notifications
You must be signed in to change notification settings - Fork 0
/
connectors.h
77 lines (62 loc) · 1.97 KB
/
connectors.h
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
#ifndef __CONNECTORS_H__
#define __CONNECTORS_H__
typedef struct _connector_t connector;
typedef struct _connector_set_t connector_set;
typedef struct _input_t conn_input;
typedef struct _output_t conn_output;
struct _input_t {
void *signal;
void *calculated_signal;
connector *host;
conn_output *attached;
void *user_info;
};
struct _output_t {
void *signal;
void *calculated_signal;
connector *host;
conn_input *attached;
void *user_info;
};
typedef struct _connector_type_t {
int max_inputs;
int max_outputs;
void (*process)(connector* connector);
} connector_type;
struct _connector_t {
connector_type *type;
connector_set *set;
conn_input **inputs;
int num_inputs;
conn_output **outputs;
int num_outputs;
void *user_info;
};
struct _connector_set_t {
connector **connectors;
int num_connectors;
int allocated_connectors; /* Actually, allocated connector pointers */
};
void init_connectors(void);
void shutdown_connectors(void);
void *get_signal_one(void);
void *get_signal_zero(void);
connector_set *new_connector_set(void);
connector *new_connector(connector_type *type, connector_set *set,
void *user_info);
void destroy_connector(connector *conn);
void connector_add_input(connector *conn, conn_input *input);
void connector_add_output(connector *conn, conn_output *output);
conn_input* connector_new_input(connector *conn);
conn_output* connector_new_output(connector *conn);
void connector_disconnect_input(conn_input *input);
void connector_disconnect_output(conn_output *output);
void connector_delete_input(conn_input *input);
void connector_delete_output(conn_output *output);
connector* ioro_connector(conn_input *input, conn_output *output);
void ioro_disconnect(conn_input *input, conn_output *output);
void connector_connect(conn_input *input, conn_output *output);
void connector_free_signal(void *signal);
void *connector_copy_signal(void *signal);
void connector_set_process(connector_set *set);
#endif /* __CONNECTORS_H__ */