summaryrefslogtreecommitdiffstats
path: root/src/H5FA.c
blob: 03fc025781c5ea2edc96e58b0d67398aa19520b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the files COPYING and Copyright.html.  COPYING can be found at the root   *
 * of the source code distribution tree; Copyright.html can be found at the  *
 * root level of an installed copy of the electronic HDF5 document set and   *
 * is linked from the top-level documents page.  It can also be found at     *
 * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
 * access to either file, you may request a copy from help@hdfgroup.org.     *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/*-------------------------------------------------------------------------
 *
 * Created:		H5FA.c
 *			April 2009
 *			Vailin Choi <vchoi@hdfgroup.org>
 *
 * Purpose:		Implements a Fixed Array for storing elements
 *                      of datasets with fixed dimensions
 *
 *-------------------------------------------------------------------------
 */

/**********************/
/* Module Declaration */
/**********************/

#define H5FA_MODULE

/***********************/
/* Other Packages Used */
/***********************/


/***********/
/* Headers */
/***********/
#include "H5private.h"		/* Generic Functions			*/
#include "H5Eprivate.h"		/* Error handling		  	*/
#include "H5FApkg.h"		/* Fixed Arrays				*/
#include "H5FLprivate.h"	/* Free Lists                           */
#include "H5Vprivate.h"         /* Vector functions			*/


/****************/
/* Local Macros */
/****************/


/******************/
/* Local Typedefs */
/******************/


/********************/
/* Package Typedefs */
/********************/


/********************/
/* Local Prototypes */
/********************/


/*********************/
/* Package Variables */
/*********************/

/* Fixed array client ID to class mapping */

/* Remember to add client ID to H5FA_cls_id_t in H5FAprivate.h when adding a new
 * client class..
 */
extern const H5FA_class_t H5FA_CLS_TEST[1];

const H5FA_class_t *const H5FA_client_class_g[] = {
    H5FA_CLS_TEST,		/* 0 - H5FA_TEST_ID 			*/
};


/*****************************/
/* Library Private Variables */
/*****************************/


/*******************/
/* Local Variables */
/*******************/

/* Declare a free list to manage the H5FA_t struct */
H5FL_DEFINE_STATIC(H5FA_t);

/* Declare a PQ free list to manage the element */
H5FL_BLK_DEFINE(native_elmt);



/*-------------------------------------------------------------------------
 * Function:	H5FA_create
 *
 * Purpose:	Creates a new fixed array (header) in the file.
 *
 * Return:	Pointer to fixed array wrapper on success
 *              NULL on failure
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
H5FA_t *, NULL, NULL,
H5FA_create(H5F_t *f, hid_t dxpl_id, const H5FA_create_t *cparam, void *ctx_udata))

    /* Local variables */
    H5FA_t *fa = NULL;          /* Pointer to new fixed array */
    H5FA_hdr_t *hdr = NULL;     /* The fixed array header information */
    haddr_t fa_addr;            /* Fixed Array header address */

#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: Called\n", FUNC);
#endif /* H5FA_DEBUG */

    /*
     * Check arguments.
     */
    HDassert(f);
    HDassert(cparam);

    /* H5FA interface sanity check */
    HDcompile_assert(H5FA_NUM_CLS_ID == NELMTS(H5FA_client_class_g));

    /* Create fixed array header */
    if(HADDR_UNDEF == (fa_addr = H5FA__hdr_create(f, dxpl_id, cparam, ctx_udata)))
	H5E_THROW(H5E_CANTINIT, "can't create fixed array header")

    /* Allocate fixed array wrapper */
    if(NULL == (fa = H5FL_MALLOC(H5FA_t)))
	H5E_THROW(H5E_CANTALLOC, "memory allocation failed for fixed array info")

    /* Lock the array header into memory */
    if(NULL == (hdr = (H5FA_hdr_t *)H5AC_protect(f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, NULL, ctx_udata, H5AC_WRITE)))
	H5E_THROW(H5E_CANTPROTECT, "unable to load fixed array header")

    /* Point fixed array wrapper at header and bump it's ref count */
    fa->hdr = hdr;
    if(H5FA__hdr_incr(fa->hdr) < 0)
	H5E_THROW(H5E_CANTINC, "can't increment reference count on shared array header")

    /* Increment # of files using this array header */
    if(H5FA__hdr_fuse_incr(fa->hdr) < 0)
	H5E_THROW(H5E_CANTINC, "can't increment file reference count on shared array header")

    /* Set file pointer for this array open context */
    fa->f = f;

    /* Set the return value */
    ret_value = fa;

CATCH

    if(hdr && H5AC_unprotect(f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, hdr, H5AC__NO_FLAGS_SET) < 0)
	H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array header")
    if(!ret_value)
        if(fa && H5FA_close(fa, dxpl_id) < 0)
            H5E_THROW(H5E_CLOSEERROR, "unable to close fixed array")

END_FUNC(PRIV)  /* end H5FA_create() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_open
 *
 * Purpose:	Opens an existing fixed array in the file.
 *
 * Return:	Pointer to array wrapper on success
 *              NULL on failure
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
H5FA_t *, NULL, NULL,
H5FA_open(H5F_t *f, hid_t dxpl_id, haddr_t fa_addr, void *ctx_udata))

    /* Local variables */
    H5FA_t *fa = NULL;          /* Pointer to new fixed array wrapper */
    H5FA_hdr_t *hdr = NULL;     /* The fixed array header information */

    /*
     * Check arguments.
     */
    HDassert(f);
    HDassert(H5F_addr_defined(fa_addr));

    /* Load the array header into memory */
#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: fa_addr = %a\n", FUNC, fa_addr);
#endif /* H5FA_DEBUG */
    if(NULL == (hdr = (H5FA_hdr_t *)H5AC_protect(f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, NULL, ctx_udata, H5AC_READ)))
        H5E_THROW(H5E_CANTPROTECT, "unable to load fixed array header, address = %llu", (unsigned long long)fa_addr)

    /* Check for pending array deletion */
    if(hdr->pending_delete)
        H5E_THROW(H5E_CANTOPENOBJ, "can't open fixed array pending deletion")

    /* Create fixed array info */
    if(NULL == (fa = H5FL_MALLOC(H5FA_t)))
        H5E_THROW(H5E_CANTALLOC, "memory allocation failed for fixed array info")

    /* Point fixed array wrapper at header */
    fa->hdr = hdr;
    if(H5FA__hdr_incr(fa->hdr) < 0)
        H5E_THROW(H5E_CANTINC, "can't increment reference count on shared array header")

    /* Increment # of files using this array header */
    if(H5FA__hdr_fuse_incr(fa->hdr) < 0)
        H5E_THROW(H5E_CANTINC, "can't increment file reference count on shared array header")

    /* Set file pointer for this array open context */
    fa->f = f;

    /* Set the return value */
    ret_value = fa;

CATCH

    if(hdr && H5AC_unprotect(f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, hdr, H5AC__NO_FLAGS_SET) < 0)
        H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array header")
    if(!ret_value)
        if(fa && H5FA_close(fa, dxpl_id) < 0)
            H5E_THROW(H5E_CLOSEERROR, "unable to close fixed array")

END_FUNC(PRIV)  /* end H5FA_open() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_get_nelmts
 *
 * Purpose:	Query the current number of elements in array
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, NOERR,
herr_t, SUCCEED, -,
H5FA_get_nelmts(const H5FA_t *fa, hsize_t *nelmts))

    /* Local variables */

#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: Called\n", FUNC);
#endif /* H5FA_DEBUG */

    /*
     * Check arguments.
     */
    HDassert(fa);
    HDassert(nelmts);

    /* Retrieve the current number of elements in the fixed array */
    *nelmts = fa->hdr->stats.nelmts;

END_FUNC(PRIV)  /* end H5FA_get_nelmts() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_get_addr
 *
 * Purpose:	Query the address of the array
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, NOERR,
herr_t, SUCCEED, -,
H5FA_get_addr(const H5FA_t *fa, haddr_t *addr))

    /* Local variables */

#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: Called\n", FUNC);
#endif /* H5FA_DEBUG */

    /*
     * Check arguments.
     */
    HDassert(fa);
    HDassert(fa->hdr);
    HDassert(addr);

    /* Retrieve the address of the fixed array's header */
    *addr = fa->hdr->addr;

END_FUNC(PRIV)  /* end H5FA_get_addr() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_set
 *
 * Purpose:	Set an element of a fixed array
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
herr_t, SUCCEED, FAIL,
H5FA_set(const H5FA_t *fa, hid_t dxpl_id, hsize_t idx, const void *elmt))

    /* Local variables */
    H5FA_hdr_t *hdr = fa->hdr;          /* Header for fixed array */
    H5FA_dblock_t *dblock = NULL;       /* Pointer to fixed array Data block */
    H5FA_dblk_page_t *dblk_page = NULL; /* Pointer to fixed array Data block page */
    unsigned dblock_cache_flags = H5AC__NO_FLAGS_SET;    /* Flags to unprotecting fixed array Data block */
    unsigned dblk_page_cache_flags = H5AC__NO_FLAGS_SET; /* Flags to unprotecting FIxed Array Data block page */
    hbool_t hdr_dirty = FALSE;          /* Whether header information changed */

#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: Called\n", FUNC);
HDfprintf(stderr, "%s: Index %Hu\n", FUNC, idx);
#endif /* H5FA_DEBUG */

    /*
     * Check arguments.
     */
    HDassert(fa);
    HDassert(fa->hdr);

    /* Set the shared array header's file context for this operation */
    hdr->f = fa->f;

    /* Check if we need to create the fixed array data block */
    if(!H5F_addr_defined(hdr->dblk_addr)) {
#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: fixed array data block address not defined!\n", FUNC, idx);
#endif /* H5FA_DEBUG */
        /* Create the data block */
        hdr->dblk_addr = H5FA__dblock_create(hdr, dxpl_id, &hdr_dirty, hdr->cparam.nelmts);
        if(!H5F_addr_defined(hdr->dblk_addr))
            H5E_THROW(H5E_CANTCREATE, "unable to create fixed array data block")
    } /* end if */

    HDassert(idx < hdr->cparam.nelmts);

    /* Protect data block */
    if(NULL == (dblock = H5FA__dblock_protect(hdr, dxpl_id, hdr->dblk_addr, hdr->stats.nelmts, H5AC_WRITE)))
	H5E_THROW(H5E_CANTPROTECT, "unable to protect fixed array data block, address = %llu", (unsigned long long)hdr->dblk_addr)

    /* Check for paging data block */
    if(!dblock->npages) {
	/* Set element in data block */
	HDmemcpy(((uint8_t *)dblock->elmts) + (hdr->cparam.cls->nat_elmt_size * idx), elmt, hdr->cparam.cls->nat_elmt_size);
	dblock_cache_flags |= H5AC__DIRTIED_FLAG;
    } /* end if */
    else { /* paging */
        size_t  page_idx;      		/* Index of page within data block */
        size_t  dblk_page_nelmts;      	/* # of elements in a data block page */
        size_t  elmt_idx;		/* Element index within the page */
        haddr_t dblk_page_addr;		/* Address of data block page */

        /* Compute the page & element index */
        page_idx = (size_t)(idx / dblock->dblk_page_nelmts);
        elmt_idx = (size_t)(idx % dblock->dblk_page_nelmts);

        /* Get the address of the data block page */
	dblk_page_addr = dblock->addr + H5FA_DBLOCK_PREFIX_SIZE(dblock) +
                        ((hsize_t)page_idx * dblock->dblk_page_size);

        /* Check for using last page, to set the number of elements on the page */
	if((page_idx + 1) == dblock->npages)
	    dblk_page_nelmts = dblock->last_page_nelmts;
	else
	    dblk_page_nelmts = dblock->dblk_page_nelmts;

        /* Check if the page has been created yet */
        if(!H5V_bit_get(dblock->dblk_page_init, page_idx)) {
	    /* Create the data block page */
	    if(H5FA__dblk_page_create(hdr, dxpl_id, dblk_page_addr, dblk_page_nelmts) < 0)
		H5E_THROW(H5E_CANTCREATE, "unable to create data block page")

	    /* Mark data block page as initialized in data block */
	    H5V_bit_set(dblock->dblk_page_init, page_idx, TRUE);
	    dblock_cache_flags |= H5AC__DIRTIED_FLAG;
	} /* end if */

        /* Protect the data block page */
	if(NULL == (dblk_page = H5FA__dblk_page_protect(hdr, dxpl_id, dblk_page_addr, dblk_page_nelmts, H5AC_WRITE)))
	    H5E_THROW(H5E_CANTPROTECT, "unable to protect fixed array data block page, address = %llu", (unsigned long long)dblk_page_addr)

        /* Set the element in the data block page */
	HDmemcpy(((uint8_t *)dblk_page->elmts) + (hdr->cparam.cls->nat_elmt_size * elmt_idx), elmt, hdr->cparam.cls->nat_elmt_size);
	dblk_page_cache_flags |= H5AC__DIRTIED_FLAG;
    } /* end else */

CATCH
    /* Check for header modified */
    if(hdr_dirty)
        if(H5FA__hdr_modified(hdr) < 0)
            H5E_THROW(H5E_CANTMARKDIRTY, "unable to mark fixed array header as modified")

    /* Release resources */
    if(dblock && H5FA__dblock_unprotect(dblock, dxpl_id, dblock_cache_flags) < 0)
        H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array data block")
    if(dblk_page && H5FA__dblk_page_unprotect(dblk_page, dxpl_id, dblk_page_cache_flags) < 0)
        H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array data block page")

END_FUNC(PRIV)  /* end H5FA_set() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_get
 *
 * Purpose:	Get an element of a fixed array
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
herr_t, SUCCEED, FAIL,
H5FA_get(const H5FA_t *fa, hid_t dxpl_id, hsize_t idx, void *elmt))

    /* Local variables */
    H5FA_hdr_t *hdr = fa->hdr;          /* Header for FA */
    H5FA_dblock_t *dblock = NULL;       /* Pointer to data block for FA */
    H5FA_dblk_page_t *dblk_page = NULL; /* Pointer to data block page for FA */

#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: Called\n", FUNC);
HDfprintf(stderr, "%s: Index %Hu\n", FUNC, idx);
#endif /* H5FA_DEBUG */

    /*
     * Check arguments.
     */
    HDassert(fa);
    HDassert(fa->hdr);

    /* Set the shared array header's file context for this operation */
    hdr->f = fa->f;

    /* Check if the fixed array data block has been allocated on disk yet */
    if(!H5F_addr_defined(hdr->dblk_addr)) {
        /* Call the class's 'fill' callback */
        if((hdr->cparam.cls->fill)(elmt, (size_t)1) < 0)
            H5E_THROW(H5E_CANTSET, "can't set element to class's fill value")
    } /* end if */
    else {
        /* Get the data block */
        HDassert(H5F_addr_defined(hdr->dblk_addr));
        if(NULL == (dblock = H5FA__dblock_protect(hdr, dxpl_id, hdr->dblk_addr, hdr->stats.nelmts, H5AC_READ)))
            H5E_THROW(H5E_CANTPROTECT, "unable to protect fixed array data block, address = %llu", (unsigned long long)hdr->dblk_addr)

        /* Check for paged data block */
        if(!dblock->npages)
            /* Retrieve element from data block */
            HDmemcpy(elmt, ((uint8_t *)dblock->elmts) + (hdr->cparam.cls->nat_elmt_size * idx), hdr->cparam.cls->nat_elmt_size);
        else { /* paging */
            size_t  page_idx;           /* Index of page within data block */

            /* Compute the page index */
            page_idx = (size_t)(idx / dblock->dblk_page_nelmts);

            /* Check if the page is defined yet */
            if(!H5V_bit_get(dblock->dblk_page_init, page_idx)) {
                /* Call the class's 'fill' callback */
                if((hdr->cparam.cls->fill)(elmt, (size_t)1) < 0)
                    H5E_THROW(H5E_CANTSET, "can't set element to class's fill value")

                /* We've retrieved the value, leave now */
                H5_LEAVE(SUCCEED)
            } /* end if */
            else { /* get the page */
                size_t  dblk_page_nelmts;	/* # of elements in a data block page */
                size_t  elmt_idx;		/* Element index within the page */
                haddr_t dblk_page_addr;		/* Address of data block page */

                /* Compute the element index */
                elmt_idx = (size_t)(idx % dblock->dblk_page_nelmts);

                /* Compute the address of the data block */
                dblk_page_addr = dblock->addr + H5FA_DBLOCK_PREFIX_SIZE(dblock) + ((hsize_t)page_idx * dblock->dblk_page_size);

                /* Check for using last page, to set the number of elements on the page */
                if((page_idx + 1) == dblock->npages)
                    dblk_page_nelmts = dblock->last_page_nelmts;
                else
                    dblk_page_nelmts = dblock->dblk_page_nelmts;

                /* Protect the data block page */
                if(NULL == (dblk_page = H5FA__dblk_page_protect(hdr, dxpl_id, dblk_page_addr, dblk_page_nelmts, H5AC_READ)))
                    H5E_THROW(H5E_CANTPROTECT, "unable to protect fixed array data block page, address = %llu", (unsigned long long)dblk_page_addr)

                /* Retrieve element from data block */
                HDmemcpy(elmt, ((uint8_t *)dblk_page->elmts) + (hdr->cparam.cls->nat_elmt_size * elmt_idx), hdr->cparam.cls->nat_elmt_size);
            } /* end else */
        } /* end else */
    } /* end else */

CATCH
    if(dblock && H5FA__dblock_unprotect(dblock, dxpl_id, H5AC__NO_FLAGS_SET) < 0)
        H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array data block")
    if(dblk_page && H5FA__dblk_page_unprotect(dblk_page, dxpl_id, H5AC__NO_FLAGS_SET) < 0)
        H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array data block page")

END_FUNC(PRIV)  /* end H5FA_get() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_close
 *
 * Purpose:	Close a fixed array
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
herr_t, SUCCEED, FAIL,
H5FA_close(H5FA_t *fa, hid_t dxpl_id))

    /* Local variables */
    hbool_t pending_delete = FALSE;     /* Whether the array is pending deletion */
    haddr_t fa_addr = HADDR_UNDEF;      /* Address of array (for deletion) */

#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: Called\n", FUNC);
#endif /* H5FA_DEBUG */

    /*
     * Check arguments.
     */
    HDassert(fa);

    /* Decrement file reference & check if this is the last open fixed array using the shared array header */
    if(0 == H5FA__hdr_fuse_decr(fa->hdr)) {
        /* Set the shared array header's file context for this operation */
        fa->hdr->f = fa->f;

        /* Shut down anything that can't be put in the header's 'flush' callback */

        /* Check for pending array deletion */
        if(fa->hdr->pending_delete) {
            /* Set local info, so array deletion can occur after decrementing the
             *  header's ref count
             */
            pending_delete = TRUE;
            fa_addr = fa->hdr->addr;
        } /* end if */
    } /* end if */

    /* Check for pending array deletion */
    if(pending_delete) {
        H5FA_hdr_t *hdr;            /* Another pointer to fixed array header */

#ifndef NDEBUG
{
    unsigned hdr_status = 0;         /* Header's status in the metadata cache */

    /* Check the header's status in the metadata cache */
    if(H5AC_get_entry_status(fa->f, fa_addr, &hdr_status) < 0)
        H5E_THROW(H5E_CANTGET, "unable to check metadata cache status for fixed array header")

    /* Sanity checks on header */
    HDassert(hdr_status & H5AC_ES__IN_CACHE);
    HDassert(hdr_status & H5AC_ES__IS_PINNED);
    HDassert(!(hdr_status & H5AC_ES__IS_PROTECTED));
}
#endif /* NDEBUG */

        /* Lock the array header into memory */
        /* (OK to pass in NULL for callback context, since we know the header must be in the cache) */
        if(NULL == (hdr = (H5FA_hdr_t *)H5AC_protect(fa->f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, NULL, NULL, H5AC_WRITE)))
            H5E_THROW(H5E_CANTLOAD, "unable to load fixed array header")

        /* Set the shared array header's file context for this operation */
        hdr->f = fa->f;

        /* Decrement the reference count on the array header */
        /* (don't put in H5FA_hdr_fuse_decr() as the array header may be evicted
         *  immediately -QAK)
         */
        if(H5FA__hdr_decr(fa->hdr) < 0)
            H5E_THROW(H5E_CANTDEC, "can't decrement reference count on shared array header")

        /* Delete array, starting with header (unprotects header) */
        if(H5FA__hdr_delete(hdr, dxpl_id) < 0)
            H5E_THROW(H5E_CANTDELETE, "unable to delete fixed array")
    } /* end if */
    else {
        /* Decrement the reference count on the array header */
        /* (don't put in H5FA_hdr_fuse_decr() as the array header may be evicted
         *  immediately -QAK)
         */
        if(H5FA__hdr_decr(fa->hdr) < 0)
            H5E_THROW(H5E_CANTDEC, "can't decrement reference count on shared array header")
    } /* end else */

    /* Release the fixed array wrapper */
    fa = H5FL_FREE(H5FA_t, fa);

CATCH

END_FUNC(PRIV)  /* end H5FA_close() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_delete
 *
 * Purpose:	Delete a fixed array
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
herr_t, SUCCEED, FAIL,
H5FA_delete(H5F_t *f, hid_t dxpl_id, haddr_t fa_addr, void *ctx_udata))

    /* Local variables */
    H5FA_hdr_t *hdr = NULL;             /* The fixed array header information */

    /*
     * Check arguments.
     */
    HDassert(f);
    HDassert(H5F_addr_defined(fa_addr));

    /* Lock the array header into memory */
#ifdef H5FA_DEBUG
HDfprintf(stderr, "%s: fa_addr = %a\n", FUNC, fa_addr);
#endif /* H5FA_DEBUG */
    if(NULL == (hdr = (H5FA_hdr_t *)H5AC_protect(f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, NULL, ctx_udata, H5AC_WRITE)))
        H5E_THROW(H5E_CANTPROTECT, "unable to protect fixed array header, address = %llu", (unsigned long long)fa_addr)

    /* Check for files using shared array header */
    if(hdr->file_rc)
        hdr->pending_delete = TRUE;
    else {
        /* Set the shared array header's file context for this operation */
        hdr->f = f;

        /* Delete array now, starting with header (unprotects header) */
        if(H5FA__hdr_delete(hdr, dxpl_id) < 0)
            H5E_THROW(H5E_CANTDELETE, "unable to delete fixed array")
        hdr = NULL;
    } /* end if */

CATCH

    /* Unprotect the header, if an error occurred */
    if(hdr && H5AC_unprotect(f, dxpl_id, H5AC_FARRAY_HDR, fa_addr, hdr, H5AC__NO_FLAGS_SET) < 0)
        H5E_THROW(H5E_CANTUNPROTECT, "unable to release fixed array header")

END_FUNC(PRIV)  /* end H5FA_delete() */


/*-------------------------------------------------------------------------
 * Function:	H5FA_iterate
 *
 * Purpose:	Iterate over the elements of a fixed array
 *
 * Note:	This is not very efficient, we should be iterating directly
 *		over the fixed array's direct block [pages].
 *
 * Return:	SUCCEED/FAIL
 *
 * Programmer:	Vailin Choi
 *              Thursday, April 30, 2009
 *
 *-------------------------------------------------------------------------
 */
BEGIN_FUNC(PRIV, ERR,
herr_t, SUCCEED, FAIL,
H5FA_iterate(H5FA_t *fa, hid_t dxpl_id, H5FA_operator_t op, void *udata))

    /* Local variables */
    uint8_t             *elmt = NULL;
    hsize_t		u;

    /*
     * Check arguments.
     */
    HDassert(fa);
    HDassert(op);
    HDassert(udata);

    /* Allocate space for a native array element */
    if(NULL == (elmt = H5FL_BLK_MALLOC(native_elmt, fa->hdr->cparam.cls->nat_elmt_size)))
	H5E_THROW(H5E_CANTALLOC, "memory allocation failed for fixed array element")

    /* Iterate over all elements in array */
    for(u = 0; u < fa->hdr->stats.nelmts; u++) {
        int cb_ret;     /* Return value from callback */

        /* Get array element */
        if(H5FA_get(fa, dxpl_id, u, elmt) < 0)
            H5E_THROW(H5E_CANTGET, "unable to delete fixed array")

        /* Make callback */
        if((cb_ret = (*op)(u, elmt, udata)) < 0) {
            H5E_PRINTF(H5E_BADITER, "iterator function failed");
            H5_LEAVE(cb_ret)
        } /* end if */
    } /* end for */

CATCH

    if(elmt)
	(void)H5FL_BLK_FREE(native_elmt, elmt);

END_FUNC(PRIV)  /* end H5FA_iterate() */

- fid_dst = h5tools_fopen(fname_dst, H5F_ACC_RDWR, H5P_DEFAULT, NULL, NULL, 0); - - /*------------------------------------------------------------------------- - * open input file - *-------------------------------------------------------------------------*/ - - fid_src = h5tools_fopen(fname_src, H5F_ACC_RDONLY, H5P_DEFAULT, NULL, NULL, 0); - - /*------------------------------------------------------------------------- - * test for error in opening input file - *-------------------------------------------------------------------------*/ - if (fid_src==-1) - { - error_msg("Could not open input file <%s>...Exiting\n", fname_src); - leave(EXIT_FAILURE); - } - - - /*------------------------------------------------------------------------- - * create an output file when failed to open it - *-------------------------------------------------------------------------*/ - - /* If we couldn't open an existing file, try creating file */ - /* (use "EXCL" instead of "TRUNC", so we don't blow away existing non-HDF5 file) */ - if(fid_dst < 0) - fid_dst = H5Fcreate(fname_dst, H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * test for error in opening output file - *-------------------------------------------------------------------------*/ - if (fid_dst==-1) - { - error_msg("Could not open output file <%s>...Exiting\n", fname_dst); - leave(EXIT_FAILURE); - } - - /*------------------------------------------------------------------------- - * print some info - *-------------------------------------------------------------------------*/ - - if (verbose) - { - printf("Copying file <%s> and object <%s> to file <%s> and object <%s>\n", - fname_src, oname_src, fname_dst, oname_dst); - if (flag) { - HDassert(str_flag); - printf("Using %s flag\n", str_flag); - } - } - - - /*------------------------------------------------------------------------- - * create property lists for copy - *-------------------------------------------------------------------------*/ - - /* create property to pass copy options */ - if ( (ocpl_id = H5Pcreate(H5P_OBJECT_COPY)) < 0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pcreate failed"); - - /* set options for object copy */ - if (flag) - { - if ( H5Pset_copy_object(ocpl_id, flag) < 0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pset_copy_object failed"); - } - - /* Create link creation property list */ - if((lcpl_id = H5Pcreate(H5P_LINK_CREATE)) < 0) { - error_msg("Could not create link creation property list\n"); - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pcreate failed"); - } /* end if */ - - /* Check for creating intermediate groups */ - if(parents) { - /* Set the intermediate group creation property */ - if(H5Pset_create_intermediate_group(lcpl_id, 1) < 0) { - error_msg("Could not set property for creating parent groups\n"); - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pset_create_intermediate_group failed"); - } /* end if */ - - /* Display some output if requested */ - if(verbose) - printf("%s: Creating parent groups\n", h5tools_getprogname()); - } /* end if */ - else /* error, if parent groups doesn't already exist in destination file */ - { - size_t i, len; - - len = HDstrlen(oname_dst); - - /* check if all the parents groups exist. skip root group */ - for (i = 1; i < len; i++) - { - if ('/'==oname_dst[i]) - { - char *str_ptr; - - str_ptr = (char *)HDcalloc(i + 1, sizeof(char)); - HDstrncpy(str_ptr, oname_dst, i); - str_ptr[i]='\0'; - if (H5Lexists(fid_dst, str_ptr, H5P_DEFAULT) <= 0) - { - error_msg("group <%s> doesn't exist. Use -p to create parent groups.\n", str_ptr); - HDfree(str_ptr); - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Lexists failed"); - } - HDfree(str_ptr); - } - } - } - - /*------------------------------------------------------------------------- - * do the copy - *-------------------------------------------------------------------------*/ - - if(verbose) - linkinfo.opt.msg_mode = 1; - - li_ret = H5tools_get_symlink_info(fid_src, oname_src, &linkinfo, 1); - if (li_ret == 0) /* dangling link */ - { - if(H5Lcopy(fid_src, oname_src, - fid_dst, oname_dst, - H5P_DEFAULT, H5P_DEFAULT) < 0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Lcopy failed"); - } - else /* valid link */ - { - if (H5Ocopy(fid_src, /* Source file or group identifier */ - oname_src, /* Name of the source object to be copied */ - fid_dst, /* Destination file or group identifier */ - oname_dst, /* Name of the destination object */ - ocpl_id, /* Object copy property list */ - lcpl_id)<0) /* Link creation property list */ - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Ocopy failed"); - } - - /* free link info path */ - if (linkinfo.trg_path) - HDfree(linkinfo.trg_path); - - /* close propertis */ - if(H5Pclose(ocpl_id)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pclose failed"); - if(H5Pclose(lcpl_id)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Pclose failed"); - - /* close files */ - if (H5Fclose(fid_src)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Fclose failed"); - if (H5Fclose(fid_dst)<0) - HGOTO_ERROR(EXIT_FAILURE, H5E_tools_min_id_g, "H5Fclose failed"); - - leave(EXIT_SUCCESS); - -done: - printf("Error in copy...Exiting\n"); - - /* free link info path */ - if (linkinfo.trg_path) - HDfree(linkinfo.trg_path); - - H5E_BEGIN_TRY { - H5Pclose(ocpl_id); - H5Pclose(lcpl_id); - H5Fclose(fid_src); - H5Fclose(fid_dst); - } H5E_END_TRY; - - leave(ret_value); -} - diff --git a/tools/h5copy/h5copygentest.c b/tools/h5copy/h5copygentest.c deleted file mode 100644 index 7669702..0000000 --- a/tools/h5copy/h5copygentest.c +++ /dev/null @@ -1,1004 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/* - * Generate the binary hdf5 file for the h5copy tests - */ -#include -#include "hdf5.h" -#include "H5private.h" - -/* HDF file names */ -#define HDF_FILE1 "h5copytst.h5" -#define HDF_FILE1_NEW "h5copytst_new.h5" -#define HDF_FILE2 "h5copy_ref.h5" -#define HDF_EXT_SRC_FILE "h5copy_extlinks_src.h5" -#define HDF_EXT_TRG_FILE "h5copy_extlinks_trg.h5" - -/* objects in HDF_FILE1 */ -#define DATASET_SIMPLE "simple" -#define DATASET_CHUNK "chunk" -#define DATASET_COMPACT "compact" -#define DATASET_COMPOUND "compound" -#define DATASET_COMPRESSED "compressed" -#define DATASET_NAMED_VL "named_vl" -#define DATASET_NESTED_VL "nested_vl" -#define DATASET_ATTR "dset_attr" -#define ATTR "attr" -#define GROUP_EMPTY "grp_empty" -#define GROUP_DATASETS "grp_dsets" -#define GROUP_NESTED "grp_nested" -#define GROUP_ATTR "grp_attr" - -/* Obj reference */ -#define OBJ_REF_DS "Dset1" -#define OBJ_REF_GRP "Group" -/* Region reference */ -#define REG_REF_DS1 "Dset_REGREF" -#define REG_REF_DS2 "Dset2" - - -/*------------------------------------------------------------------------- - * Function: gent_simple - * - * Purpose: Generate a simple dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_simple(hid_t loc_id) -{ - hid_t sid, did; - hsize_t dims[1] = {6}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_SIMPLE, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); -} - -/*------------------------------------------------------------------------- - * Function: gent_chunked - * - * Purpose: Generate a chunked dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_chunked(hid_t loc_id) -{ - hid_t sid, did, pid; - hsize_t dims[1] = {6}; - hsize_t chunk_dims[1] = {2}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create property plist */ - pid = H5Pcreate(H5P_DATASET_CREATE); - H5Pset_chunk(pid, 1, chunk_dims); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_CHUNK, H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Pclose(pid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_compact - * - * Purpose: Generate a compact dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_compact(hid_t loc_id) -{ - hid_t sid, did, pid; - hsize_t dims[1] = {6}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create property plist */ - pid = H5Pcreate(H5P_DATASET_CREATE); - H5Pset_layout (pid,H5D_COMPACT); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_COMPACT, H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Pclose(pid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_compound - * - * Purpose: Generate a compound dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_compound(hid_t loc_id) -{ - typedef struct s_t - { - char str1[20]; - char str2[20]; - } s_t; - hid_t sid, did, tid_c, tid_s; - hsize_t dims[1] = {2}; - s_t buf[2] = {{"str1", "str2"}, {"str3", "str4"}}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create a compound type */ - tid_c = H5Tcreate(H5T_COMPOUND, sizeof(s_t)); - tid_s = H5Tcopy(H5T_C_S1); - H5Tset_size(tid_s, 20); - - H5Tinsert(tid_c, "str1", HOFFSET(s_t,str1), tid_s); - H5Tinsert(tid_c, "str2", HOFFSET(s_t,str2), tid_s); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_COMPOUND, tid_c, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, tid_c, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid_c); - H5Tclose(tid_s); -} - -/*------------------------------------------------------------------------- - * Function: gent_compressed - * - * Purpose: Generate a compressed dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_compressed(hid_t loc_id) -{ - hid_t sid, did, pid; - hsize_t dims[1] = {6}; - hsize_t chunk_dims[1] = {2}; - int buf[6] = {1,2,3,4,5,6}; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create property plist for chunk*/ - pid = H5Pcreate(H5P_DATASET_CREATE); - H5Pset_chunk(pid, 1, chunk_dims); - - /* set the deflate filter */ -#if defined (H5_HAVE_FILTER_DEFLATE) - H5Pset_deflate(pid, 1); -#endif - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_COMPRESSED, H5T_NATIVE_INT, sid, H5P_DEFAULT, pid, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Sclose(sid); - H5Dclose(did); - H5Pclose(pid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_named_vl - * - * Purpose: Generate a variable lenght named datatype for a dataset in - LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_named_vl(hid_t loc_id) -{ - hid_t sid, did, tid; - hsize_t dims[1] = {2}; - hvl_t buf[2]; - - /* allocate and initialize VL dataset to write */ - buf[0].len = 1; - buf[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf[0].p)[0]=1; - buf[1].len = 2; - buf[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf[1].p)[0]=2; - ((int *)buf[1].p)[1]=3; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create datatype */ - tid = H5Tvlen_create(H5T_NATIVE_INT); - - /* create named datatype */ - H5Tcommit2(loc_id, "vl", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_NAMED_VL, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Dvlen_reclaim(tid,sid,H5P_DEFAULT,buf); - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid); -} - - -/*------------------------------------------------------------------------- - * Function: gent_nested_vl - * - * Purpose: Generate a nested variable length dataset in LOC_ID - * - *------------------------------------------------------------------------- - */ -static void gent_nested_vl(hid_t loc_id) -{ - hid_t sid, did, tid1, tid2; - hsize_t dims[1] = {2}; - hvl_t buf[2]; - hvl_t *tvl; - - /* allocate and initialize VL dataset to write */ - buf[0].len = 1; - buf[0].p = HDmalloc( 1 * sizeof(hvl_t)); - tvl = (hvl_t *)buf[0].p; - tvl->p = HDmalloc( 1 * sizeof(int) ); - tvl->len = 1; - ((int *)tvl->p)[0]=1; - - buf[1].len = 1; - buf[1].p = HDmalloc( 1 * sizeof(hvl_t)); - tvl = (hvl_t *)buf[1].p; - tvl->p = HDmalloc( 2 * sizeof(int) ); - tvl->len = 2; - ((int *)tvl->p)[0]=2; - ((int *)tvl->p)[1]=3; - - /* create dataspace */ - sid = H5Screate_simple(1, dims, NULL); - - /* create datatype */ - tid1 = H5Tvlen_create(H5T_NATIVE_INT); - - /* create nested VL datatype */ - tid2 = H5Tvlen_create(tid1); - - /* create dataset */ - did = H5Dcreate2(loc_id, DATASET_NESTED_VL, tid2, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, tid2, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - - /* close */ - H5Dvlen_reclaim(tid2,sid,H5P_DEFAULT,buf); - H5Sclose(sid); - H5Dclose(did); - H5Tclose(tid1); - H5Tclose(tid2); -} - - -/*------------------------------------------------------------------------- - * Function: gent_att_compound_vlstr - * - * Purpose: Generate a dataset and a group. - * Both has an attribute with a compound datatype consisting - * of a variable length string - * - *------------------------------------------------------------------------- - */ -static void gent_att_compound_vlstr(hid_t loc_id) -{ - typedef struct { /* Compound structure for the attribute */ - int i; - char *v; - } s1; - hsize_t dim[1] = {1}; /* Dimension size */ - hid_t sid = -1; /* Dataspace ID */ - hid_t tid = -1; /* Datatype ID */ - hid_t aid = -1; /* Attribute ID */ - hid_t did = -1; /* Dataset ID */ - hid_t gid = -1; /* Group ID */ - hid_t vl_str_tid = -1; /* Variable length datatype ID */ - hid_t cmpd_tid = -1; /* Compound datatype ID */ - hid_t null_sid = -1; /* Null dataspace ID */ - s1 buf; /* Buffer */ - - buf.i = 9; - buf.v = "ThisIsAString"; - - /* Create an integer datatype */ - tid = H5Tcopy(H5T_NATIVE_INT); - - /* Create a variable length string */ - vl_str_tid = H5Tcopy(H5T_C_S1); - H5Tset_size(vl_str_tid, H5T_VARIABLE); - - /* Create a compound datatype with a variable length string and an integer */ - cmpd_tid = H5Tcreate(H5T_COMPOUND, sizeof(s1)); - H5Tinsert(cmpd_tid, "i", HOFFSET(s1, i), tid); - H5Tinsert(cmpd_tid, "v", HOFFSET(s1, v), vl_str_tid); - - /* Create a dataset */ - null_sid = H5Screate(H5S_NULL); - did = H5Dcreate2(loc_id, DATASET_ATTR, H5T_NATIVE_INT, null_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Attach an attribute with the compound datatype to the dataset */ - sid = H5Screate_simple(1, dim, dim); - aid = H5Acreate2(did, ATTR, cmpd_tid, sid, H5P_DEFAULT, H5P_DEFAULT); - - /* Write the attribute */ - buf.i = 9; - buf.v = "ThisIsAString"; - H5Awrite(aid, cmpd_tid, &buf); - - /* Close the dataset and its attribute */ - H5Dclose(did); - H5Aclose(aid); - - /* Create a group */ - gid = H5Gcreate2(loc_id, GROUP_ATTR, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Attach an attribute with the compound datatype to the group */ - aid = H5Acreate2(gid, ATTR, cmpd_tid, sid, H5P_DEFAULT, H5P_DEFAULT); - H5Awrite(aid, cmpd_tid, &buf); - - /* Close the group and its attribute */ - H5Aclose(aid); - H5Gclose(gid); - - /* Close dataspaces */ - H5Sclose(sid); - H5Sclose(null_sid); - - /* Close datatypes */ - H5Tclose(tid); - H5Tclose(vl_str_tid); - H5Tclose(cmpd_tid); - -} /* gen_att_compound_vlstr() */ - -/*------------------------------------------------------------------------- - * Function: gent_datasets - * - * Purpose: Generate all datasets in a particular location - * - *------------------------------------------------------------------------- - */ -static void gent_datasets(hid_t loc_id) -{ - gent_simple(loc_id); - gent_chunked(loc_id); - gent_compact(loc_id); - gent_compound(loc_id); - gent_compressed(loc_id); - gent_named_vl(loc_id); - gent_nested_vl(loc_id); -} - -/*------------------------------------------------------------------------- - * Function: gent_empty_group - * - * Purpose: Generate an empty group in a location - * - *------------------------------------------------------------------------- - */ -static void gent_empty_group(hid_t loc_id) -{ - hid_t gid; - - /* Create group in location */ - gid = H5Gcreate2(loc_id, GROUP_EMPTY, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Release resources */ - H5Gclose(gid); -} - -/*------------------------------------------------------------------------- - * Function: gent_nested_datasets - * - * Purpose: Generate a group in a location and populate it with the "standard" - * datasets - * - *------------------------------------------------------------------------- - */ -static void gent_nested_datasets(hid_t loc_id) -{ - hid_t gid; - - /* Create group in location */ - gid = H5Gcreate2(loc_id, GROUP_DATASETS, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Add datasets to group created */ - gent_datasets(gid); - - /* Release resources */ - H5Gclose(gid); -} - -/*------------------------------------------------------------------------- - * Function: gent_nested_group - * - * Purpose: Generate a group in a location and populate it with another group - * containing the "standard" datasets - * - *------------------------------------------------------------------------- - */ -static void gent_nested_group(hid_t loc_id) -{ - hid_t gid; - - /* Create group in location */ - gid = H5Gcreate2(loc_id, GROUP_NESTED, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Add datasets to group created */ - gent_nested_datasets(gid); - - /* Release resources */ - H5Gclose(gid); -} - - -/*------------------------------------------------------------------------- - * Function: gen_obj_ref - * - * Purpose: Generate object references to dataset and group - * - * Programmer: Jonathan Kim (Feb 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_obj_ref(hid_t loc_id) -{ - hid_t sid=0, oid=0; - hsize_t dims1[1]={3}; - hsize_t dims2[1]={2}; - int data[3] = {10,20,30}; - int status; - - /*--------------------- - * create obj references to the previously created objects. - * Passing -1 as reference is an object.*/ - hobj_ref_t or_data[2]; /* write buffer */ - herr_t ret = SUCCEED; - - /*-------------- - * add dataset */ - sid = H5Screate_simple(1, dims1, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - oid = H5Dcreate2 (loc_id, OBJ_REF_DS, H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - status = H5Dwrite(oid, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - H5Dclose(oid); - H5Sclose(sid); - - /*-------------- - * add group */ - oid = H5Gcreate2 (loc_id, OBJ_REF_GRP, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - H5Gclose(oid); - - status = H5Rcreate (&or_data[0], loc_id, OBJ_REF_DS, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - status = H5Rcreate (&or_data[1], loc_id, OBJ_REF_GRP, H5R_OBJECT, (hid_t)-1); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - sid = H5Screate_simple (1, dims2, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - oid = H5Dcreate2 (loc_id, "Dset_OBJREF", H5T_STD_REF_OBJ, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - status = H5Dwrite(oid, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, or_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(oid > 0) - H5Dclose(oid); - if(sid > 0) - H5Sclose(sid); - - return ret; -} - - -/*------------------------------------------------------------------------- - * Function: gen_region_ref - * - * Purpose: Generate dataset region references - * - * Programmer: Jonathan Kim (Feb 23, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_region_ref(hid_t loc_id) -{ - hid_t sid=0, oid1=0, oid2=0; - int status; - herr_t ret = SUCCEED; - char data[3][16] = {"The quick brown", "fox jumps over ", "the 5 lazy dogs"}; - hsize_t dims2[2] = {3,16}; - hsize_t coords[4][2] = { {0,1}, {2,11}, {1,0}, {2,4} }; - hdset_reg_ref_t rr_data[2]; - hsize_t start[2] = {0,0}; - hsize_t stride[2] = {2,11}; - hsize_t count[2] = {2,2}; - hsize_t block[2] = {1,3}; - hsize_t dims1[1] = {2}; - - sid = H5Screate_simple (2, dims2, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create normal dataset which is refered */ - oid2 = H5Dcreate2 (loc_id, REG_REF_DS2, H5T_STD_I8LE, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid2 < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* write values to dataset */ - status = H5Dwrite (oid2, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select elements space for reference */ - status = H5Sselect_elements (sid, H5S_SELECT_SET, 4, coords[0]); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_elements failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from elements space */ - status = H5Rcreate (&rr_data[0], loc_id, REG_REF_DS2, H5R_DATASET_REGION, sid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* select hyperslab space for reference */ - status = H5Sselect_hyperslab (sid, H5S_SELECT_SET, start, stride, count, block); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Sselect_hyperslab failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference from hyperslab space */ - status = H5Rcreate (&rr_data[1], loc_id, REG_REF_DS2, H5R_DATASET_REGION, sid); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Rcreate failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - H5Sclose (sid); - - /* Create dataspace. */ - sid = H5Screate_simple (1, dims1, NULL); - if (sid < 0) - { - fprintf(stderr, "Error: %s %d> H5Screate_simple failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* create region reference dataset */ - oid1 = H5Dcreate2 (loc_id, REG_REF_DS1, H5T_STD_REF_DSETREG, sid, H5P_DEFAULT,H5P_DEFAULT,H5P_DEFAULT); - if (oid1 < 0) - { - fprintf(stderr, "Error: %s %d> H5Dcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* write data as region references */ - status = H5Dwrite (oid1, H5T_STD_REF_DSETREG, H5S_ALL, H5S_ALL, H5P_DEFAULT, rr_data); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Dwrite failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if (oid1 > 0) - H5Dclose (oid1); - if (oid2 > 0) - H5Dclose (oid2); - if (sid > 0) - H5Sclose (sid); - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: Test_Obj_Copy - * - * Purpose: Testing with various objects - * - *------------------------------------------------------------------------*/ -static void Test_Obj_Copy(void) -{ - hid_t fid = -1; /* File id */ - hid_t fapl_new = (-1); /* File access property id */ - unsigned new_format; /* New format or old format */ - - if((fapl_new = H5Pcreate(H5P_FILE_ACCESS)) < 0) { - fprintf(stderr, "Error: H5Pcreate failed.\n"); - goto out; - } - if(H5Pset_libver_bounds(fapl_new, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0) { - fprintf(stderr, "Error: H5Pset_libver_bounds failed.\n"); - goto out; - } - - /* Test with old & new format groups */ - for(new_format = FALSE; new_format <= TRUE; new_format++) { - - /* Set the FAPL for the type of format */ - /* Create source file */ - if(new_format) - fid = H5Fcreate(HDF_FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_new); - else - fid = H5Fcreate(HDF_FILE1_NEW, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if(fid < 0) { - fprintf(stderr, "Error: H5Fcreate failed.\n"); - goto out; - } - - gent_datasets(fid); - gent_empty_group(fid); - gent_nested_datasets(fid); - gent_nested_group(fid); - gent_att_compound_vlstr(fid); - - H5Fclose(fid); - fid = (-1); - } /* end for */ - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid > 0) - H5Fclose(fid); - if(fapl_new > 0) - H5Pclose(fapl_new); -} - -/*------------------------------------------------------------------------- - * Function: Test_Ref_Copy - * - * Purpose: Testing with various references - * - *------------------------------------------------------------------------*/ -static void Test_Ref_Copy(void) -{ - hid_t fid=0; - herr_t status; - - fid = H5Fcreate (HDF_FILE2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", HDF_FILE2); - goto out; - } - - /* add object reference */ - status = gen_obj_ref(fid); - if (status < 0) - fprintf(stderr, "Failed to generate object reference.\n"); - - /* add region reference */ - status = gen_region_ref(fid); - if (status < 0) - fprintf(stderr, "Failed to generate region reference.\n"); - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid > 0) - H5Fclose(fid); -} - -/*------------------------------------------------------------------------- - * Function: gen_extlink_trg - * - * Purpose: generate target external link objs - * - * Programmer: Jonathan Kim (March 03, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_extlink_trg(hid_t loc_id) -{ - hid_t gid=0, tid=0; - int status; - herr_t ret = SUCCEED; - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - gid = H5Gcreate2(loc_id, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*-------------- - * add dataset */ - gent_simple(loc_id); - - /*-------------------- - * add named datatype - */ - tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(loc_id, "datatype", tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Tcommit2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(gid > 0) - H5Gclose(gid); - if(tid > 0) - H5Tclose(tid); - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: gen_extlink_src - * - * Purpose: generate source external link objs - * - * Programmer: Jonathan Kim (March 03, 2010) - *------------------------------------------------------------------------*/ -static herr_t gen_extlink_src(hid_t loc_id) -{ - hid_t gid=0; - int status; - herr_t ret = SUCCEED; - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid = H5Gcreate2(loc_id, "/group_ext", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s %d> H5Gcreate2 failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External links - *------------------------------------------------------------------------*/ - /* link to dataset */ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "/simple", gid, "extlink_dset", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* link to group */ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "/group", gid, "extlink_grp", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* link to datatype */ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "/datatype", gid, "extlink_datatype", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* dangling link - no obj*/ - status = H5Lcreate_external(HDF_EXT_TRG_FILE, "notyet", gid, "extlink_notyet1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - - /* dangling link - no file */ - status = H5Lcreate_external("notyet_file.h5", "notyet", gid, "extlink_notyet2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s %d> H5Lcreate_external failed.\n", FUNC, __LINE__); - ret = FAIL; - goto out; - } - -out: - if(gid > 0) - H5Gclose(gid); - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: Test_Extlink_Copy - * - * Purpose: gerenate external link files - * - *------------------------------------------------------------------------*/ -static void Test_Extlink_Copy(void) -{ - hid_t fid1=0; - hid_t fid2=0; - herr_t status; - - fid1 = H5Fcreate (HDF_EXT_SRC_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", HDF_EXT_SRC_FILE); - goto out; - } - - fid2 = H5Fcreate (HDF_EXT_TRG_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", HDF_EXT_TRG_FILE); - goto out; - } - - /* add links to source external link file */ - status = gen_extlink_src(fid1); - if (status < 0) - fprintf(stderr, "Error: %s> gen_extlink_src failed.\n", HDF_EXT_SRC_FILE); - - /* add objs to target external link file */ - status = gen_extlink_trg(fid2); - if (status < 0) - fprintf(stderr, "Error: %s> gen_extlink_trg failed.\n", HDF_EXT_TRG_FILE); - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid1 > 0) - H5Fclose(fid1); - if(fid2 > 0) - H5Fclose(fid2); -} - -/*------------------------------------------------------------------------- - * Function: main - * - *------------------------------------------------------------------------- - */ - -int main(void) -{ - Test_Obj_Copy(); - Test_Ref_Copy(); - Test_Extlink_Copy(); - - return 0; -} - diff --git a/tools/h5copy/testfiles/h5copy_extlinks_src.h5 b/tools/h5copy/testfiles/h5copy_extlinks_src.h5 deleted file mode 100644 index 7b8621e..0000000 Binary files a/tools/h5copy/testfiles/h5copy_extlinks_src.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copy_extlinks_src.out.ls b/tools/h5copy/testfiles/h5copy_extlinks_src.out.ls deleted file mode 100644 index 0134714..0000000 --- a/tools/h5copy/testfiles/h5copy_extlinks_src.out.ls +++ /dev/null @@ -1,43 +0,0 @@ -Opened "./testfiles/h5copy_extlinks_src.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/copy1_dset Dataset {6/6} - Location: 1:800 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/copy1_group Group - Location: 1:4696 - Links: 1 -/copy1_group/extlink_datatype External Link {h5copy_extlinks_trg.h5//datatype} -/copy1_group/extlink_dset External Link {h5copy_extlinks_trg.h5//simple} -/copy1_group/extlink_grp External Link {h5copy_extlinks_trg.h5//group} -/copy1_group/extlink_notyet1 External Link {h5copy_extlinks_trg.h5//notyet} -/copy1_group/extlink_notyet2 External Link {notyet_file.h5//notyet} -/copy2_dset Dataset {6/6} - Location: 1:4216 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/copy2_group Group - Location: 1:5128 - Links: 1 -/copy2_group/extlink_datatype Type - Location: 1:6328 - Links: 1 - Type: shared-1:6328 32-bit little-endian integer -/copy2_group/extlink_dset Dataset {6/6} - Location: 1:5496 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/copy2_group/extlink_grp Group - Location: 1:6288 - Links: 1 -/copy2_group/extlink_notyet1 External Link {h5copy_extlinks_trg.h5//notyet} -/copy2_group/extlink_notyet2 External Link {notyet_file.h5//notyet} -/copy_dangle1_1 External Link {h5copy_extlinks_trg.h5//notyet} -/copy_dangle1_2 External Link {h5copy_extlinks_trg.h5//notyet} -/copy_dangle2_1 External Link {notyet_file.h5//notyet} -/copy_dangle2_2 External Link {notyet_file.h5//notyet} diff --git a/tools/h5copy/testfiles/h5copy_extlinks_trg.h5 b/tools/h5copy/testfiles/h5copy_extlinks_trg.h5 deleted file mode 100644 index 3a0242d..0000000 Binary files a/tools/h5copy/testfiles/h5copy_extlinks_trg.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copy_misc1.out b/tools/h5copy/testfiles/h5copy_misc1.out deleted file mode 100644 index 1624f2b..0000000 --- a/tools/h5copy/testfiles/h5copy_misc1.out +++ /dev/null @@ -1,3 +0,0 @@ -Copying file <./testfiles/h5copytst.h5> and object to file <./testfiles/h5copy_misc1.out.h5> and object -Error in copy...Exiting -h5copy error: group doesn't exist. Use -p to create parent groups. diff --git a/tools/h5copy/testfiles/h5copy_ref.h5 b/tools/h5copy/testfiles/h5copy_ref.h5 deleted file mode 100644 index bd727e6..0000000 Binary files a/tools/h5copy/testfiles/h5copy_ref.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copy_ref.out.ls b/tools/h5copy/testfiles/h5copy_ref.out.ls deleted file mode 100644 index d685af2..0000000 --- a/tools/h5copy/testfiles/h5copy_ref.out.ls +++ /dev/null @@ -1,31 +0,0 @@ -Opened "./testfiles/h5copy_ref.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/COPY Group - Location: 1:1464 - Links: 1 -/COPY/Dset1 Dataset {3/3} - Location: 1:1504 - Links: 2 - Storage:
- Type: 32-bit little-endian integer -/COPY/Dset2 Dataset {3/3, 16/16} - Location: 1:1960 - Links: 3 - Storage:
- Type: 8-bit integer -/COPY/Dset_OBJREF Dataset {2/2} - Location: 1:5184 - Links: 1 - Storage:
- Type: object reference -/COPY/Dset_REGREF Dataset {2/2} - Location: 1:5304 - Links: 1 - Storage:
- Type: dataset region reference -/COPY/Group Group - Location: 1:2096 - Links: 3 -/~obj_pointed_by_2096 Group, same as /COPY/Group diff --git a/tools/h5copy/testfiles/h5copytst.h5 b/tools/h5copy/testfiles/h5copytst.h5 deleted file mode 100644 index 1d1cbf1..0000000 Binary files a/tools/h5copy/testfiles/h5copytst.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copytst.out.ls b/tools/h5copy/testfiles/h5copytst.out.ls deleted file mode 100644 index 4044aaf..0000000 --- a/tools/h5copy/testfiles/h5copytst.out.ls +++ /dev/null @@ -1,429 +0,0 @@ -Opened "./testfiles/h5copytst.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/A Group - Location: 1:84304 - Links: 1 -/A/B1 Group - Location: 1:85008 - Links: 1 -/A/B1/simple Dataset {6/6} - Location: 1:84176 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/A/B2 Group - Location: 1:88544 - Links: 1 -/A/B2/simple2 Dataset {6/6} - Location: 1:88416 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/C Group - Location: 1:91752 - Links: 1 -/C/D Group - Location: 1:92456 - Links: 1 -/C/D/simple Dataset {6/6} - Location: 1:91624 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/E Group - Location: 1:106368 - Links: 1 -/E/F Group - Location: 1:107072 - Links: 1 -/E/F/grp_dsets Group - Location: 1:94568 - Links: 1 -/E/F/grp_dsets/chunk Dataset {6/6} - Location: 1:98752 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compact Dataset {6/6} - Location: 1:99208 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compound Dataset {2/2} - Location: 1:99344 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/E/F/grp_dsets/compressed Dataset {6/6} - Location: 1:101656 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/E/F/grp_dsets/named_vl Dataset {2/2} - Location: 1:105920 - Links: 1 - Storage:
- Type: shared-1:106048 variable length of - 32-bit little-endian integer -/E/F/grp_dsets/nested_vl Dataset {2/2} - Location: 1:106096 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/E/F/grp_dsets/simple Dataset {6/6} - Location: 1:106240 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/vl Type - Location: 1:106048 - Links: 2 - Type: shared-1:106048 variable length of - 32-bit little-endian integer -/G Group - Location: 1:122016 - Links: 1 -/G/H Group - Location: 1:122720 - Links: 1 -/G/H/grp_nested Group - Location: 1:109096 - Links: 1 -/G/H/grp_nested/grp_dsets Group - Location: 1:109888 - Links: 1 -/G/H/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:114072 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:114528 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:114664 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/G/H/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:116976 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:121240 - Links: 1 - Storage:
- Type: shared-1:121368 variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:121416 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:121560 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/vl Type - Location: 1:121368 - Links: 2 - Type: shared-1:121368 variable length of - 32-bit little-endian integer -/chunk Dataset {6/6} - Location: 1:6312 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/compact Dataset {6/6} - Location: 1:6440 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/compound Dataset {2/2} - Location: 1:8624 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/compressed Dataset {6/6} - Location: 1:12984 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets Group - Location: 1:28128 - Links: 1 -/grp_dsets/chunk Dataset {6/6} - Location: 1:32312 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compact Dataset {6/6} - Location: 1:32768 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compound Dataset {2/2} - Location: 1:32904 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_dsets/compressed Dataset {6/6} - Location: 1:35216 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets/named_vl Dataset {2/2} - Location: 1:39480 - Links: 1 - Storage:
- Type: shared-1:39608 variable length of - 32-bit little-endian integer -/grp_dsets/nested_vl Dataset {2/2} - Location: 1:39656 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_dsets/simple Dataset {6/6} - Location: 1:39800 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/simple_group Dataset {6/6} - Location: 1:55912 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/vl Type - Location: 1:39608 - Links: 2 - Type: shared-1:39608 variable length of - 32-bit little-endian integer -/grp_empty Group - Location: 1:27336 - Links: 1 -/grp_nested Group - Location: 1:40592 - Links: 1 -/grp_nested/grp_dsets Group - Location: 1:41384 - Links: 1 -/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:45568 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:46024 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:46160 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:48472 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:52736 - Links: 1 - Storage:
- Type: shared-1:52864 variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:52912 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:53056 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/vl Type - Location: 1:52864 - Links: 2 - Type: shared-1:52864 variable length of - 32-bit little-endian integer -/grp_rename Group - Location: 1:57120 - Links: 1 -/grp_rename/chunk Dataset {6/6} - Location: 1:61304 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compact Dataset {6/6} - Location: 1:61760 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compound Dataset {2/2} - Location: 1:61896 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/compressed Dataset {6/6} - Location: 1:64208 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets Group - Location: 1:70000 - Links: 1 -/grp_rename/grp_dsets/chunk Dataset {6/6} - Location: 1:74184 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compact Dataset {6/6} - Location: 1:74640 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compound Dataset {2/2} - Location: 1:74776 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/grp_dsets/compressed Dataset {6/6} - Location: 1:77088 - Links: 1 - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets/named_vl Dataset {2/2} - Location: 1:81352 - Links: 1 - Storage:
- Type: shared-1:81480 variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/nested_vl Dataset {2/2} - Location: 1:81528 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/simple Dataset {6/6} - Location: 1:81672 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/vl Type - Location: 1:81480 - Links: 2 - Type: shared-1:81480 variable length of - 32-bit little-endian integer -/grp_rename/named_vl Dataset {2/2} - Location: 1:68472 - Links: 1 - Storage:
- Type: shared-1:68600 variable length of - 32-bit little-endian integer -/grp_rename/nested_vl Dataset {2/2} - Location: 1:68648 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/simple Dataset {6/6} - Location: 1:68792 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/grp_rename/vl Type - Location: 1:68600 - Links: 2 - Type: shared-1:68600 variable length of - 32-bit little-endian integer -/named_vl Dataset {2/2} - Location: 1:17280 - Links: 1 - Storage:
- Type: shared-1:17408 variable length of - 32-bit little-endian integer -/nested_vl Dataset {2/2} - Location: 1:21760 - Links: 1 - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/rename Dataset {2/2} - Location: 1:26128 - Links: 1 - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/simple Dataset {6/6} - Location: 1:800 - Links: 1 - Storage:
- Type: 32-bit little-endian integer -/simple_top Dataset {6/6} - Location: 1:23952 - Links: 1 - Storage:
- Type: 32-bit little-endian integer diff --git a/tools/h5copy/testfiles/h5copytst_new.h5 b/tools/h5copy/testfiles/h5copytst_new.h5 deleted file mode 100644 index fd820ca..0000000 Binary files a/tools/h5copy/testfiles/h5copytst_new.h5 and /dev/null differ diff --git a/tools/h5copy/testfiles/h5copytst_new.out.ls b/tools/h5copy/testfiles/h5copytst_new.out.ls deleted file mode 100644 index 9df6b2e..0000000 --- a/tools/h5copy/testfiles/h5copytst_new.out.ls +++ /dev/null @@ -1,502 +0,0 @@ -############################# -Expected output for 'h5ls ../testfiles/h5copytst_new.out.h5' -############################# -Opened "../testfiles/h5copytst_new.out.h5" with sec2 driver. -/ Group - Location: 1:96 - Links: 1 -/A Group - Location: 1:65602 - Links: 1 -/A/B1 Group - Location: 1:66306 - Links: 1 -/A/B1/simple Dataset {6/6} - Location: 1:65509 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/A/B2 Group - Location: 1:69807 - Links: 1 -/A/B2/simple2 Dataset {6/6} - Location: 1:69714 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/C Group - Location: 1:72980 - Links: 1 -/C/D Group - Location: 1:73684 - Links: 1 -/C/D/simple Dataset {6/6} - Location: 1:72887 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/E Group - Location: 1:76217 - Links: 1 -/E/F Group - Location: 1:76921 - Links: 1 -/E/F/grp_dsets Group - Location: 1:75044 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/E/F/grp_dsets/chunk Dataset {6/6} - Location: 1:76014 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compact Dataset {6/6} - Location: 1:75367 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/compound Dataset {2/2} - Location: 1:75470 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/E/F/grp_dsets/compressed Dataset {6/6} - Location: 1:75683 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/E/F/grp_dsets/named_vl Dataset {2/2} - Location: 1:75853 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:75793 variable length of - 32-bit little-endian integer -/E/F/grp_dsets/nested_vl Dataset {2/2} - Location: 1:76108 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/E/F/grp_dsets/simple Dataset {6/6} - Location: 1:75274 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/E/F/grp_dsets/vl Type - Location: 1:75793 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:75793 variable length of - 32-bit little-endian integer -/G Group - Location: 1:85688 - Links: 1 -/G/H Group - Location: 1:86392 - Links: 1 -/G/H/grp_nested Group - Location: 1:84436 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/G/H/grp_nested/grp_dsets Group - Location: 1:84515 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/G/H/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:85485 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:84838 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:84941 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/G/H/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:85154 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:85324 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:85264 variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:85579 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:84745 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/G/H/grp_nested/grp_dsets/vl Type - Location: 1:85264 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:85264 variable length of - 32-bit little-endian integer -/chunk Dataset {6/6} - Location: 1:2238 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/compact Dataset {6/6} - Location: 1:4240 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/compound Dataset {2/2} - Location: 1:6391 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/compressed Dataset {6/6} - Location: 1:6604 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets Group - Location: 1:27748 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_dsets/chunk Dataset {6/6} - Location: 1:28718 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compact Dataset {6/6} - Location: 1:28071 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/compound Dataset {2/2} - Location: 1:28174 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_dsets/compressed Dataset {6/6} - Location: 1:28387 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_dsets/named_vl Dataset {2/2} - Location: 1:28557 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:28497 variable length of - 32-bit little-endian integer -/grp_dsets/nested_vl Dataset {2/2} - Location: 1:28812 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_dsets/simple Dataset {6/6} - Location: 1:27978 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/simple_group Dataset {6/6} - Location: 1:46180 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_dsets/vl Type - Location: 1:28497 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:28497 variable length of - 32-bit little-endian integer -/grp_empty Group - Location: 1:27693 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_nested Group - Location: 1:35940 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_nested/grp_dsets Group - Location: 1:36019 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_nested/grp_dsets/chunk Dataset {6/6} - Location: 1:36989 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compact Dataset {6/6} - Location: 1:36342 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/compound Dataset {2/2} - Location: 1:36445 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_nested/grp_dsets/compressed Dataset {6/6} - Location: 1:36658 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_nested/grp_dsets/named_vl Dataset {2/2} - Location: 1:36828 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:36768 variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/nested_vl Dataset {2/2} - Location: 1:37083 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_nested/grp_dsets/simple Dataset {6/6} - Location: 1:36249 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_nested/grp_dsets/vl Type - Location: 1:36768 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:36768 variable length of - 32-bit little-endian integer -/grp_rename Group - Location: 1:47077 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_rename/chunk Dataset {6/6} - Location: 1:48047 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compact Dataset {6/6} - Location: 1:47400 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/compound Dataset {2/2} - Location: 1:47503 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/compressed Dataset {6/6} - Location: 1:47716 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets Group - Location: 1:55269 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX -/grp_rename/grp_dsets/chunk Dataset {6/6} - Location: 1:56239 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compact Dataset {6/6} - Location: 1:55592 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/compound Dataset {2/2} - Location: 1:55695 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/grp_rename/grp_dsets/compressed Dataset {6/6} - Location: 1:55908 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Chunks: {2} 8 bytes - Storage:
- Filter-0: deflate-1 OPT {1} - Type: 32-bit little-endian integer -/grp_rename/grp_dsets/named_vl Dataset {2/2} - Location: 1:56078 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:56018 variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/nested_vl Dataset {2/2} - Location: 1:56333 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/grp_dsets/simple Dataset {6/6} - Location: 1:55499 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/grp_dsets/vl Type - Location: 1:56018 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:56018 variable length of - 32-bit little-endian integer -/grp_rename/named_vl Dataset {2/2} - Location: 1:47886 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:47826 variable length of - 32-bit little-endian integer -/grp_rename/nested_vl Dataset {2/2} - Location: 1:48141 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/grp_rename/simple Dataset {6/6} - Location: 1:47307 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/grp_rename/vl Type - Location: 1:47826 - Links: 2 - Modified: XXXX-XX-XX XX:XX:XX XXX - Type: shared-1:47826 variable length of - 32-bit little-endian integer -/named_vl Dataset {2/2} - Location: 1:8657 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: shared-1:8606 variable length of - 32-bit little-endian integer -/nested_vl Dataset {2/2} - Location: 1:22942 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: variable length of - variable length of - 32-bit little-endian integer -/rename Dataset {2/2} - Location: 1:27240 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: struct { - "str1" +0 20-byte null-terminated ASCII string - "str2" +20 20-byte null-terminated ASCII string - } 40 bytes -/simple Dataset {6/6} - Location: 1:800 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer -/simple_top Dataset {6/6} - Location: 1:25099 - Links: 1 - Modified: XXXX-XX-XX XX:XX:XX XXX - Storage:
- Type: 32-bit little-endian integer diff --git a/tools/h5copy/testh5copy.sh.in b/tools/h5copy/testh5copy.sh.in deleted file mode 100644 index 859d7c8..0000000 --- a/tools/h5copy/testh5copy.sh.in +++ /dev/null @@ -1,607 +0,0 @@ -#! /bin/sh -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -# -# Tests for the h5copy tool -# -# Pedro Vicente Nunes (pvn@hdfgroup.org), Albert Cheng (acheng@hdfgroup.org) -# Thursday, July 20, 2006 -# - -srcdir=@srcdir@ - -# source dirs -SRC_TOOLS="$srcdir/.." -SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" -# testfiles source dirs for tools -SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" -SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" -SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" -SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" -SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" -SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" -SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" - -TESTNAME=h5copy -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -###################################################################### -# test files -# -------------------------------------------------------------------- -# All the test files copy from source directory to test directory -# NOTE: Keep this framework to add/remove test files. -# Any test files from other tools can be used in this framework. -# This list are also used for checking exist. -# Comment '#' without space can be used. -# -------------------------------------------------------------------- -# List of files that will be copied over to local test dir -LIST_HDF5_TEST_FILES=" -$SRC_H5COPY_TESTFILES/h5copytst.h5 -$SRC_H5COPY_TESTFILES/h5copy_ref.h5 -$SRC_H5COPY_TESTFILES/h5copy_extlinks_src.h5 -$SRC_H5COPY_TESTFILES/h5copy_extlinks_trg.h5 -" - -# List of expect files that will be copied over to local test dir -LIST_OTHER_TEST_FILES=" -$SRC_H5COPY_TESTFILES/h5copy_misc1.out -" - -H5COPY=h5copy # The tool name -H5COPY_BIN=`pwd`/$H5COPY # The path of the tool binary -H5DIFF=h5diff # The h5diff tool name -H5DIFF_BIN=`pwd`/../h5diff/$H5DIFF # The path of the h5diff tool binary -H5LS=h5ls # The h5ls tool name -H5LS_ARGS=-Svr # Arguments to the h5ls tool -H5LS_BIN=`pwd`/../h5ls/$H5LS # The path of the h5ls tool binary - -RM='rm -rf' -CMP='cmp -s' -DIFF='diff -c' -CP='cp' -DIRNAME='dirname' -LS='ls' -AWK='awk' - -nerrors=0 -verbose=yes -h5haveexitcode=yes # default is yes - -TESTDIR=./testfiles -test -d $TESTDIR || mkdir $TESTDIR - -# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. -if [ -n "$RUNSERIAL_NOEXITCODE" ]; then - echo "***Warning*** Serial Exit Code is not passed back to shell corretly." - echo "***Warning*** Exit code checking is skipped." - h5haveexitcode=no -fi - -# -# copy test files and expected output files from source dirs to test dir -# -COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" - -COPY_TESTFILES_TO_TESTDIR() -{ - # copy test files. Used -f to make sure get a new copy - for tstfile in $COPY_TESTFILES - do - # ignore '#' comment - echo $tstfile | tr -d ' ' | grep '^#' > /dev/null - RET=$? - if [ $RET -eq 1 ]; then - # skip cp if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=`$DIRNAME $tstfile` - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR - if [ $? -ne 0 ]; then - echo "Error: FAILED to copy $tstfile ." - - # Comment out this to CREATE expected file - exit $EXIT_FAILURE - fi - fi - fi - done -} - -CLEAN_TESTFILES_AND_TESTDIR() -{ - # skip rm if srcdir is same as destdir - # this occurs when build/test performed in source dir and - # make cp fail - SDIR=$SRC_H5COPY_TESTFILES - INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` - INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` - if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $RM $TESTDIR - fi -} - - -# Print a "SKIP" message -SKIP() { - TESTING $H5COPY $@ - echo " -SKIP-" -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Testing". -TESTING() -{ - SPACES=" " - echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY() -{ - SPACES=" " - echo "Verifying h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Print a line-line message left justified in a field of 70 characters -# beginning with the word "Verifying". -# -VERIFY_OUTPUT() -{ - SPACES=" " - echo "Verifying output files $* $SPACES" | cut -c1-70 | tr -d '\012' -} - -# Source in the output filter function definitions. -. $srcdir/../../bin/output_filter.sh - -# Run a test and print PASS or *FAIL*. If h5copy can complete -# with exit status 0, consider it pass. If a test fails then increment -# the `nerrors' global variable. -# Assumed arguments: -# $1 is -i -# $2 is input file -# $3 is -o -# $4 is output file -# $* everything else arguments for h5copy. - -TOOLTEST() -{ - actualout="$TESTDIR/tooltest.actualout" - actualerr="$TESTDIR/tooltest.actualerr" - runh5diff=yes - if [ "$1" = -i ]; then - inputfile=$2 - else - if [ "$1" = -f ]; then - inputfile=$4 - else - inputfile=$3 - fi - runh5diff=no - fi - if [ "$3" = -o ]; then - outputfile=$4 - else - if [ "$1" = -f ]; then - outputfile=$6 - else - outputfile=$5 - fi - runh5diff=no - fi - - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN $@ - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - if [ $runh5diff != no ]; then - H5DIFFTEST $inputfile $outputfile $7 $9 - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $outputfile - fi - fi -} - -# TOOLTEST back-to-back -TOOLTEST_PREFILL() -{ - actualout="$TESTDIR/tooltest.actualout" - actualerr="$TESTDIR/tooltest.actualerr" - runh5diff=yes - if [ "$1" = -i ]; then - inputfile=$2 - else - runh5diff=no - fi - if [ "$3" = -o ]; then - outputfile=$4 - else - runh5diff=no - fi - - grp_name=$5 - grp_name2=$6 - obj_name=$7 - obj_name2=$8 - - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $inputfile -o $outputfile -v -s $grp_name -d $grp_name2 - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $inputfile -o $outputfile -v -s $obj_name -d $obj_name2 - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - if [ $runh5diff != no ]; then - H5DIFFTEST $inputfile $outputfile $obj_name $obj_name2 - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $outputfile - fi - fi - fi -} - -# TOOLTEST back-to-back -TOOLTEST_SAME() -{ - actualout="$TESTDIR/tooltest.actualout" - actualerr="$TESTDIR/tooltest.actualerr" - runh5diff=yes - if [ "$1" = -i ]; then - inputfile=$2 - else - runh5diff=no - fi - if [ "$3" = -o ]; then - outputfile=$4 - else - runh5diff=no - fi - - grp_name=$5 - grp_name2=$6 - - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $inputfile -o $outputfile -v -s $grp_name -d $grp_name - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - TESTING $H5COPY $@ - ( - echo "#############################" - echo " output for '$H5COPY $@'" - echo "#############################" - $RUNSERIAL $H5COPY_BIN -i $outputfile -o $outputfile -v -s $grp_name -d $grp_name2 - ) > $actualout 2> $actualerr - RET=$? - if [ $RET != 0 ]; then - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - - if [ $runh5diff != no ]; then - H5DIFFTEST $outputfile $outputfile $grp_name $grp_name2 - fi - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $outputfile - fi - fi - fi -} - - -# Compare the two text files -# PASS if same -# FAIL if different, and show the diff -# -# Assumed arguments: -# $1 is text file1 (expected output) -# $2 is text file2 (actual output) -CMP_OUTPUT() -{ - expect=$1 - actual=$2 - - VERIFY_OUTPUT $@ - if [ ! -f $expect ]; then - # Create the expect file if it doesn't yet exist. - echo " CREATED" - cp $actual $expect - elif $CMP $expect $actual; then - echo " PASSED" - else - echo "*FAILED*" - echo " Expected output differs from actual output" - nerrors="`expr $nerrors + 1`" - test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' - fi -} - -TOOLTEST_FAIL() -{ - expectout="$TESTDIR/$1" - actualout="$TESTDIR/$1.actualout" - actualerr="$TESTDIR/$1.actualerr" - actualout_sav=${actualout}-sav - actualerr_sav=${actualerr}-sav - shift - if [ "$1" = -i ]; then - inputfile=$2 - fi - if [ "$3" = -o ]; then - outputfile=$4 - fi - - TESTING $H5COPY $@ - ( - #echo "#############################" - #echo " output for '$H5COPY $@'" - #echo "#############################" - $RUNSERIAL $H5COPY_BIN $@ - ) > $actualout 2> $actualerr - - RET=$? - # save actualout and actualerr in case they are needed later. - cp $actualout $actualout_sav - STDOUT_FILTER $actualout - cp $actualerr $actualerr_sav - STDERR_FILTER $actualerr - if [ $RET != 0 ]; then - echo " PASSED" - # Verifying output text from h5copy - if [ "$expectout" != "SKIP" ]; then - # combine stderr to stdout to compare the output at once. - # We may seperate stdout and stderr later. - cat $actualerr >> $actualout - CMP_OUTPUT $expectout $actualout - fi - else - echo "*FAILED*" - echo "failed result is:" - cat $actualout - nerrors="`expr $nerrors + 1`" - fi - - - # Clean up output file - if test -z "$HDF5_NOCLEANUP"; then - rm -f $actualout $actualerr $actualout_sav $actualerr_sav $outputfile - fi -} - - -# Call the h5diff tool -# -H5DIFFTEST() -{ - VERIFY $@ - $RUNSERIAL $H5DIFF_BIN -q "$@" - RET=$? - if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi -} - -# Call the h5diff tool with a call that is expected to fail -# -H5DIFFTEST_FAIL() -{ - VERIFY $@ - $RUNSERIAL $H5DIFF_BIN -q "$@" - RET=$? - - if [ $h5haveexitcode = 'yes' -a $RET != 1 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - else - echo " PASSED" - fi -} - -# Copy single datasets of various forms from one group to another, -# adding object copied to the destination file each time -# -# Assumed arguments: -# -COPY_OBJECTS() -{ - TESTFILE="$TESTDIR/h5copytst.h5" - - echo "Test copying various forms of datasets" - TOOLTEST -i $TESTFILE -o $TESTDIR/simple.out.h5 -v -s simple -d simple - TOOLTEST -i $TESTFILE -o $TESTDIR/chunk.out.h5 -v -s chunk -d chunk - TOOLTEST -i $TESTFILE -o $TESTDIR/compact.out.h5 -v -s compact -d compact - TOOLTEST -i $TESTFILE -o $TESTDIR/compound.out.h5 -v -s compound -d compound - TOOLTEST -i $TESTFILE -o $TESTDIR/compressed.out.h5 -v -s compressed -d compressed - TOOLTEST -i $TESTFILE -o $TESTDIR/named_vl.out.h5 -v -s named_vl -d named_vl - TOOLTEST -i $TESTFILE -o $TESTDIR/nested_vl.out.h5 -v -s nested_vl -d nested_vl - TOOLTEST -i $TESTFILE -o $TESTDIR/dset_attr.out.h5 -v -s /dset_attr -d /dset_attr - - echo "Test copying dataset within group in source file to root of destination" - TOOLTEST -i $TESTFILE -o $TESTDIR/simple_top.out.h5 -v -s grp_dsets/simple -d simple_top - - echo "Test copying & renaming dataset" - TOOLTEST -i $TESTFILE -o $TESTDIR/dsrename.out.h5 -v -s compound -d rename - - echo "Test copying empty, 'full' & 'nested' groups" - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_empty.out.h5 -v -s grp_empty -d grp_empty - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_dsets.out.h5 -v -s grp_dsets -d grp_dsets - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_nested.out.h5 -v -s grp_nested -d grp_nested - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_attr.out.h5 -v -s grp_attr -d grp_attr - - echo "Test copying dataset within group in source file to group in destination" - TOOLTEST_PREFILL -i $TESTFILE -o $TESTDIR/simple_group.out.h5 grp_dsets grp_dsets /grp_dsets/simple /grp_dsets/simple_group - - echo "Test copying & renaming group" - TOOLTEST -i $TESTFILE -o $TESTDIR/grp_rename.out.h5 -v -s grp_dsets -d grp_rename - - echo "Test copying 'full' group hierarchy into group in destination file" - TOOLTEST_PREFILL -i $TESTFILE -o $TESTDIR/grp_dsets_rename.out.h5 grp_dsets grp_rename grp_dsets /grp_rename/grp_dsets - - echo "Test copying objects into group hier. that doesn't exist yet in destination file" - TOOLTEST -i $TESTFILE -o $TESTDIR/A_B1_simple.out.h5 -vp -s simple -d /A/B1/simple - TOOLTEST -i $TESTFILE -o $TESTDIR/A_B2_simple2.out.h5 -vp -s simple -d /A/B2/simple2 - TOOLTEST -i $TESTFILE -o $TESTDIR/C_D_simple.out.h5 -vp -s /grp_dsets/simple -d /C/D/simple - TOOLTEST -i $TESTFILE -o $TESTDIR/E_F_grp_dsets.out.h5 -vp -s /grp_dsets -d /E/F/grp_dsets - TOOLTEST -i $TESTFILE -o $TESTDIR/G_H_grp_nested.out.h5 -vp -s /grp_nested -d /G/H/grp_nested -} - -# Copy references in various way. -# -# Assumed arguments: -# -COPY_REFERENCES() -{ - TESTFILE="$TESTDIR/h5copy_ref.h5" - - echo "Test copying object and region references" - TOOLTEST -f ref -i $TESTFILE -o $TESTDIR/region_ref.out.h5 -v -s / -d /COPY -} - -# Copy external links. -# adding to the destination file each time compare the result -# -# Assumed arguments: -# -COPY_EXT_LINKS() -{ - TESTFILE="$TESTDIR/h5copy_extlinks_src.h5" - - echo "Test copying external link directly without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_link.out.h5 -s /group_ext/extlink_dset -d /copy1_dset - - echo "Test copying external link directly with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_link_f.out.h5 -v -s /group_ext/extlink_dset -d /copy2_dset - - echo "Test copying dangling external link (no obj) directly without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_dangle_noobj.out.h5 -s /group_ext/extlink_notyet1 -d /copy_dangle1_1 - - echo "Test copying dangling external link (no obj) directly with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_dangle_noobj_f.out.h5 -v -s /group_ext/extlink_notyet1 -d /copy_dangle1_2 - - echo "Test copying dangling external link (no file) directly without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_dangle_nofile.out.h5 -s /group_ext/extlink_notyet2 -d /copy_dangle2_1 - - echo "Test copying dangling external link (no file) directly with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_dangle_nofile_f.out.h5 -v -s /group_ext/extlink_notyet2 -d /copy_dangle2_2 - - echo "Test copying a group contains external links without -f ext" - TOOLTEST -v -i $TESTFILE -o $TESTDIR/ext_link_group.out.h5 -s /group_ext -d /copy1_group - - echo "Test copying a group contains external links with -f ext" - TOOLTEST -f ext -i $TESTFILE -o $TESTDIR/ext_link_group_f.out.h5 -v -s /group_ext -d /copy2_group -} - -# Test misc. -# -# Assumed arguments: -# -TEST_MISC() -{ - TESTFILE="$TESTDIR/h5copytst.h5" - - echo "Test copying object into group which doesn't exist, without -p" - TOOLTEST_FAIL h5copy_misc1.out -i $TESTFILE -o $TESTDIR/h5copy_misc1.out.h5 -v -s /simple -d /g1/g2/simple - - echo "Test copying objects to the same file " - TOOLTEST_SAME -i $TESTFILE -o $TESTDIR/samefile1.out.h5 /simple /simple_cp - TOOLTEST_SAME -i $TESTFILE -o $TESTDIR/samefile2.out.h5 /grp_dsets /grp_dsets_cp -} - -############################################################################## -### T H E T E S T S ### -############################################################################## -# prepare for test -COPY_TESTFILES_TO_TESTDIR - -# Start tests -COPY_OBJECTS -COPY_REFERENCES -COPY_EXT_LINKS -TEST_MISC - -# Clean up temporary files/directories -CLEAN_TESTFILES_AND_TESTDIR - -if test $nerrors -eq 0 ; then - echo "All $TESTNAME tests passed." - exit $EXIT_SUCCESS -else - echo "$TESTNAME tests failed with $nerrors errors." - exit $EXIT_FAILURE -fi diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt deleted file mode 100644 index 4d386ad..0000000 --- a/tools/h5diff/CMakeLists.txt +++ /dev/null @@ -1,85 +0,0 @@ -cmake_minimum_required (VERSION 3.1.0) -PROJECT (HDF5_TOOLS_H5DIFF) - -#----------------------------------------------------------------------------- -# Setup include Directories -#----------------------------------------------------------------------------- -INCLUDE_DIRECTORIES (${HDF5_TOOLS_DIR}/lib) - -# -------------------------------------------------------------------- -# Add the h5diff executables -# -------------------------------------------------------------------- -add_executable (h5diff - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_main.c -) -TARGET_NAMING (h5diff STATIC) -TARGET_C_PROPERTIES (h5diff STATIC " " " ") -target_link_libraries (h5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) -set_target_properties (h5diff PROPERTIES FOLDER tools) -set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5diff") - -set (H5_DEP_EXECUTABLES h5diff) - -if (H5_HAVE_PARALLEL) - add_executable (ph5diff - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diff_common.c - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/ph5diff_main.c - ) - TARGET_NAMING (ph5diff STATIC) - TARGET_C_PROPERTIES (ph5diff STATIC " " " ") - target_link_libraries (ph5diff ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) - set_target_properties (ph5diff PROPERTIES FOLDER tools) - set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};ph5diff") -endif (H5_HAVE_PARALLEL) - -if (BUILD_TESTING) - # -------------------------------------------------------------------- - # Add the h5diff and test executables - # -------------------------------------------------------------------- - if (HDF5_BUILD_GENERATORS) - add_executable (h5diffgentest ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/h5diffgentest.c) - TARGET_NAMING (h5diffgentest STATIC) - TARGET_C_PROPERTIES (h5diffgentest STATIC " " " ") - target_link_libraries (h5diffgentest ${HDF5_LIB_TARGET}) - set_target_properties (h5diffgentest PROPERTIES FOLDER generator/tools) - - #add_test (NAME h5diffgentest COMMAND $) - endif (HDF5_BUILD_GENERATORS) - - include (CMakeTests.cmake) - -endif (BUILD_TESTING) - -############################################################################## -############################################################################## -### I N S T A L L A T I O N ### -############################################################################## -############################################################################## - -#----------------------------------------------------------------------------- -# Rules for Installation of tools using make Install target -#----------------------------------------------------------------------------- - -#INSTALL_PROGRAM_PDB (h5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications) - -install ( - TARGETS - h5diff - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications -) - -if (H5_HAVE_PARALLEL) - - #INSTALL_PROGRAM_PDB (ph5diff ${HDF5_INSTALL_BIN_DIR} toolsapplications) - - install ( - TARGETS - ph5diff - EXPORT - ${HDF5_EXPORTED_TARGETS} - RUNTIME DESTINATION ${HDF5_INSTALL_BIN_DIR} COMPONENT toolsapplications - ) -endif (H5_HAVE_PARALLEL) diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake deleted file mode 100644 index 5d3d433..0000000 --- a/tools/h5diff/CMakeTests.cmake +++ /dev/null @@ -1,1362 +0,0 @@ - -############################################################################## -############################################################################## -### T E S T I N G ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # Copy all the HDF5 files from the test directory into the source directory - # -------------------------------------------------------------------- - set (LIST_HDF5_TEST_FILES - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_basic1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_basic2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_types.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dtypes.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_hyper1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_hyper2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_empty.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_links.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_softlinks.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_linked_softlink.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_extlink_src.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_extlink_trg.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_ext2softlink_src.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_ext2softlink_trg.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset_zero_dim_size1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_dset_zero_dim_size2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_danglelinks1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_danglelinks2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_grp_recurse_ext2-3.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude1-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude1-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude2-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude2-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_comp_vl_strs.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen2.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5 - # tools/testfiles/vds - ${HDF5_TOOLS_DIR}/testfiles/vds/1_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_d.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_e.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_f.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/1_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_d.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_e.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/2_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/3_1_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/3_2_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_0.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_1.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_2.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/4_vds.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_a.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_b.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_c.h5 - ${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5 - ) - - set (LIST_OTHER_TEST_FILES - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_10.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_100.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_11.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_12.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_13.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_14.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_15.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_1.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_2.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_16_3.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_17.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_171.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_172.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_18_1.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_18.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_20.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_200.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_201.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_202.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_203.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_204.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_205.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_206.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_207.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_208.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_220.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_221.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_222.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_223.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_224.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_21.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_22.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_23.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_24.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_25.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_26.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_27.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_28.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_300.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_400.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_401.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_402.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_403.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_404.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_405.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_406.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_407.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_408.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_409.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_410.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_411.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_412.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_413.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_414.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_415.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_416.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_417.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_418.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_419.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_420.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_421.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_422.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_423.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_424.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_425.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_450.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_451.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_452.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_453.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_454.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_455.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_456.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_457.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_458.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_459.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_465.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_466.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_467.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_468.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_469.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_471.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_472.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_473.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_474.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_475.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_480.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_481.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_482.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_483.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_484.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_485.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_486.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_487.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_50.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_51.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_52.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_53.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_54.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_55.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_56.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_57.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_58.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_59.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_500.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_501.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_502.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_503.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_504.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_505.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_506.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_507.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_508.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_509.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_510.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_511.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_512.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_513.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_514.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_515.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_516.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_517.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_518.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_530.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_540.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_600.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_601.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_603.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_604.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_605.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_606.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_607.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_608.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_609.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_610.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_612.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_613.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_614.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_615.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_616.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_617.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_618.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_619.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_621.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_622.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_623.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_624.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_625.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_626.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_627.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_628.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_629.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_630.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_631.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_640.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_641.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_642.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_643.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_644.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_645.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_646.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_70.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_700.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_701.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_702.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_703.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_704.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_705.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_706.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_707.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_708.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_709.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_710.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_80.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_90.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v1.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v2.txt - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v3.txt - ) - - set (LIST_WIN_TEST_FILES - h5diff_101 - h5diff_102 - h5diff_103 - h5diff_104 - ) - - # Make testfiles dir under build dir - file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - - # - # copy test files from source to build dir - # - foreach (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - get_filename_component(fname "${h5_tstfiles}" NAME) - HDFTEST_COPY_FILE("${h5_tstfiles}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5diff_files") - endforeach () - - - # - # Overwrite system dependent files (Windows) and not VS2015 - # - if (WIN32 AND MSVC_VERSION LESS 1900) - foreach (h5_tstfiles ${LIST_WIN_TEST_FILES}) - get_filename_component(fname "${h5_tstfiles}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/${h5_tstfiles}w.txt" "${PROJECT_BINARY_DIR}/testfiles/${fname}.txt" "h5diff_files") - endforeach () - else () - foreach (h5_tstfiles ${LIST_WIN_TEST_FILES}) - get_filename_component(fname "${h5_tstfiles}" NAME) - HDFTEST_COPY_FILE("${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/${h5_tstfiles}.txt" "${PROJECT_BINARY_DIR}/testfiles/${fname}.txt" "h5diff_files") - endforeach () - endif () - add_custom_target(h5diff_files ALL COMMENT "Copying files needed by h5diff tests" DEPENDS ${h5diff_files_list}) - -############################################################################## -############################################################################## -### T H E T E S T S M A C R O S ### -############################################################################## -############################################################################## - - MACRO (ADD_H5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME H5DIFF-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DIFF-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (H5DIFF-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME H5DIFF-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.txt" - -D "TEST_APPEND=EXIT CODE:" - -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - if (H5_HAVE_PARALLEL) - ADD_PH5_TEST (${resultfile} ${resultcode} ${ARGN}) - endif () - ENDMACRO (ADD_H5_TEST file) - - MACRO (ADD_PH5_TEST resultfile resultcode) - # If using memchecker add tests without using scripts - if (HDF5_ENABLE_USING_MEMCHECKER) - add_test (NAME PH5DIFF-${resultfile} COMMAND $ ${MPIEXEC} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS} ${MPIEXEC_POSTFLAGS} ${ARGN}) - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT ${resultcode} STREQUAL "0") - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES WILL_FAIL "true") - endif () - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (PH5DIFF-${resultfile} PROPERTIES DEPENDS ${last_test}) - endif () - else (HDF5_ENABLE_USING_MEMCHECKER) - add_test ( - NAME PH5DIFF-${resultfile} - COMMAND "${CMAKE_COMMAND}" - -D "TEST_PROGRAM=${MPIEXEC};${MPIEXEC_PREFLAGS};${MPIEXEC_NUMPROC_FLAG};${MPIEXEC_MAX_NUMPROCS};${MPIEXEC_POSTFLAGS};$" - -D "TEST_ARGS:STRING=${ARGN}" - -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" - -D "TEST_OUTPUT=P_${resultfile}.out" - -D "TEST_EXPECT=${resultcode}" - -D "TEST_REFERENCE=${resultfile}.txt" -# -D "TEST_APPEND=EXIT CODE: [0-9]" -# -D "TEST_REF_FILTER=EXIT CODE: 0" - -D "TEST_SKIP_COMPARE=TRUE" - -P "${HDF_RESOURCES_EXT_DIR}/prunTest.cmake" - ) - endif (HDF5_ENABLE_USING_MEMCHECKER) - ENDMACRO (ADD_PH5_TEST file) - -############################################################################## -############################################################################## -### T H E T E S T S ### -############################################################################## -############################################################################## - - # -------------------------------------------------------------------- - # test file names - # -------------------------------------------------------------------- - set (FILE1 h5diff_basic1.h5) - set (FILE2 h5diff_basic2.h5) - set (FILE3 h5diff_types.h5) - set (FILE4 h5diff_dtypes.h5) - set (FILE5 h5diff_attr1.h5) - set (FILE6 h5diff_attr2.h5) - set (FILE7 h5diff_dset1.h5) - set (FILE8 h5diff_dset2.h5) - set (FILE9 h5diff_hyper1.h5) - set (FILE10 h5diff_hyper2.h5) - set (FILE11 h5diff_empty.h5) - set (FILE12 h5diff_links.h5) - set (FILE13 h5diff_softlinks.h5) - set (FILE14 h5diff_linked_softlink.h5) - set (FILE15 h5diff_extlink_src.h5) - set (FILE16 h5diff_extlink_trg.h5) - set (FILE17 h5diff_ext2softlink_src.h5) - set (FILE18 h5diff_ext2softlink_trg.h5) - set (FILE19 h5diff_dset_zero_dim_size1.h5) - set (FILE20 h5diff_dset_zero_dim_size2.h5) - set (DANGLE_LINK_FILE1 h5diff_danglelinks1.h5) - set (DANGLE_LINK_FILE2 h5diff_danglelinks2.h5) - set (GRP_RECURSE_FILE1 h5diff_grp_recurse1.h5) - set (GRP_RECURSE_FILE2 h5diff_grp_recurse2.h5) - # group recursive - same structure via external links through files - set (GRP_RECURSE1_EXT h5diff_grp_recurse_ext1.h5) - set (GRP_RECURSE2_EXT1 h5diff_grp_recurse_ext2-1.h5) - set (GRP_RECURSE2_EXT2 h5diff_grp_recurse_ext2-2.h5) - set (GRP_RECURSE2_EXT3 h5diff_grp_recurse_ext2-3.h5) - # same structure, same obj name with different value - set (EXCLUDE_FILE1_1 h5diff_exclude1-1.h5) - set (EXCLUDE_FILE1_2 h5diff_exclude1-2.h5) - # different structure and obj names - set (EXCLUDE_FILE2_1 h5diff_exclude2-1.h5) - set (EXCLUDE_FILE2_2 h5diff_exclude2-2.h5) - # Only one file contains unique objs. Common objs are same. - set (EXCLUDE_FILE3_1 h5diff_exclude3-1.h5) - set (EXCLUDE_FILE3_2 h5diff_exclude3-2.h5) - # compound type with multiple vlen string types - set (COMP_VL_STRS_FILE h5diff_comp_vl_strs.h5) - # container types (array,vlen) with multiple nested compound types - set (COMPS_ARRAY_VLEN_FILE1 compounds_array_vlen1.h5) - set (COMPS_ARRAY_VLEN_FILE2 compounds_array_vlen2.h5) - # attrs with verbose option level - set (ATTR_VERBOSE_LEVEL_FILE1 h5diff_attr_v_level1.h5) - set (ATTR_VERBOSE_LEVEL_FILE2 h5diff_attr_v_level2.h5) -# VDS tests - set (FILEV1 1_vds.h5) - set (FILEV2 2_vds.h5) - set (FILEV3_1 3_1_vds.h5) - set (FILEV3_2 3_2_vds.h5) - set (FILEV4 4_vds.h5) - set (FILEV5 5_vds.h5) - - if (HDF5_ENABLE_USING_MEMCHECKER) - # Remove any output file left over from previous test run - add_test ( - NAME H5DIFF-clearall-objects - COMMAND ${CMAKE_COMMAND} - -E remove - h5diff_10.out - h5diff_10.out.err - h5diff_100.out - h5diff_100.out.err - h5diff_101.out - h5diff_101.out.err - h5diff_102.out - h5diff_102.out.err - h5diff_103.out - h5diff_103.out.err - h5diff_104.out - h5diff_104.out.err - h5diff_11.out - h5diff_11.out.err - h5diff_12.out - h5diff_12.out.err - h5diff_13.out - h5diff_13.out.err - h5diff_14.out - h5diff_14.out.err - h5diff_15.out - h5diff_15.out.err - h5diff_16_1.out - h5diff_16_1.out.err - h5diff_16_2.out - h5diff_16_2.out.err - h5diff_16_3.out - h5diff_16_3.out.err - h5diff_17.out - h5diff_17.out.err - h5diff_171.out - h5diff_171.out.err - h5diff_172.out - h5diff_172.out.err - h5diff_18_1.out - h5diff_18_1.out.err - h5diff_18.out - h5diff_18.out.err - h5diff_20.out - h5diff_20.out.err - h5diff_200.out - h5diff_200.out.err - h5diff_201.out - h5diff_201.out.err - h5diff_202.out - h5diff_202.out.err - h5diff_203.out - h5diff_203.out.err - h5diff_204.out - h5diff_204.out.err - h5diff_205.out - h5diff_205.out.err - h5diff_206.out - h5diff_206.out.err - h5diff_207.out - h5diff_207.out.err - h5diff_208.out - h5diff_208.out.err - h5diff_220.out - h5diff_220.out.err - h5diff_221.out - h5diff_221.out.err - h5diff_222.out - h5diff_222.out.err - h5diff_223.out - h5diff_223.out.err - h5diff_224.out - h5diff_224.out.err - h5diff_21.out - h5diff_21.out.err - h5diff_22.out - h5diff_22.out.err - h5diff_23.out - h5diff_23.out.err - h5diff_24.out - h5diff_24.out.err - h5diff_25.out - h5diff_25.out.err - h5diff_26.out - h5diff_26.out.err - h5diff_27.out - h5diff_27.out.err - h5diff_28.out - h5diff_28.out.err - h5diff_300.out - h5diff_300.out.err - h5diff_400.out - h5diff_400.out.err - h5diff_401.out - h5diff_401.out.err - h5diff_402.out - h5diff_402.out.err - h5diff_403.out - h5diff_403.out.err - h5diff_404.out - h5diff_404.out.err - h5diff_405.out - h5diff_405.out.err - h5diff_406.out - h5diff_406.out.err - h5diff_407.out - h5diff_407.out.err - h5diff_408.out - h5diff_408.out.err - h5diff_409.out - h5diff_409.out.err - h5diff_410.out - h5diff_410.out.err - h5diff_411.out - h5diff_411.out.err - h5diff_412.out - h5diff_412.out.err - h5diff_413.out - h5diff_413.out.err - h5diff_414.out - h5diff_414.out.err - h5diff_415.out - h5diff_415.out.err - h5diff_416.out - h5diff_416.out.err - h5diff_417.out - h5diff_417.out.err - h5diff_418.out - h5diff_418.out.err - h5diff_419.out - h5diff_419.out.err - h5diff_420.out - h5diff_420.out.err - h5diff_421.out - h5diff_421.out.err - h5diff_422.out - h5diff_422.out.err - h5diff_423.out - h5diff_423.out.err - h5diff_424.out - h5diff_424.out.err - h5diff_425.out - h5diff_425.out.err - h5diff_450.out - h5diff_450.out.err - h5diff_451.out - h5diff_451.out.err - h5diff_452.out - h5diff_452.out.err - h5diff_453.out - h5diff_453.out.err - h5diff_454.out - h5diff_454.out.err - h5diff_455.out - h5diff_455.out.err - h5diff_456.out - h5diff_456.out.err - h5diff_457.out - h5diff_457.out.err - h5diff_458.out - h5diff_458.out.err - h5diff_459.out - h5diff_459.out.err - h5diff_465.out - h5diff_465.out.err - h5diff_466.out - h5diff_466.out.err - h5diff_467.out - h5diff_467.out.err - h5diff_468.out - h5diff_468.out.err - h5diff_469.out - h5diff_469.out.err - h5diff_471.out - h5diff_471.out.err - h5diff_472.out - h5diff_472.out.err - h5diff_473.out - h5diff_473.out.err - h5diff_474.out - h5diff_474.out.err - h5diff_475.out - h5diff_475.out.err - h5diff_480.out - h5diff_480.out.err - h5diff_481.out - h5diff_481.out.err - h5diff_482.out - h5diff_482.out.err - h5diff_483.out - h5diff_483.out.err - h5diff_484.out - h5diff_484.out.err - h5diff_50.out - h5diff_50.out.err - h5diff_51.out - h5diff_51.out.err - h5diff_52.out - h5diff_52.out.err - h5diff_53.out - h5diff_53.out.err - h5diff_54.out - h5diff_54.out.err - h5diff_55.out - h5diff_55.out.err - h5diff_56.out - h5diff_56.out.err - h5diff_57.out - h5diff_57.out.err - h5diff_58.out - h5diff_58.out.err - h5diff_59.out - h5diff_59.out.err - h5diff_500.out - h5diff_500.out.err - h5diff_501.out - h5diff_501.out.err - h5diff_502.out - h5diff_502.out.err - h5diff_503.out - h5diff_503.out.err - h5diff_504.out - h5diff_504.out.err - h5diff_505.out - h5diff_505.out.err - h5diff_506.out - h5diff_506.out.err - h5diff_507.out - h5diff_507.out.err - h5diff_508.out - h5diff_508.out.err - h5diff_509.out - h5diff_509.out.err - h5diff_510.out - h5diff_510.out.err - h5diff_511.out - h5diff_511.out.err - h5diff_512.out - h5diff_512.out.err - h5diff_513.out - h5diff_513.out.err - h5diff_514.out - h5diff_514.out.err - h5diff_515.out - h5diff_515.out.err - h5diff_516.out - h5diff_516.out.err - h5diff_517.out - h5diff_517.out.err - h5diff_518.out - h5diff_518.out.err - h5diff_530.out - h5diff_530.out.err - h5diff_540.out - h5diff_540.out.err - h5diff_600.out - h5diff_600.out.err - h5diff_601.out - h5diff_601.out.err - h5diff_603.out - h5diff_603.out.err - h5diff_604.out - h5diff_604.out.err - h5diff_605.out - h5diff_605.out.err - h5diff_606.out - h5diff_606.out.err - h5diff_607.out - h5diff_607.out.err - h5diff_608.out - h5diff_608.out.err - h5diff_609.out - h5diff_609.out.err - h5diff_610.out - h5diff_610.out.err - h5diff_612.out - h5diff_612.out.err - h5diff_613.out - h5diff_613.out.err - h5diff_614.out - h5diff_614.out.err - h5diff_615.out - h5diff_615.out.err - h5diff_616.out - h5diff_616.out.err - h5diff_617.out - h5diff_617.out.err - h5diff_618.out - h5diff_618.out.err - h5diff_619.out - h5diff_619.out.err - h5diff_621.out - h5diff_621.out.err - h5diff_622.out - h5diff_622.out.err - h5diff_623.out - h5diff_623.out.err - h5diff_624.out - h5diff_624.out.err - h5diff_625.out - h5diff_625.out.err - h5diff_626.out - h5diff_626.out.err - h5diff_627.out - h5diff_627.out.err - h5diff_628.out - h5diff_628.out.err - h5diff_629.out - h5diff_629.out.err - h5diff_640.out - h5diff_640.out.err - h5diff_641.out - h5diff_641.out.err - h5diff_642.out - h5diff_642.out.err - h5diff_643.out - h5diff_643.out.err - h5diff_644.out - h5diff_644.out.err - h5diff_645.out - h5diff_645.out.err - h5diff_646.out - h5diff_646.out.err - h5diff_70.out - h5diff_70.out.err - h5diff_700.out - h5diff_700.out.err - h5diff_701.out - h5diff_701.out.err - h5diff_702.out - h5diff_702.out.err - h5diff_703.out - h5diff_703.out.err - h5diff_704.out - h5diff_704.out.err - h5diff_705.out - h5diff_705.out.err - h5diff_706.out - h5diff_706.out.err - h5diff_707.out - h5diff_707.out.err - h5diff_708.out - h5diff_708.out.err - h5diff_709.out - h5diff_709.out.err - h5diff_710.out - h5diff_710.out.err - h5diff_80.out - h5diff_80.out.err - h5diff_90.out - h5diff_90.out.err - h5diff_v1.out - h5diff_v1.out.err - h5diff_v2.out - h5diff_v2.out.err - h5diff_v3.out - h5diff_v3.out.err - ) - set_tests_properties (H5DIFF-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") - if (NOT "${last_test}" STREQUAL "") - set_tests_properties (H5DIFF-clearall-objects PROPERTIES DEPENDS ${last_test}) - endif (NOT "${last_test}" STREQUAL "") - set (last_test "H5DIFF-clearall-objects") - endif (HDF5_ENABLE_USING_MEMCHECKER) - -# ############################################################################ -# # Common usage -# ############################################################################ - -# 1.0 -ADD_H5_TEST (h5diff_10 0 -h) - -# 1.1 normal mode -ADD_H5_TEST (h5diff_11 1 ${FILE1} ${FILE2}) - -# 1.2 normal mode with objects -ADD_H5_TEST (h5diff_12 1 ${FILE1} ${FILE2} g1/dset1 g1/dset2) - -# 1.3 report mode -ADD_H5_TEST (h5diff_13 1 -r ${FILE1} ${FILE2}) - -# 1.4 report mode with objects -ADD_H5_TEST (h5diff_14 1 -r ${FILE1} ${FILE2} g1/dset1 g1/dset2) - -# 1.5 with -d -ADD_H5_TEST (h5diff_15 1 --report --delta=5 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 1.6.1 with -p (int) -ADD_H5_TEST (h5diff_16_1 1 -v -p 0.02 ${FILE1} ${FILE1} g1/dset5 g1/dset6) - -# 1.6.2 with -p (unsigned long_long) -ADD_H5_TEST (h5diff_16_2 1 --verbose --relative=0.02 ${FILE1} ${FILE1} g1/dset7 g1/dset8) - -# 1.6.3 with -p (double) -ADD_H5_TEST (h5diff_16_3 1 -v -p 0.02 ${FILE1} ${FILE1} g1/dset9 g1/dset10) - -# 1.7 verbose mode -ADD_H5_TEST (h5diff_17 1 -v ${FILE1} ${FILE2}) - -# 1.7 test 32-bit INFINITY -ADD_H5_TEST (h5diff_171 0 -v ${FILE1} ${FILE1} /g1/fp19 /g1/fp19_COPY) - -# 1.7 test 64-bit INFINITY -ADD_H5_TEST (h5diff_172 0 -v ${FILE1} ${FILE1} /g1/fp20 /g1/fp20_COPY) - -# 1.8 quiet mode -ADD_H5_TEST (h5diff_18 1 -q ${FILE1} ${FILE2}) - -# 1.8 -v and -q -ADD_H5_TEST (h5diff_18_1 2 -v -q ${FILE1} ${FILE2}) - -# ############################################################################## -# # not comparable types -# ############################################################################## - -# 2.0 -ADD_H5_TEST (h5diff_20 0 -v ${FILE3} ${FILE3} dset g1) - -# 2.1 -ADD_H5_TEST (h5diff_21 0 -v ${FILE3} ${FILE3} dset l1) - -# 2.2 -ADD_H5_TEST (h5diff_22 0 -v ${FILE3} ${FILE3} dset t1) - -# ############################################################################## -# # compare groups, types, links (no differences and differences) -# ############################################################################## - -# 2.3 -ADD_H5_TEST (h5diff_23 0 -v ${FILE3} ${FILE3} g1 g1) - -# 2.4 -ADD_H5_TEST (h5diff_24 0 -v ${FILE3} ${FILE3} t1 t1) - -# 2.5 -ADD_H5_TEST (h5diff_25 0 -v ${FILE3} ${FILE3} l1 l1) - -# 2.6 -ADD_H5_TEST (h5diff_26 0 -v ${FILE3} ${FILE3} g1 g2) - -# 2.7 -ADD_H5_TEST (h5diff_27 1 -v ${FILE3} ${FILE3} t1 t2) - -# 2.8 -ADD_H5_TEST (h5diff_28 1 -v ${FILE3} ${FILE3} l1 l2) - -# ############################################################################## -# # Dataset datatypes -# ############################################################################## - -# 5.0 -ADD_H5_TEST (h5diff_50 1 -v ${FILE4} ${FILE4} dset0a dset0b) - -# 5.1 -ADD_H5_TEST (h5diff_51 1 -v ${FILE4} ${FILE4} dset1a dset1b) - -# 5.2 -ADD_H5_TEST (h5diff_52 1 -v ${FILE4} ${FILE4} dset2a dset2b) - -# 5.3 -ADD_H5_TEST (h5diff_53 1 -v ${FILE4} ${FILE4} dset3a dset4b) - -# 5.4 -ADD_H5_TEST (h5diff_54 1 -v ${FILE4} ${FILE4} dset4a dset4b) - -# 5.5 -ADD_H5_TEST (h5diff_55 1 -v ${FILE4} ${FILE4} dset5a dset5b) - -# 5.6 -ADD_H5_TEST (h5diff_56 1 -v ${FILE4} ${FILE4} dset6a dset6b) - -# 5.7 -ADD_H5_TEST (h5diff_57 0 -v ${FILE4} ${FILE4} dset7a dset7b) - -# 5.8 (region reference) -ADD_H5_TEST (h5diff_58 1 -v ${FILE7} ${FILE8} refreg) - -# test for both dset and attr with same type but with different size -# ( HDDFV-7942 ) -ADD_H5_TEST (h5diff_59 0 -v ${FILE4} ${FILE4} dset11a dset11b) - -# ############################################################################## -# # Error messages -# ############################################################################## - -# 6.0: Check if the command line number of arguments is less than 3 -ADD_H5_TEST (h5diff_600 1 ${FILE1}) - -# 6.1: Check if non-exist object name is specified -ADD_H5_TEST (h5diff_601 2 ${FILE1} ${FILE1} nono_obj) - -# ############################################################################## -# # -d -# ############################################################################## - -# 6.3: negative value -ADD_H5_TEST (h5diff_603 1 -d -4 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.4: zero -ADD_H5_TEST (h5diff_604 1 -d 0 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.5: non number -ADD_H5_TEST (h5diff_605 1 -d u ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.6: hexadecimal -ADD_H5_TEST (h5diff_606 1 -d 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.7: string -ADD_H5_TEST (h5diff_607 1 -d "1" ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.8: use system epsilon -ADD_H5_TEST (h5diff_608 1 --use-system-epsilon ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.9: number larger than biggest difference -ADD_H5_TEST (h5diff_609 0 -d 200 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.10: number smaller than smallest difference -ADD_H5_TEST (h5diff_610 1 -d 1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# ############################################################################## -# # -p -# ############################################################################## - -# 6.12: negative value -ADD_H5_TEST (h5diff_612 1 -p -4 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.13: zero -ADD_H5_TEST (h5diff_613 1 -p 0 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.14: non number -ADD_H5_TEST (h5diff_614 1 -p u ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.15: hexadecimal -ADD_H5_TEST (h5diff_615 1 -p 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.16: string -ADD_H5_TEST (h5diff_616 1 -p "0.21" ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.17: repeated option -ADD_H5_TEST (h5diff_617 1 -p 0.21 -p 0.22 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.18: number larger than biggest difference -ADD_H5_TEST (h5diff_618 0 -p 2 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.19: number smaller than smallest difference -ADD_H5_TEST (h5diff_619 1 -p 0.005 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# ############################################################################## -# # -n -# ############################################################################## - -# 6.21: negative value -ADD_H5_TEST (h5diff_621 1 -n -4 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.22: zero -ADD_H5_TEST (h5diff_622 1 -n 0 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.23: non number -ADD_H5_TEST (h5diff_623 1 -n u ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.24: hexadecimal -ADD_H5_TEST (h5diff_624 1 -n 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.25: string -ADD_H5_TEST (h5diff_625 1 -n "2" ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.26: repeated option -ADD_H5_TEST (h5diff_626 1 -n 2 -n 3 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.27: number larger than biggest difference -ADD_H5_TEST (h5diff_627 1 --count=200 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# 6.28: number smaller than smallest difference -ADD_H5_TEST (h5diff_628 1 -n 1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) - -# Disabling this test as it hangs - LRK 20090618 -# 6.29 non valid files -#ADD_H5_TEST (h5diff_629 2 file1.h6 file2.h6) - -# ############################################################################## -# # NaN -# ############################################################################## -# 6.30: test (NaN == NaN) must be true based on our documentation -- XCAO -ADD_H5_TEST (h5diff_630 0 -v -d "0.0001" ${FILE1} ${FILE1} g1/fp18 g1/fp18_COPY) -ADD_H5_TEST (h5diff_631 0 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp18 g1/fp18_COPY) - -# ############################################################################## -# 7. attributes -# ############################################################################## -ADD_H5_TEST (h5diff_70 1 -v ${FILE5} ${FILE6}) - -# ################################################## -# attrs with verbose option level -# ################################################## -ADD_H5_TEST (h5diff_700 1 -v1 ${FILE5} ${FILE6}) -ADD_H5_TEST (h5diff_701 1 -v2 ${FILE5} ${FILE6}) -ADD_H5_TEST (h5diff_702 1 --verbose=1 ${FILE5} ${FILE6}) -ADD_H5_TEST (h5diff_703 1 --verbose=2 ${FILE5} ${FILE6}) - -# same attr number , all same attr name -ADD_H5_TEST (h5diff_704 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g) - -# same attr number , some same attr name -ADD_H5_TEST (h5diff_705 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /dset) - -# same attr number , all different attr name -ADD_H5_TEST (h5diff_706 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /ntype) - -# different attr number , same attr name (intersected) -ADD_H5_TEST (h5diff_707 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g2) - -# different attr number , all different attr name -ADD_H5_TEST (h5diff_708 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g3) - -# when no attributes exist in both objects -ADD_H5_TEST (h5diff_709 0 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g4) - -# file vs file -ADD_H5_TEST (h5diff_710 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2}) - -# ############################################################################## -# 8. all dataset datatypes -# ############################################################################## -ADD_H5_TEST (h5diff_80 1 -v ${FILE7} ${FILE8}) - -# 9. compare a file with itself -ADD_H5_TEST (h5diff_90 0 -v ${FILE2} ${FILE2}) - -# 10. read by hyperslab, print indexes -ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10}) - -# 11. floating point comparison -# double value -ADD_H5_TEST (h5diff_101 1 -v ${FILE1} ${FILE1} g1/d1 g1/d2) - -# float value -ADD_H5_TEST (h5diff_102 1 -v ${FILE1} ${FILE1} g1/fp1 g1/fp2) - -# with --use-system-epsilon for double value. expect less differences -ADD_H5_TEST (h5diff_103 1 -v --use-system-epsilon ${FILE1} ${FILE1} g1/d1 -g1/d2) - -# with --use-system-epsilon for float value. expect less differences -ADD_H5_TEST (h5diff_104 1 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp1 -g1/fp2) - -# not comparable -c flag -ADD_H5_TEST (h5diff_200 0 ${FILE2} ${FILE2} g2/dset1 g2/dset2) - -ADD_H5_TEST (h5diff_201 0 -c ${FILE2} ${FILE2} g2/dset1 g2/dset2) - -ADD_H5_TEST (h5diff_202 0 -c ${FILE2} ${FILE2} g2/dset2 g2/dset3) - -ADD_H5_TEST (h5diff_203 0 -c ${FILE2} ${FILE2} g2/dset3 g2/dset4) - -ADD_H5_TEST (h5diff_204 0 -c ${FILE2} ${FILE2} g2/dset4 g2/dset5) - -ADD_H5_TEST (h5diff_205 0 -c ${FILE2} ${FILE2} g2/dset5 g2/dset6) - -# not comparable in compound -ADD_H5_TEST (h5diff_206 0 -c ${FILE2} ${FILE2} g2/dset7 g2/dset8) - -ADD_H5_TEST (h5diff_207 0 -c ${FILE2} ${FILE2} g2/dset8 g2/dset9) - -# not comparable in dataspace of zero dimension size -ADD_H5_TEST (h5diff_208 0 -c ${FILE19} ${FILE20}) - -# non-comparable dataset with comparable attribute, and other comparable datasets. -# All the rest comparables should display differences. -ADD_H5_TEST (h5diff_220 1 -c non_comparables1.h5 non_comparables2.h5 /g1) - -# comparable dataset with non-comparable attribute and other comparable attributes. -# Also test non-compatible attributes with different type, dimention, rank. -# All the rest comparables should display differences. -ADD_H5_TEST (h5diff_221 1 -c non_comparables1.h5 non_comparables2.h5 /g2) - -# entire file -# All the rest comparables should display differences -ADD_H5_TEST (h5diff_222 1 -c non_comparables1.h5 non_comparables2.h5) - -# non-comparable test for common objects (same name) with different object types -# (HDFFV-7644) -ADD_H5_TEST (h5diff_223 0 -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes) -# swap files -ADD_H5_TEST (h5diff_224 0 -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes) - -# ############################################################################## -# # Links compare without --follow-symlinks nor --no-dangling-links -# ############################################################################## -# test for bug1749 -ADD_H5_TEST (h5diff_300 1 -v ${FILE12} ${FILE12} /link_g1 /link_g2) - -# ############################################################################## -# # Links compare with --follow-symlinks Only -# ############################################################################## -# soft links file to file -ADD_H5_TEST (h5diff_400 0 --follow-symlinks -v ${FILE13} ${FILE13}) - -# softlink vs dset" -ADD_H5_TEST (h5diff_401 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_dset1_1 /target_dset2) - -# dset vs softlink" -ADD_H5_TEST (h5diff_402 1 --follow-symlinks -v ${FILE13} ${FILE13} /target_dset2 /softlink_dset1_1) - -# softlink vs softlink" -ADD_H5_TEST (h5diff_403 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_dset1_1 /softlink_dset2) - -# extlink vs extlink (FILE)" -ADD_H5_TEST (h5diff_404 0 --follow-symlinks -v ${FILE15} ${FILE15}) - -# extlink vs dset" -ADD_H5_TEST (h5diff_405 1 --follow-symlinks -v ${FILE15} ${FILE16} /ext_link_dset1 /target_group2/x_dset) - -# dset vs extlink" -ADD_H5_TEST (h5diff_406 1 --follow-symlinks -v ${FILE16} ${FILE15} /target_group2/x_dset /ext_link_dset1) - -# extlink vs extlink" -ADD_H5_TEST (h5diff_407 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_dset2) - -# softlink vs extlink" -ADD_H5_TEST (h5diff_408 1 --follow-symlinks -v ${FILE13} ${FILE15} /softlink_dset1_1 /ext_link_dset2) - -# extlink vs softlink " -ADD_H5_TEST (h5diff_409 1 --follow-symlinks -v ${FILE15} ${FILE13} /ext_link_dset2 /softlink_dset1_1) - -# linked_softlink vs linked_softlink (FILE)" -ADD_H5_TEST (h5diff_410 0 --follow-symlinks -v ${FILE14} ${FILE14}) - -# dset2 vs linked_softlink_dset1" -ADD_H5_TEST (h5diff_411 1 --follow-symlinks -v ${FILE14} ${FILE14} /target_dset2 /softlink1_to_slink2) - -# linked_softlink_dset1 vs dset2" -ADD_H5_TEST (h5diff_412 1 --follow-symlinks -v ${FILE14} ${FILE14} /softlink1_to_slink2 /target_dset2) - -# linked_softlink_to_dset1 vs linked_softlink_to_dset2" -ADD_H5_TEST (h5diff_413 1 --follow-symlinks -v ${FILE14} ${FILE14} /softlink1_to_slink2 /softlink2_to_slink2) - -# group vs linked_softlink_group1" -ADD_H5_TEST (h5diff_414 1 --follow-symlinks -v ${FILE14} ${FILE14} /target_group /softlink3_to_slink2) - -# linked_softlink_group1 vs group" -ADD_H5_TEST (h5diff_415 1 --follow-symlinks -v ${FILE14} ${FILE14} /softlink3_to_slink2 /target_group) - -# linked_softlink_to_group1 vs linked_softlink_to_group2" -ADD_H5_TEST (h5diff_416 0 --follow-symlinks -v ${FILE14} ${FILE14} /softlink3_to_slink2 /softlink4_to_slink2) - -# non-exist-softlink vs softlink" -ADD_H5_TEST (h5diff_417 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_noexist /softlink_dset2) - -# softlink vs non-exist-softlink" -ADD_H5_TEST (h5diff_418 1 --follow-symlinks -v ${FILE13} ${FILE13} /softlink_dset2 /softlink_noexist) - -# non-exist-extlink_file vs extlink" -ADD_H5_TEST (h5diff_419 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_noexist2 /ext_link_dset2) - -# exlink vs non-exist-extlink_file" -ADD_H5_TEST (h5diff_420 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_dset2 /ext_link_noexist2) - -# extlink vs non-exist-extlink_obj" -ADD_H5_TEST (h5diff_421 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_dset2 /ext_link_noexist1) - -# non-exist-extlink_obj vs extlink" -ADD_H5_TEST (h5diff_422 1 --follow-symlinks -v ${FILE15} ${FILE15} /ext_link_noexist1 /ext_link_dset2) - -# extlink_to_softlink_to_dset1 vs dset2" -ADD_H5_TEST (h5diff_423 1 --follow-symlinks -v ${FILE17} ${FILE18} /ext_link_to_slink1 /dset2) - -# dset2 vs extlink_to_softlink_to_dset1" -ADD_H5_TEST (h5diff_424 1 --follow-symlinks -v ${FILE18} ${FILE17} /dset2 /ext_link_to_slink1) - -# extlink_to_softlink_to_dset1 vs extlink_to_softlink_to_dset2" -ADD_H5_TEST (h5diff_425 1 --follow-symlinks -v ${FILE17} ${FILE17} /ext_link_to_slink1 /ext_link_to_slink2) - -# ############################################################################## -# # Dangling links compare (--follow-symlinks and --no-dangling-links) -# ############################################################################## -# dangling links --follow-symlinks (FILE to FILE) -ADD_H5_TEST (h5diff_450 1 --follow-symlinks -v ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) - -# dangling links --follow-symlinks and --no-dangling-links (FILE to FILE) -ADD_H5_TEST (h5diff_451 2 --follow-symlinks -v --no-dangling-links ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) - -# try --no-dangling-links without --follow-symlinks options -ADD_H5_TEST (h5diff_452 2 --no-dangling-links ${FILE13} ${FILE13}) - -# dangling link found for soft links (FILE to FILE) -ADD_H5_TEST (h5diff_453 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13}) - -# dangling link found for soft links (obj to obj) -ADD_H5_TEST (h5diff_454 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_dset2 /softlink_noexist) - -# dangling link found for soft links (obj to obj) Both dangle links -ADD_H5_TEST (h5diff_455 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_noexist /softlink_noexist) - -# dangling link found for ext links (FILE to FILE) -ADD_H5_TEST (h5diff_456 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15}) - -# dangling link found for ext links (obj to obj). target file exist -ADD_H5_TEST (h5diff_457 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist1) - -# dangling link found for ext links (obj to obj). target file NOT exist -ADD_H5_TEST (h5diff_458 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist2) - -# dangling link found for ext links (obj to obj). Both dangle links -ADD_H5_TEST (h5diff_459 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_noexist1 /ext_link_noexist2) - -# dangling link --follow-symlinks (obj vs obj) -# (HDFFV-7836) -ADD_H5_TEST (h5diff_465 0 --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) -# (HDFFV-7835) -# soft dangling vs. soft dangling -ADD_H5_TEST (h5diff_466 0 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) -# soft link vs. soft dangling -ADD_H5_TEST (h5diff_467 1 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2) -# ext dangling vs. ext dangling -ADD_H5_TEST (h5diff_468 0 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4) -# ext link vs. ext dangling -ADD_H5_TEST (h5diff_469 1 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2) - -#--------------------------------------------------- -# dangling links without follow symlink -# (HDFFV-7998) -# test - soft dangle links (same and different paths), -# - external dangle links (same and different paths) -ADD_H5_TEST (h5diff_471 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5) -ADD_H5_TEST (h5diff_472 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) -ADD_H5_TEST (h5diff_473 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link4) -ADD_H5_TEST (h5diff_474 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4) -ADD_H5_TEST (h5diff_475 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link1) - - -# ############################################################################## -# # test for group diff recursivly -# ############################################################################## -# root -ADD_H5_TEST (h5diff_500 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /) -ADD_H5_TEST (h5diff_501 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /) - -# root vs group -ADD_H5_TEST (h5diff_502 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /grp1/grp2/grp3) - -# group vs group (same name and structure) -ADD_H5_TEST (h5diff_503 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /grp1) - -# group vs group (different name and structure) -ADD_H5_TEST (h5diff_504 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1/grp2 /grp1/grp2/grp3) - -# groups vs soft-link -ADD_H5_TEST (h5diff_505 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /slink_grp1) -ADD_H5_TEST (h5diff_506 0 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1/grp2 /slink_grp2) - -# groups vs ext-link -ADD_H5_TEST (h5diff_507 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /elink_grp1) -ADD_H5_TEST (h5diff_508 0 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp1 /elink_grp1) - -# soft-link vs ext-link -ADD_H5_TEST (h5diff_509 0 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp1 /elink_grp1) -ADD_H5_TEST (h5diff_510 0 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp1 /elink_grp1) - -# circled ext links -ADD_H5_TEST (h5diff_511 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp10 /grp11) -ADD_H5_TEST (h5diff_512 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /grp10 /grp11) - -# circled soft2ext-link vs soft2ext-link -ADD_H5_TEST (h5diff_513 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp10 /slink_grp11) -ADD_H5_TEST (h5diff_514 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp10 /slink_grp11) - -############################################################################### -# Test for group recursive diff via multi-linked external links -# With follow-symlinks, file $GRP_RECURSE1_EXT and $GRP_RECURSE2_EXT1 should -# be same with the external links. -############################################################################### -# file vs file -ADD_H5_TEST (h5diff_515 1 -v ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1}) -ADD_H5_TEST (h5diff_516 0 -v --follow-symlinks ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1}) -# group vs group -ADD_H5_TEST (h5diff_517 1 -v ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1) -ADD_H5_TEST (h5diff_518 0 -v --follow-symlinks ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1) - -# ############################################################################## -# # Exclude objects (--exclude-path) -# ############################################################################## -# -# Same structure, same names and different value. -# -# Exclude the object with different value. Expect return - same -ADD_H5_TEST (h5diff_480 0 -v --exclude-path /group1/dset3 ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2}) -# Verify different by not excluding. Expect return - diff -ADD_H5_TEST (h5diff_481 1 -v ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2}) - -# -# Different structure, different names. -# -# Exclude all the different objects. Expect return - same -ADD_H5_TEST (h5diff_482 0 -v --exclude-path "/group1" --exclude-path "/dset1" ${EXCLUDE_FILE2_1} ${EXCLUDE_FILE2_2}) -# Exclude only some different objects. Expect return - diff -ADD_H5_TEST (h5diff_483 1 -v --exclude-path "/group1" ${EXCLUDE_FILE2_1} ${EXCLUDE_FILE2_2}) - -# Exclude from group compare -ADD_H5_TEST (h5diff_484 0 -v --exclude-path "/dset3" ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2} /group1) - -# -# Only one file contains unique objs. Common objs are same. -# (HDFFV-7837) -# -ADD_H5_TEST (h5diff_485 0 -v --exclude-path "/group1" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5) -ADD_H5_TEST (h5diff_486 0 -v --exclude-path "/group1" h5diff_exclude3-2.h5 h5diff_exclude3-1.h5) -ADD_H5_TEST (h5diff_487 1 -v --exclude-path "/group1/dset" h5diff_exclude3-1.h5 h5diff_exclude3-2.h5) - - - -# ############################################################################## -# # diff various multiple vlen and fixed strings in a compound type dataset -# ############################################################################## -ADD_H5_TEST (h5diff_530 0 -v ${COMP_VL_STRS_FILE} ${COMP_VL_STRS_FILE} /group /group_copy) - -# ############################################################################## -# # Test container types (array,vlen) with multiple nested compound types -# # Complex compound types in dataset and attribute -# ############################################################################## -ADD_H5_TEST (h5diff_540 1 -v ${COMPS_ARRAY_VLEN_FILE1} ${COMPS_ARRAY_VLEN_FILE2}) - -# ############################################################################## -# # Test mutually exclusive options -# ############################################################################## -# -# Test with -d , -p and --use-system-epsilon. -ADD_H5_TEST (h5diff_640 1 -v -d 5 -p 0.05 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_641 1 -v -d 5 -p 0.05 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_642 1 -v -p 0.05 -d 5 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_643 1 -v -d 5 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_644 1 -v --use-system-epsilon -d 5 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_645 1 -v -p 0.05 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) -ADD_H5_TEST (h5diff_646 1 -v --use-system-epsilon -p 0.05 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) - -# VDS -ADD_H5_TEST (h5diff_v1 0 -v ${FILEV1} ${FILEV2}) -ADD_H5_TEST (h5diff_v2 0 -r ${FILEV1} ${FILEV2}) -ADD_H5_TEST (h5diff_v3 0 -c ${FILEV1} ${FILEV2}) - diff --git a/tools/h5diff/Makefile.am b/tools/h5diff/Makefile.am deleted file mode 100644 index 7e3b620..0000000 --- a/tools/h5diff/Makefile.am +++ /dev/null @@ -1,61 +0,0 @@ -# -# Copyright by The HDF Group. -# Copyright by the Board of Trustees of the University of Illinois. -# All rights reserved. -# -# This file is part of HDF5. The full HDF5 copyright notice, including -# terms governing use, modification, and redistribution, is contained in -# the files COPYING and Copyright.html. COPYING can be found at the root -# of the source code distribution tree; Copyright.html can be found at the -# root level of an installed copy of the electronic HDF5 document set and -# is linked from the top-level documents page. It can also be found at -# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have -# access to either file, you may request a copy from help@hdfgroup.org. -## -## Makefile.am -## Run automake to generate a Makefile.in from this file. -# -# HDF5 Library Makefile(.in) -# - -include $(top_srcdir)/config/commence.am - -# Include src and tools/lib directories -AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib - -# Always build and test h5diff but build and test ph5diff only if parallel -# is enabled. -if BUILD_PARALLEL_CONDITIONAL - H5PDIFF=ph5diff - TEST_SCRIPT_PARA=testph5diff.sh -endif - -# Our main target, h5diff -bin_PROGRAMS=h5diff $(H5PDIFF) - -# Add h5diff specific linker flags here -h5diff_LDFLAGS = $(LT_STATIC_EXEC) $(AM_LDFLAGS) - -# Test programs and scripts -TEST_PROG=h5diffgentest -TEST_SCRIPT=testh5diff.sh - -check_PROGRAMS=$(TEST_PROG) -check_SCRIPTS=$(TEST_SCRIPT) $(TEST_SCRIPT_PARA) -# The parallel test script testph5diff.sh actually depends on testh5diff.sh. -SCRIPT_DEPEND=h5diff$(EXEEXT) $(H5PDIFF) testh5diff.sh - -# Source files for the program -h5diff_SOURCES=h5diff_main.c h5diff_common.c -ph5diff_SOURCES=ph5diff_main.c h5diff_common.c -h5diffgentest_SOURCES=h5diffgentest.c - -# Programs depend on the main HDF5 library and tools library -LDADD=$(LIBH5TOOLS) $(LIBHDF5) - -# Temporary files. *.h5 are generated by h5diff. They should -# be copied to the testfiles/ directory if update is required -CHECK_CLEANFILES+=*.h5 expect_sorted actual_sorted - -include $(top_srcdir)/config/conclude.am - diff --git a/tools/h5diff/h5diff_common.c b/tools/h5diff/h5diff_common.c deleted file mode 100644 index 2453ffc..0000000 --- a/tools/h5diff/h5diff_common.c +++ /dev/null @@ -1,607 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include "H5private.h" -#include "h5diff.h" -#include "h5diff_common.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -static int check_n_input( const char* ); -static int check_p_input( const char* ); -static int check_d_input( const char* ); - -/* - * Command-line options: The user can specify short or long-named - * parameters. - */ -static const char *s_opts = "hVrv:qn:d:p:Nc"; -static struct long_options l_opts[] = { - { "help", no_arg, 'h' }, - { "version", no_arg, 'V' }, - { "report", no_arg, 'r' }, - { "verbose", optional_arg, 'v' }, - { "quiet", no_arg, 'q' }, - { "count", require_arg, 'n' }, - { "delta", require_arg, 'd' }, - { "relative", require_arg, 'p' }, - { "nan", no_arg, 'N' }, - { "compare", no_arg, 'c' }, - { "use-system-epsilon", no_arg, 'e' }, - { "follow-symlinks", no_arg, 'l' }, - { "no-dangling-links", no_arg, 'x' }, - { "exclude-path", require_arg, 'E' }, - { NULL, 0, '\0' } -}; - -/*------------------------------------------------------------------------- - * Function: check_options - * - * Purpose: parse command line input - * - *------------------------------------------------------------------------- - */ -static void check_options(diff_opt_t* options) -{ - /*-------------------------------------------------------------- - * check for mutually exclusive options - *--------------------------------------------------------------*/ - - /* check between -d , -p, --use-system-epsilon. - * These options are mutually exclusive. - */ - if ((options->d + options->p + options->use_system_epsilon) > 1) - { - printf("%s error: -d, -p and --use-system-epsilon options are mutually-exclusive;\n", PROGRAMNAME); - printf("use no more than one.\n"); - printf("Try '-h' or '--help' option for more information or see the %s entry in the 'HDF5 Reference Manual'.\n", PROGRAMNAME); - h5diff_exit(EXIT_FAILURE); - } -} - - -/*------------------------------------------------------------------------- - * Function: parse_command_line - * - * Purpose: parse command line input - * - *------------------------------------------------------------------------- - */ - -void parse_command_line(int argc, - const char* argv[], - const char** fname1, - const char** fname2, - const char** objname1, - const char** objname2, - diff_opt_t* options) -{ - int i; - int opt; - struct exclude_path_list *exclude_head, *exclude_prev, *exclude_node; - - /* process the command-line */ - memset(options, 0, sizeof (diff_opt_t)); - - /* assume equal contents initially */ - options->contents = 1; - - /* NaNs are handled by default */ - options->do_nans = 1; - - /* not Listing objects that are not comparable */ - options->m_list_not_cmp = 0; - - /* initially no not-comparable. */ - /**this is bad in mixing option with results**/ - options->not_cmp=0; - - /* init for exclude-path option */ - exclude_head = NULL; - - /* parse command line options */ - while ((opt = get_option(argc, argv, s_opts, l_opts)) != EOF) - { - switch ((char)opt) - { - default: - usage(); - h5diff_exit(EXIT_FAILURE); - case 'h': - usage(); - h5diff_exit(EXIT_SUCCESS); - case 'V': - print_version(h5tools_getprogname()); - h5diff_exit(EXIT_SUCCESS); - case 'v': - options->m_verbose = 1; - /* This for loop is for handling style like - * -v, -v1, --verbose, --verbose=1. - */ - for (i = 1; i < argc; i++) - { - /* - * short opt - */ - if (!strcmp (argv[i], "-v")) /* no arg */ - { - opt_ind--; - options->m_verbose_level = 0; - break; - } - else if (!strncmp (argv[i], "-v", (size_t)2)) - { - options->m_verbose_level = atoi(&argv[i][2]); - break; - } - - /* - * long opt - */ - if (!strcmp (argv[i], "--verbose")) /* no arg */ - { - options->m_verbose_level = 0; - break; - } - else if ( !strncmp (argv[i], "--verbose", (size_t)9) && argv[i][9]=='=') - { - options->m_verbose_level = atoi(&argv[i][10]); - break; - } - } - break; - case 'q': - /* use quiet mode; supress the message "0 differences found" */ - options->m_quiet = 1; - break; - case 'r': - options->m_report = 1; - break; - case 'l': - options->follow_links = TRUE; - break; - case 'x': - options->no_dangle_links = 1; - break; - case 'E': - options->exclude_path = 1; - - /* create linked list of excluding objects */ - if( (exclude_node = (struct exclude_path_list*) HDmalloc(sizeof(struct exclude_path_list))) == NULL) - { - printf("Error: lack of memory!\n"); - h5diff_exit(EXIT_FAILURE); - } - - /* init */ - exclude_node->obj_path = (char*)opt_arg; - exclude_node->obj_type = H5TRAV_TYPE_UNKNOWN; - exclude_prev = exclude_head; - - if (NULL == exclude_head) - { - exclude_head = exclude_node; - exclude_head->next = NULL; - } - else - { - while(NULL != exclude_prev->next) - exclude_prev=exclude_prev->next; - - exclude_node->next = NULL; - exclude_prev->next = exclude_node; - } - break; - case 'd': - options->d=1; - - if ( check_d_input( opt_arg )==-1) - { - printf("<-d %s> is not a valid option\n", opt_arg ); - usage(); - h5diff_exit(EXIT_FAILURE); - } - options->delta = atof( opt_arg ); - - /* -d 0 is the same as default */ - if (H5_DBL_ABS_EQUAL(options->delta, (double)0.0F)) - options->d=0; - - break; - - case 'p': - - options->p=1; - if ( check_p_input( opt_arg )==-1) - { - printf("<-p %s> is not a valid option\n", opt_arg ); - usage(); - h5diff_exit(EXIT_FAILURE); - } - options->percent = atof( opt_arg ); - - /* -p 0 is the same as default */ - if (H5_DBL_ABS_EQUAL(options->percent, (double)0.0F)) - options->p = 0; - - break; - - case 'n': - - options->n=1; - if ( check_n_input( opt_arg )==-1) - { - printf("<-n %s> is not a valid option\n", opt_arg ); - usage(); - h5diff_exit(EXIT_FAILURE); - } - options->count = HDstrtoull(opt_arg, NULL, 0); - break; - - case 'N': - options->do_nans = 0; - break; - - case 'c': - options->m_list_not_cmp = 1; - break; - - case 'e': - options->use_system_epsilon = 1; - break; - } - } - - /* check options */ - check_options(options); - - /* if exclude-path option is used, keep the exclude path list */ - if (options->exclude_path) - options->exclude = exclude_head; - - /* check for file names to be processed */ - if (argc <= opt_ind || argv[ opt_ind + 1 ] == NULL) - { - error_msg("missing file names\n"); - usage(); - h5diff_exit(EXIT_FAILURE); - } - - *fname1 = argv[ opt_ind ]; - *fname2 = argv[ opt_ind + 1 ]; - *objname1 = argv[ opt_ind + 2 ]; - - if ( *objname1 == NULL ) - { - *objname2 = NULL; - return; - } - - if ( argv[ opt_ind + 3 ] != NULL) - { - *objname2 = argv[ opt_ind + 3 ]; - } - else - { - *objname2 = *objname1; - } - - -} - - -/*------------------------------------------------------------------------- - * Function: print_info - * - * Purpose: print several information messages after h5diff call - * - *------------------------------------------------------------------------- - */ - - void print_info(diff_opt_t* options) - { - if (options->m_quiet || options->err_stat ) - return; - - if (options->cmn_objs==0) - { - printf("No common objects found. Files are not comparable.\n"); - if (!options->m_verbose) - printf("Use -v for a list of objects.\n"); - } - - if (options->not_cmp==1) - { - if ( options->m_list_not_cmp == 0 ) - { - printf("--------------------------------\n"); - printf("Some objects are not comparable\n"); - printf("--------------------------------\n"); - if (options->m_verbose) - printf("Use -c for a list of objects without details of differences.\n"); - else - printf("Use -c for a list of objects.\n"); - } - - - } - - } - -/*------------------------------------------------------------------------- - * Function: check_n_input - * - * Purpose: check for valid input - * - * Return: 1 for ok, -1 for fail - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -H5_ATTR_PURE static int -check_n_input( const char *str ) -{ - unsigned i; - char c; - - for ( i = 0; i < strlen(str); i++) - { - c = str[i]; - if ( i==0 ) - { - if ( c < 49 || c > 57 ) /* ascii values between 1 and 9 */ - return -1; - } - else - if ( c < 48 || c > 57 ) /* 0 also */ - return -1; - } - return 1; -} - -/*------------------------------------------------------------------------- - * Function: check_p_input - * - * Purpose: check for a valid p option input - * - * Return: 1 for ok, -1 for fail - * - * Date: May 9, 2003 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -check_p_input( const char *str ) -{ - double x; - - /* - the atof return value on a hexadecimal input is different - on some systems; we do a character check for this - */ - if (strlen(str)>2 && str[0]=='0' && str[1]=='x') - return -1; - - x=atof(str); - if (x<0) - return -1; - - return 1; -} - -/*------------------------------------------------------------------------- - * Function: check_d_input - * - * Purpose: check for a valid d option input - * - * Return: 1 for ok, -1 for fail - * - * Date: November 11, 2007 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static int -check_d_input( const char *str ) -{ - double x; - - /* - the atof return value on a hexadecimal input is different - on some systems; we do a character check for this - */ - if (strlen(str)>2 && str[0]=='0' && str[1]=='x') - return -1; - - x=atof(str); - if (x <0) - return -1; - - return 1; -} - -/*------------------------------------------------------------------------- - * Function: usage - * - * Purpose: print a usage message - * - * Return: void - * - *------------------------------------------------------------------------- - */ - -void usage(void) -{ - printf("usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] \n"); - printf(" file1 File name of the first HDF5 file\n"); - printf(" file2 File name of the second HDF5 file\n"); - printf(" [obj1] Name of an HDF5 object, in absolute path\n"); - printf(" [obj2] Name of an HDF5 object, in absolute path\n"); - printf("\n"); - printf(" OPTIONS\n"); - printf(" -h, --help\n"); - printf(" Print a usage message and exit.\n"); - printf(" -V, --version\n"); - printf(" Print version number and exit.\n"); - printf(" -r, --report\n"); - printf(" Report mode. Print differences.\n"); - printf(" -v --verbose\n"); - printf(" Verbose mode. Print differences information and list of objects.\n"); - printf(" -vN --verbose=N\n"); - printf(" Verbose mode with level. Print differences and list of objects.\n"); - printf(" Level of detail depends on value of N:\n"); - printf(" 0 : Identical to '-v' or '--verbose'.\n"); - printf(" 1 : All level 0 information plus one-line attribute\n"); - printf(" status summary.\n"); - printf(" 2 : All level 1 information plus extended attribute\n"); - printf(" status report.\n"); - printf(" -q, --quiet\n"); - printf(" Quiet mode. Do not produce output.\n"); - printf(" --follow-symlinks\n"); - printf(" Follow symbolic links (soft links and external links and compare the)\n"); - printf(" links' target objects.\n"); - printf(" If symbolic link(s) with the same name exist in the files being\n"); - printf(" compared, then determine whether the target of each link is an existing\n"); - printf(" object (dataset, group, or named datatype) or the link is a dangling\n"); - printf(" link (a soft or external link pointing to a target object that does\n"); - printf(" not yet exist).\n"); - printf(" - If both symbolic links are dangling links, they are treated as being\n"); - printf(" the same; by default, h5diff returns an exit code of 0.\n"); - printf(" If, however, --no-dangling-links is used with --follow-symlinks,\n"); - printf(" this situation is treated as an error and h5diff returns an\n"); - printf(" exit code of 2.\n"); - printf(" - If only one of the two links is a dangling link,they are treated as\n"); - printf(" being different and h5diff returns an exit code of 1.\n"); - printf(" If, however, --no-dangling-links is used with --follow-symlinks,\n"); - printf(" this situation is treated as an error and h5diff returns an\n"); - printf(" exit code of 2.\n"); - printf(" - If both symbolic links point to existing objects, h5diff compares the\n"); - printf(" two objects.\n"); - printf(" If any symbolic link specified in the call to h5diff does not exist,\n"); - printf(" h5diff treats it as an error and returns an exit code of 2.\n"); - printf(" --no-dangling-links\n"); - printf(" Must be used with --follow-symlinks option; otherwise, h5diff shows\n"); - printf(" error message and returns an exit code of 2.\n"); - printf(" Check for any symbolic links (soft links or external links) that do not\n"); - printf(" resolve to an existing object (dataset, group, or named datatype).\n"); - printf(" If any dangling link is found, this situation is treated as an error\n"); - printf(" and h5diff returns an exit code of 2.\n"); - printf(" -c, --compare\n"); - printf(" List objects that are not comparable\n"); - printf(" -N, --nan\n"); - printf(" Avoid NaNs detection\n"); - printf(" -n C, --count=C\n"); - printf(" Print differences up to C. C must be a positive integer.\n"); - printf(" -d D, --delta=D\n"); - printf(" Print difference if (|a-b| > D). D must be a positive number.\n"); - printf(" Can not use with '-p' or '--use-system-epsilon'.\n"); - printf(" -p R, --relative=R\n"); - printf(" Print difference if (|(a-b)/b| > R). R must be a positive number.\n"); - printf(" Can not use with '-d' or '--use-system-epsilon'.\n"); - printf(" --use-system-epsilon\n"); - printf(" Print difference if (|a-b| > EPSILON), EPSILON is system defined value.\n"); - printf(" If the system epsilon is not defined,one of the following predefined\n"); - printf(" values will be used:\n"); - printf(" FLT_EPSILON = 1.19209E-07 for floating-point type\n"); - printf(" DBL_EPSILON = 2.22045E-16 for double precision type\n"); - printf(" Can not use with '-p' or '-d'.\n"); - printf(" --exclude-path \"path\" \n"); - printf(" Exclude the specified path to an object when comparing files or groups.\n"); - printf(" If a group is excluded, all member objects will also be excluded.\n"); - printf(" The specified path is excluded wherever it occurs.\n"); - printf(" This flexibility enables the same option to exclude either objects that\n"); - printf(" exist only in one file or common objects that are known to differ.\n"); - printf("\n"); - printf(" When comparing files, \"path\" is the absolute path to the excluded;\n"); - printf(" object; when comparing groups, \"path\" is similar to the relative\n"); - printf(" path from the group to the excluded object. This \"path\" can be\n"); - printf(" taken from the first section of the output of the --verbose option.\n"); - printf(" For example, if you are comparing the group /groupA in two files and\n"); - printf(" you want to exclude /groupA/groupB/groupC in both files, the exclude\n"); - printf(" option would read as follows:\n"); - printf(" --exclude-path \"/groupB/groupC\"\n"); - printf("\n"); - printf(" If there are multiple paths to an object, only the specified path(s)\n"); - printf(" will be excluded; the comparison will include any path not explicitly\n"); - printf(" excluded.\n"); - printf(" This option can be used repeatedly to exclude multiple paths.\n"); - printf("\n"); - - printf(" Modes of output:\n"); - printf(" Default mode: print the number of differences found and where they occured\n"); - printf(" -r Report mode: print the above plus the differences\n"); - printf(" -v Verbose mode: print the above plus a list of objects and warnings\n"); - printf(" -q Quiet mode: do not print output\n"); - - printf("\n"); - - printf(" File comparison:\n"); - printf(" If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as\n"); - printf(" a comparison of the two files' root groups. That is, h5diff first compares\n"); - printf(" the names of root group members, generates a report of root group objects\n"); - printf(" that appear in only one file or in both files, and recursively compares\n"); - printf(" common objects.\n"); - printf("\n"); - - printf(" Object comparison:\n"); - printf(" 1) Groups \n"); - printf(" First compares the names of member objects (relative path, from the\n"); - printf(" specified group) and generates a report of objects that appear in only\n"); - printf(" one group or in both groups. Common objects are then compared recursively.\n"); - printf(" 2) Datasets \n"); - printf(" Array rank and dimensions, datatypes, and data values are compared.\n"); - printf(" 3) Datatypes \n"); - printf(" The comparison is based on the return value of H5Tequal.\n"); - printf(" 4) Symbolic links \n"); - printf(" The paths to the target objects are compared.\n"); - printf(" (The option --follow-symlinks overrides the default behavior when\n"); - printf(" symbolic links are compared.).\n"); - printf("\n"); - - printf(" Exit code:\n"); - printf(" 0 if no differences, 1 if differences found, 2 if error\n"); - printf("\n"); - printf(" Examples of use:\n"); - printf(" 1) h5diff file1 file2 /g1/dset1 /g1/dset2\n"); - printf(" Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2\n"); - printf("\n"); - printf(" 2) h5diff file1 file2 /g1/dset1\n"); - printf(" Compares object '/g1/dset1' in both files\n"); - printf("\n"); - printf(" 3) h5diff file1 file2\n"); - printf(" Compares all objects in both files\n"); - printf("\n"); - printf(" Notes:\n"); - printf(" file1 and file2 can be the same file.\n"); - printf(" Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare\n"); - printf(" '/g1/dset1' and '/g1/dset2' in the same file\n"); - printf("\n"); -} diff --git a/tools/h5diff/h5diff_common.h b/tools/h5diff/h5diff_common.h deleted file mode 100644 index 5b1317f..0000000 --- a/tools/h5diff/h5diff_common.h +++ /dev/null @@ -1,36 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#ifndef H5DIFFCOMMON_H__ -#define H5DIFFCOMMON_H__ - -#include "h5tools.h" -/* Name of tool */ -#define PROGRAMNAME "h5diff" - -#ifdef __cplusplus -extern "C" { -#endif - -void usage(void); -void parse_command_line(int argc, const char* argv[], const char** fname1, const char** fname2, const char** objname1, const char** objname2, diff_opt_t* options); -void h5diff_exit(int status); -void print_info(diff_opt_t* options); - -#ifdef __cplusplus -} -#endif - -#endif /* H5DIFFCOMMON_H__ */ diff --git a/tools/h5diff/h5diff_main.c b/tools/h5diff/h5diff_main.c deleted file mode 100644 index cdaca29..0000000 --- a/tools/h5diff/h5diff_main.c +++ /dev/null @@ -1,145 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include -#include "H5private.h" -#include "h5diff.h" -#include "h5diff_common.h" -#include "h5tools.h" -#include "h5tools_utils.h" - - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: h5diff main program - * - * Return: An exit status of 0 means no differences were found, 1 means some - * differences were found. - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - * Modifications: July 2004 - * Introduced the four modes: - * Normal mode: print the number of differences found and where they occured - * Report mode: print the above plus the differences - * Verbose mode: print the above plus a list of objects and warnings - * Quiet mode: do not print output - * - * November 2004: Leon Arber (larber@uiuc.edu) - * Additions that allow h5diff to be run in parallel - * - * February 2005: Leon Arber (larber@uiuc.edu) - * h5diff and ph5diff split into two files, one that is used - * to build a serial h5diff and one used to build a parallel h5diff - * Common functions have been moved to h5diff_common.c - * - * October 2005 - * Introduced a new field 'not_cmp' to 'diff_opt_t' that detects - * if some objects are not comparable and prints the message - * "Some objects are not comparable" - * - * February 2007 - * Added comparison for dataset regions. - * Added support for reading and comparing by hyperslabs for large files. - * Inclusion of a relative error formula to compare floating - * point numbers in order to deal with floating point uncertainty. - * Printing of dataset dimensions along with dataset name - * - * November 19, 2007 - * adopted the syntax h5diff [OPTIONS] file1 file2 [obj1[obj2]] - * - *------------------------------------------------------------------------- - */ - - -int main(int argc, const char *argv[]) -{ - int ret; - const char *fname1 = NULL; - const char *fname2 = NULL; - const char *objname1 = NULL; - const char *objname2 = NULL; - hsize_t nfound=0; - diff_opt_t options; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - /*------------------------------------------------------------------------- - * process the command-line - *------------------------------------------------------------------------- - */ - parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); - - /*------------------------------------------------------------------------- - * do the diff - *------------------------------------------------------------------------- - */ - - nfound = h5diff(fname1,fname2,objname1,objname2,&options); - - print_info(&options); - - /*------------------------------------------------------------------------- - * exit code - * 1 if differences, 0 if no differences, 2 if error - *------------------------------------------------------------------------- - */ - - ret = (nfound == 0 ? 0 : 1 ); - - /* if graph difference return 1 for differences */ - if ( options.contents == 0 ) - ret = 1; - - /* and return 2 for error */ - if (options.err_stat) - ret = 2; - - return ret; -} - -/*------------------------------------------------------------------------- - * Function: h5diff_exit - * - * Purpose: dismiss phdiff worker processes and exit - * - * Return: none - * - * Programmer: Albert Cheng - * Date: Feb 6, 2005 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -H5_ATTR_NORETURN void -h5diff_exit(int status) -{ - HDexit(status); -} - diff --git a/tools/h5diff/h5diffgentest.c b/tools/h5diff/h5diffgentest.c deleted file mode 100644 index 339ff6c..0000000 --- a/tools/h5diff/h5diffgentest.c +++ /dev/null @@ -1,7385 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright by The HDF Group. * -* Copyright by the Board of Trustees of the University of Illinois. * -* All rights reserved. * -* * -* This file is part of HDF5. The full HDF5 copyright notice, including * -* terms governing use, modification, and redistribution, is contained in * -* the files COPYING and Copyright.html. COPYING can be found at the root * -* of the source code distribution tree; Copyright.html can be found at the * -* root level of an installed copy of the electronic HDF5 document set and * -* is linked from the top-level documents page. It can also be found at * -* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * -* access to either file, you may request a copy from help@hdfgroup.org. * -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include "hdf5.h" -#include "H5private.h" - -/* - * The output functions need a temporary buffer to hold a piece of the - * dataset while it's being printed. This constant sets the limit on the - * size of that temporary buffer in bytes. For efficiency's sake, choose the - * largest value suitable for your machine (for testing use a small value). - */ -/* Maximum size used in a call to malloc for a dataset - * NOTE: this value should stay in sync with the value defined in the tools - * library file: h5tools_utils.h - */ -size_t H5TOOLS_MALLOCSIZE = (128 * 1024 * 1024); - -/*------------------------------------------------------------------------- -* Program: h5diffgentest -* -* Purpose: generate files for h5diff testing -* -* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu -* -* Date: November 12, 2003 -* -*------------------------------------------------------------------------- -*/ - -#define FILE1 "h5diff_basic1.h5" -#define FILE2 "h5diff_basic2.h5" -#define FILE3 "h5diff_types.h5" -#define FILE4 "h5diff_dtypes.h5" -#define FILE5 "h5diff_attr1.h5" -#define FILE6 "h5diff_attr2.h5" -#define FILE7 "h5diff_dset1.h5" -#define FILE8 "h5diff_dset2.h5" -#define FILE9 "h5diff_hyper1.h5" -#define FILE10 "h5diff_hyper2.h5" -#define FILE11 "h5diff_empty.h5" -#define FILE12 "h5diff_links.h5" -#define FILE13 "h5diff_softlinks.h5" -#define FILE14 "h5diff_linked_softlink.h5" -#define FILE15 "h5diff_extlink_src.h5" -#define FILE16 "h5diff_extlink_trg.h5" -#define FILE17 "h5diff_ext2softlink_src.h5" -#define FILE18 "h5diff_ext2softlink_trg.h5" -#define FILE19 "h5diff_dset_zero_dim_size1.h5" -#define FILE20 "h5diff_dset_zero_dim_size2.h5" -#define FILE21 "h5diff_dset_idx1.h5" -#define FILE22 "h5diff_dset_idx2.h5" -#define DANGLE_LINK_FILE1 "h5diff_danglelinks1.h5" -#define DANGLE_LINK_FILE2 "h5diff_danglelinks2.h5" -#define GRP_RECURSE_FILE1 "h5diff_grp_recurse1.h5" -#define GRP_RECURSE_FILE2 "h5diff_grp_recurse2.h5" -/* same structure via external links through files */ -#define GRP_RECURSE1_EXT "h5diff_grp_recurse_ext1.h5" -#define GRP_RECURSE2_EXT1 "h5diff_grp_recurse_ext2-1.h5" -#define GRP_RECURSE2_EXT2 "h5diff_grp_recurse_ext2-2.h5" -#define GRP_RECURSE2_EXT3 "h5diff_grp_recurse_ext2-3.h5" -/* same structure, same obj name with different value */ -#define EXCLUDE_FILE1_1 "h5diff_exclude1-1.h5" -#define EXCLUDE_FILE1_2 "h5diff_exclude1-2.h5" -/* different structure and obj names */ -#define EXCLUDE_FILE2_1 "h5diff_exclude2-1.h5" -#define EXCLUDE_FILE2_2 "h5diff_exclude2-2.h5" -/* only one file has unique objs */ -#define EXCLUDE_FILE3_1 "h5diff_exclude3-1.h5" -#define EXCLUDE_FILE3_2 "h5diff_exclude3-2.h5" -/* compound type with multiple vlen string types */ -#define COMP_VL_STRS_FILE "h5diff_comp_vl_strs.h5" -/* attribute compre with verbose level */ -#define ATTR_VERBOSE_LEVEL_FILE1 "h5diff_attr_v_level1.h5" -#define ATTR_VERBOSE_LEVEL_FILE2 "h5diff_attr_v_level2.h5" -/* file containing valid/invalid enum value mix */ -#define ENUM_INVALID_VALUES "h5diff_enum_invalid_values.h5" -/* file with container types (array,vlen) with multiple compounds */ -#define COMPS_COMPLEX1 "compounds_array_vlen1.h5" -#define COMPS_COMPLEX2 "compounds_array_vlen2.h5" -/* non-comparable dataset and attribute */ -#define NON_COMPARBLES1 "non_comparables1.h5" -#define NON_COMPARBLES2 "non_comparables2.h5" - -#define UIMAX 4294967295u /*Maximum value for a variable of type unsigned int */ -#define STR_SIZE 3 -#define GBLL ((unsigned long long) 1024 * 1024 *1024 ) - -#define MY_LINKCLASS 187 - -/* Dataspace of 0 dimension size */ -#define SPACE1_RANK 2 -#define SPACE1_DIM1 0 -#define SPACE1_DIM2 0 - -/* A UD link traversal function. Shouldn't actually be called. */ -static hid_t UD_traverse(H5_ATTR_UNUSED const char * link_name, H5_ATTR_UNUSED hid_t cur_group, - H5_ATTR_UNUSED const void * udata, H5_ATTR_UNUSED size_t udata_size, H5_ATTR_UNUSED hid_t lapl_id) -{ - return -1; -} -const H5L_class_t UD_link_class[1] = {{ - H5L_LINK_CLASS_T_VERS, /* H5L_class_t version */ - (H5L_type_t)MY_LINKCLASS, /* Link type id number */ - "UD link class", /* name for debugging */ - NULL, /* Creation callback */ - NULL, /* Move/rename callback */ - NULL, /* Copy callback */ - UD_traverse, /* The actual traversal function */ - NULL, /* Deletion callback */ - NULL /* Query callback */ -}}; - - -/*------------------------------------------------------------------------- -* prototypes -*------------------------------------------------------------------------- -*/ - -/* tests called in main() */ -static int test_basic(const char *fname1, const char *fname2, const char *fname3); -static int test_types(const char *fname); -static int test_datatypes(const char *fname); -static int test_attributes(const char *fname,int make_diffs); -static int test_datasets(const char *fname,int make_diffs); -static int test_special_datasets(const char *fname,int make_diffs); -static int test_hyperslab(const char *fname,int make_diffs); -static int test_link_name(const char *fname1); -static int test_soft_links(const char *fname1); -static int test_linked_softlinks(const char *fname1); -static int test_external_links(const char *fname1, const char *fname2); -static int test_ext2soft_links(const char *fname1, const char *fname2); -static int test_dangle_links(const char *fname1, const char *fname2); -static int test_group_recurse(const char *fname1, const char *fname2); -static int test_group_recurse2(void); -static int test_exclude_obj1(const char *fname1, const char *fname2); -static int test_exclude_obj2(const char *fname1, const char *fname2); -static int test_exclude_obj3(const char *fname1, const char *fname2); -static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int is_file_new); -static int test_attributes_verbose_level(const char *fname1, const char *fname2); -static int test_enums(const char *fname); -static void test_comps_array (const char *fname, const char *dset, const char *attr,int diff, int is_file_new); -static void test_comps_vlen (const char *fname, const char *dset,const char *attr, int diff, int is_file_new); -static void test_comps_array_vlen (const char *fname, const char *dset, const char *attr, int diff, int is_file_new); -static void test_comps_vlen_arry (const char *fname, const char *dset,const char *attr, int diff, int is_file_new); -static void test_data_nocomparables (const char *fname, int diff); -static void test_objs_nocomparables (const char *fname1, const char *fname2); - -/* called by test_attributes() and test_datasets() */ -static void write_attr_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs); -static void write_dset_in(hid_t loc_id,const char* dset_name,hid_t fid,int make_diffs); -static void gen_datareg(hid_t fid,int make_diffs); -/* utilities */ -static int write_attr(hid_t loc_id,int rank,hsize_t *dims,const char *name,hid_t tid,void *buf); -static int write_dset(hid_t loc_id,int rank,hsize_t *dims,const char *name,hid_t tid,void *buf); -static int gen_dataset_idx(const char *file, int format); - - -/*------------------------------------------------------------------------- -* Function: main -* -* Purpose: main program -* -*------------------------------------------------------------------------- -*/ - -int main(void) -{ - test_basic(FILE1, FILE2, FILE11); - - test_types (FILE3); - test_datatypes(FILE4); - - /* generate 2 files, the second call creates a similar file with differences */ - test_attributes(FILE5,0); - test_attributes(FILE6,1); - - /* test attributes with verbose level */ - test_attributes_verbose_level(ATTR_VERBOSE_LEVEL_FILE1, ATTR_VERBOSE_LEVEL_FILE2); - - /* generate 2 files, the second call creates a similar file with differences */ - test_datasets(FILE7,0); - test_datasets(FILE8,1); - - /* generate 2 files, the second call creates a similar file with differences */ - test_hyperslab(FILE9,0); - test_hyperslab(FILE10,1); - - test_link_name(FILE12); - - test_soft_links(FILE13); - - test_linked_softlinks(FILE14); - - test_external_links(FILE15, FILE16); - - test_ext2soft_links(FILE17, FILE18); - - /* generate 2 files, the second call creates a similar file with differences */ - test_special_datasets(FILE19,0); - test_special_datasets(FILE20,1); - - /* - * Generate 2 files: FILE21 with old format; FILE22 with new format - * Create 2 datasets in each file: - * One dataset: chunked layout, w/o filters, fixed dimension - * One dataset: chunked layout, w/ filters, fixed dimension - */ - gen_dataset_idx(FILE21, 0); - gen_dataset_idx(FILE22, 1); - - test_dangle_links(DANGLE_LINK_FILE1, DANGLE_LINK_FILE2); - - test_group_recurse(GRP_RECURSE_FILE1, GRP_RECURSE_FILE2); - test_group_recurse2(); - - test_exclude_obj1(EXCLUDE_FILE1_1, EXCLUDE_FILE1_2); - test_exclude_obj2(EXCLUDE_FILE2_1, EXCLUDE_FILE2_2); - test_exclude_obj3(EXCLUDE_FILE3_1, EXCLUDE_FILE3_2); - - /* diff various multiple vlen and fixlen string types in a compound dataset */ - test_comp_vlen_strings(COMP_VL_STRS_FILE, "group", 1); - test_comp_vlen_strings(COMP_VL_STRS_FILE, "group_copy", 0); - - /* diff when invalid enum values are present. - * This will probably grow to involve more extensive testing of - * enums so it has been given its own test file and test (apart - * from the basic type testing). - */ - test_enums(ENUM_INVALID_VALUES); - - /* ------------------------------------------------- - * Create test files with dataset and attribute with container types - * (array, vlen) with multiple nested compound types. - */ - /* file1 */ - test_comps_array(COMPS_COMPLEX1,"dset1", "attr1", 0, 1); - test_comps_vlen(COMPS_COMPLEX1,"dset2", "attr2", 0, 0); - test_comps_array_vlen(COMPS_COMPLEX1,"dset3", "attr3", 0, 0); - test_comps_vlen_arry(COMPS_COMPLEX1,"dset4", "attr4", 0, 0); - /* file2 */ - test_comps_array(COMPS_COMPLEX2,"dset1", "attr1", 5, 1); - test_comps_vlen(COMPS_COMPLEX2,"dset2", "attr2",5, 0); - test_comps_array_vlen(COMPS_COMPLEX2,"dset3", "attr3", 5, 0); - test_comps_vlen_arry(COMPS_COMPLEX2,"dset4", "attr4", 5, 0); - - /*------------------------------------------------- - * Create test files with non-comparable dataset and attributes with - * comparable datasets and attributes. All the comparables should display - * differences. - */ - test_data_nocomparables(NON_COMPARBLES1,0); - test_data_nocomparables(NON_COMPARBLES2,5); - - /* common objects (same name) with different object types. HDFFV-7644 */ - test_objs_nocomparables(NON_COMPARBLES1, NON_COMPARBLES2); - - return 0; -} - -/*------------------------------------------------------------------------- -* Function: test_basic -* -* Purpose: Create basic test files, first two contains different data, the -* third one is just an empty file. -* -*------------------------------------------------------------------------- -*/ - -static -int test_basic(const char *fname1, const char *fname2, const char *fname3) -{ - hid_t fid1, fid2; - hid_t gid1, gid2, gid3; - hsize_t dims1[1] = { 6 }; - hsize_t dims2[2] = { 3,2 }; - - /* create the empty file */ - if ((fid1=H5Fcreate(fname3, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0){ - fprintf(stderr, "empty file (%s) creation failed.\n", fname3); - goto out; - } - if (H5Fclose(fid1) < 0){ - fprintf(stderr, "empty file (%s) close failed.\n", fname3); - goto out; - } - - /*------------------------------------------------------------------------- - * create two files - *------------------------------------------------------------------------- - */ - - if (( fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0 ) - goto out; - if (( fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0 ) - goto out; - - /*------------------------------------------------------------------------- - * create groups - *------------------------------------------------------------------------- - */ - - gid1 = H5Gcreate2(fid1, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid2 = H5Gcreate2(fid2, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - gid3 = H5Gcreate2(fid2, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * tests: - * # 1.1 normal mode - * # 1.2 normal mode with objects - * # 1.3 report mode - * # 1.4 report mode with objects - * # 1.5 with -d - *------------------------------------------------------------------------- - */ - - { - double data1[3][2] = {{ 1.0F, 1.0F}, { 1.00F, 1.000F}, { 0.0F, 0.0F}}; - double data2[3][2] = {{ 0.0F, 1.1F}, { 1.01F, 1.001F}, { 0.0F, 1.0F}}; - double data3[3][2] = {{100.0F, 100.0F}, {100.00F, 100.000F}, {100.0F, 100.0F}}; - double data4[3][2] = {{105.0F, 120.0F}, {160.00F, 95.000F}, { 80.0F, 40.0F}}; - - write_dset(gid1,2,dims2,"dset1",H5T_NATIVE_DOUBLE,data1); - write_dset(gid2,2,dims2,"dset2",H5T_NATIVE_DOUBLE,data2); - write_dset(gid1,2,dims2,"dset3",H5T_NATIVE_DOUBLE,data3); - write_dset(gid2,2,dims2,"dset4",H5T_NATIVE_DOUBLE,data4); - write_dset(gid2,2,dims2,"dset1",H5T_NATIVE_DOUBLE,data2); - - } - /*------------------------------------------------------------------------- - * relative error, compare divide by zero, both zero - * # 1.6.1 with -p (int) - *------------------------------------------------------------------------- - */ - { - int data5[3][2] = {{100,100},{100,0},{0,100}}; - int data6[3][2] = {{120,80}, {0,100},{0,50}}; - - write_dset(gid1,2,dims2,"dset5",H5T_NATIVE_INT,data5); - write_dset(gid1,2,dims2,"dset6",H5T_NATIVE_INT,data6); - - } - - /*------------------------------------------------------------------------- - * relative error, compare divide by zero, both zero - * # 1.6.2 with -p (unsigned long long) - *------------------------------------------------------------------------- - */ - { - unsigned long long data7[3][2] = {{100,100},{100,0},{0,100}}; - unsigned long long data8[3][2] = {{120,80}, {0,100},{0,50}}; - - write_dset(gid1,2,dims2,"dset7",H5T_NATIVE_ULLONG,data7); - write_dset(gid1,2,dims2,"dset8",H5T_NATIVE_ULLONG,data8); - - } - - /*------------------------------------------------------------------------- - * relative error, compare divide by zero, both zero - * # 1.6.3 with -p (double) - * - * A B 1-B/A % - * 100 120 0.2 20 - * 100 80 0.2 20 - * 100 0 1 100 - * 0 100 #DIV/0! #DIV/0! - * 0 0 #DIV/0! #DIV/0! - * 100 50 0.5 50 - *------------------------------------------------------------------------- - */ - { - double data9[3][2] = {{100.0F, 100.0F}, {100.0F, 0.0F}, {0.0F, 100.0F}}; - double data10[3][2] ={{120.0F, 80.0F}, { 0.0F, 100.0F}, {0.0F, 50.0F}}; - - write_dset(gid1,2,dims2,"dset9",H5T_NATIVE_DOUBLE,data9); - write_dset(gid1,2,dims2,"dset10",H5T_NATIVE_DOUBLE,data10); - - } - - - /*------------------------------------------------------------------------- - * test floating point comparison - *------------------------------------------------------------------------- - */ - { - /* epsilon = 0.0000001 = 1e-7 - * system epsilon for float : FLT_EPSILON = 1.19209E-07 - */ - float data11[3][2] ={{0.000000f,0.0000001f},{0.0000001f, 0.00000022f},{0.0000001f,0.0000001f}}; - float data12[3][2] ={{0.000000f,0.0000002f},{0.0000003f,0.0000001f},{0.000000f,0.0000001f}}; - /* epsilon = 0.0000000000000001 = 1e-16 - * system epsilon for double : DBL_EPSILON = 2.22045E-16 - */ - double data13[3][2] ={ - {H5_DOUBLE(0.0000000000000000), H5_DOUBLE(0.0000000000000001)}, - {H5_DOUBLE(0.0000000000000001), H5_DOUBLE(0.0000000000000000)}, - {H5_DOUBLE(0.00000000000000033), H5_DOUBLE(0.0000000000000001)}}; - double data14[3][2] ={ - {H5_DOUBLE(0.0000000000000000), H5_DOUBLE(0.0000000000000004)}, - {H5_DOUBLE(0.0000000000000002), H5_DOUBLE(0.0000000000000001)}, - {H5_DOUBLE(0.0000000000000001), H5_DOUBLE(0.00000000000000000)}}; - - write_dset(gid1,2,dims2,"fp1",H5T_NATIVE_FLOAT,data11); - write_dset(gid1,2,dims2,"fp2",H5T_NATIVE_FLOAT,data12); - write_dset(gid1,2,dims2,"d1",H5T_NATIVE_DOUBLE,data13); - write_dset(gid1,2,dims2,"d2",H5T_NATIVE_DOUBLE,data14); - - } - - -#if H5_SIZEOF_LONG_DOUBLE !=0 - { - - /*------------------------------------------------------------------------- - * H5T_NATIVE_LDOUBLE - *------------------------------------------------------------------------- - */ - - long double data15[3][2] ={{1.0L,1.0L},{1.0L,1.0L},{1.0L,1.0L}}; - - write_dset(gid1,2,dims2,"ld",H5T_NATIVE_LDOUBLE,data15); - - } -#endif - - - - /*------------------------------------------------------------------------- - * NaNs in H5T_NATIVE_FLOAT - *------------------------------------------------------------------------- - */ - { - - float data15[6]; - float data16[6]; - - data15[0] = (float)HDsqrt(-1.0F); - data15[1] = 1.0F; - data15[2] = (float)HDsqrt(-1.0F); - data15[3] = 1.0F; - data15[4] = 1.0F; - data15[5] = 1.0F; - - data16[0] = (float)HDsqrt(-1.0F); - data16[1] = (float)HDsqrt(-1.0F); - data16[2] = 1.0F; - data16[3] = 1.0F; - data16[4] = 1.0F; - data16[5] = 1.0F; - - write_dset(gid1,1,dims1,"fp15",H5T_NATIVE_FLOAT,data15); - write_dset(gid1,1,dims1,"fp16",H5T_NATIVE_FLOAT,data16); - - } - - /*------------------------------------------------------------------------- - * NaNs in H5T_NATIVE_DOUBLE - *------------------------------------------------------------------------- - */ - { - - double data17[6]; - double data18[6]; - - data17[0] = HDsqrt(-1.0F); - data17[1] = 1.0F; - data17[2] = HDsqrt(-1.0F); - data17[3] = 1.0F; - data17[4] = 1.0F; - data17[5] = 1.0F; - - data18[0] = HDsqrt(-1.0F); - data18[1] = HDsqrt(-10000.0F); - data18[2] = 1.0F; - data18[3] = 1.0F; - data18[4] = 1.0F; - data18[5] = 1.0F; - - write_dset(gid1,1,dims1,"fp17",H5T_NATIVE_DOUBLE,data17); - write_dset(gid1,1,dims1,"fp18",H5T_NATIVE_DOUBLE,data18); - write_dset(gid1,1,dims1,"fp18_COPY",H5T_NATIVE_DOUBLE,data18); - } - - /*------------------------------------------------------------------------ - * INFINITY values - *------------------------------------------------------------------------ - */ - { - float data19[6]; - double data20[6]; - - data19[0] = data19[1] = data19[2] = (float)HDlog(0.0F); - data19[3] = data19[4] = data19[5] = (float)-HDlog(0.0F); - - data20[0] = data20[1] = data20[2] = HDlog(0.0F); - data20[3] = data20[4] = data20[5] = -HDlog(0.0F); - - write_dset(gid1,1,dims1,"fp19",H5T_NATIVE_FLOAT,data19); - write_dset(gid1,1,dims1,"fp19_COPY",H5T_NATIVE_FLOAT,data19); - write_dset(gid1,1,dims1,"fp20",H5T_NATIVE_DOUBLE,data20); - write_dset(gid1,1,dims1,"fp20_COPY",H5T_NATIVE_DOUBLE,data20); - } - - /*------------------------------------------------------------------------- - * NaNs in H5T_NATIVE_DOUBLE and H5T_NATIVE_FLOAT inside H5T_COMPOUND - *------------------------------------------------------------------------- - */ - { - typedef struct cmp1_t - { - double d; - float f; - } cmp1_t; - - cmp1_t buf1[2]; - cmp1_t buf2[2]; - hsize_t dims[1] = {2}; - size_t type_size; - hid_t tid; - - buf1[0].d = HDsqrt(-1.0F); - buf1[0].f = (float)HDsqrt(-1.0F); - buf2[0].d = HDsqrt(-1.0F); - buf2[0].f = (float)HDsqrt(-1.0F); - - buf1[1].d = HDsqrt(-1.0F); - buf1[1].f = (float)HDsqrt(-1.0F); - buf2[1].d = 0.0F; - buf2[1].f = 0.0F; - - type_size = sizeof( cmp1_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "d", HOFFSET( cmp1_t, d ), H5T_NATIVE_DOUBLE ); - H5Tinsert(tid, "f", HOFFSET( cmp1_t, f ), H5T_NATIVE_FLOAT ); - write_dset(gid1,1,dims,"dset11",tid,buf1); - write_dset(gid1,1,dims,"dset12",tid,buf2); - H5Tclose(tid); - - - } - - /* not comparable objects */ - { - - typedef struct cmp1_t - { - double d; - int i; - } cmp1_t; - - typedef struct cmp2_t - { - int i; - double d; - } cmp2_t; - - typedef struct cmp3_t - { - int i; - } cmp3_t; - - double data2[6] = {0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; - int data3[6] = {0,0,0,0,0,0}; - int data4[3][2] = {{0,0},{0,0},{0,0}}; - int data5[2][2] = {{0,0},{0,0}}; - unsigned int data6[3][2] = {{0,0},{0,0},{0,0}}; - cmp1_t data7[1] = {{1.0f, 2}}; - cmp2_t data8[1] = {{1, 2.0f}}; - hsize_t dims3[2] = {2, 2}; - hsize_t dims4[1] = {1}; - size_t type_size; - hid_t tid; - - - - write_dset(gid3,1,dims1,"dset1",H5T_NATIVE_DOUBLE,NULL); - write_dset(gid3,1,dims1,"dset2",H5T_NATIVE_DOUBLE,data2); - write_dset(gid3,1,dims1,"dset3",H5T_NATIVE_INT,data3); - write_dset(gid3,2,dims2,"dset4",H5T_NATIVE_INT,data4); - write_dset(gid3,2,dims3,"dset5",H5T_NATIVE_INT,data5); - write_dset(gid3,2,dims2,"dset6",H5T_NATIVE_UINT,data6); - - /* case of compound with different type members */ - type_size = sizeof( cmp1_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "d", HOFFSET( cmp1_t, d ), H5T_NATIVE_DOUBLE ); - H5Tinsert(tid, "i", HOFFSET( cmp1_t, i ), H5T_NATIVE_INT ); - write_dset(gid3,1,dims4,"dset7",tid,data7); - H5Tclose(tid); - - type_size = sizeof( cmp2_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "i", HOFFSET( cmp2_t, i ), H5T_NATIVE_INT ); - H5Tinsert(tid, "d", HOFFSET( cmp2_t, d ), H5T_NATIVE_DOUBLE ); - write_dset(gid3,1,dims4,"dset8",tid,data8); - H5Tclose(tid); - - /* case of compound with different number of members */ - type_size = sizeof( cmp3_t ); - tid = H5Tcreate (H5T_COMPOUND, type_size ); - H5Tinsert(tid, "i", HOFFSET( cmp2_t, i ), H5T_NATIVE_INT ); - write_dset(gid3,1,dims4,"dset9",tid,NULL); - H5Tclose(tid); - - } - - - /*------------------------------------------------------------------------- - * close - *------------------------------------------------------------------------- - */ - H5Gclose(gid1); - H5Gclose(gid2); - H5Gclose(gid3); - H5Fclose(fid1); - H5Fclose(fid2); - return SUCCEED; - -out: - - return FAIL; -} - - -/*------------------------------------------------------------------------- -* Function: test_types -* -* Purpose: Compare different HDF5 object & link types: -* H5G_DATASET, H5G_TYPE, H5G_GROUP, H5G_LINK, H5G_UDLINK -* -*------------------------------------------------------------------------- -*/ -static -int test_types(const char *fname) -{ - hid_t fid1; - hid_t gid1; - hid_t gid2; - hid_t tid1; - hid_t tid2; - herr_t status; - hsize_t dims[1]={1}; - typedef struct s1_t - { - int a; - float b; - } s1_t; - typedef struct s2_t - { - int a; - } s2_t; - - /*------------------------------------------------------------------------- - * Create one file - *------------------------------------------------------------------------- - */ - fid1 = H5Fcreate (fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * H5G_DATASET - *------------------------------------------------------------------------- - */ - write_dset(fid1,1,dims,"dset",H5T_NATIVE_INT,0); - - /*------------------------------------------------------------------------- - * H5G_GROUP - *------------------------------------------------------------------------- - */ - gid1 = H5Gcreate2(fid1, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Gclose(gid1); - gid2 = H5Gcreate2(fid1, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Gclose(gid2); - - /*------------------------------------------------------------------------- - * H5G_TYPE - *------------------------------------------------------------------------- - */ - - /* create and commit datatype 1 */ - tid1 = H5Tcreate(H5T_COMPOUND, sizeof(s1_t)); - H5Tinsert(tid1, "a", HOFFSET(s1_t, a), H5T_NATIVE_INT); - H5Tinsert(tid1, "b", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT); - H5Tcommit2(fid1, "t1", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tclose(tid1); - /* create and commit datatype 2 */ - tid2 = H5Tcreate(H5T_COMPOUND, sizeof(s2_t)); - H5Tinsert(tid2, "a", HOFFSET(s2_t, a), H5T_NATIVE_INT); - H5Tcommit2(fid1, "t2", tid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - H5Tclose(tid2); - - /*------------------------------------------------------------------------- - * H5G_LINK - *------------------------------------------------------------------------- - */ - - status = H5Lcreate_soft("g1", fid1, "l1", H5P_DEFAULT, H5P_DEFAULT); - status = H5Lcreate_soft("g2", fid1, "l2", H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * H5G_UDLINK - *------------------------------------------------------------------------- - */ - H5Lcreate_external("filename", "objname", fid1, "ext_link", H5P_DEFAULT, H5P_DEFAULT); - H5Lregister(UD_link_class); - H5Lcreate_ud(fid1, "ud_link", (H5L_type_t)MY_LINKCLASS, NULL, (size_t)0, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------- - */ - status = H5Fclose(fid1); - return status; -} - - -/* - -# ############################################################################## -# # not comparable types -# ############################################################################## - -# 2.0 -TOOLTEST h5diff_20.txt file3.h5 file3.h5 -v dset g1 - -# 2.1 -TOOLTEST h5diff_21.txt file3.h5 file3.h5 -v dset l1 - -# 2.2 -TOOLTEST h5diff_22.txt file3.h5 file3.h5 -v dset t1 - -# ############################################################################## -# # compare groups, types, links (no differences and differences) -# ############################################################################## - -# 2.3 -TOOLTEST h5diff_23.txt file3.h5 file3.h5 -v g1 g1 - -# 2.4 -TOOLTEST h5diff_24.txt file3.h5 file3.h5 -v t1 t1 - -# 2.5 -TOOLTEST h5diff_25.txt file3.h5 file3.h5 -v l1 l1 - -# 2.6 -TOOLTEST h5diff_26.txt file3.h5 file3.h5 -v g1 g2 - -# 2.7 -TOOLTEST h5diff_27.txt file3.h5 file3.h5 -v t1 t2 - -# 2.8 -TOOLTEST h5diff_28.txt file3.h5 file3.h5 -v l1 l2 -*/ - -/*------------------------------------------------------------------------- -* Function: test_datatypes -* -* Purpose: test dataset datatypes -* -*------------------------------------------------------------------------- -*/ -static -int test_datatypes(const char *fname) -{ - - hid_t fid1; - hid_t dset; - hsize_t dims[2]={3,2}; - herr_t status; - char buf1a[3][2] = {{1,1},{1,1},{1,1}}; - char buf1b[3][2] = {{1,1},{3,4},{5,6}}; - short buf2a[3][2] = {{1,1},{1,1},{1,1}}; - short buf2b[3][2] = {{1,1},{3,4},{5,6}}; - int buf3a[3][2] = {{1,1},{1,1},{1,1}}; - int buf3b[3][2] = {{1,1},{3,4},{5,6}}; - long buf4a[3][2] = {{1,1},{1,1},{1,1}}; - long buf4b[3][2] = {{1,1},{3,4},{5,6}}; - float buf5a[3][2] = {{1.0F, 1.0F}, {1.0F, 1.0F}, {1.0F, 1.0F}}; - float buf5b[3][2] = {{1.0F, 1.0F}, {3.0F, 4.0F}, {5.0F, 6.0F}}; - double buf6a[3][2] = {{1.0F, 1.0F}, {1.0F, 1.0F}, {1.0F, 1.0F}}; - double buf6b[3][2] = {{1.0F, 1.0F}, {3.0F, 4.0F}, {5.0F, 6.0F}}; - - /*unsigned/signed test - signed char -128 to 127 - unsigned char 0 to 255 - */ - char buf7a[3][2] = {{-1,-128},{-1,-1},{-1,-1}}; - unsigned char buf7b[3][2] = {{1,128},{1,1},{1,1}}; - - /* long long test */ - long long buf8a[3][2] = {{1,1},{1,1},{1,1}}; - long long buf8b[3][2] = {{1,1},{3,4},{5,6}}; - unsigned long long buf9a[3][2] = {{1,1},{1,1},{1,1}}; - unsigned long long buf9b[3][2] = {{1,1},{3,4},{5,6}}; - - unsigned int buf10a[3][2] = {{UIMAX,1},{1,1},{1,1}}; - unsigned int buf10b[3][2] = {{UIMAX-1,1},{3,4},{5,6}}; - - unsigned short buf11a[3][2] = {{204,205},{2,3},{1,1}}; - unsigned int buf11b[3][2] = {{204,205},{2,3},{1,1}}; - - - /*------------------------------------------------------------------------- - * Create a file - *------------------------------------------------------------------------- - */ - fid1 = H5Fcreate (fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * Check for different storage order. Give a warning if they are different - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset0a",H5T_STD_I16LE,buf2a); - write_dset(fid1,2,dims,"dset0b",H5T_STD_I32LE,buf3b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_CHAR - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset1a",H5T_NATIVE_CHAR,buf1a); - write_dset(fid1,2,dims,"dset1b",H5T_NATIVE_CHAR,buf1b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_SHORT - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset2a",H5T_NATIVE_SHORT,buf2a); - write_dset(fid1,2,dims,"dset2b",H5T_NATIVE_SHORT,buf2b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_INT - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset3a",H5T_NATIVE_INT,buf3a); - write_dset(fid1,2,dims,"dset3b",H5T_NATIVE_INT,buf3b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_LONG - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset4a",H5T_NATIVE_LONG,buf4a); - write_dset(fid1,2,dims,"dset4b",H5T_NATIVE_LONG,buf4b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_FLOAT - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset5a",H5T_NATIVE_FLOAT,buf5a); - write_dset(fid1,2,dims,"dset5b",H5T_NATIVE_FLOAT,buf5b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_DOUBLE - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset6a",H5T_NATIVE_DOUBLE,buf6a); - write_dset(fid1,2,dims,"dset6b",H5T_NATIVE_DOUBLE,buf6b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_CHAR and H5T_NATIVE_UCHAR - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset7a",H5T_NATIVE_CHAR,buf7a); - write_dset(fid1,2,dims,"dset7b",H5T_NATIVE_UCHAR,buf7b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_LLONG - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset8a",H5T_NATIVE_LLONG,buf8a); - write_dset(fid1,2,dims,"dset8b",H5T_NATIVE_LLONG,buf8b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_ULLONG - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset9a",H5T_NATIVE_ULLONG,buf9a); - write_dset(fid1,2,dims,"dset9b",H5T_NATIVE_ULLONG,buf9b); - - /*------------------------------------------------------------------------- - * H5T_NATIVE_INT - *------------------------------------------------------------------------- - */ - - write_dset(fid1,2,dims,"dset10a",H5T_NATIVE_UINT,buf10a); - write_dset(fid1,2,dims,"dset10b",H5T_NATIVE_UINT,buf10b); - - /*------------------------------------------------------------------------- - * Same type class, different size - *------------------------------------------------------------------------- - */ - write_dset(fid1,2,dims,"dset11a",H5T_STD_U16LE,buf11a); - dset=H5Dopen2 (fid1, "dset11a", H5P_DEFAULT); - write_attr(dset,2,dims,"attr",H5T_STD_U16LE,buf11a); - H5Dclose (dset); - - write_dset(fid1,2,dims,"dset11b",H5T_STD_U32LE,buf11b); - dset=H5Dopen2 (fid1, "dset11b", H5P_DEFAULT); - write_attr(dset,2,dims,"attr",H5T_STD_U32LE,buf11b); - H5Dclose (dset); - - /*------------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------- - */ - status = H5Fclose(fid1); - return status; -} - -/* -# ############################################################################## -# # Dataset datatypes -# ############################################################################## - -# 5.0 -TOOLTEST h5diff_50.txt file4.h5 file4.h5 -v dset0a dset0b - -# 5.1 -TOOLTEST h5diff_51.txt file4.h5 file4.h5 -v dset1a dset1b - -# 5.2 -TOOLTEST h5diff_52.txt file4.h5 file4.h5 -v dset2a dset2b - -# 5.3 -TOOLTEST h5diff_53.txt file4.h5 file4.h5 -v dset3a dset4b - -# 5.4 -TOOLTEST h5diff_54.txt file4.h5 file4.h5 -v dset4a dset4b - -# 5.5 -TOOLTEST h5diff_55.txt file4.h5 file4.h5 -v dset5a dset5b - -# 5.6 -TOOLTEST h5diff_56.txt file4.h5 file4.h5 -v dset6a dset6b - -# 5.7 -TOOLTEST h5diff_57.txt file4.h5 file4.h5 -v dset7a dset7b - -# 5.8 (region reference) -TOOLTEST h5diff_58.txt file7.h5 file8.h5 -v refreg -*/ - -/*------------------------------------------------------------------------- -* Function: test_attributes -* -* Purpose: test attributes -* -*------------------------------------------------------------------------- -*/ -static -int test_attributes(const char *file, - int make_diffs /* flag to modify data buffers */) -{ - hid_t fid; - hid_t did; - hid_t gid; - hid_t root_id; - hid_t sid; - hsize_t dims[1]={2}; - herr_t status; - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - /* Create a 1D dataset */ - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Sclose(sid); - assert(status >= 0); - - /* Create groups */ - gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - root_id = H5Gopen2(fid, "/", H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * write a series of attributes on the dataset, group, and root group - *------------------------------------------------------------------------- - */ - - write_attr_in(did,"dset",fid,make_diffs); - write_attr_in(gid,NULL,(hid_t)0,make_diffs); - write_attr_in(root_id,NULL,(hid_t)0,make_diffs); - - - /* Close */ - status = H5Dclose(did); - assert(status >= 0); - status = H5Gclose(gid); - assert(status >= 0); - status = H5Gclose(root_id); - assert(status >= 0); - - /* Close file */ - status = H5Fclose(fid); - assert(status >= 0); - return status; -} - - -/*------------------------------------------------------------------------- -* Function: test_attributes_verbose_level -* -* Purpose: Cresting test files for testing attributes along with -* levels of verbos option -* -*------------------------------------------------------------------------- -*/ -static int test_attributes_verbose_level(const char *fname1, const char *fname2) -{ - herr_t status = SUCCEED; - hid_t fid1 = -1, fid2 = -1; - hid_t f1_gid = -1, f2_gid = -1; - hid_t f1_gid2 = -1, f2_gid2 = -1; - hid_t f1_gid3 = -1, f2_gid3 = -1; - hid_t f1_gid4 = -1, f2_gid4 = -1; - hid_t f1_did = -1, f2_did = -1; - hid_t f1_sid = -1, f2_sid = -1; - hid_t f1_tid = -1, f2_tid = -1; - /* dset */ - hsize_t dset_dims[1]={3}; - int dset_data[3] = {0,1,2}; - - /* common attrs dim */ - hsize_t attr_dims[1]={2}; - - /* file1 attr */ - int f1_attr_idata[2]= {1,2}; /* integer */ - float f1_attr_fdata[2]= {1.1F,2.2F}; /* float */ - /* file2 attr */ - int f2_attr_idata[2]= {2,3}; /* integer */ - float f2_attr_fdata[2]= {2.1F,3.2F}; /* float */ - - - /*---------------------------------------------------------------------- - * Create file1 - *-----------------------------------------------------------------------*/ - if((fid1 = H5Fcreate(fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Groups - */ - f1_gid = H5Gcreate2(fid1, "g", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - f1_gid2 = H5Gcreate2(fid1, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - f1_gid3 = H5Gcreate2(fid1, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - f1_gid4 = H5Gcreate2(fid1, "g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_gid4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Datasets - */ - f1_sid = H5Screate_simple(1, dset_dims, NULL); - f1_did = H5Dcreate2(fid1, "dset", H5T_NATIVE_INT, f1_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f1_did == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = H5Dwrite(f1_did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Named Datatype - */ - f1_tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(fid1, "ntype", f1_tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname1); - status = FAIL; - goto out; - } - - - - - /*---------------------------------------------------------------------- - * Create file2 - *-----------------------------------------------------------------------*/ - if((fid2 = H5Fcreate(fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Groups - */ - f2_gid = H5Gcreate2(fid2, "g", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - f2_gid2 = H5Gcreate2(fid2, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - f2_gid3 = H5Gcreate2(fid2, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - f2_gid4 = H5Gcreate2(fid2, "g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_gid4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Datasets - */ - f2_sid = H5Screate_simple(1, dset_dims, NULL); - f2_did = H5Dcreate2(fid2, "dset", H5T_NATIVE_INT, f2_sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (f2_did == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - status = H5Dwrite(f2_did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * Named Datatype - */ - f2_tid = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(fid2, "ntype", f2_tid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*---------------------------------- - * CASE1 - Same attr number, all Same attr name - * add attr to group - */ - write_attr(f1_gid,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_gid,1,attr_dims,"float1",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_gid,1,attr_dims,"integer1",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_gid,1,attr_dims,"float1",H5T_NATIVE_FLOAT,f2_attr_fdata); - - /*---------------------------------- - * CASE2 - Same attr number, some Same attr name - * add attr to dset - */ - write_attr(f1_did,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_did,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_did,1,attr_dims,"integer1",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_did,1,attr_dims,"float3",H5T_NATIVE_FLOAT,f2_attr_fdata); - - /*---------------------------------- - * CASE3 - Same attr number, all different attr name - * add attr to ntype - */ - write_attr(f1_tid,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_tid,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f1_attr_fdata); - write_attr(f1_tid,1,attr_dims,"float3",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_tid,1,attr_dims,"integer4",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_tid,1,attr_dims,"float5",H5T_NATIVE_FLOAT,f2_attr_fdata); - write_attr(f2_tid,1,attr_dims,"float6",H5T_NATIVE_FLOAT,f2_attr_fdata); - - /*---------------------------------- - * CASE4 - Different attr number, some same attr name (vs file2-g2) - * add attr to g2 - */ - write_attr(f1_gid2,1,attr_dims,"integer1",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_gid2,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f1_attr_fdata); - write_attr(f1_gid2,1,attr_dims,"float3",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_gid2,1,attr_dims,"integer1",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_gid2,1,attr_dims,"float2",H5T_NATIVE_FLOAT,f2_attr_fdata); - - - /*---------------------------------- - * CASE5 - Different attr number, all different attr name - * add attr to g3 - */ - write_attr(f1_gid3,1,attr_dims,"integer10",H5T_NATIVE_INT,f1_attr_idata); - write_attr(f1_gid3,1,attr_dims,"float11",H5T_NATIVE_FLOAT,f1_attr_fdata); - write_attr(f1_gid3,1,attr_dims,"float12",H5T_NATIVE_FLOAT,f1_attr_fdata); - - write_attr(f2_gid3,1,attr_dims,"integer3",H5T_NATIVE_INT,f2_attr_idata); - write_attr(f2_gid3,1,attr_dims,"float4",H5T_NATIVE_FLOAT,f2_attr_fdata); - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1 > 0) - H5Fclose(fid1); - if(fid2 > 0) - H5Fclose(fid2); - if(f1_gid > 0) - H5Gclose(f1_gid); - if(f2_gid > 0) - H5Gclose(f2_gid); - if(f1_gid2 > 0) - H5Gclose(f1_gid2); - if(f2_gid2 > 0) - H5Gclose(f2_gid2); - if(f1_gid3 > 0) - H5Gclose(f1_gid3); - if(f2_gid3 > 0) - H5Gclose(f2_gid3); - if(f1_gid4 > 0) - H5Gclose(f1_gid4); - if(f2_gid4 > 0) - H5Gclose(f2_gid4); - if(f1_did > 0) - H5Dclose(f1_did); - if(f2_did > 0) - H5Dclose(f2_did); - if(f1_sid > 0) - H5Sclose(f1_sid); - if(f2_sid > 0) - H5Sclose(f2_sid); - if(f1_tid > 0) - H5Tclose(f1_tid); - if(f2_tid > 0) - H5Tclose(f2_tid); - - return status; -} - - -/*------------------------------------------------------------------------- -* Function: test_datasets -* -* Purpose: Check all HDF5 classes -* H5T_INTEGER, H5T_FLOAT -* H5T_TIME, H5T_STRING, H5T_BITFIELD, H5T_OPAQUE, H5T_COMPOUND, H5T_REFERENCE, -* H5T_ENUM, H5T_VLEN, H5T_ARRAY -* -*------------------------------------------------------------------------- -*/ -static -int test_datasets(const char *file, - int make_diffs /* flag to modify data buffers */) -{ - hid_t fid; - hid_t did; - hid_t gid; - hid_t sid; - hsize_t dims[1]={2}; - herr_t status; - int buf[2]={1,2}; - - if(make_diffs) - memset(buf, 0, sizeof buf); - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - /* Create a 1D dataset */ - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - status = H5Sclose(sid); - assert(status >= 0); - - /* Create a group */ - gid = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /*------------------------------------------------------------------------- - * write a series of datasets on the group - *------------------------------------------------------------------------- - */ - - write_dset_in(gid,"/dset",fid,make_diffs); - - /* close */ - status = H5Dclose(did); - assert(status >= 0); - status = H5Gclose(gid); - assert(status >= 0); - - /* close file */ - status = H5Fclose(fid); - assert(status >= 0); - return status; -} - -/*------------------------------------------------------------------------- -* Function: test_special_datasets -* -* Purpose: Check datasets with datasapce of zero dimension size. -*------------------------------------------------------------------------- -*/ -static -int test_special_datasets(const char *file, - int make_diffs /* flag to modify data buffers */) -{ - hid_t fid; - hid_t did; - hid_t sid0, sid; - hsize_t dims0[SPACE1_RANK]={SPACE1_DIM1, SPACE1_DIM2}; - hsize_t dims[SPACE1_RANK]={SPACE1_DIM1, SPACE1_DIM2}; - herr_t status; - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - return -1; - - /* Create a dataset with zero dimension size */ - sid0 = H5Screate_simple(SPACE1_RANK, dims0, NULL); - did = H5Dcreate2(fid, "dset1", H5T_NATIVE_INT, sid0, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* close dataset */ - status = H5Dclose(did); - assert(status >= 0); - - /* close dataspace */ - status = H5Sclose(sid0); - assert(status >= 0); - - /* Create a dataset with zero dimension size in one file but the other one - * has a dataset with a non-zero dimension size */ - if(make_diffs) { - dims[1] = SPACE1_DIM2 + 4; - } - - sid = H5Screate_simple(SPACE1_RANK, dims, NULL); - did = H5Dcreate2(fid, "dset2", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* close dataspace */ - status = H5Sclose(sid); - assert(status >= 0); - - /* close dataset */ - status = H5Dclose(did); - assert(status >= 0); - - /* close file */ - status = H5Fclose(fid); - assert(status >= 0); - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare links, one has longer name than -* the other and short name is subset of long name. -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_link_name(const char *fname1) -{ - hid_t fid1=0; - hid_t gid1=0; - hid_t gid2=0; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid1, "group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - gid2 = H5Gcreate2(fid1, "group_longname", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - status = H5Lcreate_soft("group", fid1, "link_g1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("group_longname", fid1, "link_g2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *------------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare soft links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_soft_links(const char *fname1) -{ - hid_t fid1=0; - hid_t gid1=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid1, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"target_dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"target_dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - /* file 1 */ - status = H5Lcreate_soft("/target_dset1", fid1, "softlink_dset1_1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_dset1", fid1, "softlink_dset1_2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_dset2", fid1, "softlink_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_group", fid1, "softlink_group1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_group", fid1, "softlink_group2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/no_obj", fid1, "softlink_noexist", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(gid1) - H5Gclose(gid1); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare linked soft links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_linked_softlinks(const char *fname1) -{ - hid_t fid1=0; - hid_t gid1=0; - hid_t gid2=0; - hid_t gid3=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid1, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fid1, "target_group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid3 = H5Gcreate2(fid1, "target_group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"target_dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"target_dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = write_dset(gid1,2,dims2,"dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links (Linked) - *------------------------------------------------------------------------*/ - /*--------- - * file 1 */ - status = H5Lcreate_soft("/target_dset1", fid1, "softlink1_to_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink1_to_dset1", fid1, "softlink1_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink1_to_slink1", fid1, "softlink1_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/target_dset2", fid1, "softlink2_to_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink2_to_dset2", fid1, "softlink2_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink2_to_slink1", fid1, "softlink2_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("target_group1", fid1, "softlink3_to_group1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink3_to_group1", fid1, "softlink3_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink3_to_slink1", fid1, "softlink3_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("target_group2", fid1, "softlink4_to_group2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink4_to_group2", fid1, "softlink4_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("softlink4_to_slink1", fid1, "softlink4_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(gid3) - H5Gclose(gid3); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare external links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_external_links(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hid_t gid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - /* source file */ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /* target file */ - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - gid1 = H5Gcreate2(fid2, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fid2, "target_group2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - status = write_dset(fid2,2,dims2,"target_dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"x_dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"x_dset",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /*--------------*/ - /* source file */ - status = H5Lcreate_external(fname2, "/target_group/x_dset", fid1, "ext_link_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/target_group2/x_dset", fid1, "ext_link_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/target_group", fid1, "/ext_link_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/target_group2", fid1, "/ext_link_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "no_obj", fid1, "ext_link_noexist1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external("no_file.h5", "no_obj", fid1, "ext_link_noexist2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare external links which point to -* soft link in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_ext2soft_links(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - /* source file */ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - /* target file */ - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /* target file */ - gid2 = H5Gcreate2(fid2, "target_group", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /*-------------- - * target file */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links (Linked) - *------------------------------------------------------------------------*/ - /*--------------- - * target file */ - status = H5Lcreate_soft("/dset1", fid2, "softlink_to_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/dset2", fid2, "softlink_to_dset2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /*--------------- - * source file */ - status = H5Lcreate_external(fname2, "/target_group", fid1, "ext_link", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/softlink_to_dset1", fid1, "ext_link_to_slink1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/softlink_to_dset2", fid1, "ext_link_to_slink2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* Function: gen_dataset_idx -* -* Purpose: Create a file with either the new or old format -* Create two datasets in the file: -* one dataset: fixed dimension, chunked layout, w/o filters -* one dataset: fixed dimension, chunked layout, w/ filters -* -*------------------------------------------------------------------------- -*/ -static -int gen_dataset_idx(const char *file, int format) -{ - hid_t fid; /* file id */ - hid_t did, did2; /* dataset id */ - hid_t sid; /* space id */ - hid_t fapl; /* file access property id */ - hid_t dcpl; /* dataset creation property id */ - hsize_t dims[1] = {10}; /* dataset dimension */ - hsize_t c_dims[1] = {2}; /* chunk dimension */ - herr_t status; /* return status */ - int buf[10]; /* data buffer */ - int i; /* local index variable */ - - /* Get a copy of the file aaccess property */ - fapl = H5Pcreate(H5P_FILE_ACCESS); - - /* Set the "use the latest format" bounds for creating objects in the file */ - if(format) { - status = H5Pset_libver_bounds(fapl, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST); - assert(status >= 0); - } - - /* Create a file */ - if((fid = H5Fcreate(file, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - return -1; - - /* Create data */ - for(i = 0; i < 10; i++) - buf[i] = i; - - /* Set chunk */ - dcpl = H5Pcreate(H5P_DATASET_CREATE); - status = H5Pset_chunk(dcpl, 1, c_dims); - assert(status >= 0); - - /* Create a 1D dataset */ - sid = H5Screate_simple(1, dims, NULL); - did = H5Dcreate2(fid, "dset", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - - /* Write to the dataset */ - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - assert(status >= 0); - -#if defined (H5_HAVE_FILTER_DEFLATE) - /* set deflate data */ - status = H5Pset_deflate(dcpl, 9); - assert(status >= 0); - - /* Create and write the dataset */ - did2 = H5Dcreate2(fid, "dset_filter", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - status = H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - assert(status >= 0); - - /* Close the dataset */ - status = H5Dclose(did2); - assert(status >= 0); - -#endif - - /* closing: dataspace, dataset, file */ - status = H5Sclose(sid); - assert(status >= 0); - - status = H5Dclose(did); - assert(status >= 0); - - status = H5Fclose(fid); - assert(status >= 0); - - status = H5Pclose(dcpl); - assert(status >= 0); - - status = H5Pclose(fapl); - assert(status >= 0); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files to compare dangling links in various way -* -* Programmer: Jonathan Kim (Feb 17, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_dangle_links(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - int data2[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - /* file 1 */ - status = H5Lcreate_soft("no_obj", fid1, "soft_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/dset1", fid1, "soft_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj", fid1, "soft_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj1", fid1, "soft_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file 2 */ - status = H5Lcreate_soft("no_obj", fid2, "soft_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj", fid2, "soft_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/dset2", fid2, "soft_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("no_obj2", fid2, "soft_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /* file1 */ - status = H5Lcreate_external(fname2, "no_obj", fid1, "ext_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/dset1", fid1, "ext_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "no_obj", fid1, "ext_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external("no_file.h5", "no_obj", fid1, "ext_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = H5Lcreate_external(fname1, "no_obj", fid2, "ext_link1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "no_obj", fid2, "ext_link2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "/dset2", fid2, "ext_link3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external("no_file.h5", "no_obj", fid2, "ext_link4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: For testing comparing group member objects recursively -* -* Programmer: Jonathan Kim (Aug 19, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_group_recurse(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1_f1=0, gid2_f1=0, gid3_f1=0, gid10_f1=0; - hid_t gid1_f2=0, gid2_f2=0, gid3_f2=0, gid11_f2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,1},{0,1},{1,0},{1,0}}; - int data2[4][2] = {{0,2},{0,2},{2,0},{2,0}}; - int data3[4][2] = {{0,3},{0,3},{3,0},{3,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - /* file1 */ - gid1_f1 = H5Gcreate2(fid1, "/grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid2_f1 = H5Gcreate2(fid1, "/grp1/grp2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid3_f1 = H5Gcreate2(fid1, "/grp1/grp2/grp3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid3_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - gid10_f1 = H5Gcreate2(fid1, "/grp10", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid10_f1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - gid1_f2 = H5Gcreate2(fid2, "/grp1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid2_f2 = H5Gcreate2(fid2, "/grp1/grp2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid3_f2 = H5Gcreate2(fid2, "/grp1/grp2/grp3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid3_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - gid11_f2 = H5Gcreate2(fid2, "/grp11", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid11_f2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets under root - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(fid2,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets under group - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(gid1_f1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid2_f1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = write_dset(gid2_f1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - status = write_dset(gid3_f1,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f1,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid10_f1,2,dims2,"dset4",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid10_f1,2,dims2,"dset5",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(gid1_f2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2_f2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - status = write_dset(gid2_f2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - status = write_dset(gid3_f2,2,dims2,"dset2",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid3_f2,2,dims2,"dset3",H5T_NATIVE_INT,data3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid11_f2,2,dims2,"dset4",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid11_f2,2,dims2,"dset5",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Soft Links - *------------------------------------------------------------------------*/ - /* file 1 */ - status = H5Lcreate_soft("/grp1", fid1, "slink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2", fid1, "slink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2/grp3", fid1, "slink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp10", fid1, "slink_grp10", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file 2 */ - status = H5Lcreate_soft("/grp1", fid2, "slink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2", fid2, "slink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp1/grp2/grp3", fid2, "slink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_soft("/grp11", fid2, "slink_grp11", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * External Links - *------------------------------------------------------------------------*/ - /* file1 */ - status = H5Lcreate_external(fname2, "/grp1", fid1, "elink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/grp1/grp2", fid1, "elink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname2, "/grp1/grp2/grp3", fid1, "elink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = H5Lcreate_external(fname1, "/grp1", fid2, "elink_grp1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "/grp1/grp2", fid2, "elink_grp2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - status = H5Lcreate_external(fname1, "/grp1/grp2/grp3", fid2, "elink_grp3", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - /*------------------------------ - * external circle route test - * file1/grp11 <-> file2/grp10 via elink_grp_circle link - */ - /* file1 */ - status = H5Lcreate_external(fname2, "/grp11", gid10_f1, "elink_grp_circle", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname1); - status = FAIL; - goto out; - } - /* file2 */ - status = H5Lcreate_external(fname1, "/grp10", gid11_f2, "elink_grp_circle", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", fname2); - status = FAIL; - goto out; - } - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1_f1) - H5Gclose(gid1_f1); - if(gid2_f1) - H5Gclose(gid2_f1); - if(gid3_f1) - H5Gclose(gid3_f1); - if(gid1_f2) - H5Gclose(gid1_f2); - if(gid2_f2) - H5Gclose(gid2_f2); - if(gid3_f2) - H5Gclose(gid3_f2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: -* For testing comparing group member objects recursively via multiple -* linked external links -* -* Programmer: Jonathan Kim (Sep 16, 2010) -* -*-------------------------------------------------------------------------*/ -#define GRP_R_DSETNAME1 "dset1" -#define GRP_R_DSETNAME2 "dset2" -static int test_group_recurse2(void) -{ - hid_t fileid1 = -1; - hid_t grp1 = -1; - hid_t grp2 = -1; - hid_t grp3 = -1; - hid_t grp4 = -1; - hid_t dset1 = -1; - hid_t dset2 = -1; - hid_t datatype = -1; - hid_t dataspace = -1; - hid_t fileid2 = -1; - hid_t fileid3 = -1; - hid_t fileid4 = -1; - hsize_t dimsf[2]; /* dataset dimensions */ - herr_t status=0; - int data1[4][2] = {{0,0},{1,1},{2,2},{3,3}}; - int data2[4][2] = {{0,0},{0,1},{0,2},{3,3}}; - - /*----------------------------------------------------------------------- - * FILE 1 - *------------------------------------------------------------------------*/ - /* - * Create a new file using H5F_ACC_TRUNC access, - * default file creation properties, and default file - * access properties. - */ - fileid1 = H5Fcreate(GRP_RECURSE1_EXT, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - grp1 = H5Gcreate2(fileid1, "/g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - grp2 = H5Gcreate2(grp1, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - grp3 = H5Gcreate2(grp2, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - grp4 = H5Gcreate2(grp3, "g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* - * Describe the size of the array and create the data space for fixed - * size dataset. - */ - dimsf[0] = 4; - dimsf[1] = 2; - dataspace = H5Screate_simple(2, dimsf, NULL); - - /* - * Define datatype for the data in the file. - * We will store little endian INT numbers. - */ - datatype = H5Tcopy(H5T_NATIVE_INT); - status = H5Tset_order(datatype, H5T_ORDER_LE); - - /*--------------- - * dset1 - */ - /* - * Create a new dataset within the file using defined dataspace and - * datatype and default dataset creation properties. - */ - dset1 = H5Dcreate2(fileid1, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - H5Dclose(dset1); - - /*--------------- - * dset1 - */ - /* - * Create a new dataset within the file using defined dataspace and - * datatype and default dataset creation properties. - */ - dset1 = H5Dcreate2(grp3, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - - /*--------------- - * dset2 - */ - /* - * Create a new dataset within the fileid1 using defined dataspace and - * datatype and default dataset creation properties. - */ - dset2 = H5Dcreate2(grp4, GRP_R_DSETNAME2, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2); - - /*----------------------------------------------------------------------- - * Soft links - *------------------------------------------------------------------------*/ - /* - * under '/' root - */ - /* link to dset1 */ - status = H5Lcreate_soft(GRP_R_DSETNAME1, fileid1, "soft_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - H5Dclose(dset1); - H5Dclose(dset2); - H5Gclose(grp1); - H5Gclose(grp2); - H5Gclose(grp3); - H5Gclose(grp4); - - /*----------------------------------------------------------------------- - * FILE 2-3 - *------------------------------------------------------------------------*/ - - /* crate target file */ - fileid4 = H5Fcreate(GRP_RECURSE2_EXT3, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------- - * Groups - */ - grp4 = H5Gcreate2(fileid4, "/g4", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp4 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE2_EXT3); - status = FAIL; - goto out; - } - - /*--------------- - * dset2 - */ - /* - * Create a new dataset within the fileid1 using defined dataspace and - * datatype and default dataset creation properties. - */ - dset2 = H5Dcreate2(grp4, GRP_R_DSETNAME2, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data2); - - H5Gclose(grp4); - H5Dclose(dset2); - - - /*----------------------------------------------------------------------- - * FILE 2-2 - *------------------------------------------------------------------------*/ - - /* crate target file */ - fileid3 = H5Fcreate(GRP_RECURSE2_EXT2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------- - * Groups - */ - grp2 = H5Gcreate2(fileid3, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE2_EXT2); - status = FAIL; - goto out; - } - - grp3 = H5Gcreate2(grp2, "g3", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE2_EXT2); - status = FAIL; - goto out; - } - - /*--------------- - * dset1 - */ - /* - * Create a new dataset within the fileid1 using defined dataspace and - * datatype and default dataset creation properties. - */ - dset1 = H5Dcreate2(grp3, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - - /*----------------------------------------------- - * extlink to $GRP_RECURSE2_EXT3/g4 - */ - status = H5Lcreate_external(GRP_RECURSE2_EXT3, "/g4", fileid3, "/g2/g3/g4", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", GRP_RECURSE2_EXT2); - status = FAIL; - goto out; - } - - H5Dclose(dset1); - H5Gclose(grp2); - H5Gclose(grp3); - - /*----------------------------------------------------------------------- - * FILE 2-1 - *------------------------------------------------------------------------*/ - - /* crate target file */ - fileid2 = H5Fcreate(GRP_RECURSE2_EXT1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------- - * Groups - */ - grp1 = H5Gcreate2(fileid2, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (grp1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", GRP_RECURSE1_EXT); - status = FAIL; - goto out; - } - - /*--------------- - * dset1 - */ - dset1 = H5Dcreate2(fileid2, GRP_R_DSETNAME1, datatype, dataspace, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* - * Write the data to the dataset using default transfer properties. - */ - status = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data1); - - /*----------------------------------------------------------------------- - * Soft links - *------------------------------------------------------------------------*/ - /* - * under '/' root - */ - /* link to dset1 */ - status = H5Lcreate_soft(GRP_R_DSETNAME1, fileid2, "soft_dset1", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_soft failed.\n", GRP_RECURSE2_EXT1); - status = FAIL; - goto out; - } - - /*----------------------------------------------- - * extlink to $GRP_RECURSE2_EXT2/g2 - */ - status = H5Lcreate_external(GRP_RECURSE2_EXT2, "/g2", fileid2, "/g1/g2", H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Lcreate_external failed.\n", GRP_RECURSE2_EXT1); - status = FAIL; - goto out; - } - - H5Gclose(grp1); - H5Dclose(dset1); - -out: - /* - * Close/release resources. - */ - if(dataspace > 0) - H5Sclose(dataspace); - if(datatype > 0) - H5Tclose(datatype); - if(fileid1 > 0) - H5Fclose(fileid1); - if(fileid2 > 0) - H5Fclose(fileid2); - if(fileid3 > 0) - H5Fclose(fileid3); - if(fileid4 > 0) - H5Fclose(fileid4); - - return status; -} - - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for excluding obj. -* Same structure, same obj names -* Test : exclude obj with different value to verify the rest are same -* -* Programmer: Jonathan Kim (July, 21, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_exclude_obj1(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hid_t gid2=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - int data2[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Group - *------------------------------------------------------------------------*/ - /* file1 */ - gid1 = H5Gcreate2(fid1, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - gid2 = H5Gcreate2(fid2, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset3",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"dset3",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for excluding obj. -* different structure and name -* Test : exclude different objs to verify the rest are same -* -* Programmer: Jonathan Kim (July, 21, 2010) -* -*-------------------------------------------------------------------------*/ -static int test_exclude_obj2(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hid_t gid2=0; - hid_t gid3=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - int data2[4][2] = {{0,1},{2,3},{1,2},{3,4}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Group - *------------------------------------------------------------------------*/ - /* file1 */ - gid1 = H5Gcreate2(fid1, "group10", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - gid2 = H5Gcreate2(fid2, "group10", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /* subset name from group10 */ - gid3 = H5Gcreate2(fid2, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - if (gid3 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset10",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset10",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid2,2,dims2,"dset2",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - status = write_dset(gid3,2,dims2,"dset3",H5T_NATIVE_INT,data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(gid3) - H5Gclose(gid3); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for excluding obj. -* Only one file contains unique objs. Common objs are same. -* Test : exclude unique objs to verify the rest are same -* - HDFFV-7837 -* -* Programmer: Jonathan Kim (Mar, 19, 2012) -* -*-------------------------------------------------------------------------*/ -static int test_exclude_obj3(const char *fname1, const char *fname2) -{ - hid_t fid1=0; - hid_t fid2=0; - hid_t gid1=0; - hsize_t dims2[2] = {2,4}; - int data1[4][2] = {{0,0},{0,0},{0,0},{0,0}}; - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - - fid2 = H5Fcreate (fname2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname2); - status = FAIL; - goto out; - } - - - /*----------------------------------------------------------------------- - * Group - *------------------------------------------------------------------------*/ - /* file1 */ - gid1 = H5Gcreate2(fid1, "group1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets - *------------------------------------------------------------------------*/ - /* file1 */ - status = write_dset(fid1,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - status = write_dset(gid1,2,dims2,"dset",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - status = write_dset(fid2,2,dims2,"dset1",H5T_NATIVE_INT,data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(gid1) - H5Gclose(gid1); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: Create test files for multiple variable length string/string array -* along with fixed length string/string array types in -* a compound type dataset. -* -* Programmer: Jonathan Kim (Oct, 26, 2010) -* -*-------------------------------------------------------------------------*/ -#define STR_RANK 1 -#define VLEN_STR_DIM 1 -#define FIXLEN_STR_SIZE 21 -#define FIXLEN_STR_DIM 1 -#define VLEN_STR_ARRY_DIM 3 -#define FIXLEN_STR_ARRY_DIM 3 -#define FIXLEN_STR_ARRY_SIZE 30 -#define COMP_RANK 1 -#define COMP_DIM 1 -static int test_comp_vlen_strings(const char *fname1, const char *grp_name, int is_file_new) -{ - int i; - - hid_t fid1 = -1; /* file id */ - hid_t gid = -1; - - /* compound1 datatype */ - typedef struct comp1_t - { - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - } comp1_t; - - /* compound2 datatype */ - typedef struct comp2_t - { - char *str_vlen; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - } comp2_t; - - /* compound3 datatype */ - typedef struct comp3_t - { - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - } comp3_t; - - /* compound4 datatype */ - typedef struct comp4_t - { - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - } comp4_t; - - /* compound5 datatype */ - typedef struct comp5_t - { - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - } comp5_t; - - /* compound6 datatype */ - typedef struct comp6_t - { - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen; /* vlen string */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - } comp6_t; - - /* compound7 datatype */ - typedef struct comp7_t - { - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char *str_vlen_repeat; /* vlen string */ - } comp7_t; - - /* compound8 datatype */ - typedef struct comp8_t - { - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen; /* vlen string */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - char *str_vlen_repeat; /* vlen string */ - } comp8_t; - - /* compound9 datatype */ - typedef struct comp9_t - { - char str_array_fixlen[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char str_fixlen_array_again[FIXLEN_STR_ARRY_DIM][FIXLEN_STR_ARRY_SIZE]; /* fixed len string array */ - char *str_array_vlen[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char *str_vlen_array_again[VLEN_STR_ARRY_DIM]; /* vlen string array */ - char str_fixlen[FIXLEN_STR_SIZE]; /* fixed len string */ - int int_data1; - hobj_ref_t objref1; /* reference */ - char str_fixlen_repeat[FIXLEN_STR_SIZE]; /* fixed len string */ - hobj_ref_t objref2; /* reference */ - char *str_vlen; /* vlen string */ - int int_data2; - char *str_vlen_repeat; /* vlen string */ - hobj_ref_t objref3; /* reference */ - int int_data3; - } comp9_t; - - /* vlen string */ - hid_t sid_vlen_str=0; /* dataspace ID */ - hid_t tid_vlen_str=0; /* datatype ID */ - char vlen_str_buf[]= { - "Variable length string" - }; - hsize_t dims_vlen_str[] = {VLEN_STR_DIM}; - - /* fixlen string */ - hid_t sid_fixlen_str=0; /* dataspace ID */ - hid_t tid_fixlen_str=0; /* datatype ID */ - const char fixlen_str_buf[FIXLEN_STR_SIZE]= { - "Fixed length string" - }; - hsize_t dims_fixlen_str[] = {FIXLEN_STR_DIM}; - - /* vlen string array */ - hid_t sid_vlen_str_array=0; /* dataspace ID */ - hid_t tid_vlen_str_array_pre=0; /* datatype ID */ - hid_t tid_vlen_str_array=0; /* datatype ID */ - char *vlen_str_array_buf[VLEN_STR_ARRY_DIM]= { - "1 - Variable length string Array", - "2 - Testing variable length string array in compound type", - "3 - Four score and seven\n years ago our forefathers brought forth on this continent a new nation," - }; - hsize_t dims_vlen_str_array[] = {VLEN_STR_ARRY_DIM}; - - /* fixlen string array */ - hid_t sid_fixlen_str_array=0; /* dataspace ID */ - hid_t tid_fixlen_str_array_pre=0; /* datatype ID */ - hid_t tid_fixlen_str_array=0; /* datatype ID */ - const char *fixlen_str_array_buf[FIXLEN_STR_ARRY_DIM]= { - "1 - Fixed length string Array", - "2 - Fixed length string Array", - "3 - Fixed length string Array" - }; - hsize_t dims_fixlen_str_array[] = {FIXLEN_STR_ARRY_DIM}; - - /*------------------------------------------ - * compound dataset - *------------------------------------------*/ - hid_t sid_comp=0; /* dataspace ID */ - hid_t tid1_comp=0; /* datatype ID */ - hid_t tid2_comp=0; /* datatype ID */ - hid_t tid3_comp=0; /* datatype ID */ - hid_t tid4_comp=0; /* datatype ID */ - hid_t tid5_comp=0; /* datatype ID */ - hid_t tid6_comp=0; /* datatype ID */ - hid_t tid7_comp=0; /* datatype ID */ - hid_t tid8_comp=0; /* datatype ID */ - hid_t tid9_comp=0; /* datatype ID */ - hid_t did_comp=0; /* dataset ID */ - hsize_t dims_comp[] = {COMP_DIM}; - herr_t status = SUCCEED; - - /* make compound strings data */ - comp1_t comp1_buf; - comp2_t comp2_buf; - comp3_t comp3_buf; - comp4_t comp4_buf; - comp5_t comp5_buf; - comp6_t comp6_buf; - comp7_t comp7_buf; - comp8_t comp8_buf; - comp9_t comp9_buf; - - /* copy vlen string data to compound buffers */ - comp1_buf.str_vlen = comp1_buf.str_vlen_repeat = vlen_str_buf; - comp2_buf.str_vlen = comp2_buf.str_vlen_repeat = vlen_str_buf; - comp3_buf.str_vlen = comp3_buf.str_vlen_repeat = vlen_str_buf; - comp4_buf.str_vlen = comp4_buf.str_vlen_repeat = vlen_str_buf; - comp5_buf.str_vlen = comp5_buf.str_vlen_repeat = vlen_str_buf; - comp6_buf.str_vlen = comp6_buf.str_vlen_repeat = vlen_str_buf; - comp7_buf.str_vlen = comp7_buf.str_vlen_repeat = vlen_str_buf; - comp8_buf.str_vlen = comp8_buf.str_vlen_repeat = vlen_str_buf; - comp9_buf.str_vlen = comp9_buf.str_vlen_repeat = vlen_str_buf; - - /* copy fixlen string data to compound buffers */ - HDstrcpy(comp1_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp1_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp2_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp2_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp3_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp3_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp3_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp3_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp4_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp4_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp5_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp5_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp6_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp6_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp7_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp7_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp8_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp8_buf.str_fixlen_repeat, fixlen_str_buf); - - HDstrcpy(comp9_buf.str_fixlen, fixlen_str_buf); - HDstrcpy(comp9_buf.str_fixlen_repeat, fixlen_str_buf); - - /* copy vlen string array data to compound buffers */ - for (i=0; i < VLEN_STR_ARRY_DIM; i++) - { - comp1_buf.str_array_vlen[i] = comp1_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp2_buf.str_array_vlen[i] = comp2_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp3_buf.str_array_vlen[i] = comp3_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp4_buf.str_array_vlen[i] = comp4_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp5_buf.str_array_vlen[i] = comp5_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp6_buf.str_array_vlen[i] = comp6_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp7_buf.str_array_vlen[i] = comp7_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp8_buf.str_array_vlen[i] = comp8_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - comp9_buf.str_array_vlen[i] = comp9_buf.str_vlen_array_again[i] = vlen_str_array_buf[i]; - - } - - /* copy fixlen string attay data to compound buffers */ - for (i=0; i < FIXLEN_STR_ARRY_DIM; i++) - { - HDstrcpy(comp1_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp1_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp2_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp2_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp3_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp3_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp4_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp4_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp5_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp5_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp6_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp6_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp7_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp7_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp8_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp8_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - - HDstrcpy(comp9_buf.str_array_fixlen[i], fixlen_str_array_buf[i]); - HDstrcpy(comp9_buf.str_fixlen_array_again[i], fixlen_str_array_buf[i]); - } - - /* int data */ - comp9_buf.int_data1 = 10; - comp9_buf.int_data2 = 20; - comp9_buf.int_data3 = 30; - - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - { - fid1 = H5Fcreate (fname1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname1); - status = FAIL; - goto out; - } - } - else - { - fid1 = H5Fopen (fname1, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fopen failed.\n", fname1); - status = FAIL; - goto out; - } - } - - /*----------------------------------------------------------------------- - * Create group - *------------------------------------------------------------------------*/ - gid = H5Gcreate2(fid1, grp_name, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Variable length String1 - Create space and type - *------------------------------------------------------------------------*/ - sid_vlen_str = H5Screate_simple(STR_RANK, dims_vlen_str, NULL); - if (sid_vlen_str < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_vlen_str = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_vlen_str, H5T_VARIABLE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Fixed length String2 - Create space and type - *------------------------------------------------------------------------*/ - sid_fixlen_str = H5Screate_simple(STR_RANK, dims_fixlen_str, NULL); - if (sid_fixlen_str < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_fixlen_str = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_fixlen_str, FIXLEN_STR_SIZE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Fixed length String3 array - Create space and type - *------------------------------------------------------------------------*/ - sid_vlen_str_array = H5Screate_simple(STR_RANK, dims_vlen_str_array, NULL); - if (sid_vlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_vlen_str_array_pre = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_vlen_str_array_pre, H5T_VARIABLE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - - /* Create the array data type for the string array */ - tid_vlen_str_array = H5Tarray_create2(tid_vlen_str_array_pre, COMP_RANK, dims_vlen_str_array); - if (tid_vlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Tarray_create2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Variable length String4 array - Create space and type - *------------------------------------------------------------------------*/ - sid_fixlen_str_array = H5Screate_simple(STR_RANK, dims_fixlen_str_array, NULL); - if (sid_fixlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - - tid_fixlen_str_array_pre = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid_fixlen_str_array_pre, FIXLEN_STR_ARRY_SIZE); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tset_size failed.\n", fname1); - status = FAIL; - goto out; - } - /* Create the array data type for the string array */ - tid_fixlen_str_array = H5Tarray_create2(tid_fixlen_str_array_pre, COMP_RANK, dims_fixlen_str_array); - if (tid_fixlen_str_array < 0) - { - fprintf(stderr, "Error: %s> H5Tarray_create2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /*------------------------------------------------------------------------- - * Compound dataset - *------------------------------------------------------------------------*/ - sid_comp = H5Screate_simple(COMP_RANK, dims_comp, NULL); - if (sid_comp < 0) - { - fprintf(stderr, "Error: %s> H5Screate_simple failed.\n", fname1); - status = FAIL; - goto out; - } - tid1_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp1_t)); - tid2_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp2_t)); - tid3_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp3_t)); - tid4_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp4_t)); - tid5_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp5_t)); - tid6_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp6_t)); - tid7_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp7_t)); - tid8_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp8_t)); - tid9_comp = H5Tcreate (H5T_COMPOUND, sizeof(comp9_t)); - - /* compound 1 */ - H5Tinsert(tid1_comp, "VLEN_STR1", HOFFSET(comp1_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid1_comp, "VLEN_STR2", HOFFSET(comp1_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid1_comp, "FIXLEN_STR1", HOFFSET(comp1_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid1_comp, "FIXLEN_STR2", HOFFSET(comp1_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid1_comp, "VLEN_STR_ARRAY1", HOFFSET(comp1_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid1_comp, "VLEN_STR_ARRAY2", HOFFSET(comp1_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid1_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp1_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid1_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp1_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 2 */ - H5Tinsert(tid2_comp, "VLEN_STR1", HOFFSET(comp2_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid2_comp, "VLEN_STR2", HOFFSET(comp2_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid2_comp, "FIXLEN_STR1", HOFFSET(comp2_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid2_comp, "FIXLEN_STR2", HOFFSET(comp2_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid2_comp, "VLEN_STR_ARRAY1", HOFFSET(comp2_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid2_comp, "VLEN_STR_ARRAY2", HOFFSET(comp2_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid2_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp2_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid2_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp2_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 3 */ - H5Tinsert(tid3_comp, "VLEN_STR1", HOFFSET(comp3_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid3_comp, "VLEN_STR2", HOFFSET(comp3_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid3_comp, "FIXLEN_STR1", HOFFSET(comp3_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid3_comp, "FIXLEN_STR2", HOFFSET(comp3_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid3_comp, "VLEN_STR_ARRAY1", HOFFSET(comp3_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid3_comp, "VLEN_STR_ARRAY2", HOFFSET(comp3_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid3_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp3_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid3_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp3_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 4 */ - H5Tinsert(tid4_comp, "VLEN_STR1", HOFFSET(comp4_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid4_comp, "VLEN_STR2", HOFFSET(comp4_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid4_comp, "FIXLEN_STR1", HOFFSET(comp4_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid4_comp, "FIXLEN_STR2", HOFFSET(comp4_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid4_comp, "VLEN_STR_ARRAY1", HOFFSET(comp4_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid4_comp, "VLEN_STR_ARRAY2", HOFFSET(comp4_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid4_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp4_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid4_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp4_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 5 */ - H5Tinsert(tid5_comp, "VLEN_STR1", HOFFSET(comp5_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid5_comp, "VLEN_STR2", HOFFSET(comp5_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid5_comp, "FIXLEN_STR1", HOFFSET(comp5_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid5_comp, "FIXLEN_STR2", HOFFSET(comp5_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid5_comp, "VLEN_STR_ARRAY1", HOFFSET(comp5_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid5_comp, "VLEN_STR_ARRAY2", HOFFSET(comp5_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid5_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp5_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid5_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp5_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 6 */ - H5Tinsert(tid6_comp, "VLEN_STR1", HOFFSET(comp6_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid6_comp, "VLEN_STR2", HOFFSET(comp6_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid6_comp, "FIXLEN_STR1", HOFFSET(comp6_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid6_comp, "FIXLEN_STR2", HOFFSET(comp6_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid6_comp, "VLEN_STR_ARRAY1", HOFFSET(comp6_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid6_comp, "VLEN_STR_ARRAY2", HOFFSET(comp6_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid6_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp6_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid6_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp6_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 7 */ - H5Tinsert(tid7_comp, "VLEN_STR1", HOFFSET(comp7_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid7_comp, "VLEN_STR2", HOFFSET(comp7_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid7_comp, "FIXLEN_STR1", HOFFSET(comp7_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid7_comp, "FIXLEN_STR2", HOFFSET(comp7_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid7_comp, "VLEN_STR_ARRAY1", HOFFSET(comp7_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid7_comp, "VLEN_STR_ARRAY2", HOFFSET(comp7_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid7_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp7_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid7_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp7_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 8 */ - H5Tinsert(tid8_comp, "VLEN_STR1", HOFFSET(comp8_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid8_comp, "VLEN_STR2", HOFFSET(comp8_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid8_comp, "FIXLEN_STR1", HOFFSET(comp8_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid8_comp, "FIXLEN_STR2", HOFFSET(comp8_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid8_comp, "VLEN_STR_ARRAY1", HOFFSET(comp8_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid8_comp, "VLEN_STR_ARRAY2", HOFFSET(comp8_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid8_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp8_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid8_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp8_t, str_fixlen_array_again), tid_fixlen_str_array); - - /* compound 9 */ - H5Tinsert(tid9_comp, "VLEN_STR1", HOFFSET(comp9_t, str_vlen), tid_vlen_str ); - H5Tinsert(tid9_comp, "VLEN_STR2", HOFFSET(comp9_t, str_vlen_repeat), tid_vlen_str ); - H5Tinsert(tid9_comp, "FIXLEN_STR1", HOFFSET(comp9_t, str_fixlen), tid_fixlen_str ); - H5Tinsert(tid9_comp, "FIXLEN_STR2", HOFFSET(comp9_t, str_fixlen_repeat), tid_fixlen_str ); - H5Tinsert(tid9_comp, "VLEN_STR_ARRAY1", HOFFSET(comp9_t, str_array_vlen), tid_vlen_str_array); - H5Tinsert(tid9_comp, "VLEN_STR_ARRAY2", HOFFSET(comp9_t, str_vlen_array_again), tid_vlen_str_array); - H5Tinsert(tid9_comp, "FIXLEN_STR_ARRAY1", HOFFSET(comp9_t, str_array_fixlen), tid_fixlen_str_array); - H5Tinsert(tid9_comp, "FIXLEN_STR_ARRAY2", HOFFSET(comp9_t, str_fixlen_array_again), tid_fixlen_str_array); - H5Tinsert(tid9_comp, "INT_DATA1", HOFFSET(comp9_t, int_data1), H5T_STD_I32LE); - H5Tinsert(tid9_comp, "INT_DATA2", HOFFSET(comp9_t, int_data2), H5T_STD_I32BE); - H5Tinsert(tid9_comp, "INT_DATA3", HOFFSET(comp9_t, int_data3), H5T_STD_I32LE); - H5Tinsert(tid9_comp, "OBJREF1", HOFFSET(comp9_t, objref1), H5T_STD_REF_OBJ); - H5Tinsert(tid9_comp, "OBJREF2", HOFFSET(comp9_t, objref2), H5T_STD_REF_OBJ); - H5Tinsert(tid9_comp, "OBJREF3", HOFFSET(comp9_t, objref3), H5T_STD_REF_OBJ); - - - /* Write data to compound 1 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset1", tid1_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid1_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp1_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 2 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset2", tid2_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid2_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp2_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 3 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset3", tid3_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid3_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp3_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 4 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset4", tid4_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid4_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp4_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 5 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset5", tid5_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid5_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp5_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 6 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset6", tid6_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid6_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp6_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 7 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset7", tid7_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid7_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp7_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 8 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset8", tid8_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did_comp, tid8_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp8_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - H5Dclose(did_comp); - - /* Write data to compound 9 dataset buffer */ - did_comp = H5Dcreate2(gid, "Compound_dset9", tid9_comp, sid_comp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* obj references */ - status=H5Rcreate(&(comp9_buf.objref1),gid,"Compound_dset2",H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&(comp9_buf.objref2),gid,"Compound_dset3",H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&(comp9_buf.objref3),gid,"Compound_dset4",H5R_OBJECT,(hid_t)-1); - - status = H5Dwrite(did_comp, tid9_comp, H5S_ALL, H5S_ALL, H5P_DEFAULT, &comp9_buf); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", fname1); - status = FAIL; - goto out; - } - - - H5Dclose(did_comp); - - did_comp=0; -out: - /*----------------------------------------------------------------------- - * Close - *-----------------------------------------------------------------------*/ - if(fid1 > 0) - H5Fclose(fid1); - if(gid > 0) - H5Gclose(gid); - /* vlen string */ - if(tid_vlen_str > 0) - H5Tclose(tid_vlen_str); - if(sid_vlen_str > 0) - H5Sclose(sid_vlen_str); - /* fixed len string */ - if(tid_fixlen_str > 0) - H5Tclose(tid_fixlen_str); - if(sid_fixlen_str > 0) - H5Sclose(sid_fixlen_str); - /* vlen string array */ - if(tid_vlen_str_array_pre > 0) - H5Tclose(tid_vlen_str_array_pre); - if(tid_vlen_str_array > 0) - H5Tclose(tid_vlen_str_array); - if(sid_vlen_str_array > 0) - H5Sclose(sid_vlen_str_array); - /* fixed len string array */ - if(tid_fixlen_str_array_pre > 0) - H5Tclose(tid_fixlen_str_array_pre); - if(tid_fixlen_str_array > 0) - H5Tclose(tid_fixlen_str_array); - if(sid_fixlen_str_array > 0) - H5Sclose(sid_fixlen_str_array); - /* compound */ - if(tid1_comp > 0) - H5Tclose(tid1_comp); - if(tid2_comp > 0) - H5Tclose(tid2_comp); - if(tid3_comp > 0) - H5Tclose(tid3_comp); - if(tid4_comp > 0) - H5Tclose(tid4_comp); - if(tid5_comp > 0) - H5Tclose(tid5_comp); - if(tid6_comp > 0) - H5Tclose(tid6_comp); - if(tid7_comp > 0) - H5Tclose(tid7_comp); - if(tid8_comp > 0) - H5Tclose(tid8_comp); - if(tid9_comp > 0) - H5Tclose(tid9_comp); - if(did_comp > 0) - H5Dclose(did_comp); - if(sid_comp > 0) - H5Sclose(sid_comp); - - return status; -} /* end test_comp_vlen_strings() */ - - -/*------------------------------------------------------------------------- -* -* Purpose: Test diffs of enum values which may include invalid values. -* -* Programmer: Dana Robinson -* -*-------------------------------------------------------------------------*/ - -static int -test_enums(const char *fname) -{ - hid_t fid = -1; - - hid_t tid = -1; - int enum_val = -1; - - /* The data in the two arrays cover the following cases: - * - * V = valid enum value, I = invalid enum value - * - * 0: I-I (same value) - * 1: V-I - * 2: I-V - * 3: V-V (same value) - * 4: I-I (different values) SKIPPED FOR NOW - * 5: V-V (different values) - */ - /* *** NOTE *** - * - * There is a bug in H5Dread() where invalid enum values are always - * returned as -1 so two different invalid enum values cannot be - * properly compared. Test 4 has been adjusted to pass here - * while we fix the issue. - */ - int data1[6] = {9, 0, 9, 0, 9, 0}; - /*int data1[6] = {9, 0, 9, 0, 8, 0}; */ - int data2[6] = {9, 9, 0, 0, 9, 1}; - - hsize_t dims = 6; - - herr_t status = SUCCEED; - - /*----------------------------------------------------------------------- - * Create the file - *---------------------------------------------------------------------*/ - - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - - /*----------------------------------------------------------------------- - * Create enum types - *---------------------------------------------------------------------*/ - - tid = H5Tenum_create(H5T_NATIVE_INT); - enum_val = 0; - status = H5Tenum_insert(tid, "YIN", &enum_val); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tenum_insert failed.\n", fname); - status = FAIL; - goto out; - } - enum_val = 1; - status = H5Tenum_insert(tid, "YANG", &enum_val); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tenum_insert failed.\n", fname); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Create datasets containing enum data. - *---------------------------------------------------------------------*/ - - status = write_dset(fid, 1, &dims, "dset1", tid, data1); - if (status < 0) - { - fprintf(stderr, "Error: %s> write_dset failed.\n", fname); - status = FAIL; - goto out; - } - status = write_dset(fid, 1, &dims, "dset2", tid, data2); - if (status < 0) - { - fprintf(stderr, "Error: %s> write_dset failed.\n", fname); - status = FAIL; - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close - *---------------------------------------------------------------------*/ - if(fid) - H5Fclose(fid); - if(tid) - H5Tclose(tid); - - return status; -} - -/*------------------------------------------------------------------------- -* -* Purpose: -* Create test files with dataset and attribute with container types -* (array, vlen) with multiple nested compound types. -* -* Function: test_comps_array() -* - type: compound->array->compound -* -* Function: test_comps_vlen() -* - type: compound->vlen->compound -* -* Function: test_comps_array_vlen() -* - type: compound->array->compound->vlen->compound -* -* Function: test_comps_vlen_arry() -* - type: compound->vlen->compound->array->compound -* -* Programmer: Jonathan Kim (Sep, 1, 2011) -* -*-------------------------------------------------------------------------*/ -#define SDIM_DSET 2 -#define SDIM_CMPD_ARRAY 2 - -static void test_comps_array (const char *fname, const char *dset, const char *attr,int diff, int is_file_new) -{ - /* sub compound 2 */ - typedef struct { - int i2; - float f2; - } cmpd2_t; - - /* top compound 1 */ - typedef struct { - int i1; - cmpd2_t cmpd2[SDIM_CMPD_ARRAY]; - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* dataset with compound1 */ - - hid_t fid; /* HDF5 File IDs */ - hid_t did_dset; /* Dataset ID */ - hid_t sid_dset; /* Dataset space ID */ - hid_t tid_cmpd1; /* Compound1 type ID */ - hid_t tid_arry1; /* Array type ID in compound1 */ - hid_t tid_cmpd2; /* Compound2 type ID */ - hid_t tid_attr; - hsize_t sdims_dset[] = {SDIM_DSET}; - hsize_t sdims_cmpd_arry[] = {SDIM_CMPD_ARRAY}; - int i,j; - herr_t ret; /* Generic return value */ - - /* Initialize array data to write */ - for(i=0; i < SDIM_DSET; i++) - { - wdata[i].i1 = i; - for(j=0; j < SDIM_CMPD_ARRAY; j++) - { - wdata[i].cmpd2[j].i2 = i * 10 + diff; - wdata[i].cmpd2[j].f2 = (float)i * 10.5F + (float)diff; - } /* end for */ - } - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - - /* ------------------------------- - * Create a sub compound2 datatype */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - /* Insert integer field */ - ret = H5Tinsert(tid_cmpd2, "int2", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - - /* Insert float field */ - ret = H5Tinsert(tid_cmpd2, "float2", HOFFSET(cmpd2_t, f2), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - /*----------------------------------- - * Create a top compound1. - */ - tid_cmpd1 = H5Tcreate (H5T_COMPOUND, sizeof(cmpd1_t)); - - ret = H5Tinsert(tid_cmpd1, "int1", HOFFSET(cmpd1_t, i1), H5T_NATIVE_INT); - assert(ret >= 0); - - /* Create an array datatype */ - tid_arry1 = H5Tarray_create2(tid_cmpd2, 1, sdims_cmpd_arry); - /* insert the array */ - ret = H5Tinsert(tid_cmpd1, "array_cmpd1", HOFFSET(cmpd1_t, cmpd2), tid_arry1); - assert(ret >= 0); - - - /* ------------------- - * Create a dataset - */ - /* Create dataspace for datasets */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* ---------------- - * Close Dataset */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Tclose(tid_arry1); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - - -static void test_comps_vlen (const char * fname, const char *dset, const char *attr, int diff, int is_file_new) -{ - /* sub compound 2 */ - typedef struct { - int i2; - float f2; - } cmpd2_t; - - /* top compound 1 */ - typedef struct { - int i1; - hvl_t vl; /* VL information for compound2 */ - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* Dataset for compound1 */ - - hid_t fid; /* HDF5 File ID */ - hid_t did_dset; /* dataset ID */ - hid_t sid_dset; /* dataset space ID */ - hid_t tid_attr; - hid_t tid_cmpd2; /* compound2 type ID */ - hid_t tid_cmpd1; /* compound1 type ID */ - hid_t tid_cmpd1_vlen; - hsize_t sdims_dset[] = {SDIM_DSET}; - - unsigned i,j; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i = 0; i < SDIM_DSET; i++) { - wdata[i].i1 = (int)i; - wdata[i].vl.p = HDmalloc((i + 1) * sizeof(cmpd2_t)); - wdata[i].vl.len = i + 1; - for(j = 0; j < (i + 1); j++) { - ((cmpd2_t *)wdata[i].vl.p)[j].i2 = (int)(i * 10 + (unsigned)diff); - ((cmpd2_t *)wdata[i].vl.p)[j].f2 = (float)i * 10.5F + (float)diff; - } /* end for */ - } /* end for */ - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - /* ----------------------------- - * Create sub compound2 type */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - /* Insert fields */ - ret = H5Tinsert(tid_cmpd2, "int2", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - ret = H5Tinsert(tid_cmpd2, "float2", HOFFSET(cmpd2_t, f2), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - /* --------------------------- - * Create top compound1 type */ - tid_cmpd1 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd1_t)); - /* Insert fields */ - ret = H5Tinsert(tid_cmpd1, "int1", HOFFSET(cmpd1_t, i1), H5T_NATIVE_INT); - assert(ret >= 0); - /* Create a VL datatype */ - tid_cmpd1_vlen = H5Tvlen_create(tid_cmpd2); - - ret = H5Tinsert(tid_cmpd1, "vlen_cmpd1", HOFFSET(cmpd1_t, vl), tid_cmpd1_vlen); - assert(ret >= 0); - - /* ------------------------------- - * Create dataset with compound1 - */ - /* Create dataspace for dataset */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - /* Create a dataset */ - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid_cmpd1, sid_dset, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /* ---------------- - * Close IDs */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1_vlen); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - -static void test_comps_array_vlen (const char * fname, const char *dset,const char *attr, int diff, int is_file_new) -{ - typedef struct { - int i3; - float f3; - } cmpd3_t; - - typedef struct { /* Typedef for compound datatype */ - int i2; - hvl_t vl; /* VL information to write */ - } cmpd2_t; - - typedef struct { - int i1; - cmpd2_t cmpd2[SDIM_CMPD_ARRAY]; - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* Information to write */ - hid_t fid; /* HDF5 File IDs */ - hid_t did_dset; /* Dataset ID */ - hid_t sid_dset; /* Dataspace ID */ - hid_t tid_attr; - hid_t tid_cmpd1; /* Compound1 Datatype ID */ - hid_t tid_arry1; /* Array Datatype ID */ - hid_t tid_cmpd2; /* Compound2 Datatype ID */ - hid_t tid_cmpd2_vlen; - hid_t tid_cmpd3; /* Compound3 Datatype ID */ - hsize_t sdims_dset[] = {SDIM_DSET}; - hsize_t sdims_arry[] = {SDIM_CMPD_ARRAY}; - unsigned i, j, k; /* counting variables */ - herr_t ret; /* Generic return value */ - - - - /* Initialize array data to write in compound1 */ - for(i = 0; i < SDIM_DSET; i++) { - wdata[i].i1 = (int)i; - - /* Allocate and initialize VL data to write in compound2 */ - for(j = 0; j < SDIM_CMPD_ARRAY; j++) { - wdata[i].cmpd2[j].i2 = (int)(j * 10); - wdata[i].cmpd2[j].vl.p = HDmalloc((j + 1) * sizeof(cmpd3_t)); - wdata[i].cmpd2[j].vl.len = j + 1; - for(k = 0; k < (j + 1); k++) { - /* Initialize data of compound3 */ - ((cmpd3_t *)wdata[i].cmpd2[j].vl.p)[k].i3 = (int)j * 10 + diff; - ((cmpd3_t *)wdata[i].cmpd2[j].vl.p)[k].f3 = (float)j * 10.5F + (float)diff; - } /* end for */ - } /* end for */ - } - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - /* Create dataspace for datasets */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - /*------------------------------------- - * Create a sub compound3 datatype */ - tid_cmpd3 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd3_t)); - - /* Insert integer field */ - ret = H5Tinsert(tid_cmpd3, "int", HOFFSET(cmpd3_t, i3), H5T_NATIVE_INT); - assert(ret >= 0); - - /* Insert float field */ - ret = H5Tinsert(tid_cmpd3, "float", HOFFSET(cmpd3_t, f3), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - - /*------------------------------------- - * Create a sub compound2 datatype */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - /* Insert integer field */ - ret = H5Tinsert(tid_cmpd2, "int", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - /* Create a VL datatype */ - tid_cmpd2_vlen = H5Tvlen_create(tid_cmpd3); - ret = H5Tinsert(tid_cmpd2, "vlen", HOFFSET(cmpd2_t, vl), tid_cmpd2_vlen); - assert(ret >= 0); - - - /*----------------------------------- - * Create a top compound1 datatype for dataset. - */ - tid_cmpd1 = H5Tcreate (H5T_COMPOUND, sizeof(cmpd1_t)); - - /* Create an array datatype */ - tid_arry1 = H5Tarray_create2(tid_cmpd2, 1, sdims_arry); - /* insert the array */ - H5Tinsert(tid_cmpd1, "array_comp", HOFFSET(cmpd1_t, cmpd2), tid_arry1); - - - /* ---------------------- - * Create a dataset */ - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid_cmpd1, sid_dset, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*------------------- - * Close IDs */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Tclose(tid_arry1); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd3); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2_vlen); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - -static void test_comps_vlen_arry (const char * fname, const char *dset, const char *attr, int diff, int is_file_new) -{ - /* sub compound 3 */ - typedef struct { - int i3; - float f3; - } cmpd3_t; - - /* sub compound 2 */ - typedef struct { - int i2; - cmpd3_t cmpd3[SDIM_CMPD_ARRAY]; - } cmpd2_t; - - /* top compound 1 */ - typedef struct { - int i1; - hvl_t vl; /* VL information for compound2 */ - } cmpd1_t; - - cmpd1_t wdata[SDIM_DSET]; /* Dataset for compound1 */ - - hid_t fid; /* HDF5 File ID */ - hid_t did_dset; /* dataset ID */ - hid_t sid_dset; /* dataset space ID */ - hid_t tid_attr; - hid_t tid_cmpd3; /* compound3 type ID */ - hid_t tid_cmpd2; /* compound2 type ID */ - hid_t tid_cmpd2_arry; - hid_t tid_cmpd1; /* compound1 type ID */ - hid_t tid_cmpd1_vlen; - hsize_t sdims_dset[] = {SDIM_DSET}; - hsize_t sdims_cmpd_arry[] = {SDIM_CMPD_ARRAY}; - - unsigned i,j,k; /* counting variables */ - herr_t ret; /* Generic return value */ - - /* Allocate and initialize VL data to write */ - for(i = 0; i < SDIM_DSET; i++) { - /* compound 1 data */ - wdata[i].i1 = (int)i; - wdata[i].vl.p = HDmalloc((i + 1) * sizeof(cmpd2_t)); - wdata[i].vl.len = i + 1; - for(j = 0; j < (i + 1); j++) { - /* compound2 data */ - ((cmpd2_t *)wdata[i].vl.p)[j].i2 = (int)i * 10 + diff; - for(k = 0; k < SDIM_CMPD_ARRAY; k++) { - /* compound 3 data */ - ((cmpd2_t *)(wdata[i].vl.p))[j].cmpd3[k].i3 = (int)((float)k * 10.5F) + diff; - ((cmpd2_t *)(wdata[i].vl.p))[j].cmpd3[k].f3 = (float)k * 10.5F + (float)diff; - } /* end for */ - } /* end for */ - } /* end for */ - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - if (is_file_new == 1) - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - else - fid = H5Fopen (fname, H5F_ACC_RDWR, H5P_DEFAULT); - - /* ----------------------------- - * Create sub compound3 type */ - tid_cmpd3 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd3_t)); - - /* Insert fields */ - ret = H5Tinsert(tid_cmpd3, "int3", HOFFSET(cmpd3_t, i3), H5T_NATIVE_INT); - assert(ret >= 0); - ret = H5Tinsert(tid_cmpd3, "float3", HOFFSET(cmpd3_t, f3), H5T_NATIVE_FLOAT); - assert(ret >= 0); - - /* ----------------------------- - * Create sub compound2 type */ - tid_cmpd2 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd2_t)); - - ret = H5Tinsert(tid_cmpd2, "int2", HOFFSET(cmpd2_t, i2), H5T_NATIVE_INT); - assert(ret >= 0); - - tid_cmpd2_arry = H5Tarray_create2(tid_cmpd3, 1, sdims_cmpd_arry); - ret = H5Tinsert(tid_cmpd2, "array_cmpd2", HOFFSET(cmpd2_t, cmpd3), tid_cmpd2_arry); - assert(ret >= 0); - - /* --------------------------- - * Create top compound1 type - */ - /* Create a VL datatype */ - tid_cmpd1 = H5Tcreate(H5T_COMPOUND, sizeof(cmpd1_t)); - /* Insert fields */ - ret = H5Tinsert(tid_cmpd1, "int1", HOFFSET(cmpd1_t, i1), H5T_NATIVE_INT); - assert(ret >= 0); - tid_cmpd1_vlen = H5Tvlen_create(tid_cmpd2); - ret = H5Tinsert(tid_cmpd1, "vlen_cmpd1", HOFFSET(cmpd1_t, vl), tid_cmpd1_vlen); - assert(ret >= 0); - - /* ------------------------------- - * Create dataset with compound1 - */ - /* Create dataspace for dataset */ - sid_dset = H5Screate_simple(1, sdims_dset, NULL); - - /* Create a dataset */ - did_dset = H5Dcreate2(fid, dset, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* Write dataset to disk */ - ret = H5Dwrite(did_dset, tid_cmpd1, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /*----------------------------------- - * Create an attribute in root group - */ - tid_attr = H5Acreate2(fid, attr, tid_cmpd1, sid_dset, H5P_DEFAULT, H5P_DEFAULT); - assert(tid_attr > 0); - ret = H5Awrite(tid_attr, tid_cmpd1, wdata); - assert(ret >= 0); - - /* Reclaim the write VL data */ - ret = H5Dvlen_reclaim(tid_cmpd1, sid_dset, H5P_DEFAULT, wdata); - assert(ret >= 0); - - /* ---------------- - * Close IDs */ - ret = H5Aclose(tid_attr); - assert(ret >= 0); - ret = H5Dclose(did_dset); - assert(ret >= 0); - ret = H5Sclose(sid_dset); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd3); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2_arry); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd2); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1_vlen); - assert(ret >= 0); - ret = H5Tclose(tid_cmpd1); - assert(ret >= 0); - ret = H5Fclose(fid); - assert(ret >= 0); -} - - -/*------------------------------------------------------------------------- -* Function: test_data_nocomparables -* -* Purpose: -* Create test files with non-comparable dataset and attributes with -* comparable datasets and attributes. All the comparables should display -* differences. -* -*-------------------------------------------------------------------------*/ -#define DIM_ARRY 3 -static void test_data_nocomparables (const char * fname, int make_diffs) -{ - hid_t fid=0; - hid_t gid1=0; - hid_t gid2=0; - hid_t did1=0; - hid_t did2=0; - hid_t sid1=0; - hid_t tid_dset1=0; - hid_t tid_attr1=0; - hsize_t dims1_1[1] = {DIM_ARRY}; - hsize_t dims1_2[1] = {DIM_ARRY+1}; - hsize_t dims2[2] = {DIM_ARRY, 1}; - int data1[DIM_ARRY] = {0,0,0}; - int data2[DIM_ARRY] = {1,1,1}; - int data3[DIM_ARRY+1] = {1,1,1,1}; - int data1_dim2[DIM_ARRY][1] = {{0},{0},{0}}; - int rank_attr; - char data1_str[DIM_ARRY][STR_SIZE]= {"ab","cd","ef"}; - herr_t status = SUCCEED; - void *dset_data_ptr1=NULL; - void *dset_data_ptr2=NULL; - void *dset_data_ptr3=NULL; - void *attr_data_ptr1=NULL; - void *attr_data_ptr2=NULL; - void *attr_data_ptr3=NULL; - void *attr_data_ptr4=NULL; - void *attr2_dim_ptr=NULL; - void *attr3_dim_ptr=NULL; - - /* init */ - tid_dset1=H5Tcopy(H5T_NATIVE_INT); - dset_data_ptr1=(int*)&data1; - dset_data_ptr2=(int*)&data1; - dset_data_ptr3=(int*)&data1; - tid_attr1=H5Tcopy(H5T_NATIVE_INT); - attr_data_ptr1=(int*)&data1; - attr_data_ptr3=(int*)&data1; - attr_data_ptr4=(int*)&data1; - attr2_dim_ptr=(hsize_t*)&dims1_1; - attr3_dim_ptr=(hsize_t*)&dims1_1; - rank_attr=1; - - if (make_diffs) - { - /* ------------ - * group1 */ - tid_dset1=H5Tcopy(H5T_C_S1); - H5Tset_size(tid_dset1, (size_t)STR_SIZE); - dset_data_ptr1=(char*)&data1_str; - dset_data_ptr2=(int*)&data2; - attr_data_ptr1=(int*)&data2; - - /* ----------- - * group2 - */ - dset_data_ptr3=(int*)&data2; - /* dset1/attr1 */ - tid_attr1=H5Tcopy(H5T_C_S1); - H5Tset_size(tid_attr1, (size_t)STR_SIZE); - attr_data_ptr2=(char*)&data1_str; - - /* dset1/attr2 */ - attr2_dim_ptr=(hsize_t*)&dims1_2; - - /* dset1/attr3 */ - attr_data_ptr3=(int*)&data1_dim2; - attr3_dim_ptr=(hsize_t*)&dims2; - rank_attr=2; - - /* dset1/attr4 */ - attr_data_ptr4=(int*)&data2; - - } - - - /*----------------------------------------------------------------------- - * Create file(s) - *------------------------------------------------------------------------*/ - fid = H5Fcreate (fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if (fid < 0) - { - fprintf(stderr, "Error: %s> H5Fcreate failed.\n", fname); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Groups - *------------------------------------------------------------------------*/ - gid1 = H5Gcreate2(fid, "g1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname); - status = FAIL; - goto out; - } - - gid2 = H5Gcreate2(fid, "g2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets in /g1 - *------------------------------------------------------------------------*/ - if((sid1 = H5Screate_simple(1, dims1_1, NULL)) < 0) - goto out; - - /* dset1 */ - if((did1 = H5Dcreate2(gid1, "dset1", tid_dset1, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", "dset1"); - status = FAIL; - goto out; - } - - if(H5Dwrite(did1, tid_dset1, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data_ptr1) < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", "dset1"); - status = FAIL; - goto out; - } - write_attr(did1,1,dims1_1,"attr", H5T_NATIVE_INT, attr_data_ptr1); - - /* dset2 */ - status = write_dset(gid1, 1, dims1_1,"dset2", H5T_NATIVE_INT, dset_data_ptr2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname); - goto out; - } - - /*----------------------------------------------------------------------- - * Datasets in /g2 - *------------------------------------------------------------------------*/ - /* --------- - * dset1 */ - if((did2 = H5Dcreate2(gid2, "dset1", H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - { - fprintf(stderr, "Error: %s> H5Dcreate2 failed.\n", "dset1"); - status = FAIL; - goto out; - } - - if(H5Dwrite(did2, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data_ptr3) < 0) - { - fprintf(stderr, "Error: %s> H5Dwrite failed.\n", "dset1"); - status = FAIL; - goto out; - } - /* attr1 - non-compatible : different type */ - write_attr(did2,1,dims1_1,"attr1", tid_attr1, attr_data_ptr2); - - - /* attr2 - non-compatible : same rank, different dimention */ - write_attr(did2,1,(hsize_t *)attr2_dim_ptr,"attr2", H5T_NATIVE_INT, data3); - - /* attr3 - non-compatible : different rank */ - write_attr(did2, rank_attr,(hsize_t *)attr3_dim_ptr,"attr3", H5T_NATIVE_INT, attr_data_ptr3); - - /* attr4 - compatible : different data values */ - write_attr(did2,1,dims1_1,"attr4", H5T_NATIVE_INT, attr_data_ptr4); - - /*---------- - * dset2 */ - status = write_dset(gid2, 1, dims1_1,"dset2", H5T_NATIVE_INT, dset_data_ptr3); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname); - goto out; - } - - - -out: - - /*----------------------------------------------------------------------- - * Close IDs - *-----------------------------------------------------------------------*/ - if(fid) - H5Fclose(fid); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(did1) - H5Dclose(did1); - if(did2) - H5Dclose(did2); - if(sid1) - H5Sclose(sid1); - if(tid_dset1) - H5Tclose(tid_dset1); - if(tid_attr1) - H5Tclose(tid_attr1); -} - -/*------------------------------------------------------------------------- -* Function: test_objs_nocomparables -* -* Purpose: -* Create test files with common objects (same name) but different object -* types. -* h5diff should show non-comparable output from these common objects. -*-------------------------------------------------------------------------*/ -static void test_objs_nocomparables(const char *fname1, const char *fname2) -{ - herr_t status = SUCCEED; - hid_t fid1=0; - hid_t fid2=0; - hid_t topgid1=0; - hid_t topgid2=0; - hid_t gid1=0; - hid_t did1=0; - hid_t tid1=0; - hid_t gid2=0; - hid_t did2=0; - hid_t tid2=0; - hsize_t dims[1] = {DIM_ARRY}; - int data1[DIM_ARRY] = {1,1,1}; - int data2[DIM_ARRY] = {2,2,2}; - - /*----------------------------------------------------------------------- - * Open file(s) to add objects - *------------------------------------------------------------------------*/ - /* file1 */ - fid1 = H5Fopen (fname1, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid1 < 0) - { - fprintf(stderr, "Error: %s> H5Fopen failed.\n", fname1); - status = FAIL; - goto out; - } - - /* file2 */ - fid2 = H5Fopen (fname2, H5F_ACC_RDWR, H5P_DEFAULT); - if (fid2 < 0) - { - fprintf(stderr, "Error: %s> H5Fopen failed.\n", fname2); - status = FAIL; - goto out; - } - - /*----------------------------------------------------------------------- - * in file1 : add member objects - *------------------------------------------------------------------------*/ - /* parent group */ - topgid1 = H5Gcreate2(fid1, "diffobjtypes", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (topgid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* dataset */ - status = write_dset(topgid1, 1, dims,"obj1", H5T_NATIVE_INT, data1); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname1); - goto out; - } - - /* group */ - gid1 = H5Gcreate2(topgid1, "obj2", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid1 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname1); - status = FAIL; - goto out; - } - - /* committed type */ - tid1 = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(topgid1, "obj3", tid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname1); - goto out; - } - - /*----------------------------------------------------------------------- - * in file2 : add member objects - *------------------------------------------------------------------------*/ - /* parent group */ - topgid2 = H5Gcreate2(fid2, "diffobjtypes", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (topgid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /* group */ - gid2 = H5Gcreate2(topgid2, "obj1", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (gid2 < 0) - { - fprintf(stderr, "Error: %s> H5Gcreate2 failed.\n", fname2); - status = FAIL; - goto out; - } - - /* committed type */ - tid2 = H5Tcopy(H5T_NATIVE_INT); - status = H5Tcommit2(topgid2, "obj2", tid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - if (status < 0) - { - fprintf(stderr, "Error: %s> H5Tcommit2 failed.\n", fname2); - goto out; - } - - /* dataset */ - status = write_dset(topgid2, 1, dims,"obj3", H5T_NATIVE_INT, data2); - if (status == FAIL) - { - fprintf(stderr, "Error: %s> write_dset failed\n", fname2); - goto out; - } - -out: - /*----------------------------------------------------------------------- - * Close IDs - *-----------------------------------------------------------------------*/ - if(fid1) - H5Fclose(fid1); - if(fid2) - H5Fclose(fid2); - if(topgid1) - H5Gclose(topgid1); - if(topgid2) - H5Gclose(topgid2); - if(did1) - H5Dclose(did1); - if(did2) - H5Dclose(did2); - if(gid1) - H5Gclose(gid1); - if(gid2) - H5Gclose(gid2); - if(tid1) - H5Tclose(tid1); - if(tid2) - H5Tclose(tid2); - -} - -/*------------------------------------------------------------------------- -* Function: write_attr_in -* -* Purpose: write attributes in LOC_ID (dataset, group, named datatype) -* -*------------------------------------------------------------------------- -*/ -static -void write_attr_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, - int make_diffs /* flag to modify data buffers */) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - RED, - GREEN - } e_t; - - hid_t aid; - hid_t sid; - hid_t tid; - herr_t status; - int val, i, j, k, l, n; - float f; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][STR_SIZE]= {"ab","de"}; /* string */ - char *buf1a[2]; /* VL string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2.0F},{3,4.0F}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - e_t buf45[2]= {RED,RED}; /* enum */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1.0F, 2.0F}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[3][2][STR_SIZE]= {{"ab","cd"},{"ef","gh"},{"ij","kl"}}; /* string */ - char *buf12a[3][2]; /* VL string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2.0F},{3,4.0F},{5,6.0F},{7,8.0F},{9,10.0F},{11,12.0F}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - e_t buf452[3][2]; /* enum */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1.0F,2.0F},{3.0F,4.0F},{5.0F,6.0F}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[4][3][2][STR_SIZE]= {{{"ab","cd"},{"ef","gh"},{"ij","kl"}}, - {{"mn","pq"},{"rs","tu"},{"vw","xz"}}, - {{"AB","CD"},{"EF","GH"},{"IJ","KL"}}, - {{"MN","PQ"},{"RS","TU"},{"VW","XZ"}}}; /* string */ - char *buf13a[4][3][2]; /* VL string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - e_t buf453[4][3][2]; /* enum */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * 1D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - for (j=0; j<2; j++) - { - buf1[i][j]='z'; - } - } - } - /* - buf1[2][2]= {"ab","de"}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position string of string of difference - ------------------------------------------------------------ - [ 0 ] a z - [ 0 ] b z - [ 1 ] d z - [ 1 ] e z - */ - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, (size_t)STR_SIZE); - write_attr(loc_id,1,dims,"string",tid,buf1); - status = H5Tclose(tid); - - for (i=0; i<2; i++) - buf1a[i]=buf1[i]; - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_attr(loc_id,1,dims,"VLstring",tid,buf1a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - buf2[i]=buf2[1]=0; - } - /* - buf2[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position bitfield of bitfield of difference - position opaque of opaque of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,1,dims,"bitfield",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - /* - buf2[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position opaque of opaque of difference - position opaque of opaque of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,1,dims,"opaque",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf3[i].a=0; buf3[i].b=0; - } - } - - /* - buf3[2]= {{1,2},{3,4}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position compound of compound of difference - ------------------------------------------------------------ - [ 0 ] 1 5 4 - [ 0 ] 2 5 3 - [ 1 ] 3 5 2 - [ 1 ] 4 5 1 - */ - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,1,dims,"compound",tid,buf3); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1); - write_attr(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf45[i]=GREEN; - } - } - /* - buf45[2]= {RED,RED}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position enum of enum of difference - ------------------------------------------------------------ - [ 0 ] RED GREEN - [ 1 ] RED GREEN - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,1,dims,"enum",tid,buf45); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf5[1].p)[0]=2; - ((int *)buf5[1].p)[1]=3; - - if (make_diffs) - { - ((int *)buf5[0].p)[0]=0; - ((int *)buf5[1].p)[0]=0; - ((int *)buf5[1].p)[1]=0; - } - /* - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - position vlen of vlen of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - [ 1 ] 3 0 3 - */ - - sid = H5Screate_simple(1, dims, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf5); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5); - assert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<3; j++) - { - buf6[i][j]=0; - } - } - /* - buf6[2][3]= {{1,2,3},{4,5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position array of array of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 0 ] 2 0 2 - [ 0 ] 3 0 3 - [ 1 ] 4 0 4 - [ 1 ] 5 0 5 - [ 1 ] 6 0 6 - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 1, dims, "array", tid, buf6); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf7[i]=0; - buf8[i]=0; - } - } - /* - buf7[2]= {1,2}; - buf8[2]= {1,2}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - position integer of integer of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - position float of float of difference - ------------------------------------------------------------ - [ 0 ] 1 0 1 - [ 1 ] 2 0 2 - */ - write_attr(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7); - write_attr(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8); - - - /*------------------------------------------------------------------------- - * 2D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - for (i=0; i<3; i++) - for (j=0; j<2; j++) - for (k=0; k<2; k++) - buf12[i][j][k]='z'; - } - - /* - buf12[6][2]= {"ab","cd","ef","gh","ij","kl"}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position string2D of string2D of difference - ------------------------------------------------------------ - [ 0 0 ] a z - [ 0 0 ] b z - [ 0 1 ] c z - [ 0 1 ] d z - [ 1 0 ] e z - [ 1 0 ] f z - [ 1 1 ] g z - [ 1 1 ] h z - [ 2 0 ] i z - [ 2 0 ] j z - [ 2 1 ] k z - [ 2 1 ] l z - */ - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, (size_t)STR_SIZE); - write_attr(loc_id,2,dims2,"string2D",tid,buf12); - status = H5Tclose(tid); - - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - - buf12a[i][j]=buf12[i][j]; - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_attr(loc_id,2,dims2,"VLstring2D",tid,buf12a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf22,0,sizeof buf22); - } - - /* - buf22[3][2]= {{1,2},{3,4},{5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position bitfield2D of bitfield2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,2,dims2,"bitfield2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - /* - buf22[3][2]= {{1,2},{3,4},{5,6}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position opaque2D of opaque2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,2,dims2,"opaque2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - if (make_diffs) - { - memset(buf32,0,sizeof buf32); - } - - /* - buf32[6]= {{1,2},{3,4},{5,6},{7,8},{9,10},{11,12}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Attribute: and - position opaque2D of opaque2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,2,dims2,"compound2D",tid,buf32); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 3; i++) { - for (j = 0; j < 2; j++) { - status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_attr(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - if (make_diffs) buf452[i][j]=GREEN; else buf452[i][j]=RED; - } - } - - /* - Attribute: and - position enum2D of enum2D of difference - ------------------------------------------------------------ - [ 0 0 ] RED GREEN - [ 0 1 ] RED GREEN - [ 1 0 ] RED GREEN - [ 1 1 ] RED GREEN - [ 2 0 ] RED GREEN - [ 2 1 ] RED GREEN - */ - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,2,dims2,"enum2D",tid,buf452); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - buf52[i][j].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) - if(make_diffs) - ((int *)buf52[i][j].p)[l] = 0; - else - ((int *)buf52[i][j].p)[l] = n++; - } - } - - /* - position vlen2D of vlen2D of difference - ------------------------------------------------------------ - [ 0 1 ] 1 0 1 - [ 1 0 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 1 1 ] 5 0 5 - [ 2 0 ] 6 0 6 - [ 2 0 ] 7 0 7 - [ 2 0 ] 8 0 8 - [ 2 1 ] 9 0 9 - [ 2 1 ] 10 0 10 - [ 2 1 ] 11 0 11 - */ - - sid = H5Screate_simple(2, dims2, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf52); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52); - assert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf62,0,sizeof buf62); - } - /* - buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; - $h5diff file7.h5 file6.h5 g1 g1 -v - Group: and - Attribute: and - position array2D of array2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 0 ] 2 0 2 - [ 0 0 ] 3 0 3 - [ 0 1 ] 4 0 4 - [ 0 1 ] 5 0 5 - [ 0 1 ] 6 0 6 - [ 1 0 ] 7 0 7 - [ 1 0 ] 8 0 8 - [ 1 0 ] 9 0 9 - [ 1 1 ] 10 0 10 - [ 1 1 ] 11 0 11 - [ 1 1 ] 12 0 12 - [ 2 0 ] 13 0 13 - [ 2 0 ] 14 0 14 - [ 2 0 ] 15 0 15 - [ 2 1 ] 16 0 16 - [ 2 1 ] 17 0 17 - [ 2 1 ] 18 0 18 - */ - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 2, dims2, "array2D", tid, buf62); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf72,0,sizeof buf72); - memset(buf82,0,sizeof buf82); - } - /* - Attribute: and - position integer2D of integer2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - 6 differences found - Attribute: and - position float2D of float2D of difference - ------------------------------------------------------------ - [ 0 0 ] 1 0 1 - [ 0 1 ] 2 0 2 - [ 1 0 ] 3 0 3 - [ 1 1 ] 4 0 4 - [ 2 0 ] 5 0 5 - [ 2 1 ] 6 0 6 - */ - - write_attr(loc_id,2,dims2,"integer2D",H5T_NATIVE_INT,buf72); - write_attr(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82); - - - /*------------------------------------------------------------------------- - * 3D attributes - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<4; i++) - for (j=0; j<3; j++) - for (k=0; k<2; k++) - for (l=0; l<2; l++) - buf13[i][j][k][l]='z'; - } - - /* - buf13[24][2]= {"ab","cd","ef","gh","ij","kl","mn","pq", - "rs","tu","vw","xz","AB","CD","EF","GH", - "IJ","KL","MN","PQ","RS","TU","VW","XZ"}; - - Attribute: and - position string3D of string3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] a z - [ 0 0 0 ] b z - [ 0 0 1 ] c z - [ 0 0 1 ] d z - [ 0 1 0 ] e z - [ 0 1 0 ] f z - [ 0 1 1 ] g z - [ 0 1 1 ] h z - [ 0 2 0 ] i z - [ 0 2 0 ] j z - [ 0 2 1 ] k z - [ 0 2 1 ] l z - [ 1 0 0 ] m z - [ 1 0 0 ] n z - [ 1 0 1 ] p z - [ 1 0 1 ] q z - [ 1 1 0 ] r z - [ 1 1 0 ] s z - [ 1 1 1 ] t z - [ 1 1 1 ] u z - [ 1 2 0 ] v z - [ 1 2 0 ] w z - [ 1 2 1 ] x z - [ 2 0 0 ] A z - [ 2 0 0 ] B z - [ 2 0 1 ] C z - [ 2 0 1 ] D z - [ 2 1 0 ] E z - [ 2 1 0 ] F z - [ 2 1 1 ] G z - [ 2 1 1 ] H z - [ 2 2 0 ] I z - [ 2 2 0 ] J z - [ 2 2 1 ] K z - [ 2 2 1 ] L z - [ 3 0 0 ] M z - [ 3 0 0 ] N z - [ 3 0 1 ] P z - [ 3 0 1 ] Q z - [ 3 1 0 ] R z - [ 3 1 0 ] S z - [ 3 1 1 ] T z - [ 3 1 1 ] U z - [ 3 2 0 ] V z - [ 3 2 0 ] W z - [ 3 2 1 ] X z - [ 3 2 1 ] Z z - */ - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, (size_t)STR_SIZE); - write_attr(loc_id,3,dims3,"string3D",tid,buf13); - status = H5Tclose(tid); - - for (i=0; i<4; i++) - { - for (j=0; j<3; j++) - { - for (k=0; k<2; k++) - { - buf13a[i][j][k]=buf13[i][j][k]; - } - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_attr(loc_id,3,dims3,"VLstring3D",tid,buf13a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if(make_diffs) - buf23[i][j][k] = 0; - else - buf23[i][j][k] = (char)n++; - } - } - } - - /* - position bitfield3D of bitfield3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 1 ] 2 0 2 - [ 0 1 0 ] 3 0 3 - [ 0 1 1 ] 4 0 4 - [ 0 2 0 ] 5 0 5 - [ 0 2 1 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 1 0 ] 9 0 9 - [ 1 1 1 ] 10 0 10 - [ 1 2 0 ] 11 0 11 - [ 1 2 1 ] 12 0 12 - [ 2 0 0 ] 13 0 13 - [ 2 0 1 ] 14 0 14 - [ 2 1 0 ] 15 0 15 - [ 2 1 1 ] 16 0 16 - [ 2 2 0 ] 17 0 17 - [ 2 2 1 ] 18 0 18 - [ 3 0 0 ] 19 0 19 - [ 3 0 1 ] 20 0 20 - [ 3 1 0 ] 21 0 21 - [ 3 1 1 ] 22 0 22 - [ 3 2 0 ] 23 0 23 - [ 3 2 1 ] 24 0 24 - */ - - tid = H5Tcopy(H5T_STD_B8LE); - write_attr(loc_id,3,dims3,"bitfield3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_attr(loc_id,3,dims3,"opaque3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf33[i][j][k].a = 0; - buf33[i][j][k].b = 0.0F; - } - else { - buf33[i][j][k].a = (char)n++; - buf33[i][j][k].b = n++; - } - } - } - } - /*position compound3D of compound3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 0 ] 2 0 2 - [ 0 0 1 ] 3 0 3 - [ 0 0 1 ] 4 0 4 - [ 0 1 0 ] 5 0 5 - [ 0 1 0 ] 6 0 6 - [ 0 1 1 ] 7 0 7 - [ 0 1 1 ] 8 0 8 - [ 0 2 0 ] 9 0 9 - [ 0 2 0 ] 10 0 10 - [ 0 2 1 ] 11 0 11 - [ 0 2 1 ] 12 0 12 - [ 1 0 0 ] 13 0 13 - [ 1 0 0 ] 14 0 14 - [ 1 0 1 ] 15 0 15 - [ 1 0 1 ] 16 0 16 - [ 1 1 0 ] 17 0 17 - [ 1 1 0 ] 18 0 18 - [ 1 1 1 ] 19 0 19 - [ 1 1 1 ] 20 0 20 - [ 1 2 0 ] 21 0 21 - [ 1 2 0 ] 22 0 22 - [ 1 2 1 ] 23 0 23 - [ 1 2 1 ] 24 0 24 - [ 2 0 0 ] 25 0 25 - [ 2 0 0 ] 26 0 26 - [ 2 0 1 ] 27 0 27 - [ 2 0 1 ] 28 0 28 - [ 2 1 0 ] 29 0 29 - [ 2 1 0 ] 30 0 30 - [ 2 1 1 ] 31 0 31 - [ 2 1 1 ] 32 0 32 - [ 2 2 0 ] 33 0 33 - [ 2 2 0 ] 34 0 34 - [ 2 2 1 ] 35 0 35 - [ 2 2 1 ] 36 0 36 - [ 3 0 0 ] 37 0 37 - [ 3 0 0 ] 38 0 38 - [ 3 0 1 ] 39 0 39 - [ 3 0 1 ] 40 0 40 - [ 3 1 0 ] 41 0 41 - [ 3 1 0 ] 42 0 42 - [ 3 1 1 ] 43 0 43 - [ 3 1 1 ] 44 0 44 - [ 3 2 0 ] 45 0 45 - [ 3 2 0 ] 46 0 46 - [ 3 2 1 ] 47 0 47 - [ 3 2 1 ] 48 0 48 - */ - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_attr(loc_id,3,dims3,"compound3D",tid,buf33); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) - status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_attr(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) buf453[i][j][k]=RED; else buf453[i][j][k]=GREEN; - } - } - } - - /* - position enum3D of enum3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] GREEN RED - [ 0 0 1 ] GREEN RED - [ 0 1 0 ] GREEN RED - [ 0 1 1 ] GREEN RED - [ 0 2 0 ] GREEN RED - [ 0 2 1 ] GREEN RED - [ 1 0 0 ] GREEN RED - [ 1 0 1 ] GREEN RED - [ 1 1 0 ] GREEN RED - [ 1 1 1 ] GREEN RED - [ 1 2 0 ] GREEN RED - [ 1 2 1 ] GREEN RED - [ 2 0 0 ] GREEN RED - [ 2 0 1 ] GREEN RED - [ 2 1 0 ] GREEN RED - [ 2 1 1 ] GREEN RED - [ 2 2 0 ] GREEN RED - [ 2 2 1 ] GREEN RED - [ 3 0 0 ] GREEN RED - [ 3 0 1 ] GREEN RED - [ 3 1 0 ] GREEN RED - [ 3 1 1 ] GREEN RED - [ 3 2 0 ] GREEN RED - [ 3 2 1 ] GREEN RED - */ - - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_attr(loc_id,3,dims3,"enum3D",tid,buf453); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - buf53[i][j][k].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for (l = 0; l < i + 1; l++) - if(make_diffs) - ((int *)buf53[i][j][k].p)[l] = 0; - else - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - /* - position vlen3D of vlen3D of difference - ------------------------------------------------------------ - [ 0 0 1 ] 1 0 1 - [ 0 1 0 ] 2 0 2 - [ 0 1 1 ] 3 0 3 - [ 0 2 0 ] 4 0 4 - [ 0 2 1 ] 5 0 5 - [ 1 0 0 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 0 1 ] 9 0 9 - [ 1 1 0 ] 10 0 10 - etc - */ - sid = H5Screate_simple(3, dims3, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - aid = H5Acreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT); - status = H5Awrite(aid, tid, buf53); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53); - assert(status >= 0); - status = H5Aclose(aid); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - n=1; - for (i = 0; i < 24; i++) { - for (j = 0; j < (int)dimarray[0]; j++) { - if (make_diffs) buf63[i][j]=0; - else buf63[i][j]=n++; - } - } - /* - position array3D of array3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 0 ] 2 0 2 - [ 0 0 0 ] 3 0 3 - [ 0 0 1 ] 4 0 4 - [ 0 0 1 ] 5 0 5 - [ 0 0 1 ] 6 0 6 - [ 0 1 0 ] 7 0 7 - etc - */ - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_attr(loc_id, 3, dims3, "array3D", tid, buf63); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf73[i][j][k]=0; - buf83[i][j][k]=0.0F; - } - else { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - } - - /* - position integer3D of integer3D of difference - ------------------------------------------------------------ - [ 0 0 0 ] 1 0 1 - [ 0 0 1 ] 2 0 2 - [ 0 1 0 ] 3 0 3 - [ 0 1 1 ] 4 0 4 - [ 0 2 0 ] 5 0 5 - [ 0 2 1 ] 6 0 6 - [ 1 0 0 ] 7 0 7 - [ 1 0 1 ] 8 0 8 - [ 1 1 0 ] 9 0 9 - [ 1 1 1 ] 10 0 10 - etc - */ - write_attr(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73); - write_attr(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83); -} - - - -/*------------------------------------------------------------------------- -* Function: write_dset_in -* -* Purpose: write datasets in LOC_ID -* -*------------------------------------------------------------------------- -*/ -static -void write_dset_in(hid_t loc_id, - const char* dset_name, /* for saving reference to dataset*/ - hid_t fid, - int make_diffs /* flag to modify data buffers */) -{ - /* Compound datatype */ - typedef struct s_t - { - char a; - double b; - } s_t; - - typedef enum - { - RED, - GREEN - } e_t; - - hid_t did; - hid_t sid; - hid_t tid; - hid_t dcpl; - herr_t status; - int val, i, j, k, l, n; - float f; - int fillvalue=2; - int scalar_data = 2; - - /* create 1D attributes with dimension [2], 2 elements */ - hsize_t dims[1]={2}; - char buf1[2][STR_SIZE]= {"ab","de"}; /* string */ - char *buf1a[2]; /* VL string */ - char buf2[2]= {1,2}; /* bitfield, opaque */ - s_t buf3[2]= {{1,2.0F},{3,4.0F}}; /* compound */ - hobj_ref_t buf4[2]; /* reference */ - e_t buf45[2]= {RED,GREEN}; /* enum */ - hvl_t buf5[2]; /* vlen */ - hsize_t dimarray[1]={3}; /* array dimension */ - int buf6[2][3]= {{1,2,3},{4,5,6}}; /* array */ - int buf7[2]= {1,2}; /* integer */ - float buf8[2]= {1.0F,2.0F}; /* float */ - - /* create 2D attributes with dimension [3][2], 6 elements */ - hsize_t dims2[2]={3,2}; - char buf12[3][2][STR_SIZE]= {{"ab","cd"},{"ef","gh"},{"ij","kl"}}; /* string */ - char *buf12a[3][2]; /* VL string */ - char buf22[3][2]= {{1,2},{3,4},{5,6}}; /* bitfield, opaque */ - s_t buf32[6]= {{1,2.0F},{3,4.0F},{5,6.0F},{7,8.0F},{9,10.0F},{11,12.0F}}; /* compound */ - hobj_ref_t buf42[3][2]; /* reference */ - hvl_t buf52[3][2]; /* vlen */ - int buf62[6][3]= {{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15},{16,17,18}}; /* array */ - int buf72[3][2]= {{1,2},{3,4},{5,6}}; /* integer */ - float buf82[3][2]= {{1.0F,2.0F},{3.0F,4.0F},{5.0F,6.0F}}; /* float */ - - /* create 3D attributes with dimension [4][3][2], 24 elements */ - hsize_t dims3[3]={4,3,2}; - char buf13[4][3][2][STR_SIZE]= {{{"ab","cd"},{"ef","gh"},{"ij","kl"}}, - {{"mn","pq"},{"rs","tu"},{"vw","xz"}}, - {{"AB","CD"},{"EF","GH"},{"IJ","KL"}}, - {{"MN","PQ"},{"RS","TU"},{"VW","XZ"}}}; /* string */ - char *buf13a[4][3][2]; /* VL string */ - char buf23[4][3][2]; /* bitfield, opaque */ - s_t buf33[4][3][2]; /* compound */ - hobj_ref_t buf43[4][3][2]; /* reference */ - hvl_t buf53[4][3][2]; /* vlen */ - int buf63[24][3]; /* array */ - int buf73[4][3][2]; /* integer */ - float buf83[4][3][2]; /* float */ - - - /*------------------------------------------------------------------------- - * H5S_SCALAR - *------------------------------------------------------------------------- - */ - - - - if ( make_diffs ) - { - - scalar_data = 1; - } - - /* create a space */ - sid = H5Screate(H5S_SCALAR); - - /* create a dataset */ - did = H5Dcreate2(loc_id, "scalar", H5T_NATIVE_INT, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* write */ - H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &scalar_data); - - /* close */ - H5Dclose(did); - H5Sclose(sid); - - - /*------------------------------------------------------------------------- - * 1D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<2; j++) - buf1[i][j]='z'; - } - - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid,(size_t)STR_SIZE); - write_dset(loc_id,1,dims,"string",tid,buf1); - status = H5Tclose(tid); - - for (i=0; i<2; i++) - { - buf1a[i]=buf1[i]; - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_dset(loc_id,1,dims,"VLstring",tid,buf1a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - buf2[i]=buf2[1]=0; - } - - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,1,dims,"bitfield",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf3[i].a=0; buf3[i].b=0; - } - } - - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,1,dims,"opaque",tid,buf2); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf45[i]=GREEN; - } - } - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,1,dims,"compound",tid,buf3); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - status=H5Rcreate(&buf4[0],fid,dset_name,H5R_OBJECT,(hid_t)-1); - status=H5Rcreate(&buf4[1],fid,dset_name,H5R_OBJECT,(hid_t)-1); - write_dset(loc_id,1,dims,"reference",H5T_STD_REF_OBJ,buf4); - } - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_DATASET_REGION dataset region reference) - *------------------------------------------------------------------------- - */ - - gen_datareg(fid,make_diffs); - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,1,dims,"enum",tid,buf45); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - - buf5[0].len = 1; - buf5[0].p = HDmalloc( 1 * sizeof(int)); - ((int *)buf5[0].p)[0]=1; - buf5[1].len = 2; - buf5[1].p = HDmalloc( 2 * sizeof(int)); - ((int *)buf5[1].p)[0]=2; - ((int *)buf5[1].p)[1]=3; - - if(make_diffs) { - ((int *)buf5[0].p)[0] = 0; - ((int *)buf5[1].p)[0] = 0; - ((int *)buf5[1].p)[1]=0; - } - - sid = H5Screate_simple(1, dims, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf5); - HDassert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - for (j=0; j<3; j++) - { - buf6[i][j]=0; - } - } - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 1, dims, "array", tid, buf6); - status = H5Tclose(tid); - - { - double *dbuf; /* information to write */ - hid_t ldid; /* dataset ID */ - hid_t lsid; /* dataspace ID */ - hid_t ltid; /* datatype ID */ - size_t size; - hsize_t sdims[] = {1}; - hsize_t tdims[] = {H5TOOLS_MALLOCSIZE / sizeof(double) + 1}; - size_t jj; - - /* allocate and initialize array data to write */ - size = ( H5TOOLS_MALLOCSIZE / sizeof(double) + 1 ) * sizeof(double); - dbuf = (double *)HDmalloc(size); - - for(jj = 0; jj < (H5TOOLS_MALLOCSIZE / sizeof(double) + 1); jj++) - dbuf[jj] = (double)jj; - - if (make_diffs) - { - dbuf[5] = 0; - dbuf[6] = 0; - } - - /* create a type larger than H5TOOLS_MALLOCSIZE */ - ltid = H5Tarray_create2(H5T_NATIVE_DOUBLE, 1, tdims); - size = H5Tget_size(ltid); - lsid = H5Screate_simple(1, sdims, NULL); - ldid = H5Dcreate2(loc_id, "arrayd", ltid, lsid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); -#if defined(WRITE_ARRAY) - H5Dwrite(ldid, ltid, H5S_ALL, H5S_ALL, H5P_DEFAULT, dbuf); -#endif - - /* close */ - H5Dclose(ldid); - H5Tclose(ltid); - H5Sclose(lsid); - HDfree(dbuf); - } - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<2; i++) - { - buf7[i]=0; - buf8[i]=0; - } - } - - write_dset(loc_id,1,dims,"integer",H5T_NATIVE_INT,buf7); - write_dset(loc_id,1,dims,"float",H5T_NATIVE_FLOAT,buf8); - - - /*------------------------------------------------------------------------- - * 2D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<3; i++) - for (j=0; j<2; j++) - for (k=0; k<2; k++) - buf12[i][j][k]='z'; - } - - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid,(size_t)STR_SIZE); - write_dset(loc_id,2,dims2,"string2D",tid,buf12); - status = H5Tclose(tid); - - for (i=0; i<3; i++) - { - for (j=0; j<2; j++) - { - buf12a[i][j]=buf12[i][j]; - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_dset(loc_id,2,dims2,"VLstring2D",tid,buf12a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - memset(buf22,0,sizeof buf22); - } - - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,2,dims2,"bitfield2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,2,dims2,"opaque2D",tid,buf22); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf32,0,sizeof buf32); - } - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,2,dims2,"compound2D",tid,buf32); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 3; i++) { - for (j = 0; j < 2; j++) { - status=H5Rcreate(&buf42[i][j],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_dset(loc_id,2,dims2,"reference2D",H5T_STD_REF_OBJ,buf42); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,2,dims2,"enum2D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n = 0; - for(i = 0; i < 3; i++) { - for(j = 0; j < 2; j++) { - buf52[i][j].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf52[i][j].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) { - if(make_diffs) - ((int *)buf52[i][j].p)[l] = 0; - else - ((int *)buf52[i][j].p)[l] = n++; - } - } - } - - sid = H5Screate_simple(2, dims2, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen2D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf52); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf52); - assert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - memset(buf62,0,sizeof buf62); - } - - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 2, dims2, "array2D", tid, buf62); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER, write a fill value - *------------------------------------------------------------------------- - */ - - - if (make_diffs) - { - memset(buf72, 0, sizeof buf72); - memset(buf82, 0, sizeof buf82); - } - - - dcpl = H5Pcreate(H5P_DATASET_CREATE); - status = H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue); - sid = H5Screate_simple(2, dims2, NULL); - did = H5Dcreate2(loc_id, "integer2D", H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT); - status = H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf72); - status = H5Pclose(dcpl); - status = H5Dclose(did); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_FLOAT - *------------------------------------------------------------------------- - */ - - write_dset(loc_id,2,dims2,"float2D",H5T_NATIVE_FLOAT,buf82); - - - /*------------------------------------------------------------------------- - * 3D - *------------------------------------------------------------------------- - */ - - /*------------------------------------------------------------------------- - * H5T_STRING - *------------------------------------------------------------------------- - */ - - if (make_diffs) - { - for (i=0; i<4; i++) - for (j=0; j<3; j++) - for (k=0; k<2; k++) - for (l=0; l<2; l++) - buf13[i][j][k][l]='z'; - } - - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid,(size_t)STR_SIZE); - write_dset(loc_id,3,dims3,"string3D",tid,buf13); - status = H5Tclose(tid); - - for (i=0; i<4; i++) - { - for (j=0; j<3; j++) - { - for (k=0; k<2; k++) - { - buf13a[i][j][k]=buf13[i][j][k]; - } - } - } - tid = H5Tcopy(H5T_C_S1); - status = H5Tset_size(tid, H5T_VARIABLE); - write_dset(loc_id,3,dims3,"VLstring3D",tid,buf13a); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_BITFIELD - *------------------------------------------------------------------------- - */ - - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if(make_diffs) - buf23[i][j][k] = 0; - else - buf23[i][j][k] = (char)n++; - } - } - } - - - tid = H5Tcopy(H5T_STD_B8LE); - write_dset(loc_id,3,dims3,"bitfield3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_OPAQUE - *------------------------------------------------------------------------- - */ - tid = H5Tcreate(H5T_OPAQUE, (size_t)1); - status = H5Tset_tag(tid, "1-byte opaque type"); /* must set this */ - write_dset(loc_id,3,dims3,"opaque3D",tid,buf23); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_COMPOUND - *------------------------------------------------------------------------- - */ - - n=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf33[i][j][k].a = 0; - buf33[i][j][k].b = 0.0F; - } - else { - buf33[i][j][k].a = (char)n++; - buf33[i][j][k].b = n++; - } - } - } - } - - - tid = H5Tcreate (H5T_COMPOUND, sizeof(s_t)); - H5Tinsert(tid, "a", HOFFSET(s_t, a), H5T_NATIVE_CHAR); - H5Tinsert(tid, "b", HOFFSET(s_t, b), H5T_NATIVE_DOUBLE); - write_dset(loc_id,3,dims3,"compound3D",tid,buf33); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_REFERENCE (H5R_OBJECT object reference) - *------------------------------------------------------------------------- - */ - /* Create references to dataset */ - if (dset_name) - { - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) - status=H5Rcreate(&buf43[i][j][k],fid,dset_name,H5R_OBJECT,(hid_t)-1); - } - } - write_dset(loc_id,3,dims3,"reference3D",H5T_STD_REF_OBJ,buf43); - } - - /*------------------------------------------------------------------------- - * H5T_ENUM - *------------------------------------------------------------------------- - */ - - tid = H5Tcreate(H5T_ENUM, sizeof(e_t)); - H5Tenum_insert(tid, "RED", (val = 0, &val)); - H5Tenum_insert(tid, "GREEN", (val = 1, &val)); - write_dset(loc_id,3,dims3,"enum3D",tid,0); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_VLEN - *------------------------------------------------------------------------- - */ - - /* Allocate and initialize VL dataset to write */ - n=0; - for(i = 0; i < 4; i++) { - for(j = 0; j < 3; j++) { - for(k = 0; k < 2; k++) { - buf53[i][j][k].p = HDmalloc((size_t)(i + 1) * sizeof(int)); - buf53[i][j][k].len = (size_t)(i + 1); - for(l = 0; l < i + 1; l++) { - if(make_diffs) - ((int *)buf53[i][j][k].p)[l] = 0; - else - ((int *)buf53[i][j][k].p)[l] = n++; - } - } - } - } - - sid = H5Screate_simple(3, dims3, NULL); - tid = H5Tvlen_create(H5T_NATIVE_INT); - did = H5Dcreate2(loc_id, "vlen3D", tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf53); - assert(status >= 0); - status = H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, buf53); - assert(status >= 0); - status = H5Dclose(did); - status = H5Tclose(tid); - status = H5Sclose(sid); - - /*------------------------------------------------------------------------- - * H5T_ARRAY - *------------------------------------------------------------------------- - */ - - - n=1; - for (i = 0; i < 24; i++) { - for (j = 0; j < (int)dimarray[0]; j++) { - if (make_diffs) buf63[i][j]=0; - else buf63[i][j]=n++; - } - } - - tid = H5Tarray_create2(H5T_NATIVE_INT, 1, dimarray); - write_dset(loc_id, 3, dims3, "array3D", tid, buf63); - status = H5Tclose(tid); - - /*------------------------------------------------------------------------- - * H5T_INTEGER and H5T_FLOAT - *------------------------------------------------------------------------- - */ - n=1; f=1; - for (i = 0; i < 4; i++) { - for (j = 0; j < 3; j++) { - for (k = 0; k < 2; k++) { - if (make_diffs) { - buf73[i][j][k]=0; - buf83[i][j][k]=0.0F; - } - else { - buf73[i][j][k]=n++; - buf83[i][j][k]=f++; - } - } - } - } - write_dset(loc_id,3,dims3,"integer3D",H5T_NATIVE_INT,buf73); - write_dset(loc_id,3,dims3,"float3D",H5T_NATIVE_FLOAT,buf83); -} - -/*------------------------------------------------------------------------- -* Function: gen_datareg -* -* Purpose: generate a dataset region and its reference -* -* Date: April 19, 2006 -* -*------------------------------------------------------------------------- -*/ - -static -void gen_datareg(hid_t fid, - int make_diffs /* flag to modify data buffers */) -{ - /* data dataset */ - hid_t did1; /* dataset ID */ - hid_t sid1; /* dataspace ID */ - hsize_t dims1[2] = {10,10};/* dimensions */ - int *buf; /* dataset buffer */ - /* reference dataset */ - hid_t did2; /* dataset ID */ - hid_t sid2; /* dataspace ID */ - hsize_t dims2[] = {2}; /* 2 references */ - hdset_reg_ref_t *rbuf; /* buffer for write the references */ - hsize_t start[10]; /* starting location of hyperslab */ - hsize_t count[10]; /* element count of hyperslab */ - hsize_t coord[5][2]; /* coordinates for point selection */ - herr_t status; - int i; - - /* allocate the buffer for write the references */ - rbuf = (hdset_reg_ref_t *)HDcalloc((size_t)2, sizeof(hdset_reg_ref_t)); - - /* allocate the buffer for write the data dataset */ - buf = (int *)HDmalloc(10 * 10 * sizeof(int)); - - for(i = 0; i < 10 * 10; i++) - buf[i] = i; - - /* create the data dataset */ - sid1 = H5Screate_simple(2, dims1, NULL); - did1 = H5Dcreate2(fid, "dsetref", H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - status = H5Dwrite(did1, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); - HDassert(status >= 0); - - /* create the reference dataset */ - sid2 = H5Screate_simple(1, dims2, NULL); - did2 = H5Dcreate2(fid, "refreg", H5T_STD_REF_DSETREG, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - - /* create the references */ - /* select hyperslab for first reference */ - - start[0] = 2; start[1] = 2; - count[0] = 6; count[1] = 6; - if(make_diffs) { - start[0] = 0; start[1] = 0; - count[0] = 3; count[1] = 3; - } - - status = H5Sselect_hyperslab(sid1, H5S_SELECT_SET, start, NULL, count, NULL); - HDassert(status >= 0); - H5Sget_select_npoints(sid1); - - /* store first dataset region */ - status = H5Rcreate(&rbuf[0], fid, "dsetref", H5R_DATASET_REGION, sid1); - HDassert(status >= 0); - - /* select sequence of five points for second reference */ - coord[0][0]=6; coord[0][1]=9; - coord[1][0]=2; coord[1][1]=2; - coord[2][0]=8; coord[2][1]=4; - coord[3][0]=1; coord[3][1]=6; - coord[4][0]=2; coord[4][1]=8; - if (make_diffs) - { - coord[1][0]=3; coord[1][1]=3; - coord[3][0]=2; coord[3][1]=5; - coord[4][0]=1; coord[4][1]=7; - } - H5Sselect_elements(sid1,H5S_SELECT_SET,(size_t)5,(const hsize_t *)coord); - H5Sget_select_npoints(sid1); - - /* store second dataset region */ - H5Rcreate(&rbuf[1],fid,"dsetref",H5R_DATASET_REGION,sid1); - - /* write */ - status = H5Dwrite(did2,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,rbuf); - HDassert(status >= 0); - - /* close, free memory buffers */ - status = H5Dclose(did1); - HDassert(status >= 0); - status = H5Sclose(sid1); - HDassert(status >= 0); - status = H5Dclose(did2); - HDassert(status >= 0); - status = H5Sclose(sid2); - HDassert(status >= 0); - - HDfree(rbuf); - HDfree(buf); -} - - -/*------------------------------------------------------------------------- -* Function: test_hyperslab -* -* Purpose: test diff by hyperslabs. create a dataset with 1GB dimensions -* by iterating trough 1KB hyperslabs -* -*------------------------------------------------------------------------- -*/ -static -int test_hyperslab(const char *fname, - int make_diffs /* flag to modify data buffers */) -{ - hid_t did=-1; - hid_t fid=-1; - hid_t f_sid=-1; - hid_t m_sid=-1; - hid_t tid=-1; - hid_t dcpl=-1; - hsize_t dims[1]={GBLL}; /* dataset dimensions */ - hsize_t hs_size[1]={GBLL/(1024*1024)}; /* hyperslab dimensions */ - hsize_t chunk_dims[1]={GBLL/1024}; /* chunk dimensions */ - hsize_t hs_start[1]; - size_t size; - size_t nelmts=(size_t)GBLL/(1024*1024); /* elements in each hyperslab */ - char fillvalue=-1; - char *buf=NULL; - int i, j, s; - char c; - - /* create */ - fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto out; - if(H5Pset_fill_value(dcpl, H5T_NATIVE_CHAR, &fillvalue) < 0) - goto out; - if(H5Pset_chunk(dcpl, 1, chunk_dims) < 0) - goto out; - if((f_sid = H5Screate_simple(1, dims, NULL)) < 0) - goto out; - if((did = H5Dcreate2(fid, "big", H5T_NATIVE_CHAR, f_sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto out; - if((m_sid = H5Screate_simple(1, hs_size, hs_size)) < 0) - goto out; - if((tid = H5Dget_type(did)) < 0) - goto out; - if((size = H5Tget_size(tid)) <= 0) - goto out; - - /* create a evenly divided buffer from 0 to 127 */ - buf = (char *)HDmalloc((size_t)(nelmts * size)); - s = 1024 * 1024 / 127; - for(i = 0, j = 0, c = 0; i < 1024 * 1024; j++, i++) { - if(j == s) { - c++; - j = 0; - } - - /* set the hyperslab values */ - HDmemset(buf, c, nelmts); - - /* make a different hyperslab at this position */ - if(make_diffs && i == 512 * 512) - HDmemset(buf, 0, nelmts); - - hs_start[0] = (unsigned long long)i * GBLL / (1024 * 1024); - if (H5Sselect_hyperslab (f_sid,H5S_SELECT_SET,hs_start,NULL,hs_size, NULL) < 0) - goto out; - - /* write only one hyperslab */ - if ( i==512*512) - { - if (H5Dwrite (did,H5T_NATIVE_CHAR,m_sid,f_sid,H5P_DEFAULT,buf) < 0) - goto out; - } - - } - HDfree(buf); - buf=NULL; - - /* close */ - if(H5Sclose(f_sid) < 0) - goto out; - if(H5Sclose(m_sid) < 0) - goto out; - if(H5Pclose(dcpl) < 0) - goto out; - if(H5Dclose(did) < 0) - goto out; - H5Fclose(fid); - - return 0; - -out: - H5E_BEGIN_TRY { - H5Pclose(dcpl); - H5Sclose(f_sid); - H5Sclose(m_sid); - H5Dclose(did); - H5Fclose(fid); - } H5E_END_TRY; - return -1; - -} - - -/*------------------------------------------------------------------------- -* Function: write_attr -* -* Purpose: utility function to write an attribute in LOC_ID -* -*------------------------------------------------------------------------- -*/ -static -int write_attr(hid_t loc_id, - int rank, - hsize_t *dims, - const char *name, - hid_t tid, - void *buf) -{ - hid_t aid=-1; - hid_t sid=-1; - - /* create a space */ - if((sid = H5Screate_simple(rank, dims, NULL)) < 0) - goto out; - - /* create the attribute */ - if((aid = H5Acreate2(loc_id, name, tid, sid, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* write */ - if(buf) - { - if(H5Awrite(aid, tid, buf) < 0) - goto out; - } - - /* close */ - H5Aclose(aid); - H5Sclose(sid); - - return SUCCEED; - -out: - - H5Aclose(aid); - H5Sclose(sid); - return FAIL; -} - -/*------------------------------------------------------------------------- -* Function: write_dset -* -* Purpose: utility function to create and write a dataset in LOC_ID -* -*------------------------------------------------------------------------- -*/ -static -int write_dset( hid_t loc_id, - int rank, - hsize_t *dims, - const char *name, - hid_t tid, - void *buf ) -{ - hid_t did=-1; - hid_t sid=-1; - - /* create a space */ - if((sid = H5Screate_simple(rank, dims, NULL)) < 0) - goto out; - - /* create the dataset */ - if((did = H5Dcreate2(loc_id, name, tid, sid, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto out; - - /* write */ - if(buf) - { - if(H5Dwrite(did, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto out; - } - - /* close */ - H5Dclose(did); - H5Sclose(sid); - - return SUCCEED; - -out: - - H5Dclose(did); - H5Sclose(sid); - return FAIL; -} - diff --git a/tools/h5diff/ph5diff_main.c b/tools/h5diff/ph5diff_main.c deleted file mode 100644 index a26b6e9..0000000 --- a/tools/h5diff/ph5diff_main.c +++ /dev/null @@ -1,329 +0,0 @@ -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * - * This file is part of HDF5. The full HDF5 copyright notice, including * - * terms governing use, modification, and redistribution, is contained in * - * the files COPYING and Copyright.html. COPYING can be found at the root * - * of the source code distribution tree; Copyright.html can be found at the * - * root level of an installed copy of the electronic HDF5 document set and * - * is linked from the top-level documents page. It can also be found at * - * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -#include -#include -#include -#include "H5private.h" -#include "h5diff.h" -#include "ph5diff.h" -#include "h5diff_common.h" -#include "h5tools.h" -#include "h5tools_utils.h" - -/* Name of tool */ -#define PROGRAMNAME "h5diff" - -static void ph5diff_worker(int ); - -/*------------------------------------------------------------------------- - * Function: main - * - * Purpose: ph5diff main program - * - * Return: An exit status of 0 means no differences were found, 1 means some - * differences were found. - * - * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu - * - * Date: May 9, 2003 - * - * Comments: - * - * This function drives the diff process and will do a serial or parallel diff depending - * on the value of the global variable g_Parallel (default is 0), set to 1 when the program - * is run as "ph5diff" - *------------------------------------------------------------------------- - */ - -int main(int argc, const char *argv[]) -{ - int nID = 0; - const char *fname1 = NULL; - const char *fname2 = NULL; - const char *objname1 = NULL; - const char *objname2 = NULL; - diff_opt_t options; - - h5tools_setprogname(PROGRAMNAME); - h5tools_setstatus(EXIT_SUCCESS); - - /* Initialize h5tools lib */ - h5tools_init(); - - outBuffOffset = 0; - g_Parallel = 1; - - MPI_Init(&argc, (char***) &argv); - - MPI_Comm_rank(MPI_COMM_WORLD, &nID); - MPI_Comm_size(MPI_COMM_WORLD, &g_nTasks); - - if(g_nTasks == 1) - { - printf("Only 1 task available...doing serial diff\n"); - - g_Parallel = 0; - - parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); - - h5diff(fname1, fname2, objname1, objname2, &options); - - print_info(&options); - } - /* Parallel h5diff */ - else { - - /* Have the manager process the command-line */ - if(nID == 0) - { - parse_command_line(argc, argv, &fname1, &fname2, &objname1, &objname2, &options); - - h5diff(fname1, fname2, objname1, objname2, &options); - - MPI_Barrier(MPI_COMM_WORLD); - - print_info(&options); - print_manager_output(); - } - /* All other tasks become workers and wait for assignments. */ - else { - ph5diff_worker(nID); - - MPI_Barrier(MPI_COMM_WORLD); - } /* end else */ - - } /* end else */ - - MPI_Finalize(); - - return 0; -} - -/*------------------------------------------------------------------------- - * Function: ph5diff_worker - * - * Purpose: worker process of ph5diff - * - * Return: none - * - * Programmer: Leon Arber - * Date: January 2005 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -static void -ph5diff_worker(int nID) -{ - hid_t file1_id = -1, file2_id = -1; - - while(1) - { - MPI_Status Status; - - MPI_Probe(0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status); - - /* Check for filenames */ - if(Status.MPI_TAG == MPI_TAG_PARALLEL) - { - char filenames[2][MAX_FILENAME]; - - /* Retrieve filenames */ - MPI_Recv(filenames, MAX_FILENAME*2, MPI_CHAR, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &Status); - - /* disable error reporting */ - H5E_BEGIN_TRY - { - /* Open the files */ - if ((file1_id = H5Fopen (filenames[0], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) - { - printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[0]); - MPI_Abort(MPI_COMM_WORLD, 0); - } - if ((file2_id = H5Fopen (filenames[1], H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) - { - printf ("h5diff Task [%d]: <%s>: unable to open file\n", nID, filenames[1]); - MPI_Abort(MPI_COMM_WORLD, 0); - } - /* enable error reporting */ - } - H5E_END_TRY; - } - /* Check for work */ - else if(Status.MPI_TAG == MPI_TAG_ARGS) - { - struct diff_mpi_args args; - struct diffs_found diffs; - int i; - - /* Make certain we've received the filenames and opened the files already */ - if(file1_id < 0 || file2_id < 0) - { - printf("ph5diff_worker: ERROR: work received before/without filenames\n"); - break; - } - - /* Recv parameters for diff from manager task */ - MPI_Recv(&args, sizeof(args), MPI_BYTE, 0, MPI_TAG_ARGS, MPI_COMM_WORLD, &Status); - - /* Do the diff */ - diffs.nfound = diff(file1_id, args.name1, file2_id, args.name2, &(args.options), &(args.argdata)); - diffs.not_cmp = args.options.not_cmp; - - /* If print buffer has something in it, request print token.*/ - if(outBuffOffset>0) - { - MPI_Send(NULL, 0, MPI_BYTE, 0, MPI_TAG_TOK_REQUEST, MPI_COMM_WORLD); - - /* Wait for print token. */ - MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_PRINT_TOK, MPI_COMM_WORLD, &Status); - - /* When get token, send all of our output to the manager task and then return the token */ - for(i=0; i= 0) - { - *(out_data + i++) = (char)tmp; - if(i==PRINT_DATA_MAX_SIZE) - { - MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD); - i=0; - memset(out_data, 0, PRINT_DATA_MAX_SIZE); - } - } - - if(i>0) - MPI_Send(out_data, PRINT_DATA_MAX_SIZE, MPI_BYTE, 0, MPI_TAG_PRINT_DATA, MPI_COMM_WORLD); - - fclose(overflow_file); - overflow_file = NULL; - } - - fflush(stdout); - memset(outBuff, 0, OUTBUFF_SIZE); - outBuffOffset = 0; - - MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_TOK_RETURN, MPI_COMM_WORLD); - } - else - MPI_Send(&diffs, sizeof(diffs), MPI_BYTE, 0, MPI_TAG_DONE, MPI_COMM_WORLD); - } - /* Check for leaving */ - else if(Status.MPI_TAG == MPI_TAG_END) - { - MPI_Recv(NULL, 0, MPI_BYTE, 0, MPI_TAG_END, MPI_COMM_WORLD, &Status); - break; - } - else - { - printf("ph5diff_worker: ERROR: invalid tag (%d) received\n", Status.MPI_TAG); - break; - } - - } - - return; -} - -/*------------------------------------------------------------------------- - * Function: print_manager_output - * - * Purpose: special function that prints any output accumulated by the - * manager task. - * - * Return: none - * - * Programmer: Leon Arber - * - * Date: Feb 7, 2005 - * - *------------------------------------------------------------------------- - */ -void print_manager_output(void) -{ - /* If there was something we buffered, let's print it now */ - if( (outBuffOffset>0) && g_Parallel) - { - printf("%s", outBuff); - - if(overflow_file) - { - int tmp; - rewind(overflow_file); - while((tmp = getc(overflow_file)) >= 0) - putchar(tmp); - fclose(overflow_file); - overflow_file = NULL; - } - - HDfflush(stdout); - HDmemset(outBuff, 0, OUTBUFF_SIZE); - outBuffOffset = 0; - } - else if( (outBuffOffset>0) && !g_Parallel) - { - HDfprintf(stderr, "h5diff error: outBuffOffset>0, but we're not in parallel!\n"); - } -} - -/*------------------------------------------------------------------------- - * Function: h5diff_exit - * - * Purpose: dismiss phdiff worker processes and exit - * - * Return: none - * - * Programmer: Albert Cheng - * Date: Feb 6, 2005 - * - * Comments: - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -void h5diff_exit(int status) -{ - /* if in parallel mode, dismiss workers, close down MPI, then exit */ - if(g_Parallel) { - if(g_nTasks > 1) { - phdiff_dismiss_workers(); - MPI_Barrier(MPI_COMM_WORLD); - } - MPI_Finalize(); - status = EXIT_SUCCESS; /* Reset exit status, since some mpiexec commands generate output on failure status */ - } - - /* Always exit(0), since MPI implementations do weird stuff when they - * receive a non-zero exit value. - QAK - */ - exit(0); -} - diff --git a/tools/h5diff/testfiles/compounds_array_vlen1.h5 b/tools/h5diff/testfiles/compounds_array_vlen1.h5 deleted file mode 100644 index 398026c..0000000 Binary files a/tools/h5diff/testfiles/compounds_array_vlen1.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/compounds_array_vlen2.h5 b/tools/h5diff/testfiles/compounds_array_vlen2.h5 deleted file mode 100644 index f6f0868..0000000 Binary files a/tools/h5diff/testfiles/compounds_array_vlen2.h5 and /dev/null differ diff --git a/tools/h5diff/testfiles/h5diff_10.txt b/tools/h5diff/testfiles/h5diff_10.txt deleted file mode 100644 index a699f00..0000000 --- a/tools/h5diff/testfiles/h5diff_10.txt +++ /dev/null @@ -1,140 +0,0 @@ -usage: h5diff [OPTIONS] file1 file2 [obj1[ obj2]] - file1 File name of the first HDF5 file - file2 File name of the second HDF5 file - [obj1] Name of an HDF5 object, in absolute path - [obj2] Name of an HDF5 object, in absolute path - - OPTIONS - -h, --help - Print a usage message and exit. - -V, --version - Print version number and exit. - -r, --report - Report mode. Print differences. - -v --verbose - Verbose mode. Print differences information and list of objects. - -vN --verbose=N - Verbose mode with level. Print differences and list of objects. - Level of detail depends on value of N: - 0 : Identical to '-v' or '--verbose'. - 1 : All level 0 information plus one-line attribute - status summary. - 2 : All level 1 information plus extended attribute - status report. - -q, --quiet - Quiet mode. Do not produce output. - --follow-symlinks - Follow symbolic links (soft links and external links and compare the) - links' target objects. - If symbolic link(s) with the same name exist in the files being - compared, then determine whether the target of each link is an existing - object (dataset, group, or named datatype) or the link is a dangling - link (a soft or external link pointing to a target object that does - not yet exist). - - If both symbolic links are dangling links, they are treated as being - the same; by default, h5diff returns an exit code of 0. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If only one of the two links is a dangling link,they are treated as - being different and h5diff returns an exit code of 1. - If, however, --no-dangling-links is used with --follow-symlinks, - this situation is treated as an error and h5diff returns an - exit code of 2. - - If both symbolic links point to existing objects, h5diff compares the - two objects. - If any symbolic link specified in the call to h5diff does not exist, - h5diff treats it as an error and returns an exit code of 2. - --no-dangling-links - Must be used with --follow-symlinks option; otherwise, h5diff shows - error message and returns an exit code of 2. - Check for any symbolic links (soft links or external links) that do not - resolve to an existing object (dataset, group, or named datatype). - If any dangling link is found, this situation is treated as an error - and h5diff returns an exit code of 2. - -c, --compare - List objects that are not comparable - -N, --nan - Avoid NaNs detection - -n C, --count=C - Print differences up to C. C must be a positive integer. - -d D, --delta=D - Print difference if (|a-b| > D). D must be a positive number. - Can not use with '-p' or '--use-system-epsilon'. - -p R, --relative=R - Print difference if (|(a-b)/b| > R). R must be a positive number. - Can not use with '-d' or '--use-system-epsilon'. - --use-system-epsilon - Print difference if (|a-b| > EPSILON), EPSILON is system defined value. - If the system epsilon is not defined,one of the following predefined - values will be used: - FLT_EPSILON = 1.19209E-07 for floating-point type - DBL_EPSILON = 2.22045E-16 for double precision type - Can not use with '-p' or '-d'. - --exclude-path "path" - Exclude the specified path to an object when comparing files or groups. - If a group is excluded, all member objects will also be excluded. - The specified path is excluded wherever it occurs. - This flexibility enables the same option to exclude either objects that - exist only in one file or common objects that are known to differ. - - When comparing files, "path" is the absolute path to the excluded; - object; when comparing groups, "path" is similar to the relative - path from the group to the excluded object. This "path" can be - taken from the first section of the output of the --verbose option. - For example, if you are comparing the group /groupA in two files and - you want to exclude /groupA/groupB/groupC in both files, the exclude - option would read as follows: - --exclude-path "/groupB/groupC" - - If there are multiple paths to an object, only the specified path(s) - will be excluded; the comparison will include any path not explicitly - excluded. - This option can be used repeatedly to exclude multiple paths. - - Modes of output: - Default mode: print the number of differences found and where they occured - -r Report mode: print the above plus the differences - -v Verbose mode: print the above plus a list of objects and warnings - -q Quiet mode: do not print output - - File comparison: - If no objects [obj1[ obj2]] are specified, the h5diff comparison proceeds as - a comparison of the two files' root groups. That is, h5diff first compares - the names of root group members, generates a report of root group objects - that appear in only one file or in both files, and recursively compares - common objects. - - Object comparison: - 1) Groups - First compares the names of member objects (relative path, from the - specified group) and generates a report of objects that appear in only - one group or in both groups. Common objects are then compared recursively. - 2) Datasets - Array rank and dimensions, datatypes, and data values are compared. - 3) Datatypes - The comparison is based on the return value of H5Tequal. - 4) Symbolic links - The paths to the target objects are compared. - (The option --follow-symlinks overrides the default behavior when - symbolic links are compared.). - - Exit code: - 0 if no differences, 1 if differences found, 2 if error - - Examples of use: - 1) h5diff file1 file2 /g1/dset1 /g1/dset2 - Compares object '/g1/dset1' in file1 with '/g1/dset2' in file2 - - 2) h5diff file1 file2 /g1/dset1 - Compares object '/g1/dset1' in both files - - 3) h5diff file1 file2 - Compares all objects in both files - - Notes: - file1 and file2 can be the same file. - Use h5diff file1 file1 /g1/dset1 /g1/dset2 to compare - '/g1/dset1' and '/g1/dset2' in the same file - -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_100.txt b/tools/h5diff/testfiles/h5diff_100.txt deleted file mode 100644 index 363daa3..0000000 --- a/tools/h5diff/testfiles/h5diff_100.txt +++ /dev/null @@ -1,1038 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /big - -group : and -0 differences found -dataset: and -size: [1073741824] [1073741824] -position big big difference ------------------------------------------------------------- -[ 268435456 ] 31 0 31 -[ 268435457 ] 31 0 31 -[ 268435458 ] 31 0 31 -[ 268435459 ] 31 0 31 -[ 268435460 ] 31 0 31 -[ 268435461 ] 31 0 31 -[ 268435462 ] 31 0 31 -[ 268435463 ] 31 0 31 -[ 268435464 ] 31 0 31 -[ 268435465 ] 31 0 31 -[ 268435466 ] 31 0 31 -[ 268435467 ] 31 0 31 -[ 268435468 ] 31 0 31 -[ 268435469 ] 31 0 31 -[ 268435470 ] 31 0 31 -[ 268435471 ] 31 0 31 -[ 268435472 ] 31 0 31 -[ 268435473 ] 31 0 31 -[ 268435474 ] 31 0 31 -[ 268435475 ] 31 0 31 -[ 268435476 ] 31 0 31 -[ 268435477 ] 31 0 31 -[ 268435478 ] 31 0 31 -[ 268435479 ] 31 0 31 -[ 268435480 ] 31 0 31 -[ 268435481 ] 31 0 31 -[ 268435482 ] 31 0 31 -[ 268435483 ] 31 0 31 -[ 268435484 ] 31 0 31 -[ 268435485 ] 31 0 31 -[ 268435486 ] 31 0 31 -[ 268435487 ] 31 0 31 -[ 268435488 ] 31 0 31 -[ 268435489 ] 31 0 31 -[ 268435490 ] 31 0 31 -[ 268435491 ] 31 0 31 -[ 268435492 ] 31 0 31 -[ 268435493 ] 31 0 31 -[ 268435494 ] 31 0 31 -[ 268435495 ] 31 0 31 -[ 268435496 ] 31 0 31 -[ 268435497 ] 31 0 31 -[ 268435498 ] 31 0 31 -[ 268435499 ] 31 0 31 -[ 268435500 ] 31 0 31 -[ 268435501 ] 31 0 31 -[ 268435502 ] 31 0 31 -[ 268435503 ] 31 0 31 -[ 268435504 ] 31 0 31 -[ 268435505 ] 31 0 31 -[ 268435506 ] 31 0 31 -[ 268435507 ] 31 0 31 -[ 268435508 ] 31 0 31 -[ 268435509 ] 31 0 31 -[ 268435510 ] 31 0 31 -[ 268435511 ] 31 0 31 -[ 268435512 ] 31 0 31 -[ 268435513 ] 31 0 31 -[ 268435514 ] 31 0 31 -[ 268435515 ] 31 0 31 -[ 268435516 ] 31 0 31 -[ 268435517 ] 31 0 31 -[ 268435518 ] 31 0 31 -[ 268435519 ] 31 0 31 -[ 268435520 ] 31 0 31 -[ 268435521 ] 31 0 31 -[ 268435522 ] 31 0 31 -[ 268435523 ] 31 0 31 -[ 268435524 ] 31 0 31 -[ 268435525 ] 31 0 31 -[ 268435526 ] 31 0 31 -[ 268435527 ] 31 0 31 -[ 268435528 ] 31 0 31 -[ 268435529 ] 31 0 31 -[ 268435530 ] 31 0 31 -[ 268435531 ] 31 0 31 -[ 268435532 ] 31 0 31 -[ 268435533 ] 31 0 31 -[ 268435534 ] 31 0 31 -[ 268435535 ] 31 0 31 -[ 268435536 ] 31 0 31 -[ 268435537 ] 31 0 31 -[ 268435538 ] 31 0 31 -[ 268435539 ] 31 0 31 -[ 268435540 ] 31 0 31 -[ 268435541 ] 31 0 31 -[ 268435542 ] 31 0 31 -[ 268435543 ] 31 0 31 -[ 268435544 ] 31 0 31 -[ 268435545 ] 31 0 31 -[ 268435546 ] 31 0 31 -[ 268435547 ] 31 0 31 -[ 268435548 ] 31 0 31 -[ 268435549 ] 31 0 31 -[ 268435550 ] 31 0 31 -[ 268435551 ] 31 0 31 -[ 268435552 ] 31 0 31 -[ 268435553 ] 31 0 31 -[ 268435554 ] 31 0 31 -[ 268435555 ] 31 0 31 -[ 268435556 ] 31 0 31 -[ 268435557 ] 31 0 31 -[ 268435558 ] 31 0 31 -[ 268435559 ] 31 0 31 -[ 268435560 ] 31 0 31 -[ 268435561 ] 31 0 31 -[ 268435562 ] 31 0 31 -[ 268435563 ] 31 0 31 -[ 268435564 ] 31 0 31 -[ 268435565 ] 31 0 31 -[ 268435566 ] 31 0 31 -[ 268435567 ] 31 0 31 -[ 268435568 ] 31 0 31 -[ 268435569 ] 31 0 31 -[ 268435570 ] 31 0 31 -[ 268435571 ] 31 0 31 -[ 268435572 ] 31 0 31 -[ 268435573 ] 31 0 31 -[ 268435574 ] 31 0 31 -[ 268435575 ] 31 0 31 -[ 268435576 ] 31 0 31 -[ 268435577 ] 31 0 31 -[ 268435578 ] 31 0 31 -[ 268435579 ] 31 0 31 -[ 268435580 ] 31 0 31 -[ 268435581 ] 31 0 31 -[ 268435582 ] 31 0 31 -[ 268435583 ] 31 0 31 -[ 268435584 ] 31 0 31 -[ 268435585 ] 31 0 31 -[ 268435586 ] 31 0 31 -[ 268435587 ] 31 0 31 -[ 268435588 ] 31 0 31 -[ 268435589 ] 31 0 31 -[ 268435590 ] 31 0 31 -[ 268435591 ] 31 0 31 -[ 268435592 ] 31 0 31 -[ 268435593 ] 31 0 31 -[ 268435594 ] 31 0 31 -[ 268435595 ] 31 0 31 -[ 268435596 ] 31 0 31 -[ 268435597 ] 31 0 31 -[ 268435598 ] 31 0 31 -[ 268435599 ] 31 0 31 -[ 268435600 ] 31 0 31 -[ 268435601 ] 31 0 31 -[ 268435602 ] 31 0 31 -[ 268435603 ] 31 0 31 -[ 268435604 ] 31 0 31 -[ 268435605 ] 31 0 31 -[ 268435606 ] 31 0 31 -[ 268435607 ] 31 0 31 -[ 268435608 ] 31 0 31 -[ 268435609 ] 31 0 31 -[ 268435610 ] 31 0 31 -[ 268435611 ] 31 0 31 -[ 268435612 ] 31 0 31 -[ 268435613 ] 31 0 31 -[ 268435614 ] 31 0 31 -[ 268435615 ] 31 0 31 -[ 268435616 ] 31 0 31 -[ 268435617 ] 31 0 31 -[ 268435618 ] 31 0 31 -[ 268435619 ] 31 0 31 -[ 268435620 ] 31 0 31 -[ 268435621 ] 31 0 31 -[ 268435622 ] 31 0 31 -[ 268435623 ] 31 0 31 -[ 268435624 ] 31 0 31 -[ 268435625 ] 31 0 31 -[ 268435626 ] 31 0 31 -[ 268435627 ] 31 0 31 -[ 268435628 ] 31 0 31 -[ 268435629 ] 31 0 31 -[ 268435630 ] 31 0 31 -[ 268435631 ] 31 0 31 -[ 268435632 ] 31 0 31 -[ 268435633 ] 31 0 31 -[ 268435634 ] 31 0 31 -[ 268435635 ] 31 0 31 -[ 268435636 ] 31 0 31 -[ 268435637 ] 31 0 31 -[ 268435638 ] 31 0 31 -[ 268435639 ] 31 0 31 -[ 268435640 ] 31 0 31 -[ 268435641 ] 31 0 31 -[ 268435642 ] 31 0 31 -[ 268435643 ] 31 0 31 -[ 268435644 ] 31 0 31 -[ 268435645 ] 31 0 31 -[ 268435646 ] 31 0 31 -[ 268435647 ] 31 0 31 -[ 268435648 ] 31 0 31 -[ 268435649 ] 31 0 31 -[ 268435650 ] 31 0 31 -[ 268435651 ] 31 0 31 -[ 268435652 ] 31 0 31 -[ 268435653 ] 31 0 31 -[ 268435654 ] 31 0 31 -[ 268435655 ] 31 0 31 -[ 268435656 ] 31 0 31 -[ 268435657 ] 31 0 31 -[ 268435658 ] 31 0 31 -[ 268435659 ] 31 0 31 -[ 268435660 ] 31 0 31 -[ 268435661 ] 31 0 31 -[ 268435662 ] 31 0 31 -[ 268435663 ] 31 0 31 -[ 268435664 ] 31 0 31 -[ 268435665 ] 31 0 31 -[ 268435666 ] 31 0 31 -[ 268435667 ] 31 0 31 -[ 268435668 ] 31 0 31 -[ 268435669 ] 31 0 31 -[ 268435670 ] 31 0 31 -[ 268435671 ] 31 0 31 -[ 268435672 ] 31 0 31 -[ 268435673 ] 31 0 31 -[ 268435674 ] 31 0 31 -[ 268435675 ] 31 0 31 -[ 268435676 ] 31 0 31 -[ 268435677 ] 31 0 31 -[ 268435678 ] 31 0 31 -[ 268435679 ] 31 0 31 -[ 268435680 ] 31 0 31 -[ 268435681 ] 31 0 31 -[ 268435682 ] 31 0 31 -[ 268435683 ] 31 0 31 -[ 268435684 ] 31 0 31 -[ 268435685 ] 31 0 31 -[ 268435686 ] 31 0 31 -[ 268435687 ] 31 0 31 -[ 268435688 ] 31 0 31 -[ 268435689 ] 31 0 31 -[ 268435690 ] 31 0 31 -[ 268435691 ] 31 0 31 -[ 268435692 ] 31 0 31 -[ 268435693 ] 31 0 31 -[ 268435694 ] 31 0 31 -[ 268435695 ] 31 0 31 -[ 268435696 ] 31 0 31 -[ 268435697 ] 31 0 31 -[ 268435698 ] 31 0 31 -[ 268435699 ] 31 0 31 -[ 268435700 ] 31 0 31 -[ 268435701 ] 31 0 31 -[ 268435702 ] 31 0 31 -[ 268435703 ] 31 0 31 -[ 268435704 ] 31 0 31 -[ 268435705 ] 31 0 31 -[ 268435706 ] 31 0 31 -[ 268435707 ] 31 0 31 -[ 268435708 ] 31 0 31 -[ 268435709 ] 31 0 31 -[ 268435710 ] 31 0 31 -[ 268435711 ] 31 0 31 -[ 268435712 ] 31 0 31 -[ 268435713 ] 31 0 31 -[ 268435714 ] 31 0 31 -[ 268435715 ] 31 0 31 -[ 268435716 ] 31 0 31 -[ 268435717 ] 31 0 31 -[ 268435718 ] 31 0 31 -[ 268435719 ] 31 0 31 -[ 268435720 ] 31 0 31 -[ 268435721 ] 31 0 31 -[ 268435722 ] 31 0 31 -[ 268435723 ] 31 0 31 -[ 268435724 ] 31 0 31 -[ 268435725 ] 31 0 31 -[ 268435726 ] 31 0 31 -[ 268435727 ] 31 0 31 -[ 268435728 ] 31 0 31 -[ 268435729 ] 31 0 31 -[ 268435730 ] 31 0 31 -[ 268435731 ] 31 0 31 -[ 268435732 ] 31 0 31 -[ 268435733 ] 31 0 31 -[ 268435734 ] 31 0 31 -[ 268435735 ] 31 0 31 -[ 268435736 ] 31 0 31 -[ 268435737 ] 31 0 31 -[ 268435738 ] 31 0 31 -[ 268435739 ] 31 0 31 -[ 268435740 ] 31 0 31 -[ 268435741 ] 31 0 31 -[ 268435742 ] 31 0 31 -[ 268435743 ] 31 0 31 -[ 268435744 ] 31 0 31 -[ 268435745 ] 31 0 31 -[ 268435746 ] 31 0 31 -[ 268435747 ] 31 0 31 -[ 268435748 ] 31 0 31 -[ 268435749 ] 31 0 31 -[ 268435750 ] 31 0 31 -[ 268435751 ] 31 0 31 -[ 268435752 ] 31 0 31 -[ 268435753 ] 31 0 31 -[ 268435754 ] 31 0 31 -[ 268435755 ] 31 0 31 -[ 268435756 ] 31 0 31 -[ 268435757 ] 31 0 31 -[ 268435758 ] 31 0 31 -[ 268435759 ] 31 0 31 -[ 268435760 ] 31 0 31 -[ 268435761 ] 31 0 31 -[ 268435762 ] 31 0 31 -[ 268435763 ] 31 0 31 -[ 268435764 ] 31 0 31 -[ 268435765 ] 31 0 31 -[ 268435766 ] 31 0 31 -[ 268435767 ] 31 0 31 -[ 268435768 ] 31 0 31 -[ 268435769 ] 31 0 31 -[ 268435770 ] 31 0 31 -[ 268435771 ] 31 0 31 -[ 268435772 ] 31 0 31 -[ 268435773 ] 31 0 31 -[ 268435774 ] 31 0 31 -[ 268435775 ] 31 0 31 -[ 268435776 ] 31 0 31 -[ 268435777 ] 31 0 31 -[ 268435778 ] 31 0 31 -[ 268435779 ] 31 0 31 -[ 268435780 ] 31 0 31 -[ 268435781 ] 31 0 31 -[ 268435782 ] 31 0 31 -[ 268435783 ] 31 0 31 -[ 268435784 ] 31 0 31 -[ 268435785 ] 31 0 31 -[ 268435786 ] 31 0 31 -[ 268435787 ] 31 0 31 -[ 268435788 ] 31 0 31 -[ 268435789 ] 31 0 31 -[ 268435790 ] 31 0 31 -[ 268435791 ] 31 0 31 -[ 268435792 ] 31 0 31 -[ 268435793 ] 31 0 31 -[ 268435794 ] 31 0 31 -[ 268435795 ] 31 0 31 -[ 268435796 ] 31 0 31 -[ 268435797 ] 31 0 31 -[ 268435798 ] 31 0 31 -[ 268435799 ] 31 0 31 -[ 268435800 ] 31 0 31 -[ 268435801 ] 31 0 31 -[ 268435802 ] 31 0 31 -[ 268435803 ] 31 0 31 -[ 268435804 ] 31 0 31 -[ 268435805 ] 31 0 31 -[ 268435806 ] 31 0 31 -[ 268435807 ] 31 0 31 -[ 268435808 ] 31 0 31 -[ 268435809 ] 31 0 31 -[ 268435810 ] 31 0 31 -[ 268435811 ] 31 0 31 -[ 268435812 ] 31 0 31 -[ 268435813 ] 31 0 31 -[ 268435814 ] 31 0 31 -[ 268435815 ] 31 0 31 -[ 268435816 ] 31 0 31 -[ 268435817 ] 31 0 31 -[ 268435818 ] 31 0 31 -[ 268435819 ] 31 0 31 -[ 268435820 ] 31 0 31 -[ 268435821 ] 31 0 31 -[ 268435822 ] 31 0 31 -[ 268435823 ] 31 0 31 -[ 268435824 ] 31 0 31 -[ 268435825 ] 31 0 31 -[ 268435826 ] 31 0 31 -[ 268435827 ] 31 0 31 -[ 268435828 ] 31 0 31 -[ 268435829 ] 31 0 31 -[ 268435830 ] 31 0 31 -[ 268435831 ] 31 0 31 -[ 268435832 ] 31 0 31 -[ 268435833 ] 31 0 31 -[ 268435834 ] 31 0 31 -[ 268435835 ] 31 0 31 -[ 268435836 ] 31 0 31 -[ 268435837 ] 31 0 31 -[ 268435838 ] 31 0 31 -[ 268435839 ] 31 0 31 -[ 268435840 ] 31 0 31 -[ 268435841 ] 31 0 31 -[ 268435842 ] 31 0 31 -[ 268435843 ] 31 0 31 -[ 268435844 ] 31 0 31 -[ 268435845 ] 31 0 31 -[ 268435846 ] 31 0 31 -[ 268435847 ] 31 0 31 -[ 268435848 ] 31 0 31 -[ 268435849 ] 31 0 31 -[ 268435850 ] 31 0 31 -[ 268435851 ] 31 0 31 -[ 268435852 ] 31 0 31 -[ 268435853 ] 31 0 31 -[ 268435854 ] 31 0 31 -[ 268435855 ] 31 0 31 -[ 268435856 ] 31 0 31 -[ 268435857 ] 31 0 31 -[ 268435858 ] 31 0 31 -[ 268435859 ] 31 0 31 -[ 268435860 ] 31 0 31 -[ 268435861 ] 31 0 31 -[ 268435862 ] 31 0 31 -[ 268435863 ] 31 0 31 -[ 268435864 ] 31 0 31 -[ 268435865 ] 31 0 31 -[ 268435866 ] 31 0 31 -[ 268435867 ] 31 0 31 -[ 268435868 ] 31 0 31 -[ 268435869 ] 31 0 31 -[ 268435870 ] 31 0 31 -[ 268435871 ] 31 0 31 -[ 268435872 ] 31 0 31 -[ 268435873 ] 31 0 31 -[ 268435874 ] 31 0 31 -[ 268435875 ] 31 0 31 -[ 268435876 ] 31 0 31 -[ 268435877 ] 31 0 31 -[ 268435878 ] 31 0 31 -[ 268435879 ] 31 0 31 -[ 268435880 ] 31 0 31 -[ 268435881 ] 31 0 31 -[ 268435882 ] 31 0 31 -[ 268435883 ] 31 0 31 -[ 268435884 ] 31 0 31 -[ 268435885 ] 31 0 31 -[ 268435886 ] 31 0 31 -[ 268435887 ] 31 0 31 -[ 268435888 ] 31 0 31 -[ 268435889 ] 31 0 31 -[ 268435890 ] 31 0 31 -[ 268435891 ] 31 0 31 -[ 268435892 ] 31 0 31 -[ 268435893 ] 31 0 31 -[ 268435894 ] 31 0 31 -[ 268435895 ] 31 0 31 -[ 268435896 ] 31 0 31 -[ 268435897 ] 31 0 31 -[ 268435898 ] 31 0 31 -[ 268435899 ] 31 0 31 -[ 268435900 ] 31 0 31 -[ 268435901 ] 31 0 31 -[ 268435902 ] 31 0 31 -[ 268435903 ] 31 0 31 -[ 268435904 ] 31 0 31 -[ 268435905 ] 31 0 31 -[ 268435906 ] 31 0 31 -[ 268435907 ] 31 0 31 -[ 268435908 ] 31 0 31 -[ 268435909 ] 31 0 31 -[ 268435910 ] 31 0 31 -[ 268435911 ] 31 0 31 -[ 268435912 ] 31 0 31 -[ 268435913 ] 31 0 31 -[ 268435914 ] 31 0 31 -[ 268435915 ] 31 0 31 -[ 268435916 ] 31 0 31 -[ 268435917 ] 31 0 31 -[ 268435918 ] 31 0 31 -[ 268435919 ] 31 0 31 -[ 268435920 ] 31 0 31 -[ 268435921 ] 31 0 31 -[ 268435922 ] 31 0 31 -[ 268435923 ] 31 0 31 -[ 268435924 ] 31 0 31 -[ 268435925 ] 31 0 31 -[ 268435926 ] 31 0 31 -[ 268435927 ] 31 0 31 -[ 268435928 ] 31 0 31 -[ 268435929 ] 31 0 31 -[ 268435930 ] 31 0 31 -[ 268435931 ] 31 0 31 -[ 268435932 ] 31 0 31 -[ 268435933 ] 31 0 31 -[ 268435934 ] 31 0 31 -[ 268435935 ] 31 0 31 -[ 268435936 ] 31 0 31 -[ 268435937 ] 31 0 31 -[ 268435938 ] 31 0 31 -[ 268435939 ] 31 0 31 -[ 268435940 ] 31 0 31 -[ 268435941 ] 31 0 31 -[ 268435942 ] 31 0 31 -[ 268435943 ] 31 0 31 -[ 268435944 ] 31 0 31 -[ 268435945 ] 31 0 31 -[ 268435946 ] 31 0 31 -[ 268435947 ] 31 0 31 -[ 268435948 ] 31 0 31 -[ 268435949 ] 31 0 31 -[ 268435950 ] 31 0 31 -[ 268435951 ] 31 0 31 -[ 268435952 ] 31 0 31 -[ 268435953 ] 31 0 31 -[ 268435954 ] 31 0 31 -[ 268435955 ] 31 0 31 -[ 268435956 ] 31 0 31 -[ 268435957 ] 31 0 31 -[ 268435958 ] 31 0 31 -[ 268435959 ] 31 0 31 -[ 268435960 ] 31 0 31 -[ 268435961 ] 31 0 31 -[ 268435962 ] 31 0 31 -[ 268435963 ] 31 0 31 -[ 268435964 ] 31 0 31 -[ 268435965 ] 31 0 31 -[ 268435966 ] 31 0 31 -[ 268435967 ] 31 0 31 -[ 268435968 ] 31 0 31 -[ 268435969 ] 31 0 31 -[ 268435970 ] 31 0 31 -[ 268435971 ] 31 0 31 -[ 268435972 ] 31 0 31 -[ 268435973 ] 31 0 31 -[ 268435974 ] 31 0 31 -[ 268435975 ] 31 0 31 -[ 268435976 ] 31 0 31 -[ 268435977 ] 31 0 31 -[ 268435978 ] 31 0 31 -[ 268435979 ] 31 0 31 -[ 268435980 ] 31 0 31 -[ 268435981 ] 31 0 31 -[ 268435982 ] 31 0 31 -[ 268435983 ] 31 0 31 -[ 268435984 ] 31 0 31 -[ 268435985 ] 31 0 31 -[ 268435986 ] 31 0 31 -[ 268435987 ] 31 0 31 -[ 268435988 ] 31 0 31 -[ 268435989 ] 31 0 31 -[ 268435990 ] 31 0 31 -[ 268435991 ] 31 0 31 -[ 268435992 ] 31 0 31 -[ 268435993 ] 31 0 31 -[ 268435994 ] 31 0 31 -[ 268435995 ] 31 0 31 -[ 268435996 ] 31 0 31 -[ 268435997 ] 31 0 31 -[ 268435998 ] 31 0 31 -[ 268435999 ] 31 0 31 -[ 268436000 ] 31 0 31 -[ 268436001 ] 31 0 31 -[ 268436002 ] 31 0 31 -[ 268436003 ] 31 0 31 -[ 268436004 ] 31 0 31 -[ 268436005 ] 31 0 31 -[ 268436006 ] 31 0 31 -[ 268436007 ] 31 0 31 -[ 268436008 ] 31 0 31 -[ 268436009 ] 31 0 31 -[ 268436010 ] 31 0 31 -[ 268436011 ] 31 0 31 -[ 268436012 ] 31 0 31 -[ 268436013 ] 31 0 31 -[ 268436014 ] 31 0 31 -[ 268436015 ] 31 0 31 -[ 268436016 ] 31 0 31 -[ 268436017 ] 31 0 31 -[ 268436018 ] 31 0 31 -[ 268436019 ] 31 0 31 -[ 268436020 ] 31 0 31 -[ 268436021 ] 31 0 31 -[ 268436022 ] 31 0 31 -[ 268436023 ] 31 0 31 -[ 268436024 ] 31 0 31 -[ 268436025 ] 31 0 31 -[ 268436026 ] 31 0 31 -[ 268436027 ] 31 0 31 -[ 268436028 ] 31 0 31 -[ 268436029 ] 31 0 31 -[ 268436030 ] 31 0 31 -[ 268436031 ] 31 0 31 -[ 268436032 ] 31 0 31 -[ 268436033 ] 31 0 31 -[ 268436034 ] 31 0 31 -[ 268436035 ] 31 0 31 -[ 268436036 ] 31 0 31 -[ 268436037 ] 31 0 31 -[ 268436038 ] 31 0 31 -[ 268436039 ] 31 0 31 -[ 268436040 ] 31 0 31 -[ 268436041 ] 31 0 31 -[ 268436042 ] 31 0 31 -[ 268436043 ] 31 0 31 -[ 268436044 ] 31 0 31 -[ 268436045 ] 31 0 31 -[ 268436046 ] 31 0 31 -[ 268436047 ] 31 0 31 -[ 268436048 ] 31 0 31 -[ 268436049 ] 31 0 31 -[ 268436050 ] 31 0 31 -[ 268436051 ] 31 0 31 -[ 268436052 ] 31 0 31 -[ 268436053 ] 31 0 31 -[ 268436054 ] 31 0 31 -[ 268436055 ] 31 0 31 -[ 268436056 ] 31 0 31 -[ 268436057 ] 31 0 31 -[ 268436058 ] 31 0 31 -[ 268436059 ] 31 0 31 -[ 268436060 ] 31 0 31 -[ 268436061 ] 31 0 31 -[ 268436062 ] 31 0 31 -[ 268436063 ] 31 0 31 -[ 268436064 ] 31 0 31 -[ 268436065 ] 31 0 31 -[ 268436066 ] 31 0 31 -[ 268436067 ] 31 0 31 -[ 268436068 ] 31 0 31 -[ 268436069 ] 31 0 31 -[ 268436070 ] 31 0 31 -[ 268436071 ] 31 0 31 -[ 268436072 ] 31 0 31 -[ 268436073 ] 31 0 31 -[ 268436074 ] 31 0 31 -[ 268436075 ] 31 0 31 -[ 268436076 ] 31 0 31 -[ 268436077 ] 31 0 31 -[ 268436078 ] 31 0 31 -[ 268436079 ] 31 0 31 -[ 268436080 ] 31 0 31 -[ 268436081 ] 31 0 31 -[ 268436082 ] 31 0 31 -[ 268436083 ] 31 0 31 -[ 268436084 ] 31 0 31 -[ 268436085 ] 31 0 31 -[ 268436086 ] 31 0 31 -[ 268436087 ] 31 0 31 -[ 268436088 ] 31 0 31 -[ 268436089 ] 31 0 31 -[ 268436090 ] 31 0 31 -[ 268436091 ] 31 0 31 -[ 268436092 ] 31 0 31 -[ 268436093 ] 31 0 31 -[ 268436094 ] 31 0 31 -[ 268436095 ] 31 0 31 -[ 268436096 ] 31 0 31 -[ 268436097 ] 31 0 31 -[ 268436098 ] 31 0 31 -[ 268436099 ] 31 0 31 -[ 268436100 ] 31 0 31 -[ 268436101 ] 31 0 31 -[ 268436102 ] 31 0 31 -[ 268436103 ] 31 0 31 -[ 268436104 ] 31 0 31 -[ 268436105 ] 31 0 31 -[ 268436106 ] 31 0 31 -[ 268436107 ] 31 0 31 -[ 268436108 ] 31 0 31 -[ 268436109 ] 31 0 31 -[ 268436110 ] 31 0 31 -[ 268436111 ] 31 0 31 -[ 268436112 ] 31 0 31 -[ 268436113 ] 31 0 31 -[ 268436114 ] 31 0 31 -[ 268436115 ] 31 0 31 -[ 268436116 ] 31 0 31 -[ 268436117 ] 31 0 31 -[ 268436118 ] 31 0 31 -[ 268436119 ] 31 0 31 -[ 268436120 ] 31 0 31 -[ 268436121 ] 31 0 31 -[ 268436122 ] 31 0 31 -[ 268436123 ] 31 0 31 -[ 268436124 ] 31 0 31 -[ 268436125 ] 31 0 31 -[ 268436126 ] 31 0 31 -[ 268436127 ] 31 0 31 -[ 268436128 ] 31 0 31 -[ 268436129 ] 31 0 31 -[ 268436130 ] 31 0 31 -[ 268436131 ] 31 0 31 -[ 268436132 ] 31 0 31 -[ 268436133 ] 31 0 31 -[ 268436134 ] 31 0 31 -[ 268436135 ] 31 0 31 -[ 268436136 ] 31 0 31 -[ 268436137 ] 31 0 31 -[ 268436138 ] 31 0 31 -[ 268436139 ] 31 0 31 -[ 268436140 ] 31 0 31 -[ 268436141 ] 31 0 31 -[ 268436142 ] 31 0 31 -[ 268436143 ] 31 0 31 -[ 268436144 ] 31 0 31 -[ 268436145 ] 31 0 31 -[ 268436146 ] 31 0 31 -[ 268436147 ] 31 0 31 -[ 268436148 ] 31 0 31 -[ 268436149 ] 31 0 31 -[ 268436150 ] 31 0 31 -[ 268436151 ] 31 0 31 -[ 268436152 ] 31 0 31 -[ 268436153 ] 31 0 31 -[ 268436154 ] 31 0 31 -[ 268436155 ] 31 0 31 -[ 268436156 ] 31 0 31 -[ 268436157 ] 31 0 31 -[ 268436158 ] 31 0 31 -[ 268436159 ] 31 0 31 -[ 268436160 ] 31 0 31 -[ 268436161 ] 31 0 31 -[ 268436162 ] 31 0 31 -[ 268436163 ] 31 0 31 -[ 268436164 ] 31 0 31 -[ 268436165 ] 31 0 31 -[ 268436166 ] 31 0 31 -[ 268436167 ] 31 0 31 -[ 268436168 ] 31 0 31 -[ 268436169 ] 31 0 31 -[ 268436170 ] 31 0 31 -[ 268436171 ] 31 0 31 -[ 268436172 ] 31 0 31 -[ 268436173 ] 31 0 31 -[ 268436174 ] 31 0 31 -[ 268436175 ] 31 0 31 -[ 268436176 ] 31 0 31 -[ 268436177 ] 31 0 31 -[ 268436178 ] 31 0 31 -[ 268436179 ] 31 0 31 -[ 268436180 ] 31 0 31 -[ 268436181 ] 31 0 31 -[ 268436182 ] 31 0 31 -[ 268436183 ] 31 0 31 -[ 268436184 ] 31 0 31 -[ 268436185 ] 31 0 31 -[ 268436186 ] 31 0 31 -[ 268436187 ] 31 0 31 -[ 268436188 ] 31 0 31 -[ 268436189 ] 31 0 31 -[ 268436190 ] 31 0 31 -[ 268436191 ] 31 0 31 -[ 268436192 ] 31 0 31 -[ 268436193 ] 31 0 31 -[ 268436194 ] 31 0 31 -[ 268436195 ] 31 0 31 -[ 268436196 ] 31 0 31 -[ 268436197 ] 31 0 31 -[ 268436198 ] 31 0 31 -[ 268436199 ] 31 0 31 -[ 268436200 ] 31 0 31 -[ 268436201 ] 31 0 31 -[ 268436202 ] 31 0 31 -[ 268436203 ] 31 0 31 -[ 268436204 ] 31 0 31 -[ 268436205 ] 31 0 31 -[ 268436206 ] 31 0 31 -[ 268436207 ] 31 0 31 -[ 268436208 ] 31 0 31 -[ 268436209 ] 31 0 31 -[ 268436210 ] 31 0 31 -[ 268436211 ] 31 0 31 -[ 268436212 ] 31 0 31 -[ 268436213 ] 31 0 31 -[ 268436214 ] 31 0 31 -[ 268436215 ] 31 0 31 -[ 268436216 ] 31 0 31 -[ 268436217 ] 31 0 31 -[ 268436218 ] 31 0 31 -[ 268436219 ] 31 0 31 -[ 268436220 ] 31 0 31 -[ 268436221 ] 31 0 31 -[ 268436222 ] 31 0 31 -[ 268436223 ] 31 0 31 -[ 268436224 ] 31 0 31 -[ 268436225 ] 31 0 31 -[ 268436226 ] 31 0 31 -[ 268436227 ] 31 0 31 -[ 268436228 ] 31 0 31 -[ 268436229 ] 31 0 31 -[ 268436230 ] 31 0 31 -[ 268436231 ] 31 0 31 -[ 268436232 ] 31 0 31 -[ 268436233 ] 31 0 31 -[ 268436234 ] 31 0 31 -[ 268436235 ] 31 0 31 -[ 268436236 ] 31 0 31 -[ 268436237 ] 31 0 31 -[ 268436238 ] 31 0 31 -[ 268436239 ] 31 0 31 -[ 268436240 ] 31 0 31 -[ 268436241 ] 31 0 31 -[ 268436242 ] 31 0 31 -[ 268436243 ] 31 0 31 -[ 268436244 ] 31 0 31 -[ 268436245 ] 31 0 31 -[ 268436246 ] 31 0 31 -[ 268436247 ] 31 0 31 -[ 268436248 ] 31 0 31 -[ 268436249 ] 31 0 31 -[ 268436250 ] 31 0 31 -[ 268436251 ] 31 0 31 -[ 268436252 ] 31 0 31 -[ 268436253 ] 31 0 31 -[ 268436254 ] 31 0 31 -[ 268436255 ] 31 0 31 -[ 268436256 ] 31 0 31 -[ 268436257 ] 31 0 31 -[ 268436258 ] 31 0 31 -[ 268436259 ] 31 0 31 -[ 268436260 ] 31 0 31 -[ 268436261 ] 31 0 31 -[ 268436262 ] 31 0 31 -[ 268436263 ] 31 0 31 -[ 268436264 ] 31 0 31 -[ 268436265 ] 31 0 31 -[ 268436266 ] 31 0 31 -[ 268436267 ] 31 0 31 -[ 268436268 ] 31 0 31 -[ 268436269 ] 31 0 31 -[ 268436270 ] 31 0 31 -[ 268436271 ] 31 0 31 -[ 268436272 ] 31 0 31 -[ 268436273 ] 31 0 31 -[ 268436274 ] 31 0 31 -[ 268436275 ] 31 0 31 -[ 268436276 ] 31 0 31 -[ 268436277 ] 31 0 31 -[ 268436278 ] 31 0 31 -[ 268436279 ] 31 0 31 -[ 268436280 ] 31 0 31 -[ 268436281 ] 31 0 31 -[ 268436282 ] 31 0 31 -[ 268436283 ] 31 0 31 -[ 268436284 ] 31 0 31 -[ 268436285 ] 31 0 31 -[ 268436286 ] 31 0 31 -[ 268436287 ] 31 0 31 -[ 268436288 ] 31 0 31 -[ 268436289 ] 31 0 31 -[ 268436290 ] 31 0 31 -[ 268436291 ] 31 0 31 -[ 268436292 ] 31 0 31 -[ 268436293 ] 31 0 31 -[ 268436294 ] 31 0 31 -[ 268436295 ] 31 0 31 -[ 268436296 ] 31 0 31 -[ 268436297 ] 31 0 31 -[ 268436298 ] 31 0 31 -[ 268436299 ] 31 0 31 -[ 268436300 ] 31 0 31 -[ 268436301 ] 31 0 31 -[ 268436302 ] 31 0 31 -[ 268436303 ] 31 0 31 -[ 268436304 ] 31 0 31 -[ 268436305 ] 31 0 31 -[ 268436306 ] 31 0 31 -[ 268436307 ] 31 0 31 -[ 268436308 ] 31 0 31 -[ 268436309 ] 31 0 31 -[ 268436310 ] 31 0 31 -[ 268436311 ] 31 0 31 -[ 268436312 ] 31 0 31 -[ 268436313 ] 31 0 31 -[ 268436314 ] 31 0 31 -[ 268436315 ] 31 0 31 -[ 268436316 ] 31 0 31 -[ 268436317 ] 31 0 31 -[ 268436318 ] 31 0 31 -[ 268436319 ] 31 0 31 -[ 268436320 ] 31 0 31 -[ 268436321 ] 31 0 31 -[ 268436322 ] 31 0 31 -[ 268436323 ] 31 0 31 -[ 268436324 ] 31 0 31 -[ 268436325 ] 31 0 31 -[ 268436326 ] 31 0 31 -[ 268436327 ] 31 0 31 -[ 268436328 ] 31 0 31 -[ 268436329 ] 31 0 31 -[ 268436330 ] 31 0 31 -[ 268436331 ] 31 0 31 -[ 268436332 ] 31 0 31 -[ 268436333 ] 31 0 31 -[ 268436334 ] 31 0 31 -[ 268436335 ] 31 0 31 -[ 268436336 ] 31 0 31 -[ 268436337 ] 31 0 31 -[ 268436338 ] 31 0 31 -[ 268436339 ] 31 0 31 -[ 268436340 ] 31 0 31 -[ 268436341 ] 31 0 31 -[ 268436342 ] 31 0 31 -[ 268436343 ] 31 0 31 -[ 268436344 ] 31 0 31 -[ 268436345 ] 31 0 31 -[ 268436346 ] 31 0 31 -[ 268436347 ] 31 0 31 -[ 268436348 ] 31 0 31 -[ 268436349 ] 31 0 31 -[ 268436350 ] 31 0 31 -[ 268436351 ] 31 0 31 -[ 268436352 ] 31 0 31 -[ 268436353 ] 31 0 31 -[ 268436354 ] 31 0 31 -[ 268436355 ] 31 0 31 -[ 268436356 ] 31 0 31 -[ 268436357 ] 31 0 31 -[ 268436358 ] 31 0 31 -[ 268436359 ] 31 0 31 -[ 268436360 ] 31 0 31 -[ 268436361 ] 31 0 31 -[ 268436362 ] 31 0 31 -[ 268436363 ] 31 0 31 -[ 268436364 ] 31 0 31 -[ 268436365 ] 31 0 31 -[ 268436366 ] 31 0 31 -[ 268436367 ] 31 0 31 -[ 268436368 ] 31 0 31 -[ 268436369 ] 31 0 31 -[ 268436370 ] 31 0 31 -[ 268436371 ] 31 0 31 -[ 268436372 ] 31 0 31 -[ 268436373 ] 31 0 31 -[ 268436374 ] 31 0 31 -[ 268436375 ] 31 0 31 -[ 268436376 ] 31 0 31 -[ 268436377 ] 31 0 31 -[ 268436378 ] 31 0 31 -[ 268436379 ] 31 0 31 -[ 268436380 ] 31 0 31 -[ 268436381 ] 31 0 31 -[ 268436382 ] 31 0 31 -[ 268436383 ] 31 0 31 -[ 268436384 ] 31 0 31 -[ 268436385 ] 31 0 31 -[ 268436386 ] 31 0 31 -[ 268436387 ] 31 0 31 -[ 268436388 ] 31 0 31 -[ 268436389 ] 31 0 31 -[ 268436390 ] 31 0 31 -[ 268436391 ] 31 0 31 -[ 268436392 ] 31 0 31 -[ 268436393 ] 31 0 31 -[ 268436394 ] 31 0 31 -[ 268436395 ] 31 0 31 -[ 268436396 ] 31 0 31 -[ 268436397 ] 31 0 31 -[ 268436398 ] 31 0 31 -[ 268436399 ] 31 0 31 -[ 268436400 ] 31 0 31 -[ 268436401 ] 31 0 31 -[ 268436402 ] 31 0 31 -[ 268436403 ] 31 0 31 -[ 268436404 ] 31 0 31 -[ 268436405 ] 31 0 31 -[ 268436406 ] 31 0 31 -[ 268436407 ] 31 0 31 -[ 268436408 ] 31 0 31 -[ 268436409 ] 31 0 31 -[ 268436410 ] 31 0 31 -[ 268436411 ] 31 0 31 -[ 268436412 ] 31 0 31 -[ 268436413 ] 31 0 31 -[ 268436414 ] 31 0 31 -[ 268436415 ] 31 0 31 -[ 268436416 ] 31 0 31 -[ 268436417 ] 31 0 31 -[ 268436418 ] 31 0 31 -[ 268436419 ] 31 0 31 -[ 268436420 ] 31 0 31 -[ 268436421 ] 31 0 31 -[ 268436422 ] 31 0 31 -[ 268436423 ] 31 0 31 -[ 268436424 ] 31 0 31 -[ 268436425 ] 31 0 31 -[ 268436426 ] 31 0 31 -[ 268436427 ] 31 0 31 -[ 268436428 ] 31 0 31 -[ 268436429 ] 31 0 31 -[ 268436430 ] 31 0 31 -[ 268436431 ] 31 0 31 -[ 268436432 ] 31 0 31 -[ 268436433 ] 31 0 31 -[ 268436434 ] 31 0 31 -[ 268436435 ] 31 0 31 -[ 268436436 ] 31 0 31 -[ 268436437 ] 31 0 31 -[ 268436438 ] 31 0 31 -[ 268436439 ] 31 0 31 -[ 268436440 ] 31 0 31 -[ 268436441 ] 31 0 31 -[ 268436442 ] 31 0 31 -[ 268436443 ] 31 0 31 -[ 268436444 ] 31 0 31 -[ 268436445 ] 31 0 31 -[ 268436446 ] 31 0 31 -[ 268436447 ] 31 0 31 -[ 268436448 ] 31 0 31 -[ 268436449 ] 31 0 31 -[ 268436450 ] 31 0 31 -[ 268436451 ] 31 0 31 -[ 268436452 ] 31 0 31 -[ 268436453 ] 31 0 31 -[ 268436454 ] 31 0 31 -[ 268436455 ] 31 0 31 -[ 268436456 ] 31 0 31 -[ 268436457 ] 31 0 31 -[ 268436458 ] 31 0 31 -[ 268436459 ] 31 0 31 -[ 268436460 ] 31 0 31 -[ 268436461 ] 31 0 31 -[ 268436462 ] 31 0 31 -[ 268436463 ] 31 0 31 -[ 268436464 ] 31 0 31 -[ 268436465 ] 31 0 31 -[ 268436466 ] 31 0 31 -[ 268436467 ] 31 0 31 -[ 268436468 ] 31 0 31 -[ 268436469 ] 31 0 31 -[ 268436470 ] 31 0 31 -[ 268436471 ] 31 0 31 -[ 268436472 ] 31 0 31 -[ 268436473 ] 31 0 31 -[ 268436474 ] 31 0 31 -[ 268436475 ] 31 0 31 -[ 268436476 ] 31 0 31 -[ 268436477 ] 31 0 31 -[ 268436478 ] 31 0 31 -[ 268436479 ] 31 0 31 -1024 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_101.txt b/tools/h5diff/testfiles/h5diff_101.txt deleted file mode 100644 index f915439..0000000 --- a/tools/h5diff/testfiles/h5diff_101.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-16 4e-16 3e-16 -[ 1 0 ] 1e-16 2e-16 1e-16 -[ 1 1 ] 0 1e-16 1e-16 -[ 2 0 ] 3.3e-16 1e-16 2.3e-16 -[ 2 1 ] 1e-16 0 1e-16 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_101w.txt b/tools/h5diff/testfiles/h5diff_101w.txt deleted file mode 100644 index 71f4e87..0000000 --- a/tools/h5diff/testfiles/h5diff_101w.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-016 4e-016 3e-016 -[ 1 0 ] 1e-016 2e-016 1e-016 -[ 1 1 ] 0 1e-016 1e-016 -[ 2 0 ] 3.3e-016 1e-016 2.3e-016 -[ 2 1 ] 1e-016 0 1e-016 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_102.txt b/tools/h5diff/testfiles/h5diff_102.txt deleted file mode 100644 index 476067b..0000000 --- a/tools/h5diff/testfiles/h5diff_102.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-07 2e-07 1e-07 -[ 1 0 ] 1e-07 3e-07 2e-07 -[ 1 1 ] 2.2e-07 1e-07 1.2e-07 -[ 2 0 ] 1e-07 0 1e-07 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_102w.txt b/tools/h5diff/testfiles/h5diff_102w.txt deleted file mode 100644 index 19a097c..0000000 --- a/tools/h5diff/testfiles/h5diff_102w.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-007 2e-007 1e-007 -[ 1 0 ] 1e-007 3e-007 2e-007 -[ 1 1 ] 2.2e-007 1e-007 1.2e-007 -[ 2 0 ] 1e-007 0 1e-007 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_103.txt b/tools/h5diff/testfiles/h5diff_103.txt deleted file mode 100644 index 5700459..0000000 --- a/tools/h5diff/testfiles/h5diff_103.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-16 4e-16 3e-16 -[ 2 0 ] 3.3e-16 1e-16 2.3e-16 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_103w.txt b/tools/h5diff/testfiles/h5diff_103w.txt deleted file mode 100644 index b1abea2..0000000 --- a/tools/h5diff/testfiles/h5diff_103w.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position d1 d2 difference ------------------------------------------------------------- -[ 0 1 ] 1e-016 4e-016 3e-016 -[ 2 0 ] 3.3e-016 1e-016 2.3e-016 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_104.txt b/tools/h5diff/testfiles/h5diff_104.txt deleted file mode 100644 index 2997f10..0000000 --- a/tools/h5diff/testfiles/h5diff_104.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 1 0 ] 1e-07 3e-07 2e-07 -[ 1 1 ] 2.2e-07 1e-07 1.2e-07 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_104w.txt b/tools/h5diff/testfiles/h5diff_104w.txt deleted file mode 100644 index 28ef705..0000000 --- a/tools/h5diff/testfiles/h5diff_104w.txt +++ /dev/null @@ -1,8 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position fp1 fp2 difference ------------------------------------------------------------- -[ 1 0 ] 1e-007 3e-007 2e-007 -[ 1 1 ] 2.2e-007 1e-007 1.2e-007 -2 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_11.txt b/tools/h5diff/testfiles/h5diff_11.txt deleted file mode 100644 index c06305c..0000000 --- a/tools/h5diff/testfiles/h5diff_11.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_12.txt b/tools/h5diff/testfiles/h5diff_12.txt deleted file mode 100644 index 371df79..0000000 --- a/tools/h5diff/testfiles/h5diff_12.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_13.txt b/tools/h5diff/testfiles/h5diff_13.txt deleted file mode 100644 index 729859b..0000000 --- a/tools/h5diff/testfiles/h5diff_13.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset1 dset1 difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 1 1.1 0.1 -[ 1 0 ] 1 1.01 0.01 -[ 1 1 ] 1 1.001 0.001 -[ 2 1 ] 0 1 1 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_14.txt b/tools/h5diff/testfiles/h5diff_14.txt deleted file mode 100644 index 454463a..0000000 --- a/tools/h5diff/testfiles/h5diff_14.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset1 dset2 difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 1 1.1 0.1 -[ 1 0 ] 1 1.01 0.01 -[ 1 1 ] 1 1.001 0.001 -[ 2 1 ] 0 1 1 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_15.txt b/tools/h5diff/testfiles/h5diff_15.txt deleted file mode 100644 index 7685f75..0000000 --- a/tools/h5diff/testfiles/h5diff_15.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset3 dset4 difference ------------------------------------------------------------- -[ 0 1 ] 100 120 20 -[ 1 0 ] 100 160 60 -[ 2 0 ] 100 80 20 -[ 2 1 ] 100 40 60 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_16_1.txt b/tools/h5diff/testfiles/h5diff_16_1.txt deleted file mode 100644 index 482a42f..0000000 --- a/tools/h5diff/testfiles/h5diff_16_1.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset5 dset6 difference relative ------------------------------------------------------------------------- -[ 0 0 ] 100 120 20 0.200000 -[ 0 1 ] 100 80 20 0.200000 -[ 1 0 ] 100 0 100 1.000000 -[ 1 1 ] 0 100 100 not comparable -[ 2 1 ] 100 50 50 0.500000 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_16_2.txt b/tools/h5diff/testfiles/h5diff_16_2.txt deleted file mode 100644 index 34c1afb..0000000 --- a/tools/h5diff/testfiles/h5diff_16_2.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset7 dset8 difference relative ------------------------------------------------------------------------- -[ 0 0 ] 100 120 20 0.200000 -[ 0 1 ] 100 80 20 0.200000 -[ 1 0 ] 100 0 100 1.000000 -[ 1 1 ] 0 100 100 not comparable -[ 2 1 ] 100 50 50 0.500000 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_16_3.txt b/tools/h5diff/testfiles/h5diff_16_3.txt deleted file mode 100644 index 173a39b..0000000 --- a/tools/h5diff/testfiles/h5diff_16_3.txt +++ /dev/null @@ -1,11 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset9 dset10 difference relative ------------------------------------------------------------------------- -[ 0 0 ] 100 120 20 0.2 -[ 0 1 ] 100 80 20 0.2 -[ 1 0 ] 100 0 100 1 -[ 1 1 ] 0 100 100 not comparable -[ 2 1 ] 100 50 50 0.5 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_17.txt b/tools/h5diff/testfiles/h5diff_17.txt deleted file mode 100644 index 4906a2a..0000000 --- a/tools/h5diff/testfiles/h5diff_17.txt +++ /dev/null @@ -1,57 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /g1 - x /g1/d1 - x /g1/d2 - x x /g1/dset1 - x /g1/dset10 - x /g1/dset11 - x /g1/dset12 - x /g1/dset2 - x /g1/dset3 - x /g1/dset4 - x /g1/dset5 - x /g1/dset6 - x /g1/dset7 - x /g1/dset8 - x /g1/dset9 - x /g1/fp1 - x /g1/fp15 - x /g1/fp16 - x /g1/fp17 - x /g1/fp18 - x /g1/fp18_COPY - x /g1/fp19 - x /g1/fp19_COPY - x /g1/fp2 - x /g1/fp20 - x /g1/fp20_COPY - x /g1/ld - x /g2 - x /g2/dset1 - x /g2/dset2 - x /g2/dset3 - x /g2/dset4 - x /g2/dset5 - x /g2/dset6 - x /g2/dset7 - x /g2/dset8 - x /g2/dset9 - -group : and -0 differences found -group : and -0 differences found -dataset: and -size: [3x2] [3x2] -position dset1 dset1 difference ------------------------------------------------------------- -[ 0 0 ] 1 0 1 -[ 0 1 ] 1 1.1 0.1 -[ 1 0 ] 1 1.01 0.01 -[ 1 1 ] 1 1.001 0.001 -[ 2 1 ] 0 1 1 -5 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_171.txt b/tools/h5diff/testfiles/h5diff_171.txt deleted file mode 100644 index aabe16a..0000000 --- a/tools/h5diff/testfiles/h5diff_171.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_172.txt b/tools/h5diff/testfiles/h5diff_172.txt deleted file mode 100644 index 852f7b5..0000000 --- a/tools/h5diff/testfiles/h5diff_172.txt +++ /dev/null @@ -1,3 +0,0 @@ -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_18.txt b/tools/h5diff/testfiles/h5diff_18.txt deleted file mode 100644 index 1255241..0000000 --- a/tools/h5diff/testfiles/h5diff_18.txt +++ /dev/null @@ -1 +0,0 @@ -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_18_1.txt b/tools/h5diff/testfiles/h5diff_18_1.txt deleted file mode 100644 index 0067075..0000000 --- a/tools/h5diff/testfiles/h5diff_18_1.txt +++ /dev/null @@ -1,2 +0,0 @@ -Error: -q (quiet mode) cannot be added to verbose or report modes -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_19.txt b/tools/h5diff/testfiles/h5diff_19.txt deleted file mode 100644 index 1155d55..0000000 --- a/tools/h5diff/testfiles/h5diff_19.txt +++ /dev/null @@ -1,26 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x /g1 - x /g1/d1 - x /g1/d2 - x /g1/dset1 - x /g1/dset10 - x /g1/dset3 - x /g1/dset5 - x /g1/dset6 - x /g1/dset7 - x /g1/dset8 - x /g1/dset9 - x /g1/fp1 - x /g1/fp15 - x /g1/fp16 - x /g1/fp17 - x /g1/fp18 - x /g1/fp2 - x /g1/ld - -group : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_20.txt b/tools/h5diff/testfiles/h5diff_20.txt deleted file mode 100644 index 09c20cb..0000000 --- a/tools/h5diff/testfiles/h5diff_20.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_GROUP --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_200.txt b/tools/h5diff/testfiles/h5diff_200.txt deleted file mode 100644 index 40e3fb6..0000000 --- a/tools/h5diff/testfiles/h5diff_200.txt +++ /dev/null @@ -1,5 +0,0 @@ --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_201.txt b/tools/h5diff/testfiles/h5diff_201.txt deleted file mode 100644 index ede94e1..0000000 --- a/tools/h5diff/testfiles/h5diff_201.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not comparable: or is an empty dataset -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_202.txt b/tools/h5diff/testfiles/h5diff_202.txt deleted file mode 100644 index 95ef1da..0000000 --- a/tools/h5diff/testfiles/h5diff_202.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not comparable: is of class H5T_FLOAT and is of class H5T_INTEGER -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_203.txt b/tools/h5diff/testfiles/h5diff_203.txt deleted file mode 100644 index 61a773a..0000000 --- a/tools/h5diff/testfiles/h5diff_203.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: has rank 1, dimensions [6], max dimensions [6] -and has rank 2, dimensions [3x2], max dimensions [3x2] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_204.txt b/tools/h5diff/testfiles/h5diff_204.txt deleted file mode 100644 index e02e831..0000000 --- a/tools/h5diff/testfiles/h5diff_204.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: has rank 2, dimensions [3x2], max dimensions [3x2] -and has rank 2, dimensions [2x2], max dimensions [2x2] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_205.txt b/tools/h5diff/testfiles/h5diff_205.txt deleted file mode 100644 index bf5650f..0000000 --- a/tools/h5diff/testfiles/h5diff_205.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: has rank 2, dimensions [2x2], max dimensions [2x2] -and has rank 2, dimensions [3x2], max dimensions [3x2] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_206.txt b/tools/h5diff/testfiles/h5diff_206.txt deleted file mode 100644 index 659321f..0000000 --- a/tools/h5diff/testfiles/h5diff_206.txt +++ /dev/null @@ -1,2 +0,0 @@ -Not comparable: has a class H5T_FLOAT and has a class H5T_INTEGER -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_207.txt b/tools/h5diff/testfiles/h5diff_207.txt deleted file mode 100644 index 1ef3dbe..0000000 --- a/tools/h5diff/testfiles/h5diff_207.txt +++ /dev/null @@ -1,3 +0,0 @@ -Not comparable: or is an empty dataset -Not comparable: has 2 members has 1 members -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_208.txt b/tools/h5diff/testfiles/h5diff_208.txt deleted file mode 100644 index 783be90..0000000 --- a/tools/h5diff/testfiles/h5diff_208.txt +++ /dev/null @@ -1,5 +0,0 @@ -Not comparable: or is an empty dataset -Not comparable: or is an empty dataset -Not comparable: has rank 2, dimensions [0x0], max dimensions [0x0] -and has rank 2, dimensions [0x4], max dimensions [0x4] -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_21.txt b/tools/h5diff/testfiles/h5diff_21.txt deleted file mode 100644 index 1c625fe..0000000 --- a/tools/h5diff/testfiles/h5diff_21.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_LINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_22.txt b/tools/h5diff/testfiles/h5diff_22.txt deleted file mode 100644 index 2ef22d0..0000000 --- a/tools/h5diff/testfiles/h5diff_22.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_TYPE --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_220.txt b/tools/h5diff/testfiles/h5diff_220.txt deleted file mode 100644 index 0092fc1..0000000 --- a/tools/h5diff/testfiles/h5diff_220.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -attribute: > and > -3 differences found -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_221.txt b/tools/h5diff/testfiles/h5diff_221.txt deleted file mode 100644 index 5f10860..0000000 --- a/tools/h5diff/testfiles/h5diff_221.txt +++ /dev/null @@ -1,12 +0,0 @@ -dataset: and -3 differences found -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 1, dimensions [4], max dimensions [4] -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 2, dimensions [3x1], max dimensions [3x1] -attribute: > and > -3 differences found -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_222.txt b/tools/h5diff/testfiles/h5diff_222.txt deleted file mode 100644 index 77447da..0000000 --- a/tools/h5diff/testfiles/h5diff_222.txt +++ /dev/null @@ -1,20 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_GROUP -Not comparable: is of type H5G_GROUP and is of type H5G_TYPE -Not comparable: is of type H5G_TYPE and is of type H5G_DATASET -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -attribute: > and > -3 differences found -dataset: and -3 differences found -dataset: and -3 differences found -Not comparable: is of class H5T_INTEGER and is of class H5T_STRING -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 1, dimensions [4], max dimensions [4] -Not comparable: has rank 1, dimensions [3], max dimensions [3] -and has rank 2, dimensions [3x1], max dimensions [3x1] -attribute: > and > -3 differences found -dataset: and -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_223.txt b/tools/h5diff/testfiles/h5diff_223.txt deleted file mode 100644 index c8e0f65..0000000 --- a/tools/h5diff/testfiles/h5diff_223.txt +++ /dev/null @@ -1,4 +0,0 @@ -Not comparable: is of type H5G_DATASET and is of type H5G_GROUP -Not comparable: is of type H5G_GROUP and is of type H5G_TYPE -Not comparable: is of type H5G_TYPE and is of type H5G_DATASET -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_224.txt b/tools/h5diff/testfiles/h5diff_224.txt deleted file mode 100644 index a4ebedb..0000000 --- a/tools/h5diff/testfiles/h5diff_224.txt +++ /dev/null @@ -1,4 +0,0 @@ -Not comparable: is of type H5G_GROUP and is of type H5G_DATASET -Not comparable: is of type H5G_TYPE and is of type H5G_GROUP -Not comparable: is of type H5G_DATASET and is of type H5G_TYPE -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_23.txt b/tools/h5diff/testfiles/h5diff_23.txt deleted file mode 100644 index bd1cadb..0000000 --- a/tools/h5diff/testfiles/h5diff_23.txt +++ /dev/null @@ -1,8 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_24.txt b/tools/h5diff/testfiles/h5diff_24.txt deleted file mode 100644 index fa5723a..0000000 --- a/tools/h5diff/testfiles/h5diff_24.txt +++ /dev/null @@ -1,3 +0,0 @@ -datatype: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_25.txt b/tools/h5diff/testfiles/h5diff_25.txt deleted file mode 100644 index e463ba1..0000000 --- a/tools/h5diff/testfiles/h5diff_25.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_26.txt b/tools/h5diff/testfiles/h5diff_26.txt deleted file mode 100644 index 54a5121..0000000 --- a/tools/h5diff/testfiles/h5diff_26.txt +++ /dev/null @@ -1,8 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_27.txt b/tools/h5diff/testfiles/h5diff_27.txt deleted file mode 100644 index cbc128e..0000000 --- a/tools/h5diff/testfiles/h5diff_27.txt +++ /dev/null @@ -1,3 +0,0 @@ -datatype: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_28.txt b/tools/h5diff/testfiles/h5diff_28.txt deleted file mode 100644 index 07d01fe..0000000 --- a/tools/h5diff/testfiles/h5diff_28.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_30.txt b/tools/h5diff/testfiles/h5diff_30.txt deleted file mode 100644 index 187589a..0000000 --- a/tools/h5diff/testfiles/h5diff_30.txt +++ /dev/null @@ -1,9 +0,0 @@ -dataset: and -size: [6] [6] -position dset1 dset2 difference ------------------------------------------------------------- -[ 1 ] YIN **INVALID VALUE** -[ 2 ] **INVALID VALUE** YIN -[ 5 ] YIN YANG -3 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_300.txt b/tools/h5diff/testfiles/h5diff_300.txt deleted file mode 100644 index e51643f..0000000 --- a/tools/h5diff/testfiles/h5diff_300.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_400.txt b/tools/h5diff/testfiles/h5diff_400.txt deleted file mode 100644 index 8b3c03c..0000000 --- a/tools/h5diff/testfiles/h5diff_400.txt +++ /dev/null @@ -1,35 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /softlink_dset1_1 - x x /softlink_dset2 - x x /softlink_group1 - x x /softlink_group1/dset - x x /softlink_noexist - x x /target_dset1 - x x /target_dset2 - x x /target_group - x x /target_group/dset - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dangling link: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_401.txt b/tools/h5diff/testfiles/h5diff_401.txt deleted file mode 100644 index 278729e..0000000 --- a/tools/h5diff/testfiles/h5diff_401.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink_dset1_1 target_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_402.txt b/tools/h5diff/testfiles/h5diff_402.txt deleted file mode 100644 index b0f30ca..0000000 --- a/tools/h5diff/testfiles/h5diff_402.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position target_dset2 softlink_dset1_1 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_403.txt b/tools/h5diff/testfiles/h5diff_403.txt deleted file mode 100644 index 068d01d..0000000 --- a/tools/h5diff/testfiles/h5diff_403.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink_dset1_1 softlink_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_404.txt b/tools/h5diff/testfiles/h5diff_404.txt deleted file mode 100644 index db317d1..0000000 --- a/tools/h5diff/testfiles/h5diff_404.txt +++ /dev/null @@ -1,32 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /ext_link_dset1 - x x /ext_link_dset2 - x x /ext_link_grp1 - x x /ext_link_grp1/x_dset - x x /ext_link_grp2 - x x /ext_link_grp2/x_dset - x x /ext_link_noexist1 - x x /ext_link_noexist2 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dangling link: and -0 differences found -dangling link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_405.txt b/tools/h5diff/testfiles/h5diff_405.txt deleted file mode 100644 index 890dd33..0000000 --- a/tools/h5diff/testfiles/h5diff_405.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_dset1 x_dset difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_406.txt b/tools/h5diff/testfiles/h5diff_406.txt deleted file mode 100644 index 7fa442a..0000000 --- a/tools/h5diff/testfiles/h5diff_406.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position x_dset ext_link_dset1 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_407.txt b/tools/h5diff/testfiles/h5diff_407.txt deleted file mode 100644 index 3693ab9..0000000 --- a/tools/h5diff/testfiles/h5diff_407.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_dset1 ext_link_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_408.txt b/tools/h5diff/testfiles/h5diff_408.txt deleted file mode 100644 index e941f9b..0000000 --- a/tools/h5diff/testfiles/h5diff_408.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink_dset1_1 ext_link_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_409.txt b/tools/h5diff/testfiles/h5diff_409.txt deleted file mode 100644 index 007da7d..0000000 --- a/tools/h5diff/testfiles/h5diff_409.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_dset2 softlink_dset1_1 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_410.txt b/tools/h5diff/testfiles/h5diff_410.txt deleted file mode 100644 index 6087bb8..0000000 --- a/tools/h5diff/testfiles/h5diff_410.txt +++ /dev/null @@ -1,62 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /softlink1_to_dset1 - x x /softlink1_to_slink1 - x x /softlink1_to_slink2 - x x /softlink2_to_dset2 - x x /softlink2_to_slink1 - x x /softlink2_to_slink2 - x x /softlink3_to_group1 - x x /softlink3_to_slink1 - x x /softlink3_to_slink2 - x x /softlink4_to_group2 - x x /softlink4_to_slink1 - x x /softlink4_to_slink2 - x x /target_dset1 - x x /target_dset2 - x x /target_group - x x /target_group/dset - x x /target_group1 - x x /target_group2 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_411.txt b/tools/h5diff/testfiles/h5diff_411.txt deleted file mode 100644 index 161ab34..0000000 --- a/tools/h5diff/testfiles/h5diff_411.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position target_dset2 softlink1_to_slink2 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_412.txt b/tools/h5diff/testfiles/h5diff_412.txt deleted file mode 100644 index bb8209c..0000000 --- a/tools/h5diff/testfiles/h5diff_412.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink1_to_slink2 target_dset2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_413.txt b/tools/h5diff/testfiles/h5diff_413.txt deleted file mode 100644 index 8df3d51..0000000 --- a/tools/h5diff/testfiles/h5diff_413.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position softlink1_to_slink2 softlink2_to_slink2 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_414.txt b/tools/h5diff/testfiles/h5diff_414.txt deleted file mode 100644 index a47349e..0000000 --- a/tools/h5diff/testfiles/h5diff_414.txt +++ /dev/null @@ -1,9 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x /dset - -group : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_415.txt b/tools/h5diff/testfiles/h5diff_415.txt deleted file mode 100644 index 30cc947..0000000 --- a/tools/h5diff/testfiles/h5diff_415.txt +++ /dev/null @@ -1,9 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x /dset - -group : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_416.txt b/tools/h5diff/testfiles/h5diff_416.txt deleted file mode 100644 index 551a6c3..0000000 --- a/tools/h5diff/testfiles/h5diff_416.txt +++ /dev/null @@ -1,8 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - -group : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_417.txt b/tools/h5diff/testfiles/h5diff_417.txt deleted file mode 100644 index 0ea2542..0000000 --- a/tools/h5diff/testfiles/h5diff_417.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj1 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_418.txt b/tools/h5diff/testfiles/h5diff_418.txt deleted file mode 100644 index 46222bb..0000000 --- a/tools/h5diff/testfiles/h5diff_418.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_419.txt b/tools/h5diff/testfiles/h5diff_419.txt deleted file mode 100644 index 387c600..0000000 --- a/tools/h5diff/testfiles/h5diff_419.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj1 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_420.txt b/tools/h5diff/testfiles/h5diff_420.txt deleted file mode 100644 index f3e65d9..0000000 --- a/tools/h5diff/testfiles/h5diff_420.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_421.txt b/tools/h5diff/testfiles/h5diff_421.txt deleted file mode 100644 index 833c60c..0000000 --- a/tools/h5diff/testfiles/h5diff_421.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_422.txt b/tools/h5diff/testfiles/h5diff_422.txt deleted file mode 100644 index 3e675d5..0000000 --- a/tools/h5diff/testfiles/h5diff_422.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj1 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_423.txt b/tools/h5diff/testfiles/h5diff_423.txt deleted file mode 100644 index 1ebc157..0000000 --- a/tools/h5diff/testfiles/h5diff_423.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_to_slink1 dset2 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_424.txt b/tools/h5diff/testfiles/h5diff_424.txt deleted file mode 100644 index 9099c41..0000000 --- a/tools/h5diff/testfiles/h5diff_424.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position dset2 ext_link_to_slink1 difference ------------------------------------------------------------- -[ 0 1 ] 1 0 1 -[ 0 2 ] 2 0 2 -[ 0 3 ] 3 0 3 -[ 1 0 ] 1 0 1 -[ 1 1 ] 2 0 2 -[ 1 2 ] 3 0 3 -[ 1 3 ] 4 0 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_425.txt b/tools/h5diff/testfiles/h5diff_425.txt deleted file mode 100644 index 03ceb78..0000000 --- a/tools/h5diff/testfiles/h5diff_425.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -size: [2x4] [2x4] -position ext_link_to_slink1 ext_link_to_slink2 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_450.txt b/tools/h5diff/testfiles/h5diff_450.txt deleted file mode 100644 index a63d78f..0000000 --- a/tools/h5diff/testfiles/h5diff_450.txt +++ /dev/null @@ -1,38 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /ext_link1 - x x /ext_link2 - x x /ext_link3 - x x /ext_link4 - x x /soft_link1 - x x /soft_link2 - x x /soft_link3 - x x /soft_link4 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dangling link: and -0 differences found -obj2 is a dangling link. -1 differences found -obj1 is a dangling link. -1 differences found -dangling link: and -0 differences found -dangling link: and -0 differences found -obj2 is a dangling link. -1 differences found -obj1 is a dangling link. -1 differences found -dangling link: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_451.txt b/tools/h5diff/testfiles/h5diff_451.txt deleted file mode 100644 index fd0691f..0000000 --- a/tools/h5diff/testfiles/h5diff_451.txt +++ /dev/null @@ -1,30 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /ext_link1 - x x /ext_link2 - x x /ext_link3 - x x /ext_link4 - x x /soft_link1 - x x /soft_link2 - x x /soft_link3 - x x /soft_link4 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_452.txt b/tools/h5diff/testfiles/h5diff_452.txt deleted file mode 100644 index 05403af..0000000 --- a/tools/h5diff/testfiles/h5diff_452.txt +++ /dev/null @@ -1,2 +0,0 @@ -Error: --no-dangling-links must be used along with --follow-symlinks option. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_453.txt b/tools/h5diff/testfiles/h5diff_453.txt deleted file mode 100644 index 8a5ca52..0000000 --- a/tools/h5diff/testfiles/h5diff_453.txt +++ /dev/null @@ -1,34 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /softlink_dset1_1 - x x /softlink_dset2 - x x /softlink_group1 - x x /softlink_group1/dset - x x /softlink_noexist - x x /target_dset1 - x x /target_dset2 - x x /target_group - x x /target_group/dset - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -Warning: is a dangling link. -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_454.txt b/tools/h5diff/testfiles/h5diff_454.txt deleted file mode 100644 index dcc2e9c..0000000 --- a/tools/h5diff/testfiles/h5diff_454.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_455.txt b/tools/h5diff/testfiles/h5diff_455.txt deleted file mode 100644 index dcc2e9c..0000000 --- a/tools/h5diff/testfiles/h5diff_455.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_456.txt b/tools/h5diff/testfiles/h5diff_456.txt deleted file mode 100644 index 9317988..0000000 --- a/tools/h5diff/testfiles/h5diff_456.txt +++ /dev/null @@ -1,30 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /ext_link_dset1 - x x /ext_link_dset2 - x x /ext_link_grp1 - x x /ext_link_grp1/x_dset - x x /ext_link_grp2 - x x /ext_link_grp2/x_dset - x x /ext_link_noexist1 - x x /ext_link_noexist2 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -Warning: is a dangling link. -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_457.txt b/tools/h5diff/testfiles/h5diff_457.txt deleted file mode 100644 index 762ccdc..0000000 --- a/tools/h5diff/testfiles/h5diff_457.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_458.txt b/tools/h5diff/testfiles/h5diff_458.txt deleted file mode 100644 index 067d665..0000000 --- a/tools/h5diff/testfiles/h5diff_458.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_459.txt b/tools/h5diff/testfiles/h5diff_459.txt deleted file mode 100644 index 762ccdc..0000000 --- a/tools/h5diff/testfiles/h5diff_459.txt +++ /dev/null @@ -1,2 +0,0 @@ -Warning: is a dangling link. -EXIT CODE: 2 diff --git a/tools/h5diff/testfiles/h5diff_465.txt b/tools/h5diff/testfiles/h5diff_465.txt deleted file mode 100644 index eca5994..0000000 --- a/tools/h5diff/testfiles/h5diff_465.txt +++ /dev/null @@ -1 +0,0 @@ -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_466.txt b/tools/h5diff/testfiles/h5diff_466.txt deleted file mode 100644 index 3e00ca3..0000000 --- a/tools/h5diff/testfiles/h5diff_466.txt +++ /dev/null @@ -1,5 +0,0 @@ -obj1 is a dangling link. -obj2 is a dangling link. -dangling link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_467.txt b/tools/h5diff/testfiles/h5diff_467.txt deleted file mode 100644 index f5195c0..0000000 --- a/tools/h5diff/testfiles/h5diff_467.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_468.txt b/tools/h5diff/testfiles/h5diff_468.txt deleted file mode 100644 index 75b16c6..0000000 --- a/tools/h5diff/testfiles/h5diff_468.txt +++ /dev/null @@ -1,5 +0,0 @@ -obj1 is a dangling link. -obj2 is a dangling link. -dangling link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_469.txt b/tools/h5diff/testfiles/h5diff_469.txt deleted file mode 100644 index 594fd80..0000000 --- a/tools/h5diff/testfiles/h5diff_469.txt +++ /dev/null @@ -1,3 +0,0 @@ -obj2 is a dangling link. -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_471.txt b/tools/h5diff/testfiles/h5diff_471.txt deleted file mode 100644 index 124cdd7..0000000 --- a/tools/h5diff/testfiles/h5diff_471.txt +++ /dev/null @@ -1,38 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /ext_link1 - x x /ext_link2 - x x /ext_link3 - x x /ext_link4 - x x /soft_link1 - x x /soft_link2 - x x /soft_link3 - x x /soft_link4 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -external link: and -1 differences found -external link: and -1 differences found -external link: and -1 differences found -external link: and -0 differences found -link : and -0 differences found -link : and -1 differences found -link : and -1 differences found -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_472.txt b/tools/h5diff/testfiles/h5diff_472.txt deleted file mode 100644 index 57a8af4..0000000 --- a/tools/h5diff/testfiles/h5diff_472.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_473.txt b/tools/h5diff/testfiles/h5diff_473.txt deleted file mode 100644 index 4c1855d..0000000 --- a/tools/h5diff/testfiles/h5diff_473.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_474.txt b/tools/h5diff/testfiles/h5diff_474.txt deleted file mode 100644 index 7807551..0000000 --- a/tools/h5diff/testfiles/h5diff_474.txt +++ /dev/null @@ -1,3 +0,0 @@ -external link: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_475.txt b/tools/h5diff/testfiles/h5diff_475.txt deleted file mode 100644 index be6110e..0000000 --- a/tools/h5diff/testfiles/h5diff_475.txt +++ /dev/null @@ -1,3 +0,0 @@ -external link: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_480.txt b/tools/h5diff/testfiles/h5diff_480.txt deleted file mode 100644 index 3e1f900..0000000 --- a/tools/h5diff/testfiles/h5diff_480.txt +++ /dev/null @@ -1,17 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /group1 - x x /group1/dset2 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_481.txt b/tools/h5diff/testfiles/h5diff_481.txt deleted file mode 100644 index c4f2448..0000000 --- a/tools/h5diff/testfiles/h5diff_481.txt +++ /dev/null @@ -1,30 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /group1 - x x /group1/dset2 - x x /group1/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset3 dset3 difference ------------------------------------------------------------- -[ 0 1 ] 0 1 1 -[ 0 2 ] 0 2 2 -[ 0 3 ] 0 3 3 -[ 1 0 ] 0 1 1 -[ 1 1 ] 0 2 2 -[ 1 2 ] 0 3 3 -[ 1 3 ] 0 4 4 -7 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_482.txt b/tools/h5diff/testfiles/h5diff_482.txt deleted file mode 100644 index 5b3c8c1..0000000 --- a/tools/h5diff/testfiles/h5diff_482.txt +++ /dev/null @@ -1,17 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset10 - x x /group10 - x x /group10/dset2 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_483.txt b/tools/h5diff/testfiles/h5diff_483.txt deleted file mode 100644 index a45e928..0000000 --- a/tools/h5diff/testfiles/h5diff_483.txt +++ /dev/null @@ -1,18 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x /dset1 - x x /dset10 - x x /group10 - x x /group10/dset2 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_484.txt b/tools/h5diff/testfiles/h5diff_484.txt deleted file mode 100644 index 87d9c7c..0000000 --- a/tools/h5diff/testfiles/h5diff_484.txt +++ /dev/null @@ -1,11 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset2 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_485.txt b/tools/h5diff/testfiles/h5diff_485.txt deleted file mode 100644 index 4175809..0000000 --- a/tools/h5diff/testfiles/h5diff_485.txt +++ /dev/null @@ -1,11 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_486.txt b/tools/h5diff/testfiles/h5diff_486.txt deleted file mode 100644 index 4175809..0000000 --- a/tools/h5diff/testfiles/h5diff_486.txt +++ /dev/null @@ -1,11 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_487.txt b/tools/h5diff/testfiles/h5diff_487.txt deleted file mode 100644 index 8555a71..0000000 --- a/tools/h5diff/testfiles/h5diff_487.txt +++ /dev/null @@ -1,12 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x /group1 - -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_50.txt b/tools/h5diff/testfiles/h5diff_50.txt deleted file mode 100644 index 434b458..0000000 --- a/tools/h5diff/testfiles/h5diff_50.txt +++ /dev/null @@ -1,13 +0,0 @@ -dataset: and -Warning: different storage datatype - has file datatype H5T_STD_I16LE - has file datatype H5T_STD_I32LE -size: [3x2] [3x2] -position dset0a dset0b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_500.txt b/tools/h5diff/testfiles/h5diff_500.txt deleted file mode 100644 index 7d688d2..0000000 --- a/tools/h5diff/testfiles/h5diff_500.txt +++ /dev/null @@ -1,72 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /dset3 - x x /elink_grp1 - x x /elink_grp2 - x x /elink_grp3 - x x /grp1 - x x /grp1/dset1 - x x /grp1/grp2 - x x /grp1/grp2/dset1 - x x /grp1/grp2/dset2 - x x /grp1/grp2/grp3 - x x /grp1/grp2/grp3/dset1 - x x /grp1/grp2/grp3/dset2 - x x /grp1/grp2/grp3/dset3 - x /grp10 - x /grp10/dset4 - x /grp10/dset5 - x /grp10/elink_grp_circle - x /grp11 - x /grp11/dset4 - x /grp11/dset5 - x /grp11/elink_grp_circle - x x /slink_grp1 - x /slink_grp10 - x /slink_grp11 - x x /slink_grp2 - x x /slink_grp3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -external link: and -1 differences found -external link: and -1 differences found -external link: and -1 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -link : and -0 differences found -link : and -0 differences found -link : and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_501.txt b/tools/h5diff/testfiles/h5diff_501.txt deleted file mode 100644 index 75e91da..0000000 --- a/tools/h5diff/testfiles/h5diff_501.txt +++ /dev/null @@ -1,188 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /dset3 - x x /elink_grp1 - x x /elink_grp1/dset1 - x x /elink_grp1/grp2 - x x /elink_grp1/grp2/dset1 - x x /elink_grp1/grp2/dset2 - x x /elink_grp1/grp2/grp3 - x x /elink_grp1/grp2/grp3/dset1 - x x /elink_grp1/grp2/grp3/dset2 - x x /elink_grp1/grp2/grp3/dset3 - x x /elink_grp2 - x x /elink_grp2/dset1 - x x /elink_grp2/dset2 - x x /elink_grp2/grp3 - x x /elink_grp2/grp3/dset1 - x x /elink_grp2/grp3/dset2 - x x /elink_grp2/grp3/dset3 - x x /elink_grp3 - x x /elink_grp3/dset1 - x x /elink_grp3/dset2 - x x /elink_grp3/dset3 - x x /grp1 - x x /grp1/dset1 - x x /grp1/grp2 - x x /grp1/grp2/dset1 - x x /grp1/grp2/dset2 - x x /grp1/grp2/grp3 - x x /grp1/grp2/grp3/dset1 - x x /grp1/grp2/grp3/dset2 - x x /grp1/grp2/grp3/dset3 - x /grp10 - x /grp10/dset4 - x /grp10/dset5 - x /grp10/elink_grp_circle - x /grp10/elink_grp_circle/dset4 - x /grp10/elink_grp_circle/dset5 - x /grp10/elink_grp_circle/elink_grp_circle - x /grp10/elink_grp_circle/elink_grp_circle/dset4 - x /grp10/elink_grp_circle/elink_grp_circle/dset5 - x /grp11 - x /grp11/dset4 - x /grp11/dset5 - x /grp11/elink_grp_circle - x /grp11/elink_grp_circle/dset4 - x /grp11/elink_grp_circle/dset5 - x /grp11/elink_grp_circle/elink_grp_circle - x /grp11/elink_grp_circle/elink_grp_circle/dset4 - x /grp11/elink_grp_circle/elink_grp_circle/dset5 - x x /slink_grp1 - x x /slink_grp1/dset1 - x x /slink_grp1/grp2 - x x /slink_grp1/grp2/dset1 - x x /slink_grp1/grp2/dset2 - x x /slink_grp1/grp2/grp3 - x x /slink_grp1/grp2/grp3/dset1 - x x /slink_grp1/grp2/grp3/dset2 - x x /slink_grp1/grp2/grp3/dset3 - x /slink_grp10 - x /slink_grp10/dset4 - x /slink_grp10/dset5 - x /slink_grp11 - x /slink_grp11/dset4 - x /slink_grp11/dset5 - x x /slink_grp2 - x x /slink_grp2/dset1 - x x /slink_grp2/dset2 - x x /slink_grp2/grp3 - x x /slink_grp2/grp3/dset1 - x x /slink_grp2/grp3/dset2 - x x /slink_grp2/grp3/dset3 - x x /slink_grp3 - x x /slink_grp3/dset1 - x x /slink_grp3/dset2 - x x /slink_grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_502.txt b/tools/h5diff/testfiles/h5diff_502.txt deleted file mode 100644 index d3de6e5..0000000 --- a/tools/h5diff/testfiles/h5diff_502.txt +++ /dev/null @@ -1,36 +0,0 @@ - -group1 group2 ---------------------------------------- - x - x / - x x /dset1 - x x /dset2 - x x /dset3 - x /elink_grp1 - x /elink_grp2 - x /elink_grp3 - x /grp1 - x /grp1/dset1 - x /grp1/grp2 - x /grp1/grp2/dset1 - x /grp1/grp2/dset2 - x /grp1/grp2/grp3 - x /grp1/grp2/grp3/dset1 - x /grp1/grp2/grp3/dset2 - x /grp1/grp2/grp3/dset3 - x /grp10 - x /grp10/dset4 - x /grp10/dset5 - x /grp10/elink_grp_circle - x /slink_grp1 - x /slink_grp10 - x /slink_grp2 - x /slink_grp3 - -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_503.txt b/tools/h5diff/testfiles/h5diff_503.txt deleted file mode 100644 index cf01598..0000000 --- a/tools/h5diff/testfiles/h5diff_503.txt +++ /dev/null @@ -1,32 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /grp2 - x x /grp2/dset1 - x x /grp2/dset2 - x x /grp2/grp3 - x x /grp2/grp3/dset1 - x x /grp2/grp3/dset2 - x x /grp2/grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_504.txt b/tools/h5diff/testfiles/h5diff_504.txt deleted file mode 100644 index 6cf43b3..0000000 --- a/tools/h5diff/testfiles/h5diff_504.txt +++ /dev/null @@ -1,19 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /dset2 - x /dset3 - x /grp3 - x /grp3/dset1 - x /grp3/dset2 - x /grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_505.txt b/tools/h5diff/testfiles/h5diff_505.txt deleted file mode 100644 index 607b99b..0000000 --- a/tools/h5diff/testfiles/h5diff_505.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_GROUP and is of type H5G_LINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_506.txt b/tools/h5diff/testfiles/h5diff_506.txt deleted file mode 100644 index efef9a7..0000000 --- a/tools/h5diff/testfiles/h5diff_506.txt +++ /dev/null @@ -1,26 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /dset2 - x x /grp3 - x x /grp3/dset1 - x x /grp3/dset2 - x x /grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_507.txt b/tools/h5diff/testfiles/h5diff_507.txt deleted file mode 100644 index 06b7fe6..0000000 --- a/tools/h5diff/testfiles/h5diff_507.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_GROUP and is of type H5G_UDLINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_508.txt b/tools/h5diff/testfiles/h5diff_508.txt deleted file mode 100644 index 9796345..0000000 --- a/tools/h5diff/testfiles/h5diff_508.txt +++ /dev/null @@ -1,32 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /grp2 - x x /grp2/dset1 - x x /grp2/dset2 - x x /grp2/grp3 - x x /grp2/grp3/dset1 - x x /grp2/grp3/dset2 - x x /grp2/grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_509.txt b/tools/h5diff/testfiles/h5diff_509.txt deleted file mode 100644 index 2e3e87a..0000000 --- a/tools/h5diff/testfiles/h5diff_509.txt +++ /dev/null @@ -1,6 +0,0 @@ -Not comparable: is of type H5G_LINK and is of type H5G_UDLINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_51.txt b/tools/h5diff/testfiles/h5diff_51.txt deleted file mode 100644 index 621ba2a..0000000 --- a/tools/h5diff/testfiles/h5diff_51.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset1a dset1b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_510.txt b/tools/h5diff/testfiles/h5diff_510.txt deleted file mode 100644 index 9d92768..0000000 --- a/tools/h5diff/testfiles/h5diff_510.txt +++ /dev/null @@ -1,32 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset1 - x x /grp2 - x x /grp2/dset1 - x x /grp2/dset2 - x x /grp2/grp3 - x x /grp2/grp3/dset1 - x x /grp2/grp3/dset2 - x x /grp2/grp3/dset3 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_511.txt b/tools/h5diff/testfiles/h5diff_511.txt deleted file mode 100644 index 4bac100..0000000 --- a/tools/h5diff/testfiles/h5diff_511.txt +++ /dev/null @@ -1,24 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset4 - x x /dset5 - x x /elink_grp_circle - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -external link: and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_512.txt b/tools/h5diff/testfiles/h5diff_512.txt deleted file mode 100644 index 23fbc12..0000000 --- a/tools/h5diff/testfiles/h5diff_512.txt +++ /dev/null @@ -1,53 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset4 - x x /dset5 - x x /elink_grp_circle - x x /elink_grp_circle/dset4 - x x /elink_grp_circle/dset5 - x x /elink_grp_circle/elink_grp_circle - x x /elink_grp_circle/elink_grp_circle/dset4 - x x /elink_grp_circle/elink_grp_circle/dset5 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 2 3 1 -[ 0 3 ] 2 3 1 -[ 1 0 ] 2 3 1 -[ 1 2 ] 2 3 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_513.txt b/tools/h5diff/testfiles/h5diff_513.txt deleted file mode 100644 index b0af15d..0000000 --- a/tools/h5diff/testfiles/h5diff_513.txt +++ /dev/null @@ -1,3 +0,0 @@ -link : and -1 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_514.txt b/tools/h5diff/testfiles/h5diff_514.txt deleted file mode 100644 index f8e16e9..0000000 --- a/tools/h5diff/testfiles/h5diff_514.txt +++ /dev/null @@ -1,53 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /dset4 - x x /dset5 - x x /elink_grp_circle - x x /elink_grp_circle/dset4 - x x /elink_grp_circle/dset5 - x x /elink_grp_circle/elink_grp_circle - x x /elink_grp_circle/elink_grp_circle/dset4 - x x /elink_grp_circle/elink_grp_circle/dset5 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 2 3 1 -[ 0 3 ] 2 3 1 -[ 1 0 ] 2 3 1 -[ 1 2 ] 2 3 1 -4 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -size: [2x4] [2x4] -position dset5 dset5 difference ------------------------------------------------------------- -[ 0 1 ] 3 2 1 -[ 0 3 ] 3 2 1 -[ 1 0 ] 3 2 1 -[ 1 2 ] 3 2 1 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_515.txt b/tools/h5diff/testfiles/h5diff_515.txt deleted file mode 100644 index 263441d..0000000 --- a/tools/h5diff/testfiles/h5diff_515.txt +++ /dev/null @@ -1,27 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /g1 - x x /g1/g2 - x /g1/g2/g3 - x /g1/g2/g3/dset1 - x /g1/g2/g3/g4 - x /g1/g2/g3/g4/dset2 - x x /soft_dset1 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -Not comparable: is of type H5G_GROUP and is of type H5G_UDLINK -link : and -0 differences found --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_516.txt b/tools/h5diff/testfiles/h5diff_516.txt deleted file mode 100644 index 32f4bd5..0000000 --- a/tools/h5diff/testfiles/h5diff_516.txt +++ /dev/null @@ -1,32 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /g1 - x x /g1/g2 - x x /g1/g2/g3 - x x /g1/g2/g3/dset1 - x x /g1/g2/g3/g4 - x x /g1/g2/g3/g4/dset2 - x x /soft_dset1 - -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_517.txt b/tools/h5diff/testfiles/h5diff_517.txt deleted file mode 100644 index 91c69fb..0000000 --- a/tools/h5diff/testfiles/h5diff_517.txt +++ /dev/null @@ -1,18 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /g2 - x /g2/g3 - x /g2/g3/dset1 - x /g2/g3/g4 - x /g2/g3/g4/dset2 - -group : and -0 differences found -Not comparable: is of type H5G_GROUP and is of type H5G_UDLINK --------------------------------- -Some objects are not comparable --------------------------------- -Use -c for a list of objects without details of differences. -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_518.txt b/tools/h5diff/testfiles/h5diff_518.txt deleted file mode 100644 index f4761ad..0000000 --- a/tools/h5diff/testfiles/h5diff_518.txt +++ /dev/null @@ -1,23 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /g2 - x x /g2/g3 - x x /g2/g3/dset1 - x x /g2/g3/g4 - x x /g2/g3/g4/dset2 - -group : and -0 differences found -group : and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -group : and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_52.txt b/tools/h5diff/testfiles/h5diff_52.txt deleted file mode 100644 index 6667659..0000000 --- a/tools/h5diff/testfiles/h5diff_52.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset2a dset2b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_53.txt b/tools/h5diff/testfiles/h5diff_53.txt deleted file mode 100644 index 458d166..0000000 --- a/tools/h5diff/testfiles/h5diff_53.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset3a dset4b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_530.txt b/tools/h5diff/testfiles/h5diff_530.txt deleted file mode 100644 index 73d736e..0000000 --- a/tools/h5diff/testfiles/h5diff_530.txt +++ /dev/null @@ -1,35 +0,0 @@ - -group1 group2 ---------------------------------------- - x x - x x /Compound_dset1 - x x /Compound_dset2 - x x /Compound_dset3 - x x /Compound_dset4 - x x /Compound_dset5 - x x /Compound_dset6 - x x /Compound_dset7 - x x /Compound_dset8 - x x /Compound_dset9 - -group : and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -dataset: and -0 differences found -EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_54.txt b/tools/h5diff/testfiles/h5diff_54.txt deleted file mode 100644 index 2ca60f8..0000000 --- a/tools/h5diff/testfiles/h5diff_54.txt +++ /dev/null @@ -1,10 +0,0 @@ -dataset: and -size: [3x2] [3x2] -position dset4a dset4b difference ------------------------------------------------------------- -[ 1 0 ] 1 3 2 -[ 1 1 ] 1 4 3 -[ 2 0 ] 1 5 4 -[ 2 1 ] 1 6 5 -4 differences found -EXIT CODE: 1 diff --git a/tools/h5diff/testfiles/h5diff_540.txt b/tools/h5diff/testfiles/h5diff_540.txt deleted file mode 100644 index a6903c8..0000000 --- a/tools/h5diff/testfiles/h5diff_540.txt +++ /dev/null @@ -1,86 +0,0 @@ - -file1 file2 ---------------------------------------- - x x / - x x /dset1 - x x /dset2 - x x /dset3 - x x /dset4 - -group : and -0 differences found -attribute: > and > -size: [2] [2] -position attr1 of attr1 of difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -8 differences found -dataset: and -size: [2] [2] -position dset1 dset1 difference ------------------------------------------------------------- -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 0 ] 0 5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -[ 1 ] 10 15 5 -[ 1 ] 10.5 15.5 5 -8 differences found -dataset: and -size: [2] [2] -position dset2 dset2 difference ------------------------------------------------------------- -[ 0 ]