SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/ploot/commit/413abf823787458e...
Content-Typetext/plain; charset=utf-8