int fetchannotations(void) { int afirst = 1, i; WFDB_Anninfo ai; WFDB_Time ta0, taf; if (nann < 1) return (0); if (tfreq != ffreq) { ta0 = (WFDB_Time)(t0*tfreq/ffreq + 0.5); taf = (WFDB_Time)(tf*tfreq/ffreq + 0.5); } else { ta0 = t0; taf = tf; } printf(" %c \"annotator\":\n [", nosig > 0 ? ' ' : '{'); setgvmode(WFDB_HIGHRES); for (i = 0; i < nann; i++) { ai.name = annotator[i]; ai.stat = WFDB_READ; if (annopen(recpath, &ai, 1) >= 0) { char *p; int first = 1; WFDB_Annotation annot; if (ta0 > 0L) iannsettime(ta0); if (!afirst) printf(","); else afirst = 0; printf("\n { \"name\": \"%s\",\n", annotator[i]); printf(" \"annotation\":\n"); printf(" ["); while ((getann(0, &annot) == 0) && (taf <= 0 || annot.time < taf)) { if (!first) printf(","); else first = 0; printf("\n { \"t\": %ld,\n", (long)(annot.time)); printf(" \"a\": %s,\n", p = strjson(annstr(annot.anntyp))); SFREE(p); printf(" \"s\": %d,\n", annot.subtyp); printf(" \"c\": %d,\n", annot.chan); printf(" \"n\": %d,\n", annot.num); if (annot.aux && *(annot.aux)) { printf(" \"x\": %s\n", p = strjson(annot.aux+1)); SFREE(p); } else printf(" \"x\": null\n"); printf(" }"); } printf("\n ]\n }"); } } printf("\n ]\n }\n"); return (1); }
INTEGER iannsettime_(INTEGER *time) { return (iannsettime((WFDB_Time)(*time))); }