static int serialise_arg(task *tsk, array *arr, int argno, pntr val) { char *str; char *escaped; sysobject *so; switch (pntrtype(val)) { case CELL_NUMBER: array_printf(arr," %f",pntrdouble(val)); return 1; case CELL_CONS: case CELL_AREF: if (0 <= array_to_string(val,&str)) { escaped = escape(str); array_printf(arr," \"%s\"",escaped); free(escaped); free(str); return 1; } break; case CELL_NIL: array_printf(arr," nil"); return 1; case CELL_SYSOBJECT: so = psysobject(val); if (SYSOBJECT_JAVA == so->type) { array_printf(arr," @%d",so->jid.jid); return 1; } break; } return set_error(tsk,"jcall: argument %d invalid (%s)",argno,cell_types[pntrtype(val)]); }
void BlockMapIO_Printf(const BlockMap *me) { printf("\nBlockMap"); printf("\n pixelCount: width=%d, height=%d\n", me->pixelCount.width, me->pixelCount.height); printf("\n blockCount: width=%d, height=%d\n", me->blockCount.width, me->blockCount.height); printf("\n cornerCount: width=%d, height=%d\n", me->cornerCount.width, me->cornerCount.height); printf("\n allBlocks: x=%d, y=%d, width=%d, height=%d\n", me->allBlocks.x, me->allBlocks.y, me->allBlocks.width, me->allBlocks.height); printf("\n allCorners: x=%d, y=%d, width=%d, height=%d\n", me->allCorners.x, me->allCorners.y, me->allCorners.width, me->allCorners.height); printf("\n corners.allX (%dx):", me->corners.allX.size); array_printf(me->corners.allX.size, me->corners.allX.data); printf("\n corners.allY (%dx):", me->corners.allY.size); array_printf(me->corners.allY.size, me->corners.allY.data); printf("\n blockAreas.corners.allX (%dx):", me->blockAreas.corners.allX.size); array_printf(me->blockAreas.corners.allX.size, me->blockAreas.corners.allX.data); printf("\n blockAreas.corners.allY (%dx):", me->blockAreas.corners.allY.size); array_printf(me->blockAreas.corners.allY.size, me->blockAreas.corners.allY.data); printf("\n blockCenters.allX (%dx):", me->blockCenters.allX.size); array_printf(me->blockCenters.allX.size, me->blockCenters.allX.data); printf("\n blockCenters.allY (%dx):", me->blockCenters.allY.size); array_printf(me->blockCenters.allY.size, me->blockCenters.allY.data); printf("\n cornerAreas.corners.allX (%dx):", me->cornerAreas.corners.allX.size); array_printf(me->cornerAreas.corners.allX.size, me->cornerAreas.corners.allX.data); printf("\n cornerAreas.corners.allY (%dx):", me->cornerAreas.corners.allY.size); PrintBlock(me->cornerAreas.corners.allY); }
END_TEST START_TEST(test_array_io) { printf("Printing data1 array\n"); size_t chars_printed = array_printf(data1, length, "%f "); fail_unless(chars_printed > 0, "An error printing array has occurred"); printf("Saving data1 array to '/tmp/array_fprintf.txt'\n"); FILE *file = fopen("/tmp/array_fprintf.txt", "w"); chars_printed = array_fprintf(data1, length, "%f\n", file); fclose(file); fail_unless(chars_printed > 0, "An error saving array has occurred"); printf("Reading data1 array from '/tmp/array_fprintf.txt'\n"); file = fopen("/tmp/array_fprintf.txt", "r"); double *data_file = (double*)malloc(length*sizeof(double)); array_fread(file, data_file, length); fclose(file); array_printf(data_file, length, "%f "); printf("\n"); }
/* Helper function used by print_inode_blocks */ static void print_blocks(inode *ino, uint32_t blockno, int level, int indent, int *lblock, array *out) { if (0 == blockno) return; char str[256]; str[0] = '\0'; char *s = str; int i; for (i = 0; i < indent; i++) s += sprintf(s," "); switch (level) { case 0: s += sprintf(s,"Direct %d",blockno); break; case 1: s += sprintf(s,"Single indirect %d",blockno); break; case 2: s += sprintf(s,"Double indirect %d",blockno); break; case 3: s += sprintf(s,"Triple indirect %d",blockno); break; } if (level == 0) { array_printf(out,"%-40s %d\n",str,*lblock); (*lblock)++; } else { array_printf(out,"%s\n",str); } if (level > 0) { buffer *table; try(bufcache_get(ino->fs->bc,blockno,&table)); for (i = 0; i < RPB; i++) print_blocks(ino,((uint32_t*)table->data)[i],level-1,indent+1,lblock,out); } }
END_TEST START_TEST(test_array_order) { printf("Ordering data1 array\n"); size_t *indices = (size_t*)malloc(length*sizeof(size_t)); printf("Nominal p-values:\n"); array_printf(data1, length, "%f "); printf("\n"); BH_correction(data1, length); printf("BH p-adjust::\n"); array_printf(data1, length, "%f "); printf("\n\n"); data1[8] = INFINITY; data1[4] = NAN; array_order(data1, length, 0, indices); double *double_ordered = (double*)malloc(length*sizeof(double)); array_ordered(data1, length, indices, double_ordered); printf("Original with NaN and INFINITY:\n"); array_printf(data1, length, "%f "); printf("\n"); printf("Ordered desc:\n"); array_printf(double_ordered, length, "%f "); printf("\n"); printf("Ordered asc:\n"); array_order(data1, length, 1, indices); array_ordered(data1, length, indices, double_ordered); array_printf(double_ordered, length, "%f "); printf("\n\n"); free(indices); free(double_ordered); }
int array_check_ascending(struct array* a) { int i; for (i = 0; i < a->length - 1; i++) { if (a->data[i] > a->data[i + 1]) { array_printf(a); printf("[ERROR] Inconsistency at index %i: %i followed by %i\n", i, a->data[i], a->data[i + 1]); assert(a->data[i] <= a->data[i + 1]); return -1; } } return a->length; }
void txt_print(const uint8_t *data, unsigned length) { array_printf(data, length, &printf, 't'); }
void short_hex_print(const uint8_t *data, unsigned length) { array_printf(data, length, &printf, 'x'); }
void hex_print(const uint8_t *data, unsigned length) { array_printf(data, length, &printf, 0); }