Mercurial > octave
comparison src/ov-re-sparse.cc @ 11586:12df7854fa7c
strip trailing whitespace from source files
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 20 Jan 2011 17:24:59 -0500 |
parents | fd0a3ac60b0e |
children | 72c96de7a403 |
comparison
equal
deleted
inserted
replaced
11585:1473d0cf86d2 | 11586:12df7854fa7c |
---|---|
163 for (octave_idx_type i = matrix.cidx(j); i < matrix.cidx(j+1); i++) | 163 for (octave_idx_type i = matrix.cidx(j); i < matrix.cidx(j+1); i++) |
164 retval(matrix.ridx(i) + nr * j) = static_cast<char>(matrix.data (i)); | 164 retval(matrix.ridx(i) + nr * j) = static_cast<char>(matrix.data (i)); |
165 | 165 |
166 return retval; | 166 return retval; |
167 } | 167 } |
168 | 168 |
169 ComplexMatrix | 169 ComplexMatrix |
170 octave_sparse_matrix::complex_matrix_value (bool) const | 170 octave_sparse_matrix::complex_matrix_value (bool) const |
171 { | 171 { |
172 return ComplexMatrix (matrix.matrix_value ()); | 172 return ComplexMatrix (matrix.matrix_value ()); |
173 } | 173 } |
176 octave_sparse_matrix::complex_array_value (bool) const | 176 octave_sparse_matrix::complex_array_value (bool) const |
177 { | 177 { |
178 return ComplexNDArray (ComplexMatrix (matrix.matrix_value ())); | 178 return ComplexNDArray (ComplexMatrix (matrix.matrix_value ())); |
179 } | 179 } |
180 | 180 |
181 NDArray | 181 NDArray |
182 octave_sparse_matrix::array_value (bool) const | 182 octave_sparse_matrix::array_value (bool) const |
183 { | 183 { |
184 return NDArray (matrix.matrix_value ()); | 184 return NDArray (matrix.matrix_value ()); |
185 } | 185 } |
186 | 186 |
187 SparseBoolMatrix | 187 SparseBoolMatrix |
188 octave_sparse_matrix::sparse_bool_matrix_value (bool warn) const | 188 octave_sparse_matrix::sparse_bool_matrix_value (bool warn) const |
189 { | 189 { |
190 if (matrix.any_element_is_nan ()) | 190 if (matrix.any_element_is_nan ()) |
191 gripe_nan_to_logical_conversion (); | 191 gripe_nan_to_logical_conversion (); |
192 else if (warn && matrix.any_element_not_one_or_zero ()) | 192 else if (warn && matrix.any_element_not_one_or_zero ()) |
210 else | 210 else |
211 { | 211 { |
212 octave_idx_type nr = matrix.rows (); | 212 octave_idx_type nr = matrix.rows (); |
213 octave_idx_type nc = matrix.cols (); | 213 octave_idx_type nc = matrix.cols (); |
214 charNDArray chm (dv, static_cast<char> (0)); | 214 charNDArray chm (dv, static_cast<char> (0)); |
215 | 215 |
216 bool warned = false; | 216 bool warned = false; |
217 | 217 |
218 for (octave_idx_type j = 0; j < nc; j++) | 218 for (octave_idx_type j = 0; j < nc; j++) |
219 for (octave_idx_type i = matrix.cidx(j); | 219 for (octave_idx_type i = matrix.cidx(j); |
220 i < matrix.cidx(j+1); i++) | 220 i < matrix.cidx(j+1); i++) |
221 { | 221 { |
222 octave_quit (); | 222 octave_quit (); |
223 | 223 |
224 double d = matrix.data (i); | 224 double d = matrix.data (i); |
244 ::warning ("range error for conversion to character value"); | 244 ::warning ("range error for conversion to character value"); |
245 warned = true; | 245 warned = true; |
246 } | 246 } |
247 } | 247 } |
248 | 248 |
249 chm (matrix.ridx(i) + j * nr) = | 249 chm (matrix.ridx(i) + j * nr) = |
250 static_cast<char> (ival); | 250 static_cast<char> (ival); |
251 } | 251 } |
252 } | 252 } |
253 | 253 |
254 retval = octave_value (chm, type); | 254 retval = octave_value (chm, type); |
255 } | 255 } |
256 | 256 |
257 return retval; | 257 return retval; |
258 } | 258 } |
259 | 259 |
260 bool | 260 bool |
261 octave_sparse_matrix::save_binary (std::ostream& os, bool&save_as_floats) | 261 octave_sparse_matrix::save_binary (std::ostream& os, bool&save_as_floats) |
262 { | 262 { |
263 dim_vector d = this->dims (); | 263 dim_vector d = this->dims (); |
264 if (d.length() < 1) | 264 if (d.length() < 1) |
265 return false; | 265 return false; |
271 int nc = d(1); | 271 int nc = d(1); |
272 int nz = nnz (); | 272 int nz = nnz (); |
273 | 273 |
274 int32_t itmp; | 274 int32_t itmp; |
275 // Use negative value for ndims to be consistent with other formats | 275 // Use negative value for ndims to be consistent with other formats |
276 itmp= -2; | 276 itmp= -2; |
277 os.write (reinterpret_cast<char *> (&itmp), 4); | 277 os.write (reinterpret_cast<char *> (&itmp), 4); |
278 | 278 |
279 itmp= nr; | 279 itmp= nr; |
280 os.write (reinterpret_cast<char *> (&itmp), 4); | 280 os.write (reinterpret_cast<char *> (&itmp), 4); |
281 | 281 |
282 itmp= nc; | 282 itmp= nc; |
283 os.write (reinterpret_cast<char *> (&itmp), 4); | 283 os.write (reinterpret_cast<char *> (&itmp), 4); |
284 | 284 |
285 itmp= nz; | 285 itmp= nz; |
286 os.write (reinterpret_cast<char *> (&itmp), 4); | 286 os.write (reinterpret_cast<char *> (&itmp), 4); |
287 | 287 |
288 save_type st = LS_DOUBLE; | 288 save_type st = LS_DOUBLE; |
289 if (save_as_floats) | 289 if (save_as_floats) |
303 st = get_save_type (max_val, min_val); | 303 st = get_save_type (max_val, min_val); |
304 } | 304 } |
305 | 305 |
306 // add one to the printed indices to go from | 306 // add one to the printed indices to go from |
307 // zero-based to one-based arrays | 307 // zero-based to one-based arrays |
308 for (int i = 0; i < nc+1; i++) | 308 for (int i = 0; i < nc+1; i++) |
309 { | 309 { |
310 octave_quit (); | 310 octave_quit (); |
311 itmp = matrix.cidx(i); | 311 itmp = matrix.cidx(i); |
312 os.write (reinterpret_cast<char *> (&itmp), 4); | 312 os.write (reinterpret_cast<char *> (&itmp), 4); |
313 } | 313 } |
314 | 314 |
315 for (int i = 0; i < nz; i++) | 315 for (int i = 0; i < nz; i++) |
316 { | 316 { |
317 octave_quit (); | 317 octave_quit (); |
318 itmp = matrix.ridx(i); | 318 itmp = matrix.ridx(i); |
319 os.write (reinterpret_cast<char *> (&itmp), 4); | 319 os.write (reinterpret_cast<char *> (&itmp), 4); |
320 } | 320 } |
321 | 321 |
322 write_doubles (os, matrix.data(), st, nz); | 322 write_doubles (os, matrix.data(), st, nz); |
323 | 323 |
358 | 358 |
359 SparseMatrix m (static_cast<octave_idx_type> (nr), | 359 SparseMatrix m (static_cast<octave_idx_type> (nr), |
360 static_cast<octave_idx_type> (nc), | 360 static_cast<octave_idx_type> (nc), |
361 static_cast<octave_idx_type> (nz)); | 361 static_cast<octave_idx_type> (nz)); |
362 | 362 |
363 for (int i = 0; i < nc+1; i++) | 363 for (int i = 0; i < nc+1; i++) |
364 { | 364 { |
365 octave_quit (); | 365 octave_quit (); |
366 if (! is.read (reinterpret_cast<char *> (&tmp), 4)) | 366 if (! is.read (reinterpret_cast<char *> (&tmp), 4)) |
367 return false; | 367 return false; |
368 if (swap) | 368 if (swap) |
369 swap_bytes<4> (&tmp); | 369 swap_bytes<4> (&tmp); |
370 m.xcidx(i) = tmp; | 370 m.xcidx(i) = tmp; |
371 } | 371 } |
372 | 372 |
373 for (int i = 0; i < nz; i++) | 373 for (int i = 0; i < nz; i++) |
374 { | 374 { |
375 octave_quit (); | 375 octave_quit (); |
376 if (! is.read (reinterpret_cast<char *> (&tmp), 4)) | 376 if (! is.read (reinterpret_cast<char *> (&tmp), 4)) |
377 return false; | 377 return false; |
378 if (swap) | 378 if (swap) |
380 m.xridx(i) = tmp; | 380 m.xridx(i) = tmp; |
381 } | 381 } |
382 | 382 |
383 if (! is.read (reinterpret_cast<char *> (&ctmp), 1)) | 383 if (! is.read (reinterpret_cast<char *> (&ctmp), 1)) |
384 return false; | 384 return false; |
385 | 385 |
386 read_doubles (is, m.xdata (), static_cast<save_type> (ctmp), nz, swap, fmt); | 386 read_doubles (is, m.xdata (), static_cast<save_type> (ctmp), nz, swap, fmt); |
387 | 387 |
388 if (error_state || ! is) | 388 if (error_state || ! is) |
389 return false; | 389 return false; |
390 | 390 |
397 } | 397 } |
398 | 398 |
399 #if defined (HAVE_HDF5) | 399 #if defined (HAVE_HDF5) |
400 | 400 |
401 bool | 401 bool |
402 octave_sparse_matrix::save_hdf5 (hid_t loc_id, const char *name, | 402 octave_sparse_matrix::save_hdf5 (hid_t loc_id, const char *name, |
403 bool save_as_floats) | 403 bool save_as_floats) |
404 { | 404 { |
405 dim_vector dv = dims (); | 405 dim_vector dv = dims (); |
406 int empty = save_hdf5_empty (loc_id, name, dv); | 406 int empty = save_hdf5_empty (loc_id, name, dv); |
407 if (empty) | 407 if (empty) |
423 SparseMatrix m = sparse_matrix_value (); | 423 SparseMatrix m = sparse_matrix_value (); |
424 octave_idx_type tmp; | 424 octave_idx_type tmp; |
425 hsize_t hdims[2]; | 425 hsize_t hdims[2]; |
426 | 426 |
427 space_hid = H5Screate_simple (0, hdims, 0); | 427 space_hid = H5Screate_simple (0, hdims, 0); |
428 if (space_hid < 0) | 428 if (space_hid < 0) |
429 { | 429 { |
430 H5Gclose (group_hid); | 430 H5Gclose (group_hid); |
431 return false; | 431 return false; |
432 } | 432 } |
433 #if HAVE_HDF5_18 | 433 #if HAVE_HDF5_18 |
434 data_hid = H5Dcreate (group_hid, "nr", H5T_NATIVE_IDX, space_hid, | 434 data_hid = H5Dcreate (group_hid, "nr", H5T_NATIVE_IDX, space_hid, |
435 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 435 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
436 #else | 436 #else |
437 data_hid = H5Dcreate (group_hid, "nr", H5T_NATIVE_IDX, space_hid, | 437 data_hid = H5Dcreate (group_hid, "nr", H5T_NATIVE_IDX, space_hid, |
438 H5P_DEFAULT); | 438 H5P_DEFAULT); |
439 #endif | 439 #endif |
440 if (data_hid < 0) | 440 if (data_hid < 0) |
441 { | 441 { |
442 H5Sclose (space_hid); | 442 H5Sclose (space_hid); |
443 H5Gclose (group_hid); | 443 H5Gclose (group_hid); |
444 return false; | 444 return false; |
445 } | 445 } |
446 | 446 |
447 tmp = m.rows (); | 447 tmp = m.rows (); |
448 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 448 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
449 &tmp) >= 0; | 449 &tmp) >= 0; |
450 H5Dclose (data_hid); | 450 H5Dclose (data_hid); |
451 if (!retval) | 451 if (!retval) |
452 { | 452 { |
453 H5Sclose (space_hid); | 453 H5Sclose (space_hid); |
454 H5Gclose (group_hid); | 454 H5Gclose (group_hid); |
455 return false; | 455 return false; |
456 } | 456 } |
457 #if HAVE_HDF5_18 | 457 #if HAVE_HDF5_18 |
458 data_hid = H5Dcreate (group_hid, "nc", H5T_NATIVE_IDX, space_hid, | 458 data_hid = H5Dcreate (group_hid, "nc", H5T_NATIVE_IDX, space_hid, |
459 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 459 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
460 #else | 460 #else |
461 data_hid = H5Dcreate (group_hid, "nc", H5T_NATIVE_IDX, space_hid, | 461 data_hid = H5Dcreate (group_hid, "nc", H5T_NATIVE_IDX, space_hid, |
462 H5P_DEFAULT); | 462 H5P_DEFAULT); |
463 #endif | 463 #endif |
464 if (data_hid < 0) | 464 if (data_hid < 0) |
465 { | 465 { |
466 H5Sclose (space_hid); | 466 H5Sclose (space_hid); |
467 H5Gclose (group_hid); | 467 H5Gclose (group_hid); |
468 return false; | 468 return false; |
469 } | 469 } |
470 | 470 |
471 tmp = m.cols (); | 471 tmp = m.cols (); |
472 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 472 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
473 &tmp) >= 0; | 473 &tmp) >= 0; |
474 H5Dclose (data_hid); | 474 H5Dclose (data_hid); |
475 if (!retval) | 475 if (!retval) |
476 { | 476 { |
477 H5Sclose (space_hid); | 477 H5Sclose (space_hid); |
478 H5Gclose (group_hid); | 478 H5Gclose (group_hid); |
479 return false; | 479 return false; |
480 } | 480 } |
481 | 481 |
482 #if HAVE_HDF5_18 | 482 #if HAVE_HDF5_18 |
483 data_hid = H5Dcreate (group_hid, "nz", H5T_NATIVE_IDX, space_hid, | 483 data_hid = H5Dcreate (group_hid, "nz", H5T_NATIVE_IDX, space_hid, |
484 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 484 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
485 #else | 485 #else |
486 data_hid = H5Dcreate (group_hid, "nz", H5T_NATIVE_IDX, space_hid, | 486 data_hid = H5Dcreate (group_hid, "nz", H5T_NATIVE_IDX, space_hid, |
487 H5P_DEFAULT); | 487 H5P_DEFAULT); |
488 #endif | 488 #endif |
489 if (data_hid < 0) | 489 if (data_hid < 0) |
490 { | 490 { |
491 H5Sclose (space_hid); | 491 H5Sclose (space_hid); |
492 H5Gclose (group_hid); | 492 H5Gclose (group_hid); |
493 return false; | 493 return false; |
494 } | 494 } |
495 | 495 |
496 tmp = m.nnz (); | 496 tmp = m.nnz (); |
497 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 497 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
498 &tmp) >= 0; | 498 &tmp) >= 0; |
499 H5Dclose (data_hid); | 499 H5Dclose (data_hid); |
500 if (!retval) | 500 if (!retval) |
509 hdims[0] = m.cols() + 1; | 509 hdims[0] = m.cols() + 1; |
510 hdims[1] = 1; | 510 hdims[1] = 1; |
511 | 511 |
512 space_hid = H5Screate_simple (2, hdims, 0); | 512 space_hid = H5Screate_simple (2, hdims, 0); |
513 | 513 |
514 if (space_hid < 0) | 514 if (space_hid < 0) |
515 { | 515 { |
516 H5Gclose (group_hid); | 516 H5Gclose (group_hid); |
517 return false; | 517 return false; |
518 } | 518 } |
519 | 519 |
520 #if HAVE_HDF5_18 | 520 #if HAVE_HDF5_18 |
521 data_hid = H5Dcreate (group_hid, "cidx", H5T_NATIVE_IDX, space_hid, | 521 data_hid = H5Dcreate (group_hid, "cidx", H5T_NATIVE_IDX, space_hid, |
522 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 522 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
523 #else | 523 #else |
524 data_hid = H5Dcreate (group_hid, "cidx", H5T_NATIVE_IDX, space_hid, | 524 data_hid = H5Dcreate (group_hid, "cidx", H5T_NATIVE_IDX, space_hid, |
525 H5P_DEFAULT); | 525 H5P_DEFAULT); |
526 #endif | 526 #endif |
527 if (data_hid < 0) | 527 if (data_hid < 0) |
528 { | 528 { |
529 H5Sclose (space_hid); | 529 H5Sclose (space_hid); |
530 H5Gclose (group_hid); | 530 H5Gclose (group_hid); |
531 return false; | 531 return false; |
532 } | 532 } |
533 | 533 |
534 octave_idx_type * itmp = m.xcidx (); | 534 octave_idx_type * itmp = m.xcidx (); |
535 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 535 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
536 itmp) >= 0; | 536 itmp) >= 0; |
537 H5Dclose (data_hid); | 537 H5Dclose (data_hid); |
538 if (!retval) | 538 if (!retval) |
539 { | 539 { |
540 H5Sclose (space_hid); | 540 H5Sclose (space_hid); |
541 H5Gclose (group_hid); | 541 H5Gclose (group_hid); |
542 return false; | 542 return false; |
543 } | 543 } |
544 | 544 |
545 H5Sclose (space_hid); | 545 H5Sclose (space_hid); |
546 | 546 |
547 hdims[0] = m.nnz (); | 547 hdims[0] = m.nnz (); |
548 hdims[1] = 1; | 548 hdims[1] = 1; |
549 | 549 |
550 space_hid = H5Screate_simple (2, hdims, 0); | 550 space_hid = H5Screate_simple (2, hdims, 0); |
551 | 551 |
552 if (space_hid < 0) | 552 if (space_hid < 0) |
553 { | 553 { |
554 H5Gclose (group_hid); | 554 H5Gclose (group_hid); |
555 return false; | 555 return false; |
556 } | 556 } |
557 #if HAVE_HDF5_18 | 557 #if HAVE_HDF5_18 |
558 data_hid = H5Dcreate (group_hid, "ridx", H5T_NATIVE_IDX, space_hid, | 558 data_hid = H5Dcreate (group_hid, "ridx", H5T_NATIVE_IDX, space_hid, |
559 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 559 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
560 #else | 560 #else |
561 data_hid = H5Dcreate (group_hid, "ridx", H5T_NATIVE_IDX, space_hid, | 561 data_hid = H5Dcreate (group_hid, "ridx", H5T_NATIVE_IDX, space_hid, |
562 H5P_DEFAULT); | 562 H5P_DEFAULT); |
563 #endif | 563 #endif |
564 if (data_hid < 0) | 564 if (data_hid < 0) |
565 { | 565 { |
566 H5Sclose (space_hid); | 566 H5Sclose (space_hid); |
567 H5Gclose (group_hid); | 567 H5Gclose (group_hid); |
568 return false; | 568 return false; |
569 } | 569 } |
570 | 570 |
571 itmp = m.xridx (); | 571 itmp = m.xridx (); |
572 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, | 572 retval = H5Dwrite (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, H5P_DEFAULT, |
573 itmp) >= 0; | 573 itmp) >= 0; |
574 H5Dclose (data_hid); | 574 H5Dclose (data_hid); |
575 if (!retval) | 575 if (!retval) |
602 = save_type_to_hdf5 (get_save_type (max_val, min_val)); | 602 = save_type_to_hdf5 (get_save_type (max_val, min_val)); |
603 } | 603 } |
604 #endif /* HAVE_HDF5_INT2FLOAT_CONVERSIONS */ | 604 #endif /* HAVE_HDF5_INT2FLOAT_CONVERSIONS */ |
605 | 605 |
606 #if HAVE_HDF5_18 | 606 #if HAVE_HDF5_18 |
607 data_hid = H5Dcreate (group_hid, "data", save_type_hid, space_hid, | 607 data_hid = H5Dcreate (group_hid, "data", save_type_hid, space_hid, |
608 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); | 608 H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); |
609 #else | 609 #else |
610 data_hid = H5Dcreate (group_hid, "data", save_type_hid, space_hid, | 610 data_hid = H5Dcreate (group_hid, "data", save_type_hid, space_hid, |
611 H5P_DEFAULT); | 611 H5P_DEFAULT); |
612 #endif | 612 #endif |
613 if (data_hid < 0) | 613 if (data_hid < 0) |
614 { | 614 { |
615 H5Sclose (space_hid); | 615 H5Sclose (space_hid); |
616 H5Gclose (group_hid); | 616 H5Gclose (group_hid); |
617 return false; | 617 return false; |
618 } | 618 } |
619 | 619 |
620 double * dtmp = m.xdata (); | 620 double * dtmp = m.xdata (); |
621 retval = H5Dwrite (data_hid, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, | 621 retval = H5Dwrite (data_hid, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, |
622 H5P_DEFAULT, dtmp) >= 0; | 622 H5P_DEFAULT, dtmp) >= 0; |
623 H5Dclose (data_hid); | 623 H5Dclose (data_hid); |
624 H5Sclose (space_hid); | 624 H5Sclose (space_hid); |
631 octave_sparse_matrix::load_hdf5 (hid_t loc_id, const char *name) | 631 octave_sparse_matrix::load_hdf5 (hid_t loc_id, const char *name) |
632 { | 632 { |
633 octave_idx_type nr, nc, nz; | 633 octave_idx_type nr, nc, nz; |
634 hid_t group_hid, data_hid, space_hid; | 634 hid_t group_hid, data_hid, space_hid; |
635 hsize_t rank; | 635 hsize_t rank; |
636 | 636 |
637 dim_vector dv; | 637 dim_vector dv; |
638 int empty = load_hdf5_empty (loc_id, name, dv); | 638 int empty = load_hdf5_empty (loc_id, name, dv); |
639 if (empty > 0) | 639 if (empty > 0) |
640 matrix.resize(dv); | 640 matrix.resize(dv); |
641 if (empty) | 641 if (empty) |
642 return (empty > 0); | 642 return (empty > 0); |
643 | 643 |
644 #if HAVE_HDF5_18 | 644 #if HAVE_HDF5_18 |
645 group_hid = H5Gopen (loc_id, name, H5P_DEFAULT); | 645 group_hid = H5Gopen (loc_id, name, H5P_DEFAULT); |
646 #else | 646 #else |
647 group_hid = H5Gopen (loc_id, name); | 647 group_hid = H5Gopen (loc_id, name); |
648 #endif | 648 #endif |
655 #endif | 655 #endif |
656 space_hid = H5Dget_space (data_hid); | 656 space_hid = H5Dget_space (data_hid); |
657 rank = H5Sget_simple_extent_ndims (space_hid); | 657 rank = H5Sget_simple_extent_ndims (space_hid); |
658 | 658 |
659 if (rank != 0) | 659 if (rank != 0) |
660 { | 660 { |
661 H5Dclose (data_hid); | 661 H5Dclose (data_hid); |
662 H5Gclose (group_hid); | 662 H5Gclose (group_hid); |
663 return false; | 663 return false; |
664 } | 664 } |
665 | 665 |
666 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, | 666 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, |
667 H5P_DEFAULT, &nr) < 0) | 667 H5P_DEFAULT, &nr) < 0) |
668 { | 668 { |
669 H5Dclose (data_hid); | 669 H5Dclose (data_hid); |
670 H5Gclose (group_hid); | 670 H5Gclose (group_hid); |
671 return false; | 671 return false; |
672 } | 672 } |
673 | 673 |
680 #endif | 680 #endif |
681 space_hid = H5Dget_space (data_hid); | 681 space_hid = H5Dget_space (data_hid); |
682 rank = H5Sget_simple_extent_ndims (space_hid); | 682 rank = H5Sget_simple_extent_ndims (space_hid); |
683 | 683 |
684 if (rank != 0) | 684 if (rank != 0) |
685 { | 685 { |
686 H5Dclose (data_hid); | 686 H5Dclose (data_hid); |
687 H5Gclose (group_hid); | 687 H5Gclose (group_hid); |
688 return false; | 688 return false; |
689 } | 689 } |
690 | 690 |
691 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, | 691 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, |
692 H5P_DEFAULT, &nc) < 0) | 692 H5P_DEFAULT, &nc) < 0) |
693 { | 693 { |
694 H5Dclose (data_hid); | 694 H5Dclose (data_hid); |
695 H5Gclose (group_hid); | 695 H5Gclose (group_hid); |
696 return false; | 696 return false; |
697 } | 697 } |
698 | 698 |
699 H5Dclose (data_hid); | 699 H5Dclose (data_hid); |
700 | 700 |
701 #if HAVE_HDF5_18 | 701 #if HAVE_HDF5_18 |
702 data_hid = H5Dopen (group_hid, "nz", H5P_DEFAULT); | 702 data_hid = H5Dopen (group_hid, "nz", H5P_DEFAULT); |
703 #else | 703 #else |
704 data_hid = H5Dopen (group_hid, "nz"); | 704 data_hid = H5Dopen (group_hid, "nz"); |
705 #endif | 705 #endif |
706 space_hid = H5Dget_space (data_hid); | 706 space_hid = H5Dget_space (data_hid); |
707 rank = H5Sget_simple_extent_ndims (space_hid); | 707 rank = H5Sget_simple_extent_ndims (space_hid); |
708 | 708 |
709 if (rank != 0) | 709 if (rank != 0) |
710 { | 710 { |
711 H5Dclose (data_hid); | 711 H5Dclose (data_hid); |
712 H5Gclose (group_hid); | 712 H5Gclose (group_hid); |
713 return false; | 713 return false; |
714 } | 714 } |
715 | 715 |
716 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, | 716 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, |
717 H5P_DEFAULT, &nz) < 0) | 717 H5P_DEFAULT, &nz) < 0) |
718 { | 718 { |
719 H5Dclose (data_hid); | 719 H5Dclose (data_hid); |
720 H5Gclose (group_hid); | 720 H5Gclose (group_hid); |
721 return false; | 721 return false; |
722 } | 722 } |
723 | 723 |
756 H5Gclose (group_hid); | 756 H5Gclose (group_hid); |
757 return false; | 757 return false; |
758 } | 758 } |
759 | 759 |
760 octave_idx_type *itmp = m.xcidx (); | 760 octave_idx_type *itmp = m.xcidx (); |
761 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, | 761 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, |
762 H5P_DEFAULT, itmp) < 0) | 762 H5P_DEFAULT, itmp) < 0) |
763 { | 763 { |
764 H5Sclose (space_hid); | 764 H5Sclose (space_hid); |
765 H5Dclose (data_hid); | 765 H5Dclose (data_hid); |
766 H5Gclose (group_hid); | 766 H5Gclose (group_hid); |
767 return false; | 767 return false; |
795 H5Gclose (group_hid); | 795 H5Gclose (group_hid); |
796 return false; | 796 return false; |
797 } | 797 } |
798 | 798 |
799 itmp = m.xridx (); | 799 itmp = m.xridx (); |
800 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, | 800 if (H5Dread (data_hid, H5T_NATIVE_IDX, H5S_ALL, H5S_ALL, |
801 H5P_DEFAULT, itmp) < 0) | 801 H5P_DEFAULT, itmp) < 0) |
802 { | 802 { |
803 H5Sclose (space_hid); | 803 H5Sclose (space_hid); |
804 H5Dclose (data_hid); | 804 H5Dclose (data_hid); |
805 H5Gclose (group_hid); | 805 H5Gclose (group_hid); |
806 return false; | 806 return false; |
835 return false; | 835 return false; |
836 } | 836 } |
837 | 837 |
838 double *dtmp = m.xdata (); | 838 double *dtmp = m.xdata (); |
839 bool retval = false; | 839 bool retval = false; |
840 if (H5Dread (data_hid, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, | 840 if (H5Dread (data_hid, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, |
841 H5P_DEFAULT, dtmp) >= 0 | 841 H5P_DEFAULT, dtmp) >= 0 |
842 && m.indices_ok ()) | 842 && m.indices_ok ()) |
843 { | 843 { |
844 retval = true; | 844 retval = true; |
845 matrix = m; | 845 matrix = m; |