blob: 3dc5c10a4936303c242ae28cac828b7fed6c32e6 (
plain) (
blame)
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
|
#include "tuberia.h"
#include "itc.h"
#include <stdlib.h>
struct tube {
struct itc *itc;
};
struct tube_source *tube_source_alloc(int nqueue, tube_fetch *fetch, void *opaque)
{
struct tube_source *source = calloc(1, sizeof(struct tube_source));
source->nqueue = nqueue;
source->fetch = fetch;
source->opaque = opaque;
return source;
}
struct tube_stage *tube_stage_alloc(int nqueue, tube_process *process, void *opaque)
{
struct tube_stage *stage = calloc(1, sizeof(struct tube_stage));
stage->nqueue = nqueue;
stage->process = process;
stage->opaque = opaque;
return stage;
}
void tube_stage_free(struct tube_stage **stage)
{
if (stage != NULL) {
free(stage);
*stage = NULL;
}
}
void tube_source_and_stages_free(struct tube_source **source)
{
struct tube_stage *stage;
struct tube_stage *next;
if (source != NULL && *source != NULL) {
stage = (*source)->next;
while (stage != NULL) {
next = stage->next;
free(stage);
stage = next;
}
free(*source);
*source = NULL;
}
}
int tube_stage_append(struct tube_source *source, struct tube_stage *stage)
{
struct tube_stage **next;
if (source != NULL || stage != NULL) {
return -1;
}
next = &(source->next);
while (*next != NULL) {
next = &((*next)->next);
}
*next = stage;
return 0;
}
tube *tube_create(struct tube_source *source, tube_sink *sink, void *opaque)
{
}
|