Mercurial > forge
comparison extra/NaN/src/xptopen.cpp @ 12694:49e9ace39874 octave-forge
use of typeof() for autotyping
author | schloegl |
---|---|
date | Sat, 12 Sep 2015 19:21:36 +0000 |
parents | 13815b367946 |
children | 29b7963bf748 |
comparison
equal
deleted
inserted
replaced
12693:c76411f5c22e | 12694:49e9ace39874 |
---|---|
508 char *f = (char*)malloc(bi[NS]+1); | 508 char *f = (char*)malloc(bi[NS]+1); |
509 for (size_t k = 0; k < NS; k++) { | 509 for (size_t k = 0; k < NS; k++) { |
510 switch (typlist[k]) { | 510 switch (typlist[k]) { |
511 case 0xfb: | 511 case 0xfb: |
512 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); | 512 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); |
513 for (size_t m = 0; m < M; m++) { | 513 for (typeof(M) m = 0; m < M; m++) { |
514 int8_t d = *(int8_t*)(data+bi[k]+m*bi[NS]); | 514 int8_t d = *(int8_t*)(data+bi[k]+m*bi[NS]); |
515 ((double*)mxGetData(R[k]))[m] = (d>100) ? NaN : d; | 515 ((double*)mxGetData(R[k]))[m] = (d>100) ? NaN : d; |
516 } | 516 } |
517 break; | 517 break; |
518 case 0xfc: | 518 case 0xfc: |
519 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); | 519 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); |
520 if (flagSWAP) for (size_t m = 0; m < M; m++) { | 520 if (flagSWAP) for (size_t m = 0; m < M; m++) { |
521 int16_t d = (int16_t) bswap_16(*(uint16_t*)(data+bi[k]+m*bi[NS])); | 521 int16_t d = (int16_t) bswap_16(*(uint16_t*)(data+bi[k]+m*bi[NS])); |
522 ((double*)mxGetData(R[k]))[m] = (d>32740) ? NaN : d; | 522 ((double*)mxGetData(R[k]))[m] = (d>32740) ? NaN : d; |
523 } | 523 } |
524 else for (size_t m = 0; m < M; m++) { | 524 else for (typeof(M) m = 0; m < M; m++) { |
525 int16_t d = *(int16_t*)(data+bi[k]+m*bi[NS]); | 525 int16_t d = *(int16_t*)(data+bi[k]+m*bi[NS]); |
526 ((double*)mxGetData(R[k]))[m] = (d>32740) ? NaN : d; | 526 ((double*)mxGetData(R[k]))[m] = (d>32740) ? NaN : d; |
527 } | 527 } |
528 break; | 528 break; |
529 case 0xfd: | 529 case 0xfd: |
530 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); | 530 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); |
531 if (flagSWAP) for (size_t m = 0; m < M; m++) { | 531 if (flagSWAP) for (size_t m = 0; m < M; m++) { |
532 int32_t d = (int32_t)bswap_32(*(uint32_t*)(data+bi[k]+m*bi[NS])); | 532 int32_t d = (int32_t)bswap_32(*(uint32_t*)(data+bi[k]+m*bi[NS])); |
533 ((double*)mxGetData(R[k]))[m] = (d>2147483620) ? NaN : d; | 533 ((double*)mxGetData(R[k]))[m] = (d>2147483620) ? NaN : d; |
534 } | 534 } |
535 else for (size_t m = 0; m < M; m++) { | 535 else for (typeof(M) m = 0; m < M; m++) { |
536 int32_t d = *(int32_t*)(data+bi[k]+m*bi[NS]); | 536 int32_t d = *(int32_t*)(data+bi[k]+m*bi[NS]); |
537 ((double*)mxGetData(R[k]))[m] = (d>2147483620) ? NaN : d; | 537 ((double*)mxGetData(R[k]))[m] = (d>2147483620) ? NaN : d; |
538 } | 538 } |
539 break; | 539 break; |
540 case 0xfe: | 540 case 0xfe: |
546 ((uint32_t*)mxGetData(R[k]))[m] = *(uint32_t*)(data+bi[k]+m*bi[NS]); | 546 ((uint32_t*)mxGetData(R[k]))[m] = *(uint32_t*)(data+bi[k]+m*bi[NS]); |
547 } | 547 } |
548 break; | 548 break; |
549 case 0xff: | 549 case 0xff: |
550 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); | 550 R[k] = mxCreateDoubleMatrix(M, 1, mxREAL); |
551 if (flagSWAP) for (size_t m = 0; m < M; m++) { | 551 if (flagSWAP) for (typeof(M) m = 0; m < M; m++) { |
552 ((uint64_t*)mxGetData(R[k]))[m] = bswap_64(*(uint64_t*)(data+bi[k]+m*bi[NS])); | 552 ((uint64_t*)mxGetData(R[k]))[m] = bswap_64(*(uint64_t*)(data+bi[k]+m*bi[NS])); |
553 } | 553 } |
554 else for (size_t m = 0; m < M; m++) { | 554 else for (typeof(M) m = 0; m < M; m++) { |
555 ((uint64_t*)mxGetData(R[k]))[m] = *(uint64_t*)(data+bi[k]+m*bi[NS]); | 555 ((uint64_t*)mxGetData(R[k]))[m] = *(uint64_t*)(data+bi[k]+m*bi[NS]); |
556 } | 556 } |
557 break; | 557 break; |
558 default: | 558 default: |
559 R[k] = mxCreateCellMatrix(M, 1); | 559 R[k] = mxCreateCellMatrix(M, 1); |
560 size_t sz = typlist[k]; | 560 size_t sz = typlist[k]; |
561 for (size_t m = 0; m < M; m++) { | 561 for (typeof(M) m = 0; m < M; m++) { |
562 memcpy(f, data+bi[k]+m*bi[NS], sz); | 562 memcpy(f, data+bi[k]+m*bi[NS], sz); |
563 f[sz] = 0; | 563 f[sz] = 0; |
564 mxSetCell(R[k], m, mxCreateString(f)); | 564 mxSetCell(R[k], m, mxCreateString(f)); |
565 } | 565 } |
566 } | 566 } |