ifix ring buffer - ploot - simple plotting tools Err bitreich.org 70
hgit clone git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot URL:git://bitreich.org/ploot git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/ploot bitreich.org 70
1Log /scm/ploot/log.gph bitreich.org 70
1Files /scm/ploot/files.gph bitreich.org 70
1Refs /scm/ploot/refs.gph bitreich.org 70
1Tags /scm/ploot/tag bitreich.org 70
1README /scm/ploot/file/README.md.gph bitreich.org 70
1LICENSE /scm/ploot/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 413abf823787458e35396a700f9acf1af53ef239 /scm/ploot/commit/413abf823787458e35396a700f9acf1af53ef239.gph bitreich.org 70
1parent 30b3f9c326b35c196f98d905c6e57afbc057c63b /scm/ploot/commit/30b3f9c326b35c196f98d905c6e57afbc057c63b.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Tue, 6 Feb 2018 11:36:00 +0100 Err bitreich.org 70
i Err bitreich.org 70
ifix ring buffer Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M ploot.c | 82 +++++++++++++++++-------------- Err bitreich.org 70
i D ploot.core | 0 Err bitreich.org 70
i Err bitreich.org 70
i2 files changed, 45 insertions(+), 37 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/ploot.c b/ploot.c /scm/ploot/file/ploot.c.gph bitreich.org 70
i@@ -14,6 +14,27 @@ Err bitreich.org 70
i #define MIN(x, y) ((x) < (y) ? (x) : (y)) Err bitreich.org 70
i #define LEN(x) (sizeof(x) / sizeof(*x)) Err bitreich.org 70
i Err bitreich.org 70
i+ Err bitreich.org 70
i+/* Err bitreich.org 70
i+ * Add `val' at the current position `pos' of the `ring' buffer and set pos to Err bitreich.org 70
i+ * the next postion. Err bitreich.org 70
i+ */ Err bitreich.org 70
i+#define RING_ADD(rbuf, len, pos, val) \ Err bitreich.org 70
i+do { \ Err bitreich.org 70
i+ rbuf[pos] = val; \ Err bitreich.org 70
i+ pos = (pos + 1 < len) ? (pos + 1) : (0); \ Err bitreich.org 70
i+} while (0) Err bitreich.org 70
i+ Err bitreich.org 70
i+/* Err bitreich.org 70
i+ * Copy the ring buffer `rbuf' content with current position `pos' into the Err bitreich.org 70
i+ * buffer `buf'. Both buffer of length `len'. Err bitreich.org 70
i+ */ Err bitreich.org 70
i+#define RING_COPY(buf, rbuf, len, pos) \ Err bitreich.org 70
i+do { \ Err bitreich.org 70
i+ memcpy(buf, rbuf + pos, (len - pos) * sizeof(*rbuf)); \ Err bitreich.org 70
i+ memcpy(buf + (len - pos), rbuf, pos * sizeof(*rbuf)); \ Err bitreich.org 70
i+} while (0) Err bitreich.org 70
i+ Err bitreich.org 70
i int flag_h = 20; Err bitreich.org 70
i char *flag_t = NULL; Err bitreich.org 70
i Err bitreich.org 70
i@@ -134,29 +155,6 @@ plot(int height, double *beg, double *end, char *str) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i- * Add `val' at the current position `pos' of the `ring' buffer and return the Err bitreich.org 70
i- * next postion. Err bitreich.org 70
i- */ Err bitreich.org 70
i-size_t Err bitreich.org 70
i-ring_add(double *rbuf, size_t len, size_t pos, double val) Err bitreich.org 70
i-{ Err bitreich.org 70
i- *rbuf = val; Err bitreich.org 70
i- Err bitreich.org 70
i- return (pos + 1 < len) ? (pos + 1) : (0); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-/* Err bitreich.org 70
i- * Copy the ring buffer `rbuf' content with current position `pos' into the Err bitreich.org 70
i- * buffer `buf'. Both buffer of length `len'. Err bitreich.org 70
i- */ Err bitreich.org 70
i-void Err bitreich.org 70
i-ring_copy(double *buf, double *rbuf, size_t len, size_t pos) Err bitreich.org 70
i-{ Err bitreich.org 70
i- memcpy(buf, rbuf + pos, (len - pos) * sizeof(*rbuf)); Err bitreich.org 70
i- memcpy(buf + (len - pos), rbuf, pos * sizeof(*rbuf)); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i-/* Err bitreich.org 70
i * Read a simple format with one double per line and save the last `MAX_WIDTH' Err bitreich.org 70
i * values into `buf' which must be at least MAX_VAL wide and return a pointer Err bitreich.org 70
i * to the last element or NULL if the input contains error. Err bitreich.org 70
i@@ -169,32 +167,39 @@ read_simple(double buf[MAX_VAL]) Err bitreich.org 70
i Err bitreich.org 70
i len = LEN(rbuf); Err bitreich.org 70
i for (p = pos = 0; scanf("%lf\n", &val) > 0; p++) Err bitreich.org 70
i- pos = ring_add(rbuf + pos, len, pos, val); Err bitreich.org 70
i+ RING_ADD(rbuf, len, pos, val); Err bitreich.org 70
i len = MIN(len, p); Err bitreich.org 70
i pos = MIN(pos, p); Err bitreich.org 70
i Err bitreich.org 70
i- ring_copy(buf, rbuf, len, pos); Err bitreich.org 70
i+ RING_COPY(buf, rbuf, len, pos); Err bitreich.org 70
i Err bitreich.org 70
i return buf + len; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i * Read a format with blank-separated time_t-double pairs, one per line and save Err bitreich.org 70
i- * the last `MAX_WIDTH' values into `timev' and `valv' which must both be at Err bitreich.org 70
i- * least MAX_VAL wide and return a pointer to the last element or NULL if the Err bitreich.org 70
i+ * the last `MAX_WIDTH' values into `tbuf' and `vbuf' which must both be at Err bitreich.org 70
i+ * least MAX_VAL wide and return a pointer to the last element of `vbuf' or NULL if the Err bitreich.org 70
i * input contains error. Err bitreich.org 70
i */ Err bitreich.org 70
i double * Err bitreich.org 70
i-read_time_series(double *valv, time_t *timev) Err bitreich.org 70
i+read_time_series(double *vbuf, time_t *tbuf) Err bitreich.org 70
i { Err bitreich.org 70
i- time_t time_rbuf[MAX_VAL]; Err bitreich.org 70
i- double val_rbuf[MAX_VAL]; Err bitreich.org 70
i+ size_t p, pos, len; Err bitreich.org 70
i+ double vrbuf[MAX_VAL], vval; Err bitreich.org 70
i+ time_t trbuf[MAX_VAL], tval; Err bitreich.org 70
i Err bitreich.org 70
i- (void)time_rbuf; Err bitreich.org 70
i- (void)val_rbuf; Err bitreich.org 70
i- (void)timev; Err bitreich.org 70
i+ len = LEN(vrbuf); Err bitreich.org 70
i+ for (p = pos = 0; scanf("%zd %lf\n", &tval, &vval) > 0; p++) Err bitreich.org 70
i+ RING_ADD(trbuf, len, pos, tval); Err bitreich.org 70
i+ RING_ADD(vrbuf, len, pos, vval); Err bitreich.org 70
i+ len = MIN(len, p); Err bitreich.org 70
i+ pos = MIN(pos, p); Err bitreich.org 70
i+ Err bitreich.org 70
i+ RING_COPY(tbuf, trbuf, len, pos); Err bitreich.org 70
i+ RING_COPY(vbuf, vrbuf, len, pos); Err bitreich.org 70
i Err bitreich.org 70
i- return valv; Err bitreich.org 70
i+ return vbuf + len; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i@@ -207,7 +212,10 @@ usage(void) Err bitreich.org 70
i int Err bitreich.org 70
i main(int argc, char **argv) Err bitreich.org 70
i { Err bitreich.org 70
i- double val[MAX_VAL], *end; Err bitreich.org 70
i+/* Err bitreich.org 70
i+ time_t tbuf[MAX_VAL]; Err bitreich.org 70
i+*/ Err bitreich.org 70
i+ double vbuf[MAX_VAL], *vend; Err bitreich.org 70
i char c; Err bitreich.org 70
i Err bitreich.org 70
i while ((c = getopt(argc, argv, "h:t:")) != -1) { Err bitreich.org 70
i@@ -226,7 +234,7 @@ main(int argc, char **argv) Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i- end = read_simple(val); Err bitreich.org 70
i- plot(flag_h, val, end, flag_t); Err bitreich.org 70
i+ vend = read_simple(vbuf); Err bitreich.org 70
i+ plot(flag_h, vbuf, vend, flag_t); Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
1diff --git a/ploot.core b/ploot.core /scm/ploot/file/ploot.core.gph bitreich.org 70
iBinary files differ. Err bitreich.org 70
.
Response:
text/plain