Mercurial > repo
diff src/ploki/kork.h @ 4223:ac0403686959
<oerjan> rm -rf src/ploki; mv ploki src
author | HackBot |
---|---|
date | Fri, 20 Dec 2013 22:18:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ploki/kork.h Fri Dec 20 22:18:50 2013 +0000 @@ -0,0 +1,63 @@ +#ifndef KORK_H_ +#define KORK_H_ + +#include "config.h" +#include "IO.h" +#include "Str.h" + +#include <stddef.h> + +struct ko_dolphin { + String str; + size_t refs; +}; + +struct kork { + struct ko_dolphin *kdp; + size_t offset, length; +}; + +struct kork *ko_new(void); +struct kork *ko_dup(const struct kork *); +void ko_decouple(struct kork *); +void ko_delete(struct kork *); + +ATTR_PURE +size_t ko_length(const struct kork *); +ATTR_PURE +int ko_at(const struct kork *, size_t); +ATTR_PURE +int ko_lastchar(const struct kork *); +ATTR_PURE +int ko_cmp(const struct kork *, const struct kork *); + +void ko_zero(struct kork *); + +ATTR_PURE +const char *ko_ptr(const struct kork *); +const String *ko_str(struct kork *); +const char *ko_szp(struct kork *); +void ko_grep(struct kork *, int (*)(int)); +void ko_shift(struct kork *, size_t); +void ko_num(struct kork *k, double); +void ko_cpy_m(struct kork *, const void *, size_t); +void ko_cpy(struct kork *, const struct kork *); +void ko_cpy_s(struct kork *, const char *); +void ko_cpy_c(struct kork *, char); +void ko_cat_m(struct kork *, const void *, size_t); +void ko_cat(struct kork *, const struct kork *); +void ko_cat_c(struct kork *, char); +void ko_reverse(struct kork *); +size_t ko_getline(IO *, struct kork *); +size_t ko_read(IO *, struct kork *, size_t); +void ko_lower(struct kork *); +void ko_upper(struct kork *); +ATTR_PURE +size_t ko_chr(const struct kork *, int); +void ko_shiftws(struct kork *); +void ko_trunc(struct kork *, size_t); + +#define ko_length(k) ((k)->length + 0u) +#define ko_zero(k) ((void)((k)->length = 0u)) + +#endif /* KORK_H_ */