aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md66
1 files changed, 64 insertions, 2 deletions
diff --git a/README.md b/README.md
index 82f3ccb..10ab5ce 100644
--- a/README.md
+++ b/README.md
@@ -15,19 +15,29 @@ pipeline
## Building, Compiling, Installing
If you don't have a ./configure file, run:
+
- `autoreconf -fi`
When you have the ./configure file, run:
+
- `./configure`
- `make`
- `make install`
You can see some configuration options with:
+
- `./configure --help`
+## Using this library
+
+Include tuberia.h, and link libtuberia.a and pthread: `-ltuberia -lpthread`
+
+You can also use: `pkg-config --cflags --libs --static tuberia`
+
## Quick Guide
-See the `example/decode_resize_encode.c` and the function `do_tuberia()`
+See the files `example/simple.c` and `example/decode_resize_encode.c`
+(function `do_tuberia()` in particular)
Create a source with `tube_source_alloc()`.
If you set fetch to something, there will be a thread running fetch to inject
@@ -52,7 +62,59 @@ Free the pipeline with `tube_free()`.
### Quick example
-```C
+See `examples/simple.c`
+
+Compile with: `gcc -o simple simple.c -ltuberia -lpthread`
+
+Or with: ``gcc -o simple simple.c `pkg-config --cflags --libs --static tuberia```
+
+```C
+#include <stdio.h>
+#include <stdlib.h>
+#include <tuberia.h>
+
+void *stage_one(void *element, void *opaque)
+{
+ int *i = element;
+ *i += 5;
+ return i;
+}
+
+void *stage_two(void *element, void *opaque)
+{
+ int *i = element;
+ *i *= 10;
+ return i;
+}
+
+void sink(void *element, void *opaque)
+{
+ int *i = element;
+ printf("sink: %d\n", *i);
+ free(i);
+}
+
+int main(void)
+{
+ tube *ctx;
+ tube_source *source;
+ int *element, n;
+
+ source = tube_source_alloc(2, NULL, NULL, free);
+ tube_stage_append(source, tube_stage_alloc(2, stage_one, NULL, free));
+ tube_stage_append(source, tube_stage_alloc(2, stage_two, NULL, free));
+ ctx = tube_alloc(source, sink, NULL);
+ tube_source_and_stages_free(&source);
+ tube_start(ctx);
+ while (scanf("%d", &n) == 1) {
+ element = malloc(sizeof(*element));
+ *element = n;
+ tube_inject(ctx, 1000, element);
+ }
+ tube_free(&ctx);
+
+ return 0;
+}
```