PageRenderTime 102ms CodeModel.GetById 45ms RepoModel.GetById 0ms app.codeStats 1ms

/other/netcdf_write_matrix/src/libsrc/t_ncxx.c

https://github.com/jbeezley/wrf-fire
C | 2951 lines | 2673 code | 235 blank | 43 comment | 644 complexity | de04b6dd36bae74776d43671fb9df79e MD5 | raw file
Possible License(s): AGPL-1.0

Large files files are truncated, but you can click here to view the full file

  1. /* Do not edit this file. It is produced from the corresponding .m4 source */
  2. /*
  3. * Copyright 1996, University Corporation for Atmospheric Research
  4. * See netcdf/COPYRIGHT file for copying and redistribution conditions.
  5. */
  6. /* "$Id: t_ncxx.m4,v 2.17 2005/05/20 14:48:14 russ Exp $" */
  7. /*
  8. * This program tests the aggregate external representation conversion
  9. * functions "ncx_[pad_]{put,get}n_*()" declared in ncx.h.
  10. * Unlike t_ncx.c, it only checks self consistency,
  11. * not consistency with the xdr library.
  12. *
  13. * Link like this:
  14. * cc t_ncxx.c ncx.o -o t_nxc
  15. * (The xdr library is not needed.)
  16. *
  17. * If an assertion fails, there is a problem.
  18. * Otherwise, the program is silent and has exit code 0.
  19. */
  20. #undef NDEBUG /* always active assert() in this file */
  21. #include <stdio.h>
  22. #include <string.h>
  23. #include <limits.h>
  24. /* alias poorly named limits.h macros */
  25. #define SHORT_MAX SHRT_MAX
  26. #define SHORT_MIN SHRT_MIN
  27. #define USHORT_MAX USHRT_MAX
  28. #include <assert.h>
  29. #include "ncx.h"
  30. #define X_SIZEOF_SCHAR X_SIZEOF_CHAR
  31. #define X_LONG_MAX X_INT_MAX
  32. #define X_LONG_MIN X_INT_MIN
  33. #define XBSZ 1024
  34. char ncxb[XBSZ];
  35. char lbuf[XBSZ];
  36. #define ArraySize(thang) (sizeof(thang)/sizeof(thang[0]))
  37. #define eSizeOf(thang) ((size_t)(sizeof(thang[0])))
  38. /*
  39. * Some test data
  40. * The ideas is that ncx_putn_type_type(...., types)
  41. * should not return NC_ERANGE.
  42. */
  43. #if SCHAR_MAX == X_SCHAR_MAX && SCHAR_MIN == X_SCHAR_MIN
  44. static schar schars[] = {
  45. SCHAR_MIN, SCHAR_MIN +1,
  46. -1, 0, 1,
  47. SCHAR_MAX - 1, SCHAR_MAX
  48. };
  49. #else
  50. /* The implementation and this test assume 8 bit bytes. */
  51. #error "Not 8 bit bytes ??"
  52. #endif
  53. static short shorts[] = {
  54. #if SHORT_MAX <= X_SHORT_MAX
  55. SHORT_MIN, SHORT_MIN + 1,
  56. # if SCHAR_MAX < X_SHORT_MAX
  57. SCHAR_MIN - 1, SCHAR_MIN, SCHAR_MIN + 1,
  58. # endif
  59. -1, 0, 1,
  60. # if SCHAR_MAX < X_SHORT_MAX
  61. SCHAR_MAX - 1, SCHAR_MAX, SCHAR_MAX + 1,
  62. # endif
  63. SHORT_MAX - 1, SHORT_MAX
  64. #else
  65. X_SHORT_MIN, X_SHORT_MIN + 1,
  66. # if SCHAR_MAX < X_SHORT_MAX
  67. SCHAR_MIN - 1, SCHAR_MIN, SCHAR_MIN + 1,
  68. # endif
  69. -1, 0, 1,
  70. # if SCHAR_MAX < X_SHORT_MAX
  71. SCHAR_MAX - 1, SCHAR_MAX, SCHAR_MAX + 1,
  72. # endif
  73. X_SHORT_MAX - 1, X_SHORT_MAX
  74. #endif
  75. };
  76. static int ints[] = {
  77. #if INT_MAX <= X_INT_MAX
  78. INT_MIN, INT_MIN +1,
  79. # if SHORT_MAX < X_INT_MAX
  80. SHORT_MIN -1, SHORT_MIN, SHORT_MIN + 1,
  81. # endif
  82. # if SCHAR_MAX < X_INT_MAX
  83. SCHAR_MIN - 1, SCHAR_MIN, SCHAR_MIN + 1,
  84. # endif
  85. -1, 0, 1,
  86. # if SCHAR_MAX < X_INT_MAX
  87. SCHAR_MAX - 1, SCHAR_MAX, SCHAR_MAX + 1,
  88. # endif
  89. # if SHORT_MAX < X_INT_MAX
  90. SHORT_MAX - 1, SHORT_MAX, SHORT_MAX +1,
  91. # endif
  92. INT_MAX - 1, INT_MAX
  93. #else
  94. X_INT_MIN, X_INT_MIN +1,
  95. # if SHORT_MAX < X_INT_MAX
  96. SHORT_MIN -1, SHORT_MIN, SHORT_MIN + 1,
  97. # endif
  98. # if SCHAR_MAX < X_INT_MAX
  99. SCHAR_MIN - 1, SCHAR_MIN, SCHAR_MIN + 1,
  100. # endif
  101. -1, 0, 1,
  102. # if SCHAR_MAX < X_INT_MAX
  103. SCHAR_MAX - 1, SCHAR_MAX, SCHAR_MAX + 1,
  104. # endif
  105. # if SHORT_MAX < X_INT_MAX
  106. SHORT_MAX - 1, SHORT_MAX, SHORT_MAX +1,
  107. # endif
  108. X_INT_MAX - 1, X_INT_MAX
  109. #endif /* INT */
  110. };
  111. /* N.B. only testing longs over X_INT range for now */
  112. static long longs[] = {
  113. #if LONG_MAX <= X_INT_MAX
  114. LONG_MIN, LONG_MIN +1,
  115. # if INT_MAX < X_INT_MAX
  116. INT_MIN -1, INT_MIN, INT_MIN + 1,
  117. # endif
  118. # if SHORT_MAX < X_INT_MAX
  119. SHORT_MIN -1, SHORT_MIN, SHORT_MIN + 1,
  120. # endif
  121. # if SCHAR_MAX < X_INT_MAX
  122. SCHAR_MIN - 1, SCHAR_MIN, SCHAR_MIN + 1,
  123. # endif
  124. -1, 0, 1,
  125. # if SCHAR_MAX < X_INT_MAX
  126. SCHAR_MAX - 1, SCHAR_MAX, SCHAR_MAX + 1,
  127. # endif
  128. # if SHORT_MAX < X_INT_MAX
  129. SHORT_MAX - 1, SHORT_MAX, SHORT_MAX +1,
  130. # endif
  131. # if INT_MAX < X_INT_MAX
  132. INT_MAX -1, INT_MAX, INT_MAX + 1,
  133. # endif
  134. LONG_MAX - 1, LONG_MAX
  135. #else
  136. X_INT_MIN, X_INT_MIN +1,
  137. # if SHORT_MAX < X_INT_MAX
  138. SHORT_MIN -1, SHORT_MIN, SHORT_MIN + 1,
  139. # endif
  140. # if SCHAR_MAX < X_INT_MAX
  141. SCHAR_MIN - 1, SCHAR_MIN, SCHAR_MIN + 1,
  142. # endif
  143. -1, 0, 1,
  144. # if SCHAR_MAX < X_INT_MAX
  145. SCHAR_MAX - 1, SCHAR_MAX, SCHAR_MAX + 1,
  146. # endif
  147. # if SHORT_MAX < X_INT_MAX
  148. SHORT_MAX - 1, SHORT_MAX, SHORT_MAX +1,
  149. # endif
  150. X_INT_MAX - 1, X_INT_MAX
  151. #endif
  152. };
  153. static float floats[] = {
  154. -1.E9F,
  155. -16777215, -16777214,
  156. -999999,
  157. -32769, -32768, -32767,
  158. -129, -128, 127,
  159. -1, 0, 1,
  160. 126, 127, 128,
  161. 32766, 32767, 32768,
  162. 999999,
  163. 16777214, 16777215, /* 2^24 -1 */
  164. 1.E9F
  165. };
  166. static double doubles[] = {
  167. -1.E20,
  168. -4503599627370495., -4503599627370494.,
  169. -999999999999999.,
  170. -1.E9,
  171. -16777215, -16777214,
  172. -999999,
  173. -32769, -32768, -32767,
  174. -129, -128, 127,
  175. -1, 0, 1,
  176. 126, 127, 128,
  177. 32766, 32767, 32768,
  178. 999999,
  179. 16777214, 16777215, /* 2^24 -1 */
  180. 1.E9,
  181. 999999999999999.,
  182. 4503599627370494., 4503599627370495., /* 2^53 -1 */
  183. 1.E20
  184. };
  185. static uchar uchars[] = {
  186. 0, 1,
  187. UCHAR_MAX/2 -1, UCHAR_MAX/2, UCHAR_MAX/2 +1,
  188. UCHAR_MAX - 1, UCHAR_MAX
  189. };
  190. /* End of test data */
  191. static void
  192. t_putn_schar_schar(char *const buf)
  193. {
  194. char *xp = buf;
  195. const schar *tp = schars;
  196. size_t nelems = ArraySize(schars);
  197. int status = ncx_putn_schar_schar((void **)&xp, nelems, tp);
  198. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  199. {
  200. size_t ii;
  201. for(ii = 0; ii < nelems; ii++)
  202. {
  203. if((double) tp[ii] > X_SCHAR_MAX)
  204. {
  205. assert(status == NC_ERANGE);
  206. return;
  207. }
  208. if((double) tp[ii] < X_SCHAR_MIN)
  209. {
  210. assert(status == NC_ERANGE);
  211. return;
  212. }
  213. }
  214. assert(status == 0);
  215. }
  216. }
  217. static void
  218. t_putn_schar_uchar(char *const buf)
  219. {
  220. char *xp = buf;
  221. const uchar *tp = uchars;
  222. size_t nelems = ArraySize(schars);
  223. int status = ncx_putn_schar_uchar((void **)&xp, nelems, tp);
  224. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  225. assert(status == 0);
  226. }
  227. static void
  228. t_putn_schar_short(char *const buf)
  229. {
  230. char *xp = buf;
  231. const short *tp = shorts;
  232. size_t nelems = ArraySize(shorts);
  233. int status = ncx_putn_schar_short((void **)&xp, nelems, tp);
  234. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  235. {
  236. size_t ii;
  237. for(ii = 0; ii < nelems; ii++)
  238. {
  239. if((double) tp[ii] > X_SCHAR_MAX)
  240. {
  241. assert(status == NC_ERANGE);
  242. return;
  243. }
  244. if((double) tp[ii] < X_SCHAR_MIN)
  245. {
  246. assert(status == NC_ERANGE);
  247. return;
  248. }
  249. }
  250. assert(status == 0);
  251. }
  252. }
  253. static void
  254. t_putn_schar_int(char *const buf)
  255. {
  256. char *xp = buf;
  257. const int *tp = ints;
  258. size_t nelems = ArraySize(ints);
  259. int status = ncx_putn_schar_int((void **)&xp, nelems, tp);
  260. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  261. {
  262. size_t ii;
  263. for(ii = 0; ii < nelems; ii++)
  264. {
  265. if((double) tp[ii] > X_SCHAR_MAX)
  266. {
  267. assert(status == NC_ERANGE);
  268. return;
  269. }
  270. if((double) tp[ii] < X_SCHAR_MIN)
  271. {
  272. assert(status == NC_ERANGE);
  273. return;
  274. }
  275. }
  276. assert(status == 0);
  277. }
  278. }
  279. static void
  280. t_putn_schar_long(char *const buf)
  281. {
  282. char *xp = buf;
  283. const long *tp = longs;
  284. size_t nelems = ArraySize(longs);
  285. int status = ncx_putn_schar_long((void **)&xp, nelems, tp);
  286. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  287. {
  288. size_t ii;
  289. for(ii = 0; ii < nelems; ii++)
  290. {
  291. if((double) tp[ii] > X_SCHAR_MAX)
  292. {
  293. assert(status == NC_ERANGE);
  294. return;
  295. }
  296. if((double) tp[ii] < X_SCHAR_MIN)
  297. {
  298. assert(status == NC_ERANGE);
  299. return;
  300. }
  301. }
  302. assert(status == 0);
  303. }
  304. }
  305. static void
  306. t_putn_schar_float(char *const buf)
  307. {
  308. char *xp = buf;
  309. const float *tp = floats;
  310. size_t nelems = ArraySize(floats);
  311. int status = ncx_putn_schar_float((void **)&xp, nelems, tp);
  312. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  313. {
  314. size_t ii;
  315. for(ii = 0; ii < nelems; ii++)
  316. {
  317. if((double) tp[ii] > X_SCHAR_MAX)
  318. {
  319. assert(status == NC_ERANGE);
  320. return;
  321. }
  322. if((double) tp[ii] < X_SCHAR_MIN)
  323. {
  324. assert(status == NC_ERANGE);
  325. return;
  326. }
  327. }
  328. assert(status == 0);
  329. }
  330. }
  331. static void
  332. t_putn_schar_double(char *const buf)
  333. {
  334. char *xp = buf;
  335. const double *tp = doubles;
  336. size_t nelems = ArraySize(doubles);
  337. int status = ncx_putn_schar_double((void **)&xp, nelems, tp);
  338. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  339. {
  340. size_t ii;
  341. for(ii = 0; ii < nelems; ii++)
  342. {
  343. if((double) tp[ii] > X_SCHAR_MAX)
  344. {
  345. assert(status == NC_ERANGE);
  346. return;
  347. }
  348. if((double) tp[ii] < X_SCHAR_MIN)
  349. {
  350. assert(status == NC_ERANGE);
  351. return;
  352. }
  353. }
  354. assert(status == 0);
  355. }
  356. }
  357. static void
  358. t_pad_putn_schar_schar(char *const buf)
  359. {
  360. char *xp = buf;
  361. const schar *tp = schars;
  362. size_t nelems = ArraySize(schars);
  363. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  364. int status = ncx_pad_putn_schar_schar((void **)&xp, nelems, tp);
  365. assert(xp >= end);
  366. assert((xp - end) < 4);
  367. assert((xp - buf)%4 == 0);
  368. {
  369. size_t ii;
  370. for(ii = 0; ii < nelems; ii++)
  371. {
  372. if((double) tp[ii] > X_SCHAR_MAX)
  373. {
  374. assert(status == NC_ERANGE);
  375. return;
  376. }
  377. if((double) tp[ii] < X_SCHAR_MIN)
  378. {
  379. assert(status == NC_ERANGE);
  380. return;
  381. }
  382. }
  383. assert(status == 0);
  384. }
  385. }
  386. static void
  387. t_pad_putn_schar_uchar(char *const buf)
  388. {
  389. char *xp = buf;
  390. const uchar *tp = uchars;
  391. size_t nelems = ArraySize(uchars);
  392. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  393. int status = ncx_pad_putn_schar_uchar((void **)&xp, nelems, tp);
  394. assert(xp >= end);
  395. assert((xp - end) < 4);
  396. assert((xp - buf)%4 == 0);
  397. assert(status == 0);
  398. }
  399. static void
  400. t_pad_putn_schar_short(char *const buf)
  401. {
  402. char *xp = buf;
  403. const short *tp = shorts;
  404. size_t nelems = ArraySize(shorts);
  405. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  406. int status = ncx_pad_putn_schar_short((void **)&xp, nelems, tp);
  407. assert(xp >= end);
  408. assert((xp - end) < 4);
  409. assert((xp - buf)%4 == 0);
  410. {
  411. size_t ii;
  412. for(ii = 0; ii < nelems; ii++)
  413. {
  414. if((double) tp[ii] > X_SCHAR_MAX)
  415. {
  416. assert(status == NC_ERANGE);
  417. return;
  418. }
  419. if((double) tp[ii] < X_SCHAR_MIN)
  420. {
  421. assert(status == NC_ERANGE);
  422. return;
  423. }
  424. }
  425. assert(status == 0);
  426. }
  427. }
  428. static void
  429. t_pad_putn_schar_int(char *const buf)
  430. {
  431. char *xp = buf;
  432. const int *tp = ints;
  433. size_t nelems = ArraySize(ints);
  434. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  435. int status = ncx_pad_putn_schar_int((void **)&xp, nelems, tp);
  436. assert(xp >= end);
  437. assert((xp - end) < 4);
  438. assert((xp - buf)%4 == 0);
  439. {
  440. size_t ii;
  441. for(ii = 0; ii < nelems; ii++)
  442. {
  443. if((double) tp[ii] > X_SCHAR_MAX)
  444. {
  445. assert(status == NC_ERANGE);
  446. return;
  447. }
  448. if((double) tp[ii] < X_SCHAR_MIN)
  449. {
  450. assert(status == NC_ERANGE);
  451. return;
  452. }
  453. }
  454. assert(status == 0);
  455. }
  456. }
  457. static void
  458. t_pad_putn_schar_long(char *const buf)
  459. {
  460. char *xp = buf;
  461. const long *tp = longs;
  462. size_t nelems = ArraySize(longs);
  463. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  464. int status = ncx_pad_putn_schar_long((void **)&xp, nelems, tp);
  465. assert(xp >= end);
  466. assert((xp - end) < 4);
  467. assert((xp - buf)%4 == 0);
  468. {
  469. size_t ii;
  470. for(ii = 0; ii < nelems; ii++)
  471. {
  472. if((double) tp[ii] > X_SCHAR_MAX)
  473. {
  474. assert(status == NC_ERANGE);
  475. return;
  476. }
  477. if((double) tp[ii] < X_SCHAR_MIN)
  478. {
  479. assert(status == NC_ERANGE);
  480. return;
  481. }
  482. }
  483. assert(status == 0);
  484. }
  485. }
  486. static void
  487. t_pad_putn_schar_float(char *const buf)
  488. {
  489. char *xp = buf;
  490. const float *tp = floats;
  491. size_t nelems = ArraySize(floats);
  492. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  493. int status = ncx_pad_putn_schar_float((void **)&xp, nelems, tp);
  494. assert(xp >= end);
  495. assert((xp - end) < 4);
  496. assert((xp - buf)%4 == 0);
  497. {
  498. size_t ii;
  499. for(ii = 0; ii < nelems; ii++)
  500. {
  501. if((double) tp[ii] > X_SCHAR_MAX)
  502. {
  503. assert(status == NC_ERANGE);
  504. return;
  505. }
  506. if((double) tp[ii] < X_SCHAR_MIN)
  507. {
  508. assert(status == NC_ERANGE);
  509. return;
  510. }
  511. }
  512. assert(status == 0);
  513. }
  514. }
  515. static void
  516. t_pad_putn_schar_double(char *const buf)
  517. {
  518. char *xp = buf;
  519. const double *tp = doubles;
  520. size_t nelems = ArraySize(doubles);
  521. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  522. int status = ncx_pad_putn_schar_double((void **)&xp, nelems, tp);
  523. assert(xp >= end);
  524. assert((xp - end) < 4);
  525. assert((xp - buf)%4 == 0);
  526. {
  527. size_t ii;
  528. for(ii = 0; ii < nelems; ii++)
  529. {
  530. if((double) tp[ii] > X_SCHAR_MAX)
  531. {
  532. assert(status == NC_ERANGE);
  533. return;
  534. }
  535. if((double) tp[ii] < X_SCHAR_MIN)
  536. {
  537. assert(status == NC_ERANGE);
  538. return;
  539. }
  540. }
  541. assert(status == 0);
  542. }
  543. }
  544. static void
  545. t_putn_short_schar(char *const buf)
  546. {
  547. char *xp = buf;
  548. const schar *tp = schars;
  549. size_t nelems = ArraySize(schars);
  550. int status = ncx_putn_short_schar((void **)&xp, nelems, tp);
  551. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  552. {
  553. size_t ii;
  554. for(ii = 0; ii < nelems; ii++)
  555. {
  556. if((double) tp[ii] > X_SHORT_MAX)
  557. {
  558. assert(status == NC_ERANGE);
  559. return;
  560. }
  561. if((double) tp[ii] < X_SHORT_MIN)
  562. {
  563. assert(status == NC_ERANGE);
  564. return;
  565. }
  566. }
  567. assert(status == 0);
  568. }
  569. }
  570. static void
  571. t_putn_short_uchar(char *const buf)
  572. {
  573. char *xp = buf;
  574. const uchar *tp = uchars;
  575. size_t nelems = ArraySize(uchars);
  576. int status = ncx_putn_short_uchar((void **)&xp, nelems, tp);
  577. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  578. {
  579. size_t ii;
  580. for(ii = 0; ii < nelems; ii++)
  581. {
  582. if((double) tp[ii] > X_SHORT_MAX)
  583. {
  584. assert(status == NC_ERANGE);
  585. return;
  586. }
  587. }
  588. assert(status == 0);
  589. }
  590. }
  591. static void
  592. t_putn_short_short(char *const buf)
  593. {
  594. char *xp = buf;
  595. const short *tp = shorts;
  596. size_t nelems = ArraySize(shorts);
  597. int status = ncx_putn_short_short((void **)&xp, nelems, tp);
  598. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  599. {
  600. size_t ii;
  601. for(ii = 0; ii < nelems; ii++)
  602. {
  603. if((double) tp[ii] > X_SHORT_MAX)
  604. {
  605. assert(status == NC_ERANGE);
  606. return;
  607. }
  608. if((double) tp[ii] < X_SHORT_MIN)
  609. {
  610. assert(status == NC_ERANGE);
  611. return;
  612. }
  613. }
  614. assert(status == 0);
  615. }
  616. }
  617. static void
  618. t_putn_short_int(char *const buf)
  619. {
  620. char *xp = buf;
  621. const int *tp = ints;
  622. size_t nelems = ArraySize(ints);
  623. int status = ncx_putn_short_int((void **)&xp, nelems, tp);
  624. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  625. {
  626. size_t ii;
  627. for(ii = 0; ii < nelems; ii++)
  628. {
  629. if((double) tp[ii] > X_SHORT_MAX)
  630. {
  631. assert(status == NC_ERANGE);
  632. return;
  633. }
  634. if((double) tp[ii] < X_SHORT_MIN)
  635. {
  636. assert(status == NC_ERANGE);
  637. return;
  638. }
  639. }
  640. assert(status == 0);
  641. }
  642. }
  643. static void
  644. t_putn_short_long(char *const buf)
  645. {
  646. char *xp = buf;
  647. const long *tp = longs;
  648. size_t nelems = ArraySize(longs);
  649. int status = ncx_putn_short_long((void **)&xp, nelems, tp);
  650. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  651. {
  652. size_t ii;
  653. for(ii = 0; ii < nelems; ii++)
  654. {
  655. if((double) tp[ii] > X_SHORT_MAX)
  656. {
  657. assert(status == NC_ERANGE);
  658. return;
  659. }
  660. if((double) tp[ii] < X_SHORT_MIN)
  661. {
  662. assert(status == NC_ERANGE);
  663. return;
  664. }
  665. }
  666. assert(status == 0);
  667. }
  668. }
  669. static void
  670. t_putn_short_float(char *const buf)
  671. {
  672. char *xp = buf;
  673. const float *tp = floats;
  674. size_t nelems = ArraySize(floats);
  675. int status = ncx_putn_short_float((void **)&xp, nelems, tp);
  676. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  677. {
  678. size_t ii;
  679. for(ii = 0; ii < nelems; ii++)
  680. {
  681. if((double) tp[ii] > X_SHORT_MAX)
  682. {
  683. assert(status == NC_ERANGE);
  684. return;
  685. }
  686. if((double) tp[ii] < X_SHORT_MIN)
  687. {
  688. assert(status == NC_ERANGE);
  689. return;
  690. }
  691. }
  692. assert(status == 0);
  693. }
  694. }
  695. static void
  696. t_putn_short_double(char *const buf)
  697. {
  698. char *xp = buf;
  699. const double *tp = doubles;
  700. size_t nelems = ArraySize(doubles);
  701. int status = ncx_putn_short_double((void **)&xp, nelems, tp);
  702. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  703. {
  704. size_t ii;
  705. for(ii = 0; ii < nelems; ii++)
  706. {
  707. if((double) tp[ii] > X_SHORT_MAX)
  708. {
  709. assert(status == NC_ERANGE);
  710. return;
  711. }
  712. if((double) tp[ii] < X_SHORT_MIN)
  713. {
  714. assert(status == NC_ERANGE);
  715. return;
  716. }
  717. }
  718. assert(status == 0);
  719. }
  720. }
  721. static void
  722. t_pad_putn_short_schar(char *const buf)
  723. {
  724. char *xp = buf;
  725. const schar *tp = schars;
  726. size_t nelems = ArraySize(schars);
  727. const char *end = buf + nelems * X_SIZEOF_SHORT;
  728. int status = ncx_pad_putn_short_schar((void **)&xp, nelems, tp);
  729. assert(xp >= end);
  730. assert((xp - end) < 4);
  731. assert((xp - buf)%4 == 0);
  732. {
  733. size_t ii;
  734. for(ii = 0; ii < nelems; ii++)
  735. {
  736. if((double) tp[ii] > X_SHORT_MAX)
  737. {
  738. assert(status == NC_ERANGE);
  739. return;
  740. }
  741. if((double) tp[ii] < X_SHORT_MIN)
  742. {
  743. assert(status == NC_ERANGE);
  744. return;
  745. }
  746. }
  747. assert(status == 0);
  748. }
  749. }
  750. static void
  751. t_pad_putn_short_uchar(char *const buf)
  752. {
  753. char *xp = buf;
  754. const uchar *tp = uchars;
  755. size_t nelems = ArraySize(uchars);
  756. const char *end = buf + nelems * X_SIZEOF_SHORT;
  757. int status = ncx_pad_putn_short_uchar((void **)&xp, nelems, tp);
  758. assert(xp >= end);
  759. assert((xp - end) < 4);
  760. assert((xp - buf)%4 == 0);
  761. {
  762. size_t ii;
  763. for(ii = 0; ii < nelems; ii++)
  764. {
  765. if(tp[ii] > X_SHORT_MAX)
  766. {
  767. assert(status == NC_ERANGE);
  768. return;
  769. }
  770. }
  771. assert(status == 0);
  772. }
  773. }
  774. static void
  775. t_pad_putn_short_short(char *const buf)
  776. {
  777. char *xp = buf;
  778. const short *tp = shorts;
  779. size_t nelems = ArraySize(shorts);
  780. const char *end = buf + nelems * X_SIZEOF_SHORT;
  781. int status = ncx_pad_putn_short_short((void **)&xp, nelems, tp);
  782. assert(xp >= end);
  783. assert((xp - end) < 4);
  784. assert((xp - buf)%4 == 0);
  785. {
  786. size_t ii;
  787. for(ii = 0; ii < nelems; ii++)
  788. {
  789. if((double) tp[ii] > X_SHORT_MAX)
  790. {
  791. assert(status == NC_ERANGE);
  792. return;
  793. }
  794. if((double) tp[ii] < X_SHORT_MIN)
  795. {
  796. assert(status == NC_ERANGE);
  797. return;
  798. }
  799. }
  800. assert(status == 0);
  801. }
  802. }
  803. static void
  804. t_pad_putn_short_int(char *const buf)
  805. {
  806. char *xp = buf;
  807. const int *tp = ints;
  808. size_t nelems = ArraySize(ints);
  809. const char *end = buf + nelems * X_SIZEOF_SHORT;
  810. int status = ncx_pad_putn_short_int((void **)&xp, nelems, tp);
  811. assert(xp >= end);
  812. assert((xp - end) < 4);
  813. assert((xp - buf)%4 == 0);
  814. {
  815. size_t ii;
  816. for(ii = 0; ii < nelems; ii++)
  817. {
  818. if((double) tp[ii] > X_SHORT_MAX)
  819. {
  820. assert(status == NC_ERANGE);
  821. return;
  822. }
  823. if((double) tp[ii] < X_SHORT_MIN)
  824. {
  825. assert(status == NC_ERANGE);
  826. return;
  827. }
  828. }
  829. assert(status == 0);
  830. }
  831. }
  832. static void
  833. t_pad_putn_short_long(char *const buf)
  834. {
  835. char *xp = buf;
  836. const long *tp = longs;
  837. size_t nelems = ArraySize(longs);
  838. const char *end = buf + nelems * X_SIZEOF_SHORT;
  839. int status = ncx_pad_putn_short_long((void **)&xp, nelems, tp);
  840. assert(xp >= end);
  841. assert((xp - end) < 4);
  842. assert((xp - buf)%4 == 0);
  843. {
  844. size_t ii;
  845. for(ii = 0; ii < nelems; ii++)
  846. {
  847. if((double) tp[ii] > X_SHORT_MAX)
  848. {
  849. assert(status == NC_ERANGE);
  850. return;
  851. }
  852. if((double) tp[ii] < X_SHORT_MIN)
  853. {
  854. assert(status == NC_ERANGE);
  855. return;
  856. }
  857. }
  858. assert(status == 0);
  859. }
  860. }
  861. static void
  862. t_pad_putn_short_float(char *const buf)
  863. {
  864. char *xp = buf;
  865. const float *tp = floats;
  866. size_t nelems = ArraySize(floats);
  867. const char *end = buf + nelems * X_SIZEOF_SHORT;
  868. int status = ncx_pad_putn_short_float((void **)&xp, nelems, tp);
  869. assert(xp >= end);
  870. assert((xp - end) < 4);
  871. assert((xp - buf)%4 == 0);
  872. {
  873. size_t ii;
  874. for(ii = 0; ii < nelems; ii++)
  875. {
  876. if((double) tp[ii] > X_SHORT_MAX)
  877. {
  878. assert(status == NC_ERANGE);
  879. return;
  880. }
  881. if((double) tp[ii] < X_SHORT_MIN)
  882. {
  883. assert(status == NC_ERANGE);
  884. return;
  885. }
  886. }
  887. assert(status == 0);
  888. }
  889. }
  890. static void
  891. t_pad_putn_short_double(char *const buf)
  892. {
  893. char *xp = buf;
  894. const double *tp = doubles;
  895. size_t nelems = ArraySize(doubles);
  896. const char *end = buf + nelems * X_SIZEOF_SHORT;
  897. int status = ncx_pad_putn_short_double((void **)&xp, nelems, tp);
  898. assert(xp >= end);
  899. assert((xp - end) < 4);
  900. assert((xp - buf)%4 == 0);
  901. {
  902. size_t ii;
  903. for(ii = 0; ii < nelems; ii++)
  904. {
  905. if((double) tp[ii] > X_SHORT_MAX)
  906. {
  907. assert(status == NC_ERANGE);
  908. return;
  909. }
  910. if((double) tp[ii] < X_SHORT_MIN)
  911. {
  912. assert(status == NC_ERANGE);
  913. return;
  914. }
  915. }
  916. assert(status == 0);
  917. }
  918. }
  919. static void
  920. t_putn_int_schar(char *const buf)
  921. {
  922. char *xp = buf;
  923. const schar *tp = schars;
  924. size_t nelems = ArraySize(schars);
  925. int status = ncx_putn_int_schar((void **)&xp, nelems, tp);
  926. assert(xp == buf + nelems * X_SIZEOF_INT);
  927. {
  928. size_t ii;
  929. for(ii = 0; ii < nelems; ii++)
  930. {
  931. if((double) tp[ii] > X_INT_MAX)
  932. {
  933. assert(status == NC_ERANGE);
  934. return;
  935. }
  936. if((double) tp[ii] < X_INT_MIN)
  937. {
  938. assert(status == NC_ERANGE);
  939. return;
  940. }
  941. }
  942. assert(status == 0);
  943. }
  944. }
  945. static void
  946. t_putn_int_uchar(char *const buf)
  947. {
  948. char *xp = buf;
  949. const uchar *tp = uchars;
  950. size_t nelems = ArraySize(uchars);
  951. int status = ncx_putn_int_uchar((void **)&xp, nelems, tp);
  952. assert(xp == buf + nelems * X_SIZEOF_INT);
  953. {
  954. size_t ii;
  955. for(ii = 0; ii < nelems; ii++)
  956. {
  957. if((double) tp[ii] > X_INT_MAX)
  958. {
  959. assert(status == NC_ERANGE);
  960. return;
  961. }
  962. }
  963. assert(status == 0);
  964. }
  965. }
  966. static void
  967. t_putn_int_short(char *const buf)
  968. {
  969. char *xp = buf;
  970. const short *tp = shorts;
  971. size_t nelems = ArraySize(shorts);
  972. int status = ncx_putn_int_short((void **)&xp, nelems, tp);
  973. assert(xp == buf + nelems * X_SIZEOF_INT);
  974. {
  975. size_t ii;
  976. for(ii = 0; ii < nelems; ii++)
  977. {
  978. if((double) tp[ii] > X_INT_MAX)
  979. {
  980. assert(status == NC_ERANGE);
  981. return;
  982. }
  983. if((double) tp[ii] < X_INT_MIN)
  984. {
  985. assert(status == NC_ERANGE);
  986. return;
  987. }
  988. }
  989. assert(status == 0);
  990. }
  991. }
  992. static void
  993. t_putn_int_int(char *const buf)
  994. {
  995. char *xp = buf;
  996. const int *tp = ints;
  997. size_t nelems = ArraySize(ints);
  998. int status = ncx_putn_int_int((void **)&xp, nelems, tp);
  999. assert(xp == buf + nelems * X_SIZEOF_INT);
  1000. {
  1001. size_t ii;
  1002. for(ii = 0; ii < nelems; ii++)
  1003. {
  1004. if((double) tp[ii] > X_INT_MAX)
  1005. {
  1006. assert(status == NC_ERANGE);
  1007. return;
  1008. }
  1009. if((double) tp[ii] < X_INT_MIN)
  1010. {
  1011. assert(status == NC_ERANGE);
  1012. return;
  1013. }
  1014. }
  1015. assert(status == 0);
  1016. }
  1017. }
  1018. static void
  1019. t_putn_int_long(char *const buf)
  1020. {
  1021. char *xp = buf;
  1022. const long *tp = longs;
  1023. size_t nelems = ArraySize(longs);
  1024. int status = ncx_putn_int_long((void **)&xp, nelems, tp);
  1025. assert(xp == buf + nelems * X_SIZEOF_INT);
  1026. {
  1027. size_t ii;
  1028. for(ii = 0; ii < nelems; ii++)
  1029. {
  1030. if((double) tp[ii] > X_INT_MAX)
  1031. {
  1032. assert(status == NC_ERANGE);
  1033. return;
  1034. }
  1035. if((double) tp[ii] < X_INT_MIN)
  1036. {
  1037. assert(status == NC_ERANGE);
  1038. return;
  1039. }
  1040. }
  1041. assert(status == 0);
  1042. }
  1043. }
  1044. static void
  1045. t_putn_int_float(char *const buf)
  1046. {
  1047. char *xp = buf;
  1048. const float *tp = floats;
  1049. size_t nelems = ArraySize(floats);
  1050. int status = ncx_putn_int_float((void **)&xp, nelems, tp);
  1051. assert(xp == buf + nelems * X_SIZEOF_INT);
  1052. {
  1053. size_t ii;
  1054. for(ii = 0; ii < nelems; ii++)
  1055. {
  1056. if((double) tp[ii] > X_INT_MAX)
  1057. {
  1058. assert(status == NC_ERANGE);
  1059. return;
  1060. }
  1061. if((double) tp[ii] < X_INT_MIN)
  1062. {
  1063. assert(status == NC_ERANGE);
  1064. return;
  1065. }
  1066. }
  1067. assert(status == 0);
  1068. }
  1069. }
  1070. static void
  1071. t_putn_int_double(char *const buf)
  1072. {
  1073. char *xp = buf;
  1074. const double *tp = doubles;
  1075. size_t nelems = ArraySize(doubles);
  1076. int status = ncx_putn_int_double((void **)&xp, nelems, tp);
  1077. assert(xp == buf + nelems * X_SIZEOF_INT);
  1078. {
  1079. size_t ii;
  1080. for(ii = 0; ii < nelems; ii++)
  1081. {
  1082. if((double) tp[ii] > X_INT_MAX)
  1083. {
  1084. assert(status == NC_ERANGE);
  1085. return;
  1086. }
  1087. if((double) tp[ii] < X_INT_MIN)
  1088. {
  1089. assert(status == NC_ERANGE);
  1090. return;
  1091. }
  1092. }
  1093. assert(status == 0);
  1094. }
  1095. }
  1096. static void
  1097. t_putn_float_schar(char *const buf)
  1098. {
  1099. char *xp = buf;
  1100. const schar *tp = schars;
  1101. size_t nelems = ArraySize(schars);
  1102. int status = ncx_putn_float_schar((void **)&xp, nelems, tp);
  1103. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1104. {
  1105. size_t ii;
  1106. for(ii = 0; ii < nelems; ii++)
  1107. {
  1108. if((double) tp[ii] > X_FLOAT_MAX)
  1109. {
  1110. assert(status == NC_ERANGE);
  1111. return;
  1112. }
  1113. if((double) tp[ii] < X_FLOAT_MIN)
  1114. {
  1115. assert(status == NC_ERANGE);
  1116. return;
  1117. }
  1118. }
  1119. assert(status == 0);
  1120. }
  1121. }
  1122. static void
  1123. t_putn_float_uchar(char *const buf)
  1124. {
  1125. char *xp = buf;
  1126. const uchar *tp = uchars;
  1127. size_t nelems = ArraySize(uchars);
  1128. int status = ncx_putn_float_uchar((void **)&xp, nelems, tp);
  1129. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1130. {
  1131. size_t ii;
  1132. for(ii = 0; ii < nelems; ii++)
  1133. {
  1134. if((double) tp[ii] > X_FLOAT_MAX)
  1135. {
  1136. assert(status == NC_ERANGE);
  1137. return;
  1138. }
  1139. }
  1140. assert(status == 0);
  1141. }
  1142. }
  1143. static void
  1144. t_putn_float_short(char *const buf)
  1145. {
  1146. char *xp = buf;
  1147. const short *tp = shorts;
  1148. size_t nelems = ArraySize(shorts);
  1149. int status = ncx_putn_float_short((void **)&xp, nelems, tp);
  1150. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1151. {
  1152. size_t ii;
  1153. for(ii = 0; ii < nelems; ii++)
  1154. {
  1155. if((double) tp[ii] > X_FLOAT_MAX)
  1156. {
  1157. assert(status == NC_ERANGE);
  1158. return;
  1159. }
  1160. if((double) tp[ii] < X_FLOAT_MIN)
  1161. {
  1162. assert(status == NC_ERANGE);
  1163. return;
  1164. }
  1165. }
  1166. assert(status == 0);
  1167. }
  1168. }
  1169. static void
  1170. t_putn_float_int(char *const buf)
  1171. {
  1172. char *xp = buf;
  1173. const int *tp = ints;
  1174. size_t nelems = ArraySize(ints);
  1175. int status = ncx_putn_float_int((void **)&xp, nelems, tp);
  1176. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1177. {
  1178. size_t ii;
  1179. for(ii = 0; ii < nelems; ii++)
  1180. {
  1181. if((double) tp[ii] > X_FLOAT_MAX)
  1182. {
  1183. assert(status == NC_ERANGE);
  1184. return;
  1185. }
  1186. if((double) tp[ii] < X_FLOAT_MIN)
  1187. {
  1188. assert(status == NC_ERANGE);
  1189. return;
  1190. }
  1191. }
  1192. assert(status == 0);
  1193. }
  1194. }
  1195. static void
  1196. t_putn_float_long(char *const buf)
  1197. {
  1198. char *xp = buf;
  1199. const long *tp = longs;
  1200. size_t nelems = ArraySize(longs);
  1201. int status = ncx_putn_float_long((void **)&xp, nelems, tp);
  1202. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1203. {
  1204. size_t ii;
  1205. for(ii = 0; ii < nelems; ii++)
  1206. {
  1207. if((double) tp[ii] > X_FLOAT_MAX)
  1208. {
  1209. assert(status == NC_ERANGE);
  1210. return;
  1211. }
  1212. if((double) tp[ii] < X_FLOAT_MIN)
  1213. {
  1214. assert(status == NC_ERANGE);
  1215. return;
  1216. }
  1217. }
  1218. assert(status == 0);
  1219. }
  1220. }
  1221. static void
  1222. t_putn_float_float(char *const buf)
  1223. {
  1224. char *xp = buf;
  1225. const float *tp = floats;
  1226. size_t nelems = ArraySize(floats);
  1227. int status = ncx_putn_float_float((void **)&xp, nelems, tp);
  1228. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1229. {
  1230. size_t ii;
  1231. for(ii = 0; ii < nelems; ii++)
  1232. {
  1233. if((double) tp[ii] > X_FLOAT_MAX)
  1234. {
  1235. assert(status == NC_ERANGE);
  1236. return;
  1237. }
  1238. if((double) tp[ii] < X_FLOAT_MIN)
  1239. {
  1240. assert(status == NC_ERANGE);
  1241. return;
  1242. }
  1243. }
  1244. assert(status == 0);
  1245. }
  1246. }
  1247. static void
  1248. t_putn_float_double(char *const buf)
  1249. {
  1250. char *xp = buf;
  1251. const double *tp = doubles;
  1252. size_t nelems = ArraySize(doubles);
  1253. int status = ncx_putn_float_double((void **)&xp, nelems, tp);
  1254. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  1255. {
  1256. size_t ii;
  1257. for(ii = 0; ii < nelems; ii++)
  1258. {
  1259. if((double) tp[ii] > X_FLOAT_MAX)
  1260. {
  1261. assert(status == NC_ERANGE);
  1262. return;
  1263. }
  1264. if((double) tp[ii] < X_FLOAT_MIN)
  1265. {
  1266. assert(status == NC_ERANGE);
  1267. return;
  1268. }
  1269. }
  1270. assert(status == 0);
  1271. }
  1272. }
  1273. static void
  1274. t_putn_double_schar(char *const buf)
  1275. {
  1276. char *xp = buf;
  1277. const schar *tp = schars;
  1278. size_t nelems = ArraySize(schars);
  1279. int status = ncx_putn_double_schar((void **)&xp, nelems, tp);
  1280. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1281. {
  1282. size_t ii;
  1283. for(ii = 0; ii < nelems; ii++)
  1284. {
  1285. if((double) tp[ii] > X_DOUBLE_MAX)
  1286. {
  1287. assert(status == NC_ERANGE);
  1288. return;
  1289. }
  1290. if((double) tp[ii] < X_DOUBLE_MIN)
  1291. {
  1292. assert(status == NC_ERANGE);
  1293. return;
  1294. }
  1295. }
  1296. assert(status == 0);
  1297. }
  1298. }
  1299. static void
  1300. t_putn_double_uchar(char *const buf)
  1301. {
  1302. char *xp = buf;
  1303. const uchar *tp = uchars;
  1304. size_t nelems = ArraySize(uchars);
  1305. int status = ncx_putn_double_uchar((void **)&xp, nelems, tp);
  1306. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1307. {
  1308. size_t ii;
  1309. for(ii = 0; ii < nelems; ii++)
  1310. {
  1311. if((double) tp[ii] > X_DOUBLE_MAX)
  1312. {
  1313. assert(status == NC_ERANGE);
  1314. return;
  1315. }
  1316. }
  1317. assert(status == 0);
  1318. }
  1319. }
  1320. static void
  1321. t_putn_double_short(char *const buf)
  1322. {
  1323. char *xp = buf;
  1324. const short *tp = shorts;
  1325. size_t nelems = ArraySize(shorts);
  1326. int status = ncx_putn_double_short((void **)&xp, nelems, tp);
  1327. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1328. {
  1329. size_t ii;
  1330. for(ii = 0; ii < nelems; ii++)
  1331. {
  1332. if((double) tp[ii] > X_DOUBLE_MAX)
  1333. {
  1334. assert(status == NC_ERANGE);
  1335. return;
  1336. }
  1337. if((double) tp[ii] < X_DOUBLE_MIN)
  1338. {
  1339. assert(status == NC_ERANGE);
  1340. return;
  1341. }
  1342. }
  1343. assert(status == 0);
  1344. }
  1345. }
  1346. static void
  1347. t_putn_double_int(char *const buf)
  1348. {
  1349. char *xp = buf;
  1350. const int *tp = ints;
  1351. size_t nelems = ArraySize(ints);
  1352. int status = ncx_putn_double_int((void **)&xp, nelems, tp);
  1353. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1354. {
  1355. size_t ii;
  1356. for(ii = 0; ii < nelems; ii++)
  1357. {
  1358. if((double) tp[ii] > X_DOUBLE_MAX)
  1359. {
  1360. assert(status == NC_ERANGE);
  1361. return;
  1362. }
  1363. if((double) tp[ii] < X_DOUBLE_MIN)
  1364. {
  1365. assert(status == NC_ERANGE);
  1366. return;
  1367. }
  1368. }
  1369. assert(status == 0);
  1370. }
  1371. }
  1372. static void
  1373. t_putn_double_long(char *const buf)
  1374. {
  1375. char *xp = buf;
  1376. const long *tp = longs;
  1377. size_t nelems = ArraySize(longs);
  1378. int status = ncx_putn_double_long((void **)&xp, nelems, tp);
  1379. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1380. {
  1381. size_t ii;
  1382. for(ii = 0; ii < nelems; ii++)
  1383. {
  1384. if((double) tp[ii] > X_DOUBLE_MAX)
  1385. {
  1386. assert(status == NC_ERANGE);
  1387. return;
  1388. }
  1389. if((double) tp[ii] < X_DOUBLE_MIN)
  1390. {
  1391. assert(status == NC_ERANGE);
  1392. return;
  1393. }
  1394. }
  1395. assert(status == 0);
  1396. }
  1397. }
  1398. static void
  1399. t_putn_double_float(char *const buf)
  1400. {
  1401. char *xp = buf;
  1402. const float *tp = floats;
  1403. size_t nelems = ArraySize(floats);
  1404. int status = ncx_putn_double_float((void **)&xp, nelems, tp);
  1405. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1406. {
  1407. size_t ii;
  1408. for(ii = 0; ii < nelems; ii++)
  1409. {
  1410. if((double) tp[ii] > X_DOUBLE_MAX)
  1411. {
  1412. assert(status == NC_ERANGE);
  1413. return;
  1414. }
  1415. if((double) tp[ii] < X_DOUBLE_MIN)
  1416. {
  1417. assert(status == NC_ERANGE);
  1418. return;
  1419. }
  1420. }
  1421. assert(status == 0);
  1422. }
  1423. }
  1424. static void
  1425. t_putn_double_double(char *const buf)
  1426. {
  1427. char *xp = buf;
  1428. const double *tp = doubles;
  1429. size_t nelems = ArraySize(doubles);
  1430. int status = ncx_putn_double_double((void **)&xp, nelems, tp);
  1431. assert(xp == buf + nelems * X_SIZEOF_DOUBLE);
  1432. {
  1433. size_t ii;
  1434. for(ii = 0; ii < nelems; ii++)
  1435. {
  1436. if((double) tp[ii] > X_DOUBLE_MAX)
  1437. {
  1438. assert(status == NC_ERANGE);
  1439. return;
  1440. }
  1441. if((double) tp[ii] < X_DOUBLE_MIN)
  1442. {
  1443. assert(status == NC_ERANGE);
  1444. return;
  1445. }
  1446. }
  1447. assert(status == 0);
  1448. }
  1449. }
  1450. static void
  1451. t_getn_schar_schar(const char *const buf)
  1452. {
  1453. const char *xp = buf;
  1454. const schar *tp = schars;
  1455. schar *lp = (schar *)lbuf;
  1456. size_t nelems = ArraySize(schars);
  1457. int status = ncx_getn_schar_schar((const void **)&xp, nelems, lp);
  1458. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1459. assert(status == 0);
  1460. {
  1461. size_t ii;
  1462. for(ii = 0; ii < nelems; ii++)
  1463. {
  1464. if(((double)tp[ii] <= X_SCHAR_MAX)
  1465. && ((double)tp[ii] >= X_SCHAR_MIN))
  1466. {
  1467. assert(tp[ii] == lp[ii]);
  1468. }
  1469. }
  1470. }
  1471. }
  1472. static void
  1473. t_getn_schar_uchar(const char *const buf)
  1474. {
  1475. const char *xp = buf;
  1476. const uchar *tp = uchars;
  1477. uchar *lp = (uchar *)lbuf;
  1478. size_t nelems = ArraySize(schars);
  1479. int status = ncx_getn_schar_uchar((const void **)&xp, nelems, lp);
  1480. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1481. assert(status == 0);
  1482. {
  1483. size_t ii;
  1484. for(ii = 0; ii < nelems; ii++)
  1485. {
  1486. assert(tp[ii] == lp[ii]);
  1487. }
  1488. }
  1489. }
  1490. static void
  1491. t_getn_schar_short(const char *const buf)
  1492. {
  1493. const char *xp = buf;
  1494. const short *tp = shorts;
  1495. short *lp = (short *)lbuf;
  1496. size_t nelems = ArraySize(shorts);
  1497. int status = ncx_getn_schar_short((const void **)&xp, nelems, lp);
  1498. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1499. assert(status == 0);
  1500. {
  1501. size_t ii;
  1502. for(ii = 0; ii < nelems; ii++)
  1503. {
  1504. if(((double)tp[ii] <= X_SCHAR_MAX)
  1505. && ((double)tp[ii] >= X_SCHAR_MIN))
  1506. {
  1507. assert(tp[ii] == lp[ii]);
  1508. }
  1509. }
  1510. }
  1511. }
  1512. static void
  1513. t_getn_schar_int(const char *const buf)
  1514. {
  1515. const char *xp = buf;
  1516. const int *tp = ints;
  1517. int *lp = (int *)lbuf;
  1518. size_t nelems = ArraySize(ints);
  1519. int status = ncx_getn_schar_int((const void **)&xp, nelems, lp);
  1520. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1521. assert(status == 0);
  1522. {
  1523. size_t ii;
  1524. for(ii = 0; ii < nelems; ii++)
  1525. {
  1526. if(((double)tp[ii] <= X_SCHAR_MAX)
  1527. && ((double)tp[ii] >= X_SCHAR_MIN))
  1528. {
  1529. assert(tp[ii] == lp[ii]);
  1530. }
  1531. }
  1532. }
  1533. }
  1534. static void
  1535. t_getn_schar_long(const char *const buf)
  1536. {
  1537. const char *xp = buf;
  1538. const long *tp = longs;
  1539. long *lp = (long *)lbuf;
  1540. size_t nelems = ArraySize(longs);
  1541. int status = ncx_getn_schar_long((const void **)&xp, nelems, lp);
  1542. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1543. assert(status == 0);
  1544. {
  1545. size_t ii;
  1546. for(ii = 0; ii < nelems; ii++)
  1547. {
  1548. if(((double)tp[ii] <= X_SCHAR_MAX)
  1549. && ((double)tp[ii] >= X_SCHAR_MIN))
  1550. {
  1551. assert(tp[ii] == lp[ii]);
  1552. }
  1553. }
  1554. }
  1555. }
  1556. static void
  1557. t_getn_schar_float(const char *const buf)
  1558. {
  1559. const char *xp = buf;
  1560. const float *tp = floats;
  1561. float *lp = (float *)lbuf;
  1562. size_t nelems = ArraySize(floats);
  1563. int status = ncx_getn_schar_float((const void **)&xp, nelems, lp);
  1564. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1565. assert(status == 0);
  1566. {
  1567. size_t ii;
  1568. for(ii = 0; ii < nelems; ii++)
  1569. {
  1570. if(((double)tp[ii] <= X_SCHAR_MAX)
  1571. && ((double)tp[ii] >= X_SCHAR_MIN))
  1572. {
  1573. assert(tp[ii] == lp[ii]);
  1574. }
  1575. }
  1576. }
  1577. }
  1578. static void
  1579. t_getn_schar_double(const char *const buf)
  1580. {
  1581. const char *xp = buf;
  1582. const double *tp = doubles;
  1583. double *lp = (double *)lbuf;
  1584. size_t nelems = ArraySize(doubles);
  1585. int status = ncx_getn_schar_double((const void **)&xp, nelems, lp);
  1586. assert(xp == buf + nelems * X_SIZEOF_SCHAR);
  1587. assert(status == 0);
  1588. {
  1589. size_t ii;
  1590. for(ii = 0; ii < nelems; ii++)
  1591. {
  1592. if(((double)tp[ii] <= X_SCHAR_MAX)
  1593. && ((double)tp[ii] >= X_SCHAR_MIN))
  1594. {
  1595. assert(tp[ii] == lp[ii]);
  1596. }
  1597. }
  1598. }
  1599. }
  1600. static void
  1601. t_pad_getn_schar_schar(const char *const buf)
  1602. {
  1603. const char *xp = buf;
  1604. const schar *tp = schars;
  1605. schar *lp = (schar *)lbuf;
  1606. size_t nelems = ArraySize(schars);
  1607. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1608. int status = ncx_pad_getn_schar_schar((const void **)&xp, nelems, lp);
  1609. assert(xp >= end);
  1610. assert((xp - end) < 4);
  1611. assert((xp - buf)%4 == 0);
  1612. assert(status == 0);
  1613. {
  1614. size_t ii;
  1615. for(ii = 0; ii < nelems; ii++)
  1616. {
  1617. if(((double) tp[ii] <= X_SCHAR_MAX)
  1618. && ((double) tp[ii] >= X_SCHAR_MIN))
  1619. {
  1620. assert(tp[ii] == lp[ii]);
  1621. }
  1622. }
  1623. }
  1624. }
  1625. static void
  1626. t_pad_getn_schar_uchar(const char *const buf)
  1627. {
  1628. const char *xp = buf;
  1629. const uchar *tp = uchars;
  1630. uchar *lp = (uchar *)lbuf;
  1631. size_t nelems = ArraySize(schars);
  1632. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1633. int status = ncx_pad_getn_schar_uchar((const void **)&xp, nelems, lp);
  1634. assert(xp >= end);
  1635. assert((xp - end) < 4);
  1636. assert((xp - buf)%4 == 0);
  1637. assert(status == 0);
  1638. {
  1639. size_t ii;
  1640. for(ii = 0; ii < nelems; ii++)
  1641. {
  1642. assert(tp[ii] == lp[ii]);
  1643. }
  1644. }
  1645. }
  1646. static void
  1647. t_pad_getn_schar_short(const char *const buf)
  1648. {
  1649. const char *xp = buf;
  1650. const short *tp = shorts;
  1651. short *lp = (short *)lbuf;
  1652. size_t nelems = ArraySize(shorts);
  1653. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1654. int status = ncx_pad_getn_schar_short((const void **)&xp, nelems, lp);
  1655. assert(xp >= end);
  1656. assert((xp - end) < 4);
  1657. assert((xp - buf)%4 == 0);
  1658. assert(status == 0);
  1659. {
  1660. size_t ii;
  1661. for(ii = 0; ii < nelems; ii++)
  1662. {
  1663. if(((double) tp[ii] <= X_SCHAR_MAX)
  1664. && ((double) tp[ii] >= X_SCHAR_MIN))
  1665. {
  1666. assert(tp[ii] == lp[ii]);
  1667. }
  1668. }
  1669. }
  1670. }
  1671. static void
  1672. t_pad_getn_schar_int(const char *const buf)
  1673. {
  1674. const char *xp = buf;
  1675. const int *tp = ints;
  1676. int *lp = (int *)lbuf;
  1677. size_t nelems = ArraySize(ints);
  1678. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1679. int status = ncx_pad_getn_schar_int((const void **)&xp, nelems, lp);
  1680. assert(xp >= end);
  1681. assert((xp - end) < 4);
  1682. assert((xp - buf)%4 == 0);
  1683. assert(status == 0);
  1684. {
  1685. size_t ii;
  1686. for(ii = 0; ii < nelems; ii++)
  1687. {
  1688. if(((double) tp[ii] <= X_SCHAR_MAX)
  1689. && ((double) tp[ii] >= X_SCHAR_MIN))
  1690. {
  1691. assert(tp[ii] == lp[ii]);
  1692. }
  1693. }
  1694. }
  1695. }
  1696. static void
  1697. t_pad_getn_schar_long(const char *const buf)
  1698. {
  1699. const char *xp = buf;
  1700. const long *tp = longs;
  1701. long *lp = (long *)lbuf;
  1702. size_t nelems = ArraySize(longs);
  1703. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1704. int status = ncx_pad_getn_schar_long((const void **)&xp, nelems, lp);
  1705. assert(xp >= end);
  1706. assert((xp - end) < 4);
  1707. assert((xp - buf)%4 == 0);
  1708. assert(status == 0);
  1709. {
  1710. size_t ii;
  1711. for(ii = 0; ii < nelems; ii++)
  1712. {
  1713. if(((double) tp[ii] <= X_SCHAR_MAX)
  1714. && ((double) tp[ii] >= X_SCHAR_MIN))
  1715. {
  1716. assert(tp[ii] == lp[ii]);
  1717. }
  1718. }
  1719. }
  1720. }
  1721. static void
  1722. t_pad_getn_schar_float(const char *const buf)
  1723. {
  1724. const char *xp = buf;
  1725. const float *tp = floats;
  1726. float *lp = (float *)lbuf;
  1727. size_t nelems = ArraySize(floats);
  1728. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1729. int status = ncx_pad_getn_schar_float((const void **)&xp, nelems, lp);
  1730. assert(xp >= end);
  1731. assert((xp - end) < 4);
  1732. assert((xp - buf)%4 == 0);
  1733. assert(status == 0);
  1734. {
  1735. size_t ii;
  1736. for(ii = 0; ii < nelems; ii++)
  1737. {
  1738. if(((double) tp[ii] <= X_SCHAR_MAX)
  1739. && ((double) tp[ii] >= X_SCHAR_MIN))
  1740. {
  1741. assert(tp[ii] == lp[ii]);
  1742. }
  1743. }
  1744. }
  1745. }
  1746. static void
  1747. t_pad_getn_schar_double(const char *const buf)
  1748. {
  1749. const char *xp = buf;
  1750. const double *tp = doubles;
  1751. double *lp = (double *)lbuf;
  1752. size_t nelems = ArraySize(doubles);
  1753. const char *end = buf + nelems * X_SIZEOF_SCHAR;
  1754. int status = ncx_pad_getn_schar_double((const void **)&xp, nelems, lp);
  1755. assert(xp >= end);
  1756. assert((xp - end) < 4);
  1757. assert((xp - buf)%4 == 0);
  1758. assert(status == 0);
  1759. {
  1760. size_t ii;
  1761. for(ii = 0; ii < nelems; ii++)
  1762. {
  1763. if(((double) tp[ii] <= X_SCHAR_MAX)
  1764. && ((double) tp[ii] >= X_SCHAR_MIN))
  1765. {
  1766. assert(tp[ii] == lp[ii]);
  1767. }
  1768. }
  1769. }
  1770. }
  1771. static void
  1772. t_getn_short_schar(const char *const buf)
  1773. {
  1774. const char *xp = buf;
  1775. const schar *tp = schars;
  1776. schar *lp = (schar *)lbuf;
  1777. size_t nelems = ArraySize(schars);
  1778. int status = ncx_getn_short_schar((const void **)&xp, nelems, lp);
  1779. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1780. assert(status == 0);
  1781. {
  1782. size_t ii;
  1783. for(ii = 0; ii < nelems; ii++)
  1784. {
  1785. if(((double)tp[ii] <= X_SHORT_MAX)
  1786. && ((double)tp[ii] >= X_SHORT_MIN))
  1787. {
  1788. assert(tp[ii] == lp[ii]);
  1789. }
  1790. }
  1791. }
  1792. }
  1793. static void
  1794. t_getn_short_uchar(const char *const buf)
  1795. {
  1796. const char *xp = buf;
  1797. const uchar *tp = uchars;
  1798. uchar *lp = (uchar *)lbuf;
  1799. size_t nelems = ArraySize(uchars);
  1800. int status = ncx_getn_short_uchar((const void **)&xp, nelems, lp);
  1801. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1802. assert(status == 0);
  1803. {
  1804. size_t ii;
  1805. for(ii = 0; ii < nelems; ii++)
  1806. {
  1807. if((double) tp[ii] <= X_SHORT_MAX)
  1808. {
  1809. assert(tp[ii] == lp[ii]);
  1810. }
  1811. }
  1812. }
  1813. }
  1814. static void
  1815. t_getn_short_short(const char *const buf)
  1816. {
  1817. const char *xp = buf;
  1818. const short *tp = shorts;
  1819. short *lp = (short *)lbuf;
  1820. size_t nelems = ArraySize(shorts);
  1821. int status = ncx_getn_short_short((const void **)&xp, nelems, lp);
  1822. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1823. assert(status == 0);
  1824. {
  1825. size_t ii;
  1826. for(ii = 0; ii < nelems; ii++)
  1827. {
  1828. if(((double)tp[ii] <= X_SHORT_MAX)
  1829. && ((double)tp[ii] >= X_SHORT_MIN))
  1830. {
  1831. assert(tp[ii] == lp[ii]);
  1832. }
  1833. }
  1834. }
  1835. }
  1836. static void
  1837. t_getn_short_int(const char *const buf)
  1838. {
  1839. const char *xp = buf;
  1840. const int *tp = ints;
  1841. int *lp = (int *)lbuf;
  1842. size_t nelems = ArraySize(ints);
  1843. int status = ncx_getn_short_int((const void **)&xp, nelems, lp);
  1844. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1845. assert(status == 0);
  1846. {
  1847. size_t ii;
  1848. for(ii = 0; ii < nelems; ii++)
  1849. {
  1850. if(((double)tp[ii] <= X_SHORT_MAX)
  1851. && ((double)tp[ii] >= X_SHORT_MIN))
  1852. {
  1853. assert(tp[ii] == lp[ii]);
  1854. }
  1855. }
  1856. }
  1857. }
  1858. static void
  1859. t_getn_short_long(const char *const buf)
  1860. {
  1861. const char *xp = buf;
  1862. const long *tp = longs;
  1863. long *lp = (long *)lbuf;
  1864. size_t nelems = ArraySize(longs);
  1865. int status = ncx_getn_short_long((const void **)&xp, nelems, lp);
  1866. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1867. assert(status == 0);
  1868. {
  1869. size_t ii;
  1870. for(ii = 0; ii < nelems; ii++)
  1871. {
  1872. if(((double)tp[ii] <= X_SHORT_MAX)
  1873. && ((double)tp[ii] >= X_SHORT_MIN))
  1874. {
  1875. assert(tp[ii] == lp[ii]);
  1876. }
  1877. }
  1878. }
  1879. }
  1880. static void
  1881. t_getn_short_float(const char *const buf)
  1882. {
  1883. const char *xp = buf;
  1884. const float *tp = floats;
  1885. float *lp = (float *)lbuf;
  1886. size_t nelems = ArraySize(floats);
  1887. int status = ncx_getn_short_float((const void **)&xp, nelems, lp);
  1888. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1889. assert(status == 0);
  1890. {
  1891. size_t ii;
  1892. for(ii = 0; ii < nelems; ii++)
  1893. {
  1894. if(((double)tp[ii] <= X_SHORT_MAX)
  1895. && ((double)tp[ii] >= X_SHORT_MIN))
  1896. {
  1897. assert(tp[ii] == lp[ii]);
  1898. }
  1899. }
  1900. }
  1901. }
  1902. static void
  1903. t_getn_short_double(const char *const buf)
  1904. {
  1905. const char *xp = buf;
  1906. const double *tp = doubles;
  1907. double *lp = (double *)lbuf;
  1908. size_t nelems = ArraySize(doubles);
  1909. int status = ncx_getn_short_double((const void **)&xp, nelems, lp);
  1910. assert(xp == buf + nelems * X_SIZEOF_SHORT);
  1911. assert(status == 0);
  1912. {
  1913. size_t ii;
  1914. for(ii = 0; ii < nelems; ii++)
  1915. {
  1916. if(((double)tp[ii] <= X_SHORT_MAX)
  1917. && ((double)tp[ii] >= X_SHORT_MIN))
  1918. {
  1919. assert(tp[ii] == lp[ii]);
  1920. }
  1921. }
  1922. }
  1923. }
  1924. static void
  1925. t_pad_getn_short_schar(const char *const buf)
  1926. {
  1927. const char *xp = buf;
  1928. const schar *tp = schars;
  1929. schar *lp = (schar *)lbuf;
  1930. size_t nelems = ArraySize(schars);
  1931. const char *end = buf + nelems * X_SIZEOF_SHORT;
  1932. int status = ncx_pad_getn_short_schar((const void **)&xp, nelems, lp);
  1933. assert(xp >= end);
  1934. assert((xp - end) < 4);
  1935. assert((xp - buf)%4 == 0);
  1936. assert(status == 0);
  1937. {
  1938. size_t ii;
  1939. for(ii = 0; ii < nelems; ii++)
  1940. {
  1941. if(((double) tp[ii] <= X_SHORT_MAX)
  1942. && ((double) tp[ii] >= X_SHORT_MIN))
  1943. {
  1944. assert(tp[ii] == lp[ii]);
  1945. }
  1946. }
  1947. }
  1948. }
  1949. static void
  1950. t_pad_getn_short_uchar(const char *const buf)
  1951. {
  1952. const char *xp = buf;
  1953. const uchar *tp = uchars;
  1954. uchar *lp = (uchar *)lbuf;
  1955. size_t nelems = ArraySize(uchars);
  1956. const char *end = buf + nelems * X_SIZEOF_SHORT;
  1957. int status = ncx_pad_getn_short_uchar((const void **)&xp, nelems, lp);
  1958. assert(xp >= end);
  1959. assert((xp - end) < 4);
  1960. assert((xp - buf)%4 == 0);
  1961. assert(status == 0);
  1962. {
  1963. size_t ii;
  1964. for(ii = 0; ii < nelems; ii++)
  1965. {
  1966. if((tp[ii] <= X_SHORT_MAX))
  1967. {
  1968. assert(tp[ii] == lp[ii]);
  1969. }
  1970. }
  1971. }
  1972. }
  1973. static void
  1974. t_pad_getn_short_short(const char *const buf)
  1975. {
  1976. const char *xp = buf;
  1977. const short *tp = shorts;
  1978. short *lp = (short *)lbuf;
  1979. size_t nelems = ArraySize(shorts);
  1980. const char *end = buf + nelems * X_SIZEOF_SHORT;
  1981. int status = ncx_pad_getn_short_short((const void **)&xp, nelems, lp);
  1982. assert(xp >= end);
  1983. assert((xp - end) < 4);
  1984. assert((xp - buf)%4 == 0);
  1985. assert(status == 0);
  1986. {
  1987. size_t ii;
  1988. for(ii = 0; ii < nelems; ii++)
  1989. {
  1990. if(((double) tp[ii] <= X_SHORT_MAX)
  1991. && ((double) tp[ii] >= X_SHORT_MIN))
  1992. {
  1993. assert(tp[ii] == lp[ii]);
  1994. }
  1995. }
  1996. }
  1997. }
  1998. static void
  1999. t_pad_getn_short_int(const char *const buf)
  2000. {
  2001. const char *xp = buf;
  2002. const int *tp = ints;
  2003. int *lp = (int *)lbuf;
  2004. size_t nelems = ArraySize(ints);
  2005. const char *end = buf + nelems * X_SIZEOF_SHORT;
  2006. int status = ncx_pad_getn_short_int((const void **)&xp, nelems, lp);
  2007. assert(xp >= end);
  2008. assert((xp - end) < 4);
  2009. assert((xp - buf)%4 == 0);
  2010. assert(status == 0);
  2011. {
  2012. size_t ii;
  2013. for(ii = 0; ii < nelems; ii++)
  2014. {
  2015. if(((double) tp[ii] <= X_SHORT_MAX)
  2016. && ((double) tp[ii] >= X_SHORT_MIN))
  2017. {
  2018. assert(tp[ii] == lp[ii]);
  2019. }
  2020. }
  2021. }
  2022. }
  2023. static void
  2024. t_pad_getn_short_long(const char *const buf)
  2025. {
  2026. const char *xp = buf;
  2027. const long *tp = longs;
  2028. long *lp = (long *)lbuf;
  2029. size_t nelems = ArraySize(longs);
  2030. const char *end = buf + nelems * X_SIZEOF_SHORT;
  2031. int status = ncx_pad_getn_short_long((const void **)&xp, nelems, lp);
  2032. assert(xp >= end);
  2033. assert((xp - end) < 4);
  2034. assert((xp - buf)%4 == 0);
  2035. assert(status == 0);
  2036. {
  2037. size_t ii;
  2038. for(ii = 0; ii < nelems; ii++)
  2039. {
  2040. if(((double) tp[ii] <= X_SHORT_MAX)
  2041. && ((double) tp[ii] >= X_SHORT_MIN))
  2042. {
  2043. assert(tp[ii] == lp[ii]);
  2044. }
  2045. }
  2046. }
  2047. }
  2048. static void
  2049. t_pad_getn_short_float(const char *const buf)
  2050. {
  2051. const char *xp = buf;
  2052. const float *tp = floats;
  2053. float *lp = (float *)lbuf;
  2054. size_t nelems = ArraySize(floats);
  2055. const char *end = buf + nelems * X_SIZEOF_SHORT;
  2056. int status = ncx_pad_getn_short_float((const void **)&xp, nelems, lp);
  2057. assert(xp >= end);
  2058. assert((xp - end) < 4);
  2059. assert((xp - buf)%4 == 0);
  2060. assert(status == 0);
  2061. {
  2062. size_t ii;
  2063. for(ii = 0; ii < nelems; ii++)
  2064. {
  2065. if(((double) tp[ii] <= X_SHORT_MAX)
  2066. && ((double) tp[ii] >= X_SHORT_MIN))
  2067. {
  2068. assert(tp[ii] == lp[ii]);
  2069. }
  2070. }
  2071. }
  2072. }
  2073. static void
  2074. t_pad_getn_short_double(const char *const buf)
  2075. {
  2076. const char *xp = buf;
  2077. const double *tp = doubles;
  2078. double *lp = (double *)lbuf;
  2079. size_t nelems = ArraySize(doubles);
  2080. const char *end = buf + nelems * X_SIZEOF_SHORT;
  2081. int status = ncx_pad_getn_short_double((const void **)&xp, nelems, lp);
  2082. assert(xp >= end);
  2083. assert((xp - end) < 4);
  2084. assert((xp - buf)%4 == 0);
  2085. assert(status == 0);
  2086. {
  2087. size_t ii;
  2088. for(ii = 0; ii < nelems; ii++)
  2089. {
  2090. if(((double) tp[ii] <= X_SHORT_MAX)
  2091. && ((double) tp[ii] >= X_SHORT_MIN))
  2092. {
  2093. assert(tp[ii] == lp[ii]);
  2094. }
  2095. }
  2096. }
  2097. }
  2098. static void
  2099. t_getn_int_schar(const char *const buf)
  2100. {
  2101. const char *xp = buf;
  2102. const schar *tp = schars;
  2103. schar *lp = (schar *)lbuf;
  2104. size_t nelems = ArraySize(schars);
  2105. int status = ncx_getn_int_schar((const void **)&xp, nelems, lp);
  2106. assert(xp == buf + nelems * X_SIZEOF_INT);
  2107. assert(status == 0);
  2108. {
  2109. size_t ii;
  2110. for(ii = 0; ii < nelems; ii++)
  2111. {
  2112. if(((double)tp[ii] <= X_INT_MAX)
  2113. && ((double)tp[ii] >= X_INT_MIN))
  2114. {
  2115. assert(tp[ii] == lp[ii]);
  2116. }
  2117. }
  2118. }
  2119. }
  2120. static void
  2121. t_getn_int_uchar(const char *const buf)
  2122. {
  2123. const char *xp = buf;
  2124. const uchar *tp = uchars;
  2125. uchar *lp = (uchar *)lbuf;
  2126. size_t nelems = ArraySize(uchars);
  2127. int status = ncx_getn_int_uchar((const void **)&xp, nelems, lp);
  2128. assert(xp == buf + nelems * X_SIZEOF_INT);
  2129. assert(status == 0);
  2130. {
  2131. size_t ii;
  2132. for(ii = 0; ii < nelems; ii++)
  2133. {
  2134. if((double) tp[ii] <= X_INT_MAX)
  2135. {
  2136. assert(tp[ii] == lp[ii]);
  2137. }
  2138. }
  2139. }
  2140. }
  2141. static void
  2142. t_getn_int_short(const char *const buf)
  2143. {
  2144. const char *xp = buf;
  2145. const short *tp = shorts;
  2146. short *lp = (short *)lbuf;
  2147. size_t nelems = ArraySize(shorts);
  2148. int status = ncx_getn_int_short((const void **)&xp, nelems, lp);
  2149. assert(xp == buf + nelems * X_SIZEOF_INT);
  2150. assert(status == 0);
  2151. {
  2152. size_t ii;
  2153. for(ii = 0; ii < nelems; ii++)
  2154. {
  2155. if(((double)tp[ii] <= X_INT_MAX)
  2156. && ((double)tp[ii] >= X_INT_MIN))
  2157. {
  2158. assert(tp[ii] == lp[ii]);
  2159. }
  2160. }
  2161. }
  2162. }
  2163. static void
  2164. t_getn_int_int(const char *const buf)
  2165. {
  2166. const char *xp = buf;
  2167. const int *tp = ints;
  2168. int *lp = (int *)lbuf;
  2169. size_t nelems = ArraySize(ints);
  2170. int status = ncx_getn_int_int((const void **)&xp, nelems, lp);
  2171. assert(xp == buf + nelems * X_SIZEOF_INT);
  2172. assert(status == 0);
  2173. {
  2174. size_t ii;
  2175. for(ii = 0; ii < nelems; ii++)
  2176. {
  2177. if(((double)tp[ii] <= X_INT_MAX)
  2178. && ((double)tp[ii] >= X_INT_MIN))
  2179. {
  2180. assert(tp[ii] == lp[ii]);
  2181. }
  2182. }
  2183. }
  2184. }
  2185. static void
  2186. t_getn_int_long(const char *const buf)
  2187. {
  2188. const char *xp = buf;
  2189. const long *tp = longs;
  2190. long *lp = (long *)lbuf;
  2191. size_t nelems = ArraySize(longs);
  2192. int status = ncx_getn_int_long((const void **)&xp, nelems, lp);
  2193. assert(xp == buf + nelems * X_SIZEOF_INT);
  2194. assert(status == 0);
  2195. {
  2196. size_t ii;
  2197. for(ii = 0; ii < nelems; ii++)
  2198. {
  2199. if(((double)tp[ii] <= X_INT_MAX)
  2200. && ((double)tp[ii] >= X_INT_MIN))
  2201. {
  2202. assert(tp[ii] == lp[ii]);
  2203. }
  2204. }
  2205. }
  2206. }
  2207. static void
  2208. t_getn_int_float(const char *const buf)
  2209. {
  2210. const char *xp = buf;
  2211. const float *tp = floats;
  2212. float *lp = (float *)lbuf;
  2213. size_t nelems = ArraySize(floats);
  2214. int status = ncx_getn_int_float((const void **)&xp, nelems, lp);
  2215. assert(xp == buf + nelems * X_SIZEOF_INT);
  2216. assert(status == 0);
  2217. {
  2218. size_t ii;
  2219. for(ii = 0; ii < nelems; ii++)
  2220. {
  2221. if(((double)tp[ii] <= X_INT_MAX)
  2222. && ((double)tp[ii] >= X_INT_MIN))
  2223. {
  2224. assert(tp[ii] == lp[ii]);
  2225. }
  2226. }
  2227. }
  2228. }
  2229. static void
  2230. t_getn_int_double(const char *const buf)
  2231. {
  2232. const char *xp = buf;
  2233. const double *tp = doubles;
  2234. double *lp = (double *)lbuf;
  2235. size_t nelems = ArraySize(doubles);
  2236. int status = ncx_getn_int_double((const void **)&xp, nelems, lp);
  2237. assert(xp == buf + nelems * X_SIZEOF_INT);
  2238. assert(status == 0);
  2239. {
  2240. size_t ii;
  2241. for(ii = 0; ii < nelems; ii++)
  2242. {
  2243. if(((double)tp[ii] <= X_INT_MAX)
  2244. && ((double)tp[ii] >= X_INT_MIN))
  2245. {
  2246. assert(tp[ii] == lp[ii]);
  2247. }
  2248. }
  2249. }
  2250. }
  2251. static void
  2252. t_getn_float_schar(const char *const buf)
  2253. {
  2254. const char *xp = buf;
  2255. const schar *tp = schars;
  2256. schar *lp = (schar *)lbuf;
  2257. size_t nelems = ArraySize(schars);
  2258. int status = ncx_getn_float_schar((const void **)&xp, nelems, lp);
  2259. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  2260. assert(status == 0);
  2261. {
  2262. size_t ii;
  2263. for(ii = 0; ii < nelems; ii++)
  2264. {
  2265. if(((double)tp[ii] <= X_FLOAT_MAX)
  2266. && ((double)tp[ii] >= X_FLOAT_MIN))
  2267. {
  2268. assert(tp[ii] == lp[ii]);
  2269. }
  2270. }
  2271. }
  2272. }
  2273. static void
  2274. t_getn_float_uchar(const char *const buf)
  2275. {
  2276. const char *xp = buf;
  2277. const uchar *tp = uchars;
  2278. uchar *lp = (uchar *)lbuf;
  2279. size_t nelems = ArraySize(uchars);
  2280. int status = ncx_getn_float_uchar((const void **)&xp, nelems, lp);
  2281. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  2282. assert(status == 0);
  2283. {
  2284. size_t ii;
  2285. for(ii = 0; ii < nelems; ii++)
  2286. {
  2287. if((double) tp[ii] <= X_FLOAT_MAX)
  2288. {
  2289. assert(tp[ii] == lp[ii]);
  2290. }
  2291. }
  2292. }
  2293. }
  2294. static void
  2295. t_getn_float_short(const char *const buf)
  2296. {
  2297. const char *xp = buf;
  2298. const short *tp = shorts;
  2299. short *lp = (short *)lbuf;
  2300. size_t nelems = ArraySize(shorts);
  2301. int status = ncx_getn_float_short((const void **)&xp, nelems, lp);
  2302. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  2303. assert(status == 0);
  2304. {
  2305. size_t ii;
  2306. for(ii = 0; ii < nelems; ii++)
  2307. {
  2308. if(((double)tp[ii] <= X_FLOAT_MAX)
  2309. && ((double)tp[ii] >= X_FLOAT_MIN))
  2310. {
  2311. assert(tp[ii] == lp[ii]);
  2312. }
  2313. }
  2314. }
  2315. }
  2316. static void
  2317. t_getn_float_int(const char *const buf)
  2318. {
  2319. const char *xp = buf;
  2320. const int *tp = ints;
  2321. int *lp = (int *)lbuf;
  2322. size_t nelems = ArraySize(ints);
  2323. int status = ncx_getn_float_int((const void **)&xp, nelems, lp);
  2324. assert(xp == buf + nelems * X_SIZEOF_FLOAT);
  2325. /* If the system rounds up can get NC_ERANGE */
  2326. assert(status == 0 || status == NC_ERANGE);
  2327. {
  2328. size_t ii;
  2329. for(ii = 0; ii < nelems; ii++)
  2330. {
  2331. /* limited by x_float mantissa nbits */
  2332. if((tp[ii] <= 16777215)
  2333. && (tp[ii] >= -16777215))
  2334. {
  2335. assert(tp[ii] == lp[ii]);
  2336. }
  2337. }
  2338. }
  2339. }
  2340. static void
  2341. t_getn_float_long(const char *const buf)
  2342. {
  2343. const char *xp = buf;
  2344. const long *tp = longs;
  2345. long *lp = (long *)lbuf;
  2346. size_t nelems = ArraySize(longs);
  2347. int status = ncx_getn_float_long((const void **)&xp, ne

Large files files are truncated, but you can click here to view the full file