core: Reorganized output_item_ops struct to help manage optionals. Added inline...
[lumina.git] / core / include / output_item.h
blob6a57a63e85d3f0b89ab1aa7a3fb9046ed8198159
1 #ifndef OUTPUT_ITEM_H
2 #define OUTPUT_ITEM_H
4 #include <sys/types.h>
6 #include "fdtypes.h"
8 /* TODO: RELOCATE */
9 typedef unsigned char BYTE;
11 struct output_item_t;
12 typedef struct output_item_t output_item;
14 typedef struct {
15 size_t (*get_size)(output_item *this);
17 /* Handle windows handles? */
18 /* TODO: Define return values */
19 int (*send)(output_item* this, int fd, int fdtype);
20 size_t (*remaining)(output_item *this);
21 void (*release)(output_item *this);
22 /* prepare and on_* -> Optional */
23 void (*prepare)(output_item *this);
24 void (*on_complete)(output_item *this);
25 void (*on_error)(output_item *this, int status);
26 } output_item_ops;
28 struct output_item_t {
29 output_item_ops *ops;
30 /* User callbacks : Optional */
31 void (*on_complete)(output_item *this);
32 void (*on_error)(output_item *this, int status);
36 size_t output_get_size(output_item *item);
38 void output_prepare(output_item *item);
40 int output_send(output_item *item, int fd, int fdtype);
42 size_t output_remaining(output_item *item);
44 void output_on_complete(output_item *item);
46 void output_on_error(output_item *item, int status);
48 void output_release(output_item *item);
51 #include "../src/output/output_item.inc"
53 #endif