X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/59ecf21e36b2332f6adf2a568ef555283d8c119a..f89517343bf062d299d54408eea2f9387bfefb6d:/lunaix-os/includes/lunaix/ds/rbuffer.h diff --git a/lunaix-os/includes/lunaix/ds/rbuffer.h b/lunaix-os/includes/lunaix/ds/rbuffer.h index f3777b6..ffbb99b 100644 --- a/lunaix-os/includes/lunaix/ds/rbuffer.h +++ b/lunaix-os/includes/lunaix/ds/rbuffer.h @@ -20,6 +20,33 @@ rbuffer_init(struct rbuffer* rb, char* buf, size_t maxsz) struct rbuffer* rbuffer_create(char* buf, size_t maxsz); +int +rbuffer_erase(struct rbuffer* rb); + +int +rbuffer_put(struct rbuffer* rb, char c); + +int +rbuffer_puts(struct rbuffer* rb, char* c, size_t len); + +int +rbuffer_gets_opt(struct rbuffer* rb, char* buf, size_t len, bool consumed); + +int +rbuffer_get(struct rbuffer* rb, char* c); + +static inline int +rbuffer_gets(struct rbuffer* rb, char* buf, size_t len) +{ + return rbuffer_gets_opt(rb, buf, len, true); +} + +static inline int +rbuffer_gets_no_consume(struct rbuffer* rb, char* buf, size_t len) +{ + return rbuffer_gets_opt(rb, buf, len, false); +} + static inline void rbuffer_clear(struct rbuffer* rb) { @@ -32,25 +59,33 @@ rbuffer_empty(struct rbuffer* rb) return rb->len == 0; } +static inline unsigned int +rbuffer_len(struct rbuffer* rb) +{ + return rb->len; +} + +static inline void +rbuffer_setcontent(struct rbuffer* rb, size_t content_len) +{ + rb->ptr = content_len; + rb->len = content_len; +} + static inline bool rbuffer_full(struct rbuffer* rb) { return rb->len == rb->maxsz; } -int -rbuffer_erase(struct rbuffer* rb); - -int -rbuffer_put(struct rbuffer* rb, char c); - -int -rbuffer_puts(struct rbuffer* rb, char* c, size_t len); - -int -rbuffer_gets(struct rbuffer* rb, char* buf, size_t len); +static inline int +rbuffer_put_nof(struct rbuffer* rb, char c) +{ + if (rbuffer_full(rb)) { + return 0; + } -int -rbuffer_get(struct rbuffer* rb, char* c); + return rbuffer_put(rb, c); +} #endif /* __LUNAIX_RBUFFER_H */