summaryrefslogtreecommitdiffstats
path: root/PC/dllbase_nt.txt
Commit message (Expand)AuthorAgeFilesLines
* Mark Hammond:Guido van Rossum2000-04-211-1/+10
* Mark Hammond: new winreg module; updated dllbase file.Guido van Rossum2000-03-281-8/+14
* Added dllbase_nt.txt and python_nt.rc;Guido van Rossum1996-08-231-0/+38
d_coll_io_merge'>inactive/multi_rd_wd_coll_io_merge Mirror from: https://github.com/HDFGroup/hdf5.git
summaryrefslogtreecommitdiffstats
path: root/doc/html
diff options
context:
space:
mode:
authorFrank Baker <fbaker@hdfgroup.org>2005-07-19 17:28:56 (GMT)
committerFrank Baker <fbaker@hdfgroup.org>2005-07-19 17:28:56 (GMT)
commit794ba0a251af47b8e3c60afa2fe92d267e2a6b55 (patch)
treef24cea3b81ff02fa3f31c0a1c4e80fa10f4393c0 /doc/html
parentd2e92fd23610c3ccdddbbc55484e54a5a21a9252 (diff)
downloadhdf5-794ba0a251af47b8e3c60afa2fe92d267e2a6b55.zip
hdf5-794ba0a251af47b8e3c60afa2fe92d267e2a6b55.tar.gz
hdf5-794ba0a251af47b8e3c60afa2fe92d267e2a6b55.tar.bz2
[svn-r11084]
Description: All HDF5 user documentation has been moved to a separate hdf5doc/ repository, managed under Subversion. With this 'cvs commit', all files are stripped from hdf5/doc/. THIS CHANGE IS APPLIED ONLY TO THE HDF5 DEVELOPMENT BRANCH, post Release 1.6.x; it is not applied to the release branches.
Diffstat (limited to 'doc/html')
-rw-r--r--doc/html/ADGuide.html266
-rwxr-xr-xdoc/html/ADGuide/Changes.html1086
-rwxr-xr-xdoc/html/ADGuide/H4toH5Mapping.docbin238592 -> 0 bytes
-rw-r--r--doc/html/ADGuide/H4toH5Mapping.pdfbin823200 -> 0 bytes
-rw-r--r--doc/html/ADGuide/HISTORY.txt3180
-rwxr-xr-xdoc/html/ADGuide/ImageSpec.html1279
-rw-r--r--doc/html/ADGuide/Makefile.am18
-rw-r--r--doc/html/ADGuide/Makefile.in487
-rwxr-xr-xdoc/html/ADGuide/PaletteExample1.gifbin2731 -> 0 bytes
-rwxr-xr-xdoc/html/ADGuide/Palettes.fm.anc.gifbin4748 -> 0 bytes
-rw-r--r--doc/html/ADGuide/RELEASE.txt906
-rw-r--r--doc/html/Attributes.html287
-rw-r--r--doc/html/Big.html122
-rw-r--r--doc/html/Caching.html190
-rw-r--r--doc/html/Chunk_f1.gifbin3664 -> 0 bytes
-rw-r--r--doc/html/Chunk_f1.obj252
-rw-r--r--doc/html/Chunk_f2.gifbin3986 -> 0 bytes
-rw-r--r--doc/html/Chunk_f2.obj95
-rw-r--r--doc/html/Chunk_f3.gifbin6815 -> 0 bytes
-rw-r--r--doc/html/Chunk_f4.gifbin5772 -> 0 bytes
-rw-r--r--doc/html/Chunk_f5.gifbin5455 -> 0 bytes
-rw-r--r--doc/html/Chunk_f6.gifbin4949 -> 0 bytes
-rw-r--r--doc/html/Chunk_f6.obj107
-rw-r--r--doc/html/Chunking.html313
-rw-r--r--doc/html/CodeReview.html300
-rw-r--r--doc/html/Coding.html300
-rw-r--r--doc/html/Copyright.html121
-rw-r--r--doc/html/Datasets.html954
-rw-r--r--doc/html/Dataspaces.html742
-rw-r--r--doc/html/Datatypes.html3114
-rw-r--r--doc/html/DatatypesEnum.html926
-rw-r--r--doc/html/Debugging.html516
-rw-r--r--doc/html/EnumMap.gifbin1682 -> 0 bytes
-rw-r--r--doc/html/Environment.html166
-rw-r--r--doc/html/Errors.html386
-rw-r--r--doc/html/ExternalFiles.html279
-rw-r--r--doc/html/FF-IH_FileGroup.gifbin3407 -> 0 bytes
-rw-r--r--doc/html/FF-IH_FileObject.gifbin2136 -> 0 bytes
-rw-r--r--doc/html/Files.html607
-rw-r--r--doc/html/Filters.html593
-rw-r--r--doc/html/Glossary.html573
-rwxr-xr-xdoc/html/Graphics/C++.gifbin147 -> 0 bytes
-rwxr-xr-xdoc/html/Graphics/FORTRAN.gifbin194 -> 0 bytes
-rwxr-xr-xdoc/html/Graphics/Java.gifbin161 -> 0 bytes
-rw-r--r--doc/html/Graphics/Makefile.am17
-rw-r--r--doc/html/Graphics/Makefile.in485
-rwxr-xr-xdoc/html/Graphics/OtherAPIs.gifbin185 -> 0 bytes
-rw-r--r--doc/html/Groups.html404
-rw-r--r--doc/html/H5.api_map.html849
-rw-r--r--doc/html/H5.format.html5956
-rw-r--r--doc/html/H5.intro.html3161
-rw-r--r--doc/html/H5.sample_code.html123
-rw-r--r--doc/html/H5.user.PrintGen.html132
-rw-r--r--doc/html/H5.user.PrintTpg.html79
-rw-r--r--doc/html/H5.user.html243
-rw-r--r--doc/html/IH_map1.gifbin2560 -> 0 bytes
-rw-r--r--doc/html/IH_map2.gifbin2560 -> 0 bytes
-rw-r--r--doc/html/IH_map3.gifbin3072 -> 0 bytes
-rw-r--r--doc/html/IH_map4.gifbin3072 -> 0 bytes
-rw-r--r--doc/html/IH_mapFoot.gifbin1024 -> 0 bytes
-rw-r--r--doc/html/IH_mapHead.gifbin2048 -> 0 bytes
-rw-r--r--doc/html/IOPipe.html114
-rw-r--r--doc/html/Intro/IntroExamples.html2128
-rw-r--r--doc/html/Intro/Makefile.am17
-rw-r--r--doc/html/Intro/Makefile.in485
-rw-r--r--doc/html/Lib_Maint.html113
-rw-r--r--doc/html/Makefile.am43
-rw-r--r--doc/html/Makefile.in670
-rw-r--r--doc/html/MemoryManagement.html510
-rw-r--r--doc/html/MountingFiles.html427
-rw-r--r--doc/html/NCSAfooterlogo.gifbin1818 -> 0 bytes
-rw-r--r--doc/html/ObjectHeader.txt60
-rw-r--r--doc/html/PSandPDF/Makefile.am16
-rw-r--r--doc/html/PSandPDF/Makefile.in453
-rw-r--r--doc/html/PSandPDF/process.txt218
-rw-r--r--doc/html/Performance.html260
-rw-r--r--doc/html/PredefDTypes.html516
-rw-r--r--doc/html/Properties.html185
-rw-r--r--doc/html/RM_H5.html650
-rw-r--r--doc/html/RM_H5A.html954
-rw-r--r--doc/html/RM_H5D.html1584
-rw-r--r--doc/html/RM_H5E.html1689
-rw-r--r--doc/html/RM_H5F.html1970
-rw-r--r--doc/html/RM_H5Front.html409
-rw-r--r--doc/html/RM_H5G.html1521
-rw-r--r--doc/html/RM_H5I.html1187
-rw-r--r--doc/html/RM_H5P.html9783
-rw-r--r--doc/html/RM_H5R.html543
-rw-r--r--doc/html/RM_H5S.html1884
-rw-r--r--doc/html/RM_H5T.html4001
-rw-r--r--doc/html/RM_H5Z.html655
-rw-r--r--doc/html/References.html651
-rw-r--r--doc/html/TechNotes.html319
-rw-r--r--doc/html/TechNotes/Automake.html223
-rw-r--r--doc/html/TechNotes/Basic_perform.html75
-rw-r--r--doc/html/TechNotes/BigDataSmMach.html122
-rw-r--r--doc/html/TechNotes/ChStudy_1000x1000.gifbin6594 -> 0 bytes
-rw-r--r--doc/html/TechNotes/ChStudy_250x250.gifbin6914 -> 0 bytes
-rw-r--r--doc/html/TechNotes/ChStudy_499x499.gifbin10429 -> 0 bytes
-rw-r--r--doc/html/TechNotes/ChStudy_5000x1000.gifbin10653 -> 0 bytes
-rw-r--r--doc/html/TechNotes/ChStudy_500x500.gifbin6842 -> 0 bytes
-rw-r--r--doc/html/TechNotes/ChStudy_p1.gifbin6550 -> 0 bytes
-rw-r--r--doc/html/TechNotes/ChStudy_p1.obj113
-rw-r--r--doc/html/TechNotes/ChunkingStudy.html190
-rw-r--r--doc/html/TechNotes/CodeReview.html300
-rw-r--r--doc/html/TechNotes/Daily_Test_Explained.htm863
-rw-r--r--doc/html/TechNotes/DataTransformReport.htm877
-rw-r--r--doc/html/TechNotes/ExternalFiles.html279
-rw-r--r--doc/html/TechNotes/FreeLists.html205
-rw-r--r--doc/html/TechNotes/H4-H5Compat.html271
-rw-r--r--doc/html/TechNotes/HeapMgmt.html84
-rw-r--r--doc/html/TechNotes/IOPipe.html114
-rw-r--r--doc/html/TechNotes/LibMaint.html128
-rw-r--r--doc/html/TechNotes/Makefile.am25
-rw-r--r--doc/html/TechNotes/Makefile.in494
-rw-r--r--doc/html/TechNotes/MemoryMgmt.html510
-rw-r--r--doc/html/TechNotes/MoveDStruct.html66
-rw-r--r--doc/html/TechNotes/NamingScheme.html300
-rw-r--r--doc/html/TechNotes/ObjectHeader.html72
-rw-r--r--doc/html/TechNotes/RawDStorage.html274
-rw-r--r--doc/html/TechNotes/ReservedFileSpace.html29
-rwxr-xr-xdoc/html/TechNotes/SWControls.html96
-rw-r--r--doc/html/TechNotes/SymbolTables.html329
-rw-r--r--doc/html/TechNotes/TestReview.html57
-rw-r--r--doc/html/TechNotes/TestReview/H5Dget_offset.html199
-rw-r--r--doc/html/TechNotes/TestReview/H5Tget_native_type.html522
-rw-r--r--doc/html/TechNotes/ThreadSafeLibrary.html794
-rw-r--r--doc/html/TechNotes/VFL.html1543
-rw-r--r--doc/html/TechNotes/VFLfunc.html64
-rw-r--r--doc/html/TechNotes/VLTypes.html150
-rw-r--r--doc/html/TechNotes/Version.html137
-rw-r--r--doc/html/TechNotes/openmp-hdf5.c403
-rw-r--r--doc/html/TechNotes/openmp-hdf5.html67
-rw-r--r--doc/html/TechNotes/pipe1.gifbin10110 -> 0 bytes
-rw-r--r--doc/html/TechNotes/pipe1.obj136
-rw-r--r--doc/html/TechNotes/pipe2.gifbin11715 -> 0 bytes
-rw-r--r--doc/html/TechNotes/pipe2.obj168
-rw-r--r--doc/html/TechNotes/pipe3.gifbin6961 -> 0 bytes
-rw-r--r--doc/html/TechNotes/pipe3.obj70
-rw-r--r--doc/html/TechNotes/pipe4.gifbin8355 -> 0 bytes
-rw-r--r--doc/html/TechNotes/pipe4.obj92
-rw-r--r--doc/html/TechNotes/pipe5.gifbin6217 -> 0 bytes
-rw-r--r--doc/html/TechNotes/pipe5.obj52
-rwxr-xr-xdoc/html/TechNotes/shuffling-algorithm-report.pdfbin78850 -> 0 bytes
-rw-r--r--doc/html/TechNotes/version.gifbin4772 -> 0 bytes
-rw-r--r--doc/html/TechNotes/version.obj96
-rw-r--r--doc/html/Tools.html2760
-rw-r--r--doc/html/Tutor/Contents.html104
-rw-r--r--doc/html/Tutor/ContentsAdd.html54
-rw-r--r--doc/html/Tutor/ContentsAdv.html57
-rw-r--r--doc/html/Tutor/ContentsFull.html71
-rw-r--r--doc/html/Tutor/ContentsIntro.html63
-rw-r--r--doc/html/Tutor/Copyright.html117
-rw-r--r--doc/html/Tutor/Graphics/AddInfo.gifbin274 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/AdvTopics.gifbin240 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/BLANK.gifbin164 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/ChunkExt.gifbin333 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CompDTypes.gifbin315 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Copy.gifbin284 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CreateAttr.gifbin272 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CreateDset1.gifbin283 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CreateDset2.gifbin280 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CreateFile.gifbin269 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CreateGrp1.gifbin270 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/CreateGrp2.gifbin270 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Examples.gifbin297 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/FileOrg.gifbin273 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/FullTOC1.gifbin202 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/FullTOC2.gifbin206 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Glossary.gifbin238 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/H5API.gifbin237 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Intro.gifbin244 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/IntroTopics.gifbin256 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Iterate.gifbin270 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Makefile.am24
-rw-r--r--doc/html/Tutor/Graphics/Makefile.in493
-rw-r--r--doc/html/Tutor/Graphics/MountFile.gifbin254 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Quiz.gifbin202 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/QuizAns.gifbin256 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/RdWrDataset.gifbin305 -> 0 bytes
-rwxr-xr-xdoc/html/Tutor/Graphics/RefObject.gifbin292 -> 0 bytes
-rwxr-xr-xdoc/html/Tutor/Graphics/RefRegion.gifbin296 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/References.gifbin240 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/SelectElemCp.gifbin307 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/SelectHyp.gifbin308 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/TOC.gifbin306 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/TOCFull.gifbin204 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/TOCShort.gifbin215 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/TitlePg.gifbin300 -> 0 bytes
-rw-r--r--doc/html/Tutor/Graphics/Utilities.gifbin222 -> 0 bytes
-rw-r--r--doc/html/Tutor/Makefile.am25
-rw-r--r--doc/html/Tutor/Makefile.in651
-rw-r--r--doc/html/Tutor/answers.html322
-rw-r--r--doc/html/Tutor/api.html151
-rw-r--r--doc/html/Tutor/bighdf2sp.JPGbin8712 -> 0 bytes
-rw-r--r--doc/html/Tutor/compound.html234
-rw-r--r--doc/html/Tutor/crtatt.html343
-rw-r--r--doc/html/Tutor/crtdat.html497
-rw-r--r--doc/html/Tutor/crtfile.html317
-rw-r--r--doc/html/Tutor/crtgrp.html202
-rw-r--r--doc/html/Tutor/crtgrpar.html229
-rw-r--r--doc/html/Tutor/crtgrpd.html163
-rw-r--r--doc/html/Tutor/examples/Makefile.am38
-rw-r--r--doc/html/Tutor/examples/Makefile.in530
-rw-r--r--doc/html/Tutor/examples/attrexample.f9087
-rw-r--r--doc/html/Tutor/examples/chunk.f90310
-rw-r--r--doc/html/Tutor/examples/compound.f90215
-rw-r--r--doc/html/Tutor/examples/dsetexample.f9070
-rw-r--r--doc/html/Tutor/examples/fileexample.f9034
-rw-r--r--doc/html/Tutor/examples/groupexample.f9049
-rw-r--r--doc/html/Tutor/examples/grpdsetexample.f90136
-rw-r--r--doc/html/Tutor/examples/grpit.f90194
-rw-r--r--doc/html/Tutor/examples/grpsexample.f9068
-rw-r--r--doc/html/Tutor/examples/h5_compound.c153
-rw-r--r--doc/html/Tutor/examples/h5_copy.c148
-rw-r--r--doc/html/Tutor/examples/h5_crtatt.c46
-rw-r--r--doc/html/Tutor/examples/h5_crtdat.c34
-rw-r--r--doc/html/Tutor/examples/h5_crtfile.c19
-rw-r--r--doc/html/Tutor/examples/h5_crtgrp.c24
-rw-r--r--doc/html/Tutor/examples/h5_crtgrpar.c32
-rw-r--r--doc/html/Tutor/examples/h5_crtgrpd.c74
-rw-r--r--doc/html/Tutor/examples/h5_extend.c141
-rw-r--r--doc/html/Tutor/examples/h5_hyperslab.c192
-rw-r--r--doc/html/Tutor/examples/h5_iterate.c111
-rw-r--r--doc/html/Tutor/examples/h5_mount.c119
-rw-r--r--doc/html/Tutor/examples/h5_rdwt.c37
-rw-r--r--doc/html/Tutor/examples/h5_read.c136
-rw-r--r--doc/html/Tutor/examples/h5_ref2objr.c93
-rw-r--r--doc/html/Tutor/examples/h5_ref2objw.c120
-rw-r--r--doc/html/Tutor/examples/h5_ref2regr.c119
-rw-r--r--doc/html/Tutor/examples/h5_ref2regw.c112
-rw-r--r--doc/html/Tutor/examples/h5_reference.c146
-rw-r--r--doc/html/Tutor/examples/hyperslab.f90199
-rw-r--r--doc/html/Tutor/examples/java/Compound.java540
-rw-r--r--doc/html/Tutor/examples/java/Copy.java541
-rw-r--r--doc/html/Tutor/examples/java/CreateAttribute.java302
-rw-r--r--doc/html/Tutor/examples/java/CreateDataset.java210
-rw-r--r--doc/html/Tutor/examples/java/CreateFile.java83
-rw-r--r--doc/html/Tutor/examples/java/CreateFileInput.java118
-rw-r--r--doc/html/Tutor/examples/java/CreateGroup.java139
-rw-r--r--doc/html/Tutor/examples/java/CreateGroupAR.java152
-rw-r--r--doc/html/Tutor/examples/java/CreateGroupDataset.java340
-rw-r--r--doc/html/Tutor/examples/java/DatasetRdWt.java213
-rw-r--r--doc/html/Tutor/examples/java/Dependencies0
-rw-r--r--doc/html/Tutor/examples/java/HyperSlab.java590
-rw-r--r--doc/html/Tutor/examples/java/Makefile92
-rw-r--r--doc/html/Tutor/examples/java/Makefile.in91
-rw-r--r--doc/html/Tutor/examples/java/README21
-rw-r--r--doc/html/Tutor/examples/java/readme.html192
-rw-r--r--doc/html/Tutor/examples/java/runCompound.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCompound.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCopy.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCopy.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateAttribute.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateAttribute.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateDataset.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateDataset.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateFile.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateFile.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateFileInput.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateFileInput.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateGroup.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateGroup.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateGroupAR.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateGroupAR.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runCreateGroupDataset.sh17
-rw-r--r--doc/html/Tutor/examples/java/runCreateGroupDataset.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runDatasetRdWt.sh17
-rw-r--r--doc/html/Tutor/examples/java/runDatasetRdWt.sh.in17
-rw-r--r--doc/html/Tutor/examples/java/runHyperSlab.sh17
-rw-r--r--doc/html/Tutor/examples/java/runHyperSlab.sh.in17
-rw-r--r--doc/html/Tutor/examples/mountexample.f90187
-rw-r--r--doc/html/Tutor/examples/refobjexample.f90142
-rw-r--r--doc/html/Tutor/examples/refregexample.f90162
-rw-r--r--doc/html/Tutor/examples/rwdsetexample.f9078
-rw-r--r--doc/html/Tutor/examples/selectele.f90282
-rw-r--r--doc/html/Tutor/extend.html284
-rw-r--r--doc/html/Tutor/fileorg.html102
-rw-r--r--doc/html/Tutor/footer-ncsalogo.gifbin1405 -> 0 bytes
-rw-r--r--doc/html/Tutor/glossary.html261
-rw-r--r--doc/html/Tutor/img001.gifbin635 -> 0 bytes
-rw-r--r--doc/html/Tutor/img002.gifbin954 -> 0 bytes
-rw-r--r--doc/html/Tutor/img003.gifbin928 -> 0 bytes
-rw-r--r--doc/html/Tutor/img004.gifbin1644 -> 0 bytes
-rw-r--r--doc/html/Tutor/img005.gifbin1812 -> 0 bytes
-rw-r--r--doc/html/Tutor/index.html29
-rw-r--r--doc/html/Tutor/intro.html92
-rw-r--r--doc/html/Tutor/iterate.html290
-rw-r--r--doc/html/Tutor/mount.html255
-rw-r--r--doc/html/Tutor/property.html167
-rw-r--r--doc/html/Tutor/questions.html159
-rw-r--r--doc/html/Tutor/rdwt.html409
-rw-r--r--doc/html/Tutor/references.html66
-rw-r--r--doc/html/Tutor/reftoobj.html318
-rw-r--r--doc/html/Tutor/reftoreg.html366
-rw-r--r--doc/html/Tutor/select.html309
-rw-r--r--doc/html/Tutor/selectc.html265
-rw-r--r--doc/html/Tutor/software.html85
-rw-r--r--doc/html/Tutor/title.html105
-rw-r--r--doc/html/Tutor/util.html85
-rw-r--r--doc/html/Version.html137
-rw-r--r--doc/html/chunk1.gifbin5111 -> 0 bytes
-rw-r--r--doc/html/chunk1.obj52
-rw-r--r--doc/html/compat.html271
-rw-r--r--doc/html/cpplus/CppInterfaces.html1437
-rw-r--r--doc/html/cpplus/CppUserNotes.docbin136192 -> 0 bytes
-rw-r--r--doc/html/cpplus/CppUserNotes.pdfbin55301 -> 0 bytes
-rw-r--r--doc/html/cpplus/Makefile.am17
-rw-r--r--doc/html/cpplus/Makefile.in485
-rw-r--r--doc/html/dataset_p1.gifbin3359 -> 0 bytes
-rw-r--r--doc/html/dataset_p1.obj32
-rw-r--r--doc/html/ddl.html579
-rw-r--r--doc/html/ed_libs/Footer.lbi5
-rw-r--r--doc/html/ed_libs/Makefile.am20
-rw-r--r--doc/html/ed_libs/Makefile.in489
-rw-r--r--doc/html/ed_libs/NavBar_ADevG.lbi18
-rw-r--r--doc/html/ed_libs/NavBar_Common.lbi17
-rw-r--r--doc/html/ed_libs/NavBar_Intro.lbi17
-rw-r--r--doc/html/ed_libs/NavBar_RM.lbi39
-rw-r--r--doc/html/ed_libs/NavBar_TechN.lbi27
-rw-r--r--doc/html/ed_libs/NavBar_UG.lbi40
-rw-r--r--doc/html/ed_libs/styles_Format.lbi18
-rw-r--r--doc/html/ed_libs/styles_Gen.lbi18
-rw-r--r--doc/html/ed_libs/styles_Index.lbi18
-rw-r--r--doc/html/ed_libs/styles_Intro.lbi18
-rw-r--r--doc/html/ed_libs/styles_RM.lbi19
-rw-r--r--doc/html/ed_libs/styles_UG.lbi18
-rw-r--r--doc/html/ed_styles/FormatElect.css35
-rw-r--r--doc/html/ed_styles/FormatPrint.css58
-rw-r--r--doc/html/ed_styles/GenElect.css35
-rw-r--r--doc/html/ed_styles/GenPrint.css58
-rw-r--r--doc/html/ed_styles/IndexElect.css35
-rw-r--r--doc/html/ed_styles/IndexPrint.css58
-rw-r--r--doc/html/ed_styles/IntroElect.css35
-rw-r--r--doc/html/ed_styles/IntroPrint.css58
-rw-r--r--doc/html/ed_styles/Makefile.am19
-rw-r--r--doc/html/ed_styles/Makefile.in488
-rw-r--r--doc/html/ed_styles/RMelect.css39
-rw-r--r--doc/html/ed_styles/RMprint.css58
-rw-r--r--doc/html/ed_styles/UGelect.css35
-rw-r--r--doc/html/ed_styles/UGprint.css58
-rw-r--r--doc/html/extern1.gifbin1989 -> 0 bytes
-rw-r--r--doc/html/extern1.obj40
-rw-r--r--doc/html/extern2.gifbin4054 -> 0 bytes
-rw-r--r--doc/html/extern2.obj108
-rw-r--r--doc/html/fortran/F90Flags.html332
-rw-r--r--doc/html/fortran/F90UserNotes.html141
-rw-r--r--doc/html/fortran/Makefile.am17
-rw-r--r--doc/html/fortran/Makefile.in485
-rw-r--r--doc/html/group_p1.gifbin3696 -> 0 bytes
-rw-r--r--doc/html/group_p1.obj85
-rw-r--r--doc/html/group_p2.gifbin3524 -> 0 bytes
-rw-r--r--doc/html/group_p2.obj57
-rw-r--r--doc/html/group_p3.gifbin3354 -> 0 bytes
-rw-r--r--doc/html/group_p3.obj59
-rw-r--r--doc/html/h5s.examples347
-rw-r--r--doc/html/hdf2.jpgbin3034 -> 0 bytes
-rw-r--r--doc/html/heap.txt72
-rw-r--r--doc/html/index.html308
-rw-r--r--doc/html/move.html66
-rw-r--r--doc/html/ph5design.html77
-rw-r--r--doc/html/ph5example.c1018
-rw-r--r--doc/html/ph5implement.txt27
-rw-r--r--doc/html/pipe1.gifbin10110 -> 0 bytes
-rw-r--r--doc/html/pipe1.obj136
-rw-r--r--doc/html/pipe2.gifbin11715 -> 0 bytes
-rw-r--r--doc/html/pipe2.obj168
-rw-r--r--doc/html/pipe3.gifbin6961 -> 0 bytes
-rw-r--r--doc/html/pipe3.obj70
-rw-r--r--doc/html/pipe4.gifbin8355 -> 0 bytes
-rw-r--r--doc/html/pipe4.obj92
-rw-r--r--doc/html/pipe5.gifbin6217 -> 0 bytes
-rw-r--r--doc/html/pipe5.obj52
-rw-r--r--doc/html/review1.html283
-rw-r--r--doc/html/review1a.html252
-rw-r--r--doc/html/storage.html274
-rw-r--r--doc/html/symtab313
-rw-r--r--doc/html/version.gifbin4772 -> 0 bytes
-rw-r--r--doc/html/version.obj96
379 files changed, 0 insertions, 103212 deletions
diff --git a/doc/html/ADGuide.html b/doc/html/ADGuide.html
deleted file mode 100644
index 5ac4d71..0000000
--- a/doc/html/ADGuide.html
+++ /dev/null
@@ -1,266 +0,0 @@
-<html>
- <head>
- <title>
- HDF5 Application Developer's Guide
- </title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Gen.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/GenElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><center>
-<h1>HDF5 Application Developer's Guide</h1>
-</center>
-
-
-<center>
-<table border=0 width=80%>
-
-
- <tr><td valign=top colspan=3>
- These documents provide information of particular interest to
- developers of applications that employ the HDF5 library.
- <p>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
-<!--
- <tr><td valign=top><a href="XML_DTD.html">The XML DTD </a>
- <br>&nbsp;&nbsp;&nbsp;<a href="XML_DTD.html">for HDF5</a>
- </td><td></td><td valign=top>The standard HDF5 XML DTD and
- design notes.
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
--->
-
- <tr><td valign=top width=35%><a href="ADGuide/Changes.html">
- HDF5 Library Changes</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="ADGuide/Changes.html">from Release to Release</a>
- </td><td></td><td valign=top>A summary of changes in the HDF5
- library
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/SuppConfigFeats.html" target="External">
- Supported Configuration</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/SuppConfigFeats.html" target="External">Features Summary</a>
- </td><td></td><td valign=top>A summary of configuration features
- supported in this release
- &nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="ADGuide/ImageSpec.html">
- HDF5 Image and</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="ADGuide/ImageSpec.html">Palette Specification</a>
- </td><td></td><td valign=top>A specification for the implementation
- of images and palettes in HDF5 applications
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="ADGuide/H4toH5Mapping.pdf">
- Mapping HDF4 Objects</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="ADGuide/H4toH5Mapping.pdf">to HDF5 Objects</a>
- </td><td></td><td valign=top>Guidelines for translating
- HDF4 file objects into valid HDF5 file objects&nbsp;&nbsp;
- <i>(PDF format only)</i>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Fill_Values.html" target="External">
- Fill Value and Space</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Fill_Values.html" target="External">Allocation Issues</a>
- </td><td></td><td valign=top>A summary of HDF5 fill value and storage allocation issues&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Fill_Behavior.html" target="External">
- Fill Value and Space</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Fill_Behavior.html" target="External">Allocation Behavior</a>
- </td><td></td><td valign=top>A table summarizing of the behavioral interactions
- of HDF5 fill value and storage allocation settings&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/SZIP/index.html" target="External">
- SZIP Compression</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/SZIP/index.html" target="External">
- in HDF5</a>
- </td><td></td><td valign=top>A description of SZIP compression in HDF5,
- <code>H5Pset_szip</code>, terms of use and copyright notice,
- and references&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Shuffle_Perf.pdf" target="External">
- Shuffle Performance</a>
- </td><td></td><td valign=top>An analysis of bzip and gzip compression
- performance in HDF5 with and without the shuffle filter,
- <code>H5Pset_shuffle</code>&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Generic_Props.html" target="External">
- Generic Properties</a>
- </td><td></td><td valign=top>An overview of and the motivation for
- the implementation and use of generic properties in HDF5&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Checksum/ChecksumProposal.htm" target="External">
- Error-detecting Codes</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Checksum/ChecksumProposal.htm" target="External">
- for HDF5</a>
- </td><td></td><td valign=top>A discussion of error-detection codes,
- e.g., checksums, in HDF5&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td valign=top width=35%><a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Checksum/EDC_spec.htm" target="External">
- Fletcher32 Checksum</a>
- <br>&nbsp;&nbsp;&nbsp;
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/H5Checksum/EDC_spec.htm" target="External">
- Design and Spec</a>
- </td><td></td><td valign=top>Design, API function specification, and test
- for the Fletcher32 checksum implementation in HDF5&nbsp;&nbsp;
- <em>(external link)</em>
- </td></tr>
-
- <tr><td colspan=3>&nbsp;</td></tr>
-
- <tr><td colspan=3>
- <hr>
- The HDF5 source code, as distributed to users and developers,
- contains two additional files that will be of interest to readers
- of this document. Both files are located at the top level of the
- HDF5 source code tree and are duplicated here for your reference:
- </td></tr>
-
- <tr><td valign=top>
- <a href="ADGuide/RELEASE.txt" target="ExtWin">RELEASE.txt</a>
- </td><td></td><td valign=top>
- Technical notes regarding this release
- </td></tr>
-
- <tr><td valign=top>
- <a href="ADGuide/HISTORY.txt" target="ExtWin">HISTORY.txt</a>
- </td><td></td><td valign=top>
- A release-by-release history of the HDF5 library
- </td></tr>
-
- </td></tr>
-
-<!--
- <tr><td valign=top><a href="xxx.html">xxx</a>
- <br>&nbsp;&nbsp;&nbsp;<a href="xxx.html">xxx</a>
- </td><td></td><td valign=top>xxx
- <br>&nbsp;&nbsp;&nbsp;
- xxx
- </td></tr>
--->
-
-
-</table>
-</center>
-
-<br>
-<br>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><address>
-<table width=100% border=0>
-<tr><td align=left valign=top>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem -->
-
-Last modified: 3 July 2003
-
-</td>
-<td align=right valign=top>
-<a href="Copyright.html">Copyright</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-
-</body>
-</html>
diff --git a/doc/html/ADGuide/Changes.html b/doc/html/ADGuide/Changes.html
deleted file mode 100755
index 813da28..0000000
--- a/doc/html/ADGuide/Changes.html
+++ /dev/null
@@ -1,1086 +0,0 @@
-<html>
- <head>
- <title>HDF5 Software Changes</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Gen.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="../ed_styles/GenElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="../RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="../ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><center>
-<h1>HDF5 Software Changes from Release to Release</h1>
-</center>
-
-<!-- Document API CHANGES ONLY in this file. -->
-
-This document is intended to assist application developers who must keep
-an application synchronized with the HDF5 library or related software.
-
-
-<h2>Release 1.7.x (current release) versus Release 1.6</h2>
-
-<dir>
-
- <h3>Deleted Functions</h3>
- The following functions are removed from HDF5 Release 1.7.x as the GASS
- virtual file driver has been retired.
-
- <dir>
- <table border=0>
- <tr valign="top" align="left"><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<code>H5Pget_fapl_gass</code>
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<code>H5Pset_fapl_gass</code>
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
- </td></tr>
- </table>
- </dir>
-</dir>
-<p>&nbsp;
-
-<h2>Release 1.6.0 (current release) versus Release 1.4.5</h2>
-
-<dir>
-
-This section lists the API-level changes that have been made in the
-transition from the HDF5 Release 1.4.<i>x</i> series to Release 1.6.0.
-
-
- <h3>New Functions and Tools</h3>
- <dl>
- <dt>The following functions are new for Release 1.6.0 and are included in the
- <a href="../RM_H5Front.html"><cite>HDF5 Reference Manual</cite></a>.
-
-<dd>
-<table border="0">
- <tr>
- <td align="left" valign="top"><code>H5Dget_offset</code></td>
- <td align="left" valign="top"><em>hsize_t</em> <code>H5Dget_offset</code> (<em>hid_t </em><code>dset_id</code>)</td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Dget_space_status</code></td>
- <td align="left" valign="top"><em>hid_t</em> <code>H5Dget_space_status</code> (<em>hid_t</em>
- <code>dset_id</code>, <em>H5D_space_status_t *</em><code>status</code>)
- </td>
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Fget_obj_ids</code></td>
- <td align="left" valign="top">
- <em>int </em><code>H5Fget_obj_ids</code> (<em>hid_t</em> <code>file_id</code>,
- <em>unsigned int</em> <code>types</code>,
- <em>int</em> <code>max_objs</code>, <em>hid_t *</em><code>obj_id_list</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Fget_vfd_handle</code></td>
- <td align="left" valign="top">
- <em>herr_t </em><code>H5Fget_vfd_handle</code> (<em>hid_t</em> <code>file_id</code>,
- <em>hid_t</em> <code>fapl_id</code>, <em>void *</em><code>file_handle</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Gget_num_objs</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Gget_num_objs</code> (<em>hid_t</em> <code>loc_id</code>,
- <em>hsize_t* </em> <code>num_obj</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Gget_objname_by_idx</code></td>
- <td align="left" valign="top">
- <em>ssize_t</em> <code>H5Gget_objname_by_idx</code> (<em>hid_t</em> <code>group_id</code>,
- <em>hsize_t</em> <code>idx</code>, <em>char *</em><code>name</code>,
- <em>size_t*</em> <code>size</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Gget_objtype_by_idx</code></td>
- <td align="left" valign="top">
- <em>int</em> <code>H5Gget_objtype_by_idx</code> (<em>hid_t</em> <code>group_id</code>,
- <em>hsize_t</em> <code>idx</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Iget_name</code></td>
- <td align="left" valign="top">
- <em>ssize_t</em> <code>H5Iget_name</code> (<em>hid_t</em> <code>obj_id</code>,
- <em>char *</em><code>name</code>, <em>size_t</em> <code>size</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pall_filters_avail</code></td>
- <td align="left" valign="top">
- <em>htri_t</em> <code>H5Pall_filters_avail</code> (<em>hid_t</em> <code>dcpl_id</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pfill_value_defined</code></td>
- <td align="left" valign="top">
- <em>herr_t </em><code>H5Pfill_value_defined</code> (<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_fill_value_t *</em><code>status</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_alloc_time</code></td>
- <td align="left" valign="top">
- <em>herr_t </em><code>H5Pget_alloc_time</code> (<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_alloc_time_t *</em><code>alloc_time</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_edc_check</code></td>
- <td align="left" valign="top">
- <em>H5Z_EDC_t</em> <code>H5Pget_edc_check</code> (<em>hid_t</em>
- <code>plist</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_family_offset</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pget_family_offset</code> (<em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t *</em><code>offset</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_fapl_mpiposix</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pget_fapl_mpiposix</code> (<em>hid_t</em> <code>fapl_id</code>,
- <em>MPI_Comm *</em><code>comm</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_fill_time</code></td>
- <td align="left" valign="top">
- <em>herr_t </em><code>H5Pget_fill_time</code> (<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_fill_time_t *</em><code>fill_time</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_filter_by_id</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pget_filter_by_id</code> (<em>hid_t</em> <code>plist_id</code>,
- <em>H5Z_filter_t</em> <code>filter</code>, <em>unsigned int *</em><code>flags</code>,
- <em>size_t *</em><code>cd_nelmts</code>, <em>unsigned int</em> <code>cd_values[]</code>,
- <em>size_t</em> <code>namelen</code>, <em>char *</em><code>name[]</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_hyper_vector_size</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pget_hyper_vector_size</code> (<em>hid_t</em> <code>dxpl_id</code>,
- <em>size_t *</em><code>vector_size</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pget_multi_type</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pget_multi_type</code> (<em>hid_t</em> <code>fapl_id</code>,
- <em>H5FD_mem_t *</em><code>type</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pmodify_filter</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pmodify_filter</code> (<em>hid_t</em> <code>plist</code>,
- <em>H5Z_filter_t</em> <code>filter</code>, <em>unsigned int</em> <code>flags</code>,
- <em>size_t</em> <code>cd_nelmts</code>, <em>const unsigned int</em> <code>cd_values[]</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_alloc_time</code></td>
- <td align="left" valign="top">
- <em>herr_t </em><code>H5Pset_alloc_time</code> (<em>hid_t</em>
- <code>plist_id</code>, <em>H5D_alloc_time_t</em> <code>alloc_time</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_edc_check</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_edc_check</code> (<em>hid_t</em>
- <code>plist</code>, <em>H5Z_EDC_t</em> <code>check</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_family_offset</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_family_offset</code> (<em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t</em> <code>offset</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_fapl_mpiposix</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_fapl_mpiposix</code> (<em>hid_t</em> <code>fapl_id</code>,
- <em>MPI_Comm</em> <code>comm</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_fill_time</code></td>
- <td align="left" valign="top">
- <em>herr_t </em><code>H5Pset_fill_time</code> (<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_fill_time_t</em> <code>fill_time</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_filter</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_filter</code>
- (<em>hid_t</em> <code>plist</code>, <em>H5Z_filter_t</em> <code>filter</code>,
- <em>unsigned int</em> <code>flags</code>, <em>size_t</em> <code>cd_nelmts</code>,
- <em>const unsigned int</em> <code>cd_values[])</code>
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_filter_callback</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_filter_callback</code> (<em>hid_t</em>
- <code>plist</code>, <em>H5Z_filter_func_t</em> <code>func</code>,
- <em>void *</em><code>op_data</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_fletcher32</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_fletcher32</code> (<em>hid_t</em>
- <code>plist</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_hyper_vector_size</code>&nbsp;</td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_hyper_vector_size</code> (<em>hid_t</em> <code>dxpl_id</code>,
- <em>size_t</em> <code>vector_size</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_multi_type</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_multi_type</code> (<em>hid_t</em> <code>fapl_id</code>,
- <em>H5FD_mem_t</em> <code>type</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_shuffle</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_shuffle</code> (<em>hid_t</em> <code>plist_id</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Pset_szip</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Pset_szip</code> (<em>hid_t</em> <code>plist</code>,
- <em>unsigned int</em> <code>options_mask</code>, <em>unsigned int</em>
- <code>pixels_per_block</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Rget_object_type</code></td>
- <td align="left" valign="top">
- <em>int</em> <code>H5Rget_object_type</code> (<em>hid_t</em> <code>id</code>,
- <em>void *</em><code>ref</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5set_free_list_limits</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5set_free_list_limits</code> (<em>int</em> <code>reg_global_lim</code>,
- <em>int</em> <code>reg_list_lim</code>, <em>int</em> <code>arr_global_lim</code>,
- <em>int</em> <code>arr_list_lim</code>, <em>int</em> <code>blk_global_lim</code>,
- <em>int</em> <code>blk_list_lim</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Sget_select_type</code></td>
- <td align="left" valign="top">
- <em>H5S_sel_type</em> <code>H5Sget_select_type</code> (<em>hid_t</em> <code>space_id</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Tdetect_class</code></td>
- <td align="left" valign="top">
- <em>htri_t </em><code>H5Tdetect_class</code> (<em>hid_t</em> <code>dtype_id</code>,
- <em>H5T_class_t</em> <code>dtype_class</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Tget_native_type</code></td>
- <td align="left" valign="top">
- <em>hid_t</em> <code>H5Tget_native_type</code> (<em>hid_t</em> <code>type_id</code>,
- <em>H5T_direction_t</em> <code>direction</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Tis_variable_str</code></td>
- <td align="left" valign="top">
- <em>htri_t </em><code>H5Tis_variable_str</code> (<em>hid_t </em><code>dtype_id</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Zfilter_avail</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Zfilter_avail</code> (<em>H5Z_filter_t</em> <code>filter</code>)
- </td>
- </tr>
- <tr>
- <td align="left" valign="top"><code>H5Zunregister</code></td>
- <td align="left" valign="top">
- <em>herr_t</em> <code>H5Zunregister</code> (<em>H5Z_filter_t</em> <code>filter</code>)
- </td>
- </tr>
-</table>
- </dd>
- <dd>&nbsp;</dd>
-
- </dt>
- <dt>The following tools are new for Release 1.5 and are included in the
- <a href="../RM_H5Front.html"><cite>HDF5 Reference Manual</cite></a>.
- <dd><code>h5diff</code>
- <dd><code>h5import</code>
- <dd><code>h5fc</code>
- <dd><code>h5c++</code>
- <dd><code>h5perf</code>
- <dd><code>h5redeploy</code>
- </dt>
-</dl>
-
-
- <h3>Deleted Functions</h3>
- The following functions are deprecated in HDF5 Release 1.6.0.
- A backward compatibility mode is provided in this release,
- enabling these functions and other Release 1.4.x compatibility
- features, but is available only when the HDF5 library is
- configured with the flag <code>H5_WANT_H5_V1_4_COMPAT</code>.
- The backward compatibility mode is not enabled in the
- binaries distributed by NCSA.
-
- <dir>
- <table border=0>
- <tr valign="top" align="left"><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<code>H5Pset_hyper_cache</code>
-<code>H5Pget_hyper_cache</code>
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<code>H5Rget_object_type</code>
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>&nbsp;
-
-</pre>
- </td></tr>
- </table>
- </dir>
- <p>
- The above functions will eventually be removed from the HDF5
- distribution and from the <cite>HDF5 Reference Manual</cite>.
-
-
- <h3>Functions with Changed Syntax</h3>
- The following functions have changed as noted.
- <dir>
- <dl>
- <dt>C functions:
- <dt><code>H5FDflush and VFL "flush" callbacks</code>
- <dd>An extra parameter <code>closing</code> has been added to
- these functions,
- to allow the library to indicate that the file will be closed
- following the call to "flush". Actions in the "flush" call
- that are duplicated in the VFL "close" call may be omitted by
- the VFL driver.
- <dt>* <code>H5Gget_objtype_by_idx</code>
- <dd>The function return type has changed from
- <code><em>int</em></code> to
- the enumerated type <code><em>H5G_obj_t</em></code>.
- <dt>* <code>H5Pset(get)_buffer</code>
- <dd>The <code>size</code> parameter for <code>H5Pset_buffer</code>
- has changed from type <code><em>hsize_t</em></code> to
- <code><em>size_t</em></code>.
- <dd>The <code>H5Pget_buffer</code> return type has similarly
- changed from <code><em>hsize_t</em></code> to
- <code><em>size_t</em></code>.
- <dt>* <code>H5Pset(get)_cache</code>
- <dd>The <code>rdcc_nelmts</code> parameter has changed from type
- <code><em>int</em></code> to
- <code><em>size_t</em></code>.
- <dt>* <code>H5Pset_fapl_log</code>
- <dd>The <code>verbosity</code> parameter has been removed.
- <dd>Two new parameters have been added:
- <code>flags</code> of type <code><em>unsigned</em></code> and
- <code>buf_size</code> of type <code><em>size_t</em></code>.
- <dt>* <code>H5Pset(get)_fapl_mpiposix</code>
- <dd>A <code>use_gpfs</code> parameter of type
- <code><em>hbool_t</em></code> has been added.
- <dt>* <code>H5Pset(get)_sieve_buf_size</code>
- <dd>The <code>size</code> parameter has changed from type
- <code><em>hsize_t</em></code> to
- <code><em>size_t</em></code>.
- <dt>* <code>H5Pset(get)_sym_k</code>
- <dd>The <code>lk</code> parameter has changed from type
- <code><em>int</em></code> to
- <code><em>unsigned</em></code>.
- <dt>* <code>H5Sget_select_bounds</code>
- <dd>The <code>start</code> and <code>end</code> parameters have
- changed from type <code><em>hsize_t *</em></code>
- to <code><em>hssize_t *</em></code> to better match the
- rest of the dataspace API.
- <dt>* <code>H5Zregister</code>
- <dd>This function is substantially revised in Release 1.6.0 with
- a new <code>H5Z_class_t</code> struct and
- new <i>set local</i> and <i>can apply</i> callback functions.
- <dt>&nbsp;
- <dt>Fortran90 functions:
- <dt><code>h5pset(get)_fapl_core_f</code>
- <dd>The <code>backing_store</code> parameter has changed from
- <code><em>INTEGER</em></code> to <code><em>LOGICAL</em></code>
- to better match the C API.
- <dt><code>h5pset(get)_preserve_f</code>
- <dd>The <code>flag</code> parameter has changed from
- <code><em>INTEGER</em></code> to <code><em>LOGICAL</em></code>
- to better match the C API.
- </dl>
- </dir>
-
- <p>
- Backward compatibility with the Release 1.4.x syntax is available
- for the functions indicated above with a leading asterisk (*).
- The backward compatibility features are available only when the
- HDF5 library is configured with the flag
- <code>H5_WANT_H5_V1_4_COMPAT</code>,
- is not enabled in the binaries distributed by NCSA, and
- will eventually be removed from the HDF5 distribution.
-
-
- <h3>Constants with Changed Values</h3>
-
-
-</dir>
-<p>&nbsp;
-
-
-
-
-
-
-<h2>Release 1.4.5 versus Release 1.4.4</h2>
-<dir>
- <h3>C Library</h3>
- <dir>
-
- <b>Added functions:</b>
- <dir>
- <table border=0>
- <tr valign=top align=left><td>
-<pre>
-herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm);
-herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/);
-</pre>
- </td></tr>
- </table>
- </dir>
-
- <b>Changed functions:</b>
- <dir>
- The following functions have changed behavior.
- <p>
- <table border=0>
- <tr valign=top align=left><td>
- <code>H5Pset_fapl_mpio&nbsp;&nbsp;</code><br>
- <code>H5Pget_fapl_mpio</code><br>
- <code>H5Fcreate</code><br>
- <code>H5Fopen</code><br>
- <code>H5Fclose</code>
- </td><td>
- Previously, the Communicator and Info object arguments supplied
- to <code>H5Pset_fapl_mpio</code> were stored in the property with
- its handle values.
- This meant changes to the communicator or the Info object
- after calling <code>H5Pset_fapl_mpio</code> would affect the how
- the property list functioned.
- This was also the case when <code>H5Fopen/create</code> operated.
- They just stored the handle value. This is not according to the
- MPI-2 defined behavior of how Info objects should be handled.
- (MPI-2 defines Info objects must be parsed when called.)<br>
- <code>H5Pset_fapl_mpio</code> now stores a duplicate of each of
- the communicator and Info object.<br>
- <code>H5Pget_fapl_mpio</code> now returns a duplicate of its
- stored communicator and Info object.
- It is now the responsibility of the applications to free
- those objects when done.<p>
- <code>H5Fcreate</code> and <code>H5Fopen</code> also store
- a duplicate of the communicator and Info
- object supplied by the file access property List.
- <code>H5Fclose</code> frees the duplicates.<p>
- Advice to users: User applications should release the communicator and
- Info object returned by <code>H5Pget_fapl_mpio</code> when they are
- no longer needed.
- </td></tr>
- </table>
- </dir>
-
-
-
- <b>Removed functions:</b>
- <dir>
- <table border=0>
- <tr valign=top align=left><td>
-None
-<!--
-<pre>
-List deleted function(s) here. Remove forced spaces. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
--->
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<!-- List deleted function(s) here. Remove forced spaces. -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
- </td></tr>
- </table>
- </dir>
-
- There were no other public API changes in the C library for this release.
-
- </dir>
- <h3>Fortran90 Library</h3>
- <dir>
-
-
- The following missing Fortran functions were added:
-<br>
-<br>
- <code> h5get_libversion_f, h5check_version_f, h5garbage_collect_f, h5dont_atexit_f </code>
-<br>
- <code> h5tget_member_index_f, h5tvlen_create_f </code>
-<br>
- <code> h5dget_storage_size_f, h5dvlen_get_max_len_f , h5dwrite_vl_f, h5dread_vl_f</code>
-<br>
-<br>
- Only <code>integer, real</code> and
- <code>character</code> types are supported for VL datatypes.
-
- </dir>
-</dir>
-
-
-<!-- Document API CHANGES ONLY in this file. -->
-
-<h2>Release 1.4.4 versus Release 1.4.3</h2>
-<dir>
- <h3>C Library</h3>
- <dir>
-
- <b>Added functions:</b>
- <dir>
- <table border=0>
- <tr valign=top align=left><td>
-<pre>
-H5Pget_small_data_block_size
-H5Pset_small_data_block_size
-H5Tget_member_index
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<!-- List added function(s) here. Remove forced spaces. -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
- </td></tr>
- </table>
- </dir>
-
- <b>Changed functions:</b>
- <dir>
- <table border=0>
- <tr valign=top align=left><td>
-None
-<!--
-<pre>
-List deleted function(s) here. Remove forced spaces. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
--->
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<!-- List deleted function(s) here. Remove forced spaces. -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
- </td></tr>
- </table>
- </dir>
-
- <b>Removed functions:</b>
- <dir>
- <table border=0>
- <tr valign=top align=left><td>
-None
-<!--
-<pre>
-List deleted function(s) here. Remove forced spaces. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
--->
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<!-- List deleted function(s) here. Remove forced spaces. -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
- </td></tr>
- </table>
- </dir>
-
- There were no other public API changes in the C library for this release.
-
- </dir>
- <h3>Fortran90 Library</h3>
- <dir>
-
- <code>h5dwrite_f, h5dread_f, h5awrite_f, h5aread_f </code>were overloaded
- with <code>dims</code> argument to be assumed size array of type <code>INTEGER(HSIZE_T).</code>
- We recommend to use the subroutines with the new type. Module subroutines
- that accept <code>dims</code> as <code>INTEGER</code> array of size <code>7</code> will be deprecated in the 1.6.0 release.
-
- </dir>
-</dir>
-
-<h2>Release 1.4.3 versus Release 1.4.2</h2>
-<dir>
- <h3>C Library</h3>
- <dir>
-
- <b>Removed function:</b>
- <dir>
- <table border=0>
- <tr valign=top align=left><td>
-<pre>
-H5Pset_fapl_dpss </pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<!-- new deleted functions here. Remove forced spaces. -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-<!-- new deleted functions here. Remove forced spaces. -->&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</pre>
- </td></tr>
- </table>
- </dir>
-
- There were no other public API changes in the C library for this release.
-
- </dir>
- <h3>Fortran90 Library</h3>
- <dir>
-
- There were no changes to the public Fortran90 APIs for this release.
-
- </dir>
-</dir>
-
-<h2>Release 1.4.2 versus Release 1.4.1</h2>
-<dir>
- <h3>C Library</h3>
- The HDF5 Release 1.4.2 C library is a "Bugfix Release";
- there are no API changes in the underlying HDF5 library.
-
- <h3>Fortran90 Library</h3>
- The following functions in the HDF5 Release 1.4.2 Fortran90 library
- have an additional parameter, <code>dims</code>, that was not present
- in Release 1.4.1:
-
-<dir>
-<pre>
-<font color=red>h5aread_f</font>(attr_id, memtype_id, buf, dims, hdferr)
-<font color=red>h5awrite_f</font>(attr_id, memtype_id, buf, dims, hdferr)
-<font color=red>h5dread_f</font>(dset_id, mem_type_id, buf, dims, hdferr, mem_space_id, &
- file_space_id, xfer_prp)
-<font color=red>h5dwrite_f</font>(dset_id, mem_type_id, buf, dims, hdferr, mem_space_id, &
- file_space_id, xfer_prp)
-</pre>
-</dir>
-
- The <code>dims</code> parameter enables library portability
- between the UNIX and Microsoft Windows platforms.
-
-</dir>
-
-
-<h2>Release 1.4.1 versus Release 1.4.0</h2>
-<dir>
- Release 1.4.1 is a "Tools Release"; there are no API changes in the
- underlying HDF5 library.
-</dir>
-
-
-<h2>Release 1.4.0 versus Release 1.2.2</h2>
-
-<dir>
-
- Several functions were added to or removed from the HDF5 library
- in the development of Release 1.4.0.
- A few functions have been modified in minor ways.
-
- <h3>New Functions</h3>
- The following functions are new for Release 1.4.0 and are included in the
- <a href="../RM_H5Front.html"><cite>HDF5 Reference Manual</cite></a>.
-
-<dir>
-<pre>
-herr_t <font color=red>H5Dvlen_get_buf_size</font> (hid_t dataset_id, hid_t type_id,
- hid_t space_id, hsize_t *size);
-herr_t <font color=red>H5Epush</font> (const char *file, const char *func,
- unsigned line, H5E_major_t maj, H5E_minor_t min,
- const char *str);
-hid_t <font color=red>H5Pget_driver</font> (hid_t plist_id);
-void *<font color=red>H5Pget_driver_info</font> (hid_t plist_id);
-herr_t <font color=red>H5Pget_dxpl_mpio</font> (hid_t dxpl_id,
- H5FD_mpio_xfer_t *xfer_mode/*out*/);
-herr_t <font color=red>H5Pget_dxpl_multi</font> (hid_t dxpl_id,
- hid_t *memb_dxpl/*out*/);
-herr_t <font color=red>H5Pget_fapl_core</font> (hid_t fapl_id, size_t *increment/*out*/,
- hbool_t *backing_store/*out*/)
-herr_t <font color=red>H5Pget_fapl_family</font> (hid_t fapl_id,
- hsize_t *memb_size/*out*/, hid_t *memb_fapl_id/*out*/);
-herr_t <font color=red>H5Pget_fapl_mpio</font> (hid_t fapl_id, MPI_Comm *comm/*out*/,
- MPI_Info *info/*out*/);
-herr_t <font color=red>H5Pget_fapl_multi</font> (hid_t fapl_id,
- H5FD_mem_t *memb_map/*out*/, hid_t *memb_fapl/*out*/,
- char **memb_name/*out*/, haddr_t *memb_addr/*out*/,
- hbool_t *relax/*out*/);
-herr_t <font color=red>H5Pget_fapl_stream</font> (hid_t fapl_id,
- H5FD_stream_fapl_t *fapl /*out*/ );
-herr_t <font color=red>H5Pget_meta_block_size</font> (hid_t fapl_id,
- hsize_t *size/*out*/);
-herr_t <font color=red>H5Pget_sieve_buf_size</font> (hid_t fapl_id,
- hsize_t *size/*out*/);
-herr_t <font color=red>H5Pset_driver</font> (hid_t plist_id, hid_t driver_id,
- const void *driver_info);
-herr_t <font color=red>H5Pset_dxpl_mpio</font> (hid_t dxpl_id,
- H5FD_mpio_xfer_t xfer_mode);
-herr_t <font color=red>H5Pset_dxpl_multi</font> (hid_t dxpl_id,
- const hid_t *memb_dxpl);
-herr_t <font color=red>H5Pset_fapl_core</font> (hid_t fapl_id, size_t increment,
- hbool_t backing_store)
-herr_t <font color=red>H5Pset_fapl_family</font> (hid_t fapl_id, hsize_t memb_size,
- hid_t memb_fapl_id);
-herr_t <font color=red>H5Pset_fapl_log</font> (hid_t fapl_id, char *logfile,
- int verbosity);
-herr_t <font color=red>H5Pset_fapl_mpio</font> (hid_t fapl_id, MPI_Comm comm,
- MPI_Info info);
-herr_t <font color=red>H5Pset_fapl_multi</font> (hid_t fapl_id,
- const H5FD_mem_t *memb_map, const hid_t *memb_fapl,
- const char **memb_name, const haddr_t *memb_addr,
- hbool_t relax);
-herr_t <font color=red>H5Pset_fapl_sec2</font> (hid_t fapl_id);
-herr_t <font color=red>H5Pset_fapl_split</font> (hid_t fapl, const char *meta_ext,
- hid_t meta_plist_id, const char *raw_ext,
- hid_t raw_plist_id);
-herr_t <font color=red>H5Pset_fapl_stdio</font> (hid_t fapl_id);
-herr_t <font color=red>H5Pset_fapl_stream</font> (hid_t fapl_id,
- H5FD_stream_fapl_t *fapl);
-herr_t <font color=red>H5Pset_meta_block_size</font>(hid_t fapl_id, hsize_t size);
-herr_t <font color=red>H5Pset_sieve_buf_size</font>(hid_t fapl_id, hsize_t size);
-hid_t <font color=red>H5Tarray_create</font> (hid_t base, int rank, const hsize_t dims[],
- const int perm[])
-int <font color=red>H5Tget_array_dims</font> (hid_t adtype_id, hsize_t *dims[], int *perm[])
-int <font color=red>H5Tget_array_ndims</font> (hid_t adtype_id)
-</pre>
-</dir>
-
-
- <p>
- The following functions are new for Release 1.4.0, but
- are intended only for use in specialized environments.
- These are also included in the
- <a href="../RM_H5Front.html"><cite>HDF5 Reference Manual</cite></a>.
-
-<dir>
-<pre>
-herr_t <font color=red>H5Pget_fapl_dpss</font> (hid_t fapl_id);
-herr_t <font color=red>H5Pget_fapl_gass</font> (hid_t fapl_id, GASS_Info *info/*out*/);
-herr_t <font color=red>H5Pget_fapl_srb</font> (hid_t fapl_id, SRB_Info *info);
-herr_t <font color=red>H5Pset_fapl_dpss</font> (hid_t fapl_id);
-herr_t <font color=red>H5Pset_fapl_gass</font> (hid_t fapl_id, GASS_Info info);
-herr_t <font color=red>H5Pset_fapl_srb</font> (hid_t fapl_id, SRB_Info info);
-</pre>
-</dir>
-
-
- <p>
- The following functions are new for Release 1.4.0 but are intended
- only for driver development work, not for general use.
- They are listed in the
- <a href="../TechNotes/VFLfunc.html"><cite>List of VFL Functions</cite></a>
- document in the
- <a href="../TechNotes.html"><cite>HDF5 Technical Notes</cite></a>.
- They are described in detail only in the source code and
- do not appear in the <cite>HDF5 Reference Manual</cite>.
-
-<dir>
-<pre>
-haddr_t <font color=red>H5FDalloc</font> (H5FD_t *file, H5FD_mem_t type,
- hsize_t size);
-herr_t <font color=red>H5FDclose</font> (H5FD_t *file);
-int <font color=red>H5FDcmp</font> (const H5FD_t *f1, const H5FD_t *f2);
-herr_t <font color=red>H5FDflush</font> (H5FD_t *file);
-herr_t <font color=red>H5FDfree</font> (H5FD_t *file, H5FD_mem_t type,
- haddr_t addr, hsize_t size);
-haddr_t <font color=red>H5FDget_eoa</font> (H5FD_t *file);
-haddr_t <font color=red>H5FDget_eof</font> (H5FD_t *file);
-H5FD_t *<font color=red>H5FDopen</font> (const char *name, unsigned flags,
- hid_t fapl_id, haddr_t maxaddr);
-int <font color=red>H5FDquery</font> (const H5FD_t *f, unsigned long *flags);
-herr_t <font color=red>H5FDread</font> (H5FD_t *file, hid_t dxpl_id, haddr_t addr,
- hsize_t size, void *buf/*out*/);
-haddr_t <font color=red>H5FDrealloc</font> (H5FD_t *file, H5FD_mem_t type,
- haddr_t addr, hsize_t old_size, hsize_t new_size);
-hid_t <font color=red>H5FDregister</font> (const H5FD_class_t *cls);
-herr_t <font color=red>H5FDset_eoa</font> (H5FD_t *file, haddr_t eof);
-herr_t <font color=red>H5FDunregister</font> (hid_t driver_id);
-herr_t <font color=red>H5FDwrite</font> (H5FD_t *file, H5FD_mem_t type,
- hid_t dxpl_id, haddr_t addr, hsize_t size,
- const void *buf);
-</pre>
-</dir>
-
-
- <h3>Deleted Functions</h3>
- The following functions have been removed from the HDF5 library
- and from the <cite>HDF5 Reference Manual</cite>.
- <dir>
- <table>
- <tr valign=top align=left><td>
-<pre>
-H5Pget_core
-H5Pget_driver
-H5Pget_family
-H5Pget_mpi
-H5Pget_sec2
-H5Pget_split
-H5Pget_stdio
-H5Pget_xfer
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-H5Pset_core
-H5Pset_family
-H5Pset_mpi
-H5Pset_sec2
-H5Pset_split
-H5Pset_stdio
-H5Pset_xfer
-</pre>
- </td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
-<pre>
-H5RAclose
-H5RAcreate
-H5RAopen
-H5RAread
-H5RAwrite
-H5Tget_member_dims
-H5Tinsert_array
-</pre>
- </td></tr>
- </table>
- </dir>
- Note that the entire H5RA interface, an experimental interface for
- ragged arrays, has been removed from the library.
-
-
- <h3>Functions with Changed Syntax</h3>
- The following functions have changed slightly.
- <dir>
- <dl>
- <dt><code>H5Pget_buffer</code>
- <dd>Return type has changed to <em>hsize_t</em>.
- <dt><code>H5Pset_buffer</code>
- <dd>The type of the <code>size</code> parameter has changed
- to <em>hsize_t</em>.
- <dt><code>H5Tconvert</code>
- <dd>The type of the <code>nelmts</code> parameter has changed
- to <em>hsize_t</em>.
- </dl>
- </dir>
-
- <h3>Constants with Changed Values</h3>
- The values of the constants <code>H5P_DEFAULT</code> and
- <code>H5S_ALL</code> have been changed from <code>-2</code>
- to <code>0</code>.
- These default values had to be special-cased in situations where
- they could be returned to distinguish them from error values.
-
-</dir>
-<p>&nbsp;
-
-<h2>Migration from Release 1.2.2 to Release 1.4.<em>x</em></h2>
-
-<dir>
- <h3>H5Tinsert_array</h3>
- The functionality of <code>H5Tinsert_array</code> has been replaced by
- <code>H5Tarray_create</code>.
- Here is an example of changing code from <code>H5Tinsert_array</code>
- to <code>H5Tarray_create</code>.
-<pre>
-V1.2.2
-{
- struct tmp_struct {
- int a;
- float f[3];
- double d[2][4];
- };
- size_t f_dims[1]={3};
- size_t d_dims[2]={2,4};
- hid_t compound_type;
-
- compound_type=H5Tcreate(H5T_COMPOUND,sizeof(struct tmp_struct));
- H5Tinsert(compound_type,"a",HOFFSET(struct tmp_struct,a),H5T_NATIVE_INT);
- H5Tinsert_array(compound_type,"f",HOFFSET(struct tmp_struct,f),1,f_dims,NULL,H5T_NATIVE_FLOAT);
- H5Tinsert_array(compound_type,"d",HOFFSET(struct tmp_struct,d),2,d_dims,NULL,H5T_NATIVE_DOUBLE);
-}
-
-V1.4.0
-{
- struct tmp_struct {
- int a;
- float f[3];
- double d[2][4];
- };
- hsize_t f_dims[1]={3};
- hsize_t d_dims[2]={2,4};
- hid_t compound_type;
- hid_t array_type;
-
- compound_type=H5Tcreate(H5T_COMPOUND,sizeof(struct tmp_struct));
- H5Tinsert(compound_type,"a",HOFFSET(struct tmp_struct,a),H5T_NATIVE_INT);
- array_type=H5Tarray_create(H5T_NATIVE_FLOAT,1,f_dims,NULL);
- H5Tinsert(compound_type,"f",HOFFSET(struct tmp_struct,f),array_type);
- H5Tclose(array_type);
- array_type=H5Tarray_create(H5T_NATIVE_DOUBLE,2,d_dims,NULL);
- H5Tinsert(compound_type,"d",HOFFSET(struct tmp_struct,d),array_type);
- H5Tclose(array_type);
-}
-
-</pre>
-</dir>
-
-
-<h2>This and Prior Releases: The RELEASE.txt and HISTORY.txt Files</h2>
-
-<dir>
- The HDF5 source code, as distributed to users and developers,
- contains two files that will be of interest to readers of this
- document. Both files are located at the top level of the
- source code tree and are duplicated here for your reference:
- <p>
- <dl>
- <dt><a href="RELEASE.txt" target="ExtWin">RELEASE.txt</a>
- <dd>Technical notes regarding the release, including
- new features and the changes since the last release,
- notes regarding new or revised utilities,
- notes regarding alternative language APIs (Fortran90, C++),
- bugs fixed since the last release,
- platforms on which the release has been tested, and
- known problems.
- This is the file commonly known as "the release notes."
- <p>
- <dt><a href="HISTORY.txt" target="ExtWin">HISTORY.txt</a>
- <dd>A release-by-release history of the HDF5 library.
- This file is a compiled set of the release notes
- (i.e., the RELEASE.txt files) from prior releases.
- <dl>
-</dir>
-
-
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="../RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="../ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><!-- Created: Spring 1999 -->
-<!-- hhmts start -->
-Last modified: 3 March 2005
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/ADGuide/H4toH5Mapping.doc b/doc/html/ADGuide/H4toH5Mapping.doc
deleted file mode 100755
index 2f9340f..0000000
--- a/doc/html/ADGuide/H4toH5Mapping.doc
+++ /dev/null
Binary files differ
diff --git a/doc/html/ADGuide/H4toH5Mapping.pdf b/doc/html/ADGuide/H4toH5Mapping.pdf
deleted file mode 100644
index 548912b..0000000
--- a/doc/html/ADGuide/H4toH5Mapping.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/html/ADGuide/HISTORY.txt b/doc/html/ADGuide/HISTORY.txt
deleted file mode 100644
index b6f2585..0000000
--- a/doc/html/ADGuide/HISTORY.txt
+++ /dev/null
@@ -1,3180 +0,0 @@
-HDF5 HISTORY
-============
-This file contains history of the HDF5 libraries releases
-
-CONTENTS
-
-13. Release Information for hdf5-1.4.5
-12. Release Information for hdf5-1.4.4
-11. Release Information for hdf5-1.4.3
-10. Release Information for hdf5-1.4.2
-9. Release Information for hdf5-1.4.1
-8. Release Information for hdf5-1.4.0
-7. Release Information for hdf5-1.2.2
-6. Release Information for hdf5-1.2.1
-5. Release Information for hdf5-1.2.0
-4. Changes from Release 1.0.0 to Release 1.0.1
-3. Changes from the Beta 1.0.0 Release to Release 1.0.0
-2. Changes from the Second Alpha 1.0.0 Release to the Beta 1.0.0 Release
-1. Changes from the First Alpha 1.0.0 Release to the
- Second Alpha 1.0.0 Release
-
-[Search on the string '%%%%' for per-release section breaks.]
-
------------------------------------------------------------------------
-%%%%1.4.5%%%% Release Information for hdf5-1.4.5 (02/February/03)
-
-
-13. Release information for HDF5 version 1.4.5
-==============================================================================
-
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.4.4 and
-HDF5-1.4.5, and contains information on the platforms tested and
-known problems in HDF5-1.4.5. For additional information check the
-HISTORY.txt file in the HDF5 source.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information, see the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- New Features
-- Bug Fixes since HDF5-1.4.4
-- Performance Improvements
-- Documentation
-- Platforms Tested
-- Supported Configuration Features
-- Known Problems
-
-
-New Features
-============
- o Configuration
- ================
- * Added "unofficial support" for building with a C++ compiler (or at least
- not failing badly when building with a C++ compiler). QAK - 2003/01/09
- * Added "unofficial support" for AIX 64bits. See INSTALL for configure
- details. AKC - 2002/08/29
- * Added "--with-dmalloc" flag, to easily enable support for the 'dmalloc'
- debugging malloc implementation. QAK - 2002/07/15
-
- o Library
- =========
- o General
- ---------
- * Allow scalar dataspaces to be used for parallel I/O. QAK - 2002/11/05
- * Added environment variable "HDF5_DISABLE_VERSION_CHECK", which disables
- the version checking between the header files and the library linked
- into an application if set to '1'. This should be used with caution,
- mis-matched headers and library binaries can cause _serious_ problems.
- QAK - 2002/10/15
- * Partially fixed space allocation inefficiencies in the file by
- improving our algorithms for re-using freed space. QAK - 2002/08/27
- * API tracing has been improved. Nested API calls don't screw up the
- output format; function call and return event times can be logged;
- total time spent in each function can be logged. The following
- HDF5_DEBUG environment variable words affect tracing:
- trace -- turn on/off basic tracing
- ttimes -- turn on tracing and report event times and
- time spent in each API function.
- ttop -- turn on tracing but display only top-level
- API calls.
-
- o APIs
- ------
- * Several missing fortran APIs have been added to the library:
-
- h5get_libversion_f h5tget_member_index_f h5dget_storage_size_f
- h5check_version_f h5tvlen_create_f h5dvlen_get_max_len_f
- h5garbage_collect_f h5dwrite_vl_f
- h5dont_atexit_f h5dread_vl_f
-
- Functions h5dvlen_get_max_len_f, h5dwrite_vl_f, and h5dread_vl_f support
- VL Length C APIs functionality for integer, real and string datatypes.
- See HDF5 Reference Manual and HDF5 FORTRAN90 User's Notes for more
- information and for the functions description.
-
- o Parallel library
- ==================
- * The MPI-posix virtual file driver makes gpfs_fcntl() hints to tell
- the underlying GPFS file system to avoid prefetching byte range
- tokens if USE_GPFS_HINTS is defined when this file is compiled.
- This temporary solution is intended to be removed once the HDF5
- API supports the necessary functionality that makes it possible
- for this sort of thing do be done at a higher software layer.
- RPM - 2002/12/03
- * Added MPI-posix VFL driver. This VFL driver uses MPI functions to
- coordinate actions, but performs I/O directly with POSIX sec(2)
- (i.e. open/close/read/write/etc.) calls. This driver should _NOT_
- be used to access files that are not on a parallel filesystem.
- The following API functions were added:
- herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm);
- herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/);
- QAK - 2002/07/15
-
-
-
- o Support for new platforms and languages
- =========================================
- * C++ API now works on the Origin2000 (IRIX6.5.14.) BMR - 2002/11/14
-
-
- o Misc.
- =========================================
- HDF5 1.4.5 works with Portland Group Compilers (pgcc, pgf90 and pgCC
- version 4.0-2) on Linux 2.4
-
-
-Bug Fixes since HDF5-1.4.4 Release
-==================================
- * H5Fopen without the H5F_ACC_CREAT flag should not succeed in creating
- a new file with the 'core' VFL driver. QAK - 2003/01/24
- * Corrected metadata caching bug in parallel I/O which could cause hangs
- when chunked datasets were accessed with independent transfer mode.
- QAK - 2003/01/23
- * Allow opening objects with unknown object header messages.
- QAK - 2003/01/21
- * Added improved error assertion for nil VL strings. It return error
- stack instead of a simple assertion. SLU - 2002/12/16
- * Fixed h5dump bug(cannot dump data and datatype) for VL string.
- SLU - 2002/11/18
- * Fixed error condition where "none" selections were not being handled
- correctly in serial & parallel. QAK - 2002/10/29
- * Fixed problem where optimized hyperslab routines were incorrectly
- invoked for parallel I/O operations in collective mode. QAK - 2002/07/22
- * Fixed metadata corruption problem which could occur when many objects
- are created in a file during parallel I/O. QAK - 2002/07/19
- * Fixed minor problem with configuration when users specified /usr/include
- and /usr/lib for the --with-* options that some compilers can't
- handle. BW - 2003/01/23
-
-
-
-Documentation
-=============
- New PDF files are not available for this release.
-
-
-Platforms Tested
-================
-
- AIX 5.1 (32 and 64-bit) C for AIX Compiler, Version 6
- xlf 8.1.0.2
- poe 3.2.0.11
- Cray T3E sn6606 2.0.6.08 Cray Standard C Version 6.6.0.1.3
- Cray Fortran Version 3.6.0.0.12
- Cray SV1 10.0.1. 0 Cray Standard C Version 6.6.0.1.3
- Cray Fortran Version 3.6.0.0.12
- Cray T90IEEE 10.0.1.01u Cray Standard C Version 6.4.0.2.3
- Cray Fortran Version 3.4.0.3
- FreeBSD 4.7 gcc 2.95.4
- g++ 2.95.5
- HP-UX B.11.00 HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1.3m
- F90 MIPSpro 7.3.1.3m (64 only)
- Linux 2.4.18 gcc 3.2.1
- g++ 3.2.1
- Intel(R) C++ Version 6.0
- Intel(R) Fortran Compiler Version 6.0
- PGI compilers (pgcc, pgf90, pgCC) version 4.0-2
- pgf90 3.2-4
- OSF1 V5.1 Compaq C V6.4-014
- Compaq Fortran X5.4A-1684
- gcc version 3.0 for C++
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) WorkShop Compilers 5.0 98/12/15 C++ 5.0
- WorkShop Compilers 5.0 98/10/25
- FORTRAN 90 2.0 Patch 107356-04
- SunOS 5.8/32 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- Patch 109503-07 2001/08/11
- Sun WorkShop 6 update 1 C++ 5.2 Patch
- 109508-04 2001/07/11
- SunOS 5.8/64 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- Patch 109503-07 2001/08/11
- Sun WorkShop 6 update 1 C++ 5.2 Patch
- 109508-04 2001/07/11
- TFLOPS r1.0.4 v4.3.3 i386 pgcc Rel 3.1-4i with mpich-1.2.4 with
- local modifications
- IA-32 Linux 2.4.9 gcc 2.96
- Intel(R) C++ Version 7.0
- Intel(R) Fortran Compiler Version 7.0
-
- IA-64 Linux 2.4.16 ia64 gcc version 2.96 20000731
- Intel(R) C++ Version 7.0
- Intel(R) Fortran Compiler Version 7.0
- Windows 2000 (NT5.0) MSVC++ 6.0
- DEC Visual Fortran 6.0
- Windows XP .NET
- Windows NT4.0 Code Warrior 6.0
- MAC OS X Darwin 6.2
- gcc and g++ Apple Computer, Inc. GCC
- version 1161, based on gcc version 3.1
-
-
-
-Supported Configuration Features Summary
-========================================
-
- In the tables below
- y = tested and supported
- n = not supported or not tested in this release
- x = not working in this release
- dna = does not apply
- ( ) = footnote appears below second table
-
-
- Platform C C F90 F90 C++ Shared zlib
- parallel parallel libraries (5)
- Solaris2.6 y n y n y y y
- Solaris2.7 64-bit y y (1) y y (1) y y y
- Solaris2.7 32-bit y y (1) y y (1) y y y
- Solaris2.8 64-bit y n y y (1) y y y
- Solaris2.8 32-bit y n y y (1) y y y
- IRIX6.5 y y (1) n n n y y
- IRIX64_6.5 64-bit y y (2) y y y y y
- IRIX64_6.5 32-bit y y (2) n n n y y
- HPUX11.00 y y (1) y n n y y
- OSF1 v5.1 y n y n y y y
- T3E (6) y n y n n n y
- SV1 y n y n n n y
- T90 IEEE y n y n n n y
- TFLOPS n y (1) n n n n y
- AIX-5.1 32-bit y y y y y n y
- AIX-5.1 64-bit y y y y y n y
- WinXP (7) y n n n y y y
- WinNT/2000 y n y n y y y
- WinNT CW y n n n n n y
- Mac OS X 10.2 y n n n y y y
- FreeBSD y y (1) n n y y y
- Linux 2.2 y y (1) y y (1) y y y
- Linux 2.4 gcc (3) y y (1) y n y y y
- Linux 2.4 Intel (3) y n y n n n y
- Linux 2.4 PGI (3) y n y n y n y
- Linux 2.4 IA32 y n y n n n y
- Linux 2.4 IA64 y n y n n n y
-
-
- Platform static- Thread- SRB GASS STREAM-
- exec safe VFD
- Solaris2.6 x y n n y
- Solaris2.7 64-bit x y n n y
- Solaris2.7 32-bit x y n n y
- Solaris2.8 64-bit x n n n y
- Solaris2.8 32-bit x y n n y
- IRIX6.5 x n n n y
- IRIX64_6.5 64-bit x y n y y
- IRIX64_6.5 32-bit x y n y y
- HPUX11.00 x n n n y
- OSF1 v5.1 y n n n y
- T3E (6) y n n n y
- SV1 y n n n y
- T90 IEEE y n n n y
- TFLOPS y n n n n
- AIX-5.1 32-bit y n n n y
- AIX-5.1 64-bit y n n n y
- WinXP (7) dna n n n n
- WinNT/2000 dna n n n n
- WinNT CW dna n n n n
- Mac OS X 10.2 y n n n y
- FreeBSD y y n n y
- Linux 2.2 y y n n y
- Linux 2.4 gcc (3) y y n n y
- Linux 2.4 Intel (3) y n n n y
- Linux 2.4 PGI (3) y n n n y
- Linux 2.4 IA32 y n n n y
- Linux 2.4 IA64 y n n n y
-
- Notes: (1) Using mpich 1.2.4.
- (2) Using mpt and mpich 1.2.4.
- (3) Linux 2.4 with GNU, Intel, and PGI compilers.
- (4) No HDF4-related tools.
- (5) Shared libraries are provided only for the C library,
- except on Windows where they are provided for all languages.
- (6) Debug mode only.
- (7) Binaries only; source code for this platform is not being
- released at this time.
-
-
-Known Problems
-==============
-
- * On Linux 2.4 IA64, Fortran test fails for h5dwrite_vl_f
- for integer and real base datatypes.
-
- * When fortran library is built with Intel compilers, compilation
- for fflush1.f90, fflush2.f90 and fortanlib_test.f90 will fail
- complaining about EXEC function. Comment the call to EXEC subroutine
- in each program, or get a patch for the HDF5 Fortran source code.
-
- * Fortran external dataset test fails on Linux 2.4 with pgf90 compiler.
-
- * On Windows, h5dump may abort printing if a VL string is longer than 4096
- bytes due to a compiler problem. It'll be fixed in v1.6 release.
-
- * Datasets or attributes which have a variable-length string datatype are
- not printing correctly with h5dump and h5ls.
-
- * When a dataset with the variable-length datatype is overwritten,
- the library can develop memory leaks that cause the file to become
- unnecessarily large. This is planned to be fixed in the next release.
-
- * On the SV1, the h5ls test fails due to a difference between the
- SV1 printf precision and the printf precision on other platforms.
-
- * The h5dump tests may fail to match the expected output on some
- platforms (e.g. SP2 parallel, Windows) where the error messages
- directed to "stderr" do not appear in the "right order" with output
- from stdout. This is not an error.
-
- * The --enable-static-exec configure flag fails to compile for HP-UX
- 11.00 platforms.
-
- * The executables are always dynamic on IRIX64 6.5(64 and n32) and
- IRIX 6.5 even if they are configured with --enable-static-exec.
-
- * IRIX 6.5 fails to compile if configured with --enable-static-exec.
-
- * The executables are always dynamic on Solaris 2.7 ans 2.8(64 and n32)
- even if they are configured with --enable-static-exec.
-
- * The HDF5_MPI_OPT_TYPES optimization code in the parallel HDF5 will cause
- a hang in some cases when chunked storage is used. This is now set to
- be off by default. One may turn it on by setting the environment
- variable HDF5_MPI_OPT_TYPES to a non-zero value such as 1.
-
- * On OSF1 v5.1 and IA32 h5dumpgentst program that generates test files
- for h5dump, gives segmentation fault.
-
- * On Windows platforms, C and Fortran tests fail with the debug DLL version
- of the Library if built from all_withf90.zip file.
-
- * On Cray T3E (sn6606 2.0.6.08 unicosmk CRAY T3E) with Cray Standard C Version 6.6.0.1.3
- compiler optimization causes errors in many HDF5 Library tests. Use -g -h zero flags
- to build HDF5 Library.
-
- * On Cray SV1 10.0.1. 0 datatype convertion test fails. Please check HDF FTP site
- if patch is available. We will try to provide one in the nearest future.
-
- * For configuration, building and testing with Intel and PGI compilers see
- corresponding section in INSTALL file.
-
-
-%%%%1.4.4%%%% Release Information for hdf5-1.4.4 (02/July/02)
-
-12. Release information for HDF5 version 1.4.4
-==============================================================================
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.4.3 and
-HDF5-1.4.4, and contains information on the platforms tested and
-known problems in HDF5-1.4.4. For more details check the HISTORY.txt
-file in the HDF5 source.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information, see the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- New Features
-- Bug Fixes since HDF5-1.4.3
-- Performance Improvements
-- Documentation
-- Platforms Tested
-- Supported Configuration Features
-- Known Problems
-
-
-New Features
-============
- o Configuration
- ================
- * The H4 to H5 tools have been removed from the main source and placed
- in a separate package. You can get these tools from the HDF ftp site
- (ftp://hdf.ncsa.uiuc.edu/). The "--with-hdf4" command-line option
- during configure is no longer valid. BW - 2002/06/25
-
- o Library
- =========
- o General
- ---------
- * Fill-value forward-compatibility with release 1.5 was added. SLU -
- 2002/04/11
- * A new query function H5Tget_member_index has been added for compound
- and enumeration data types. This function retrieves a member's index
- by name. SLU - 2002/04/05
- * Added serial multi-gigabyte file size test. "test/big -h" shows
- the help page. AKC - 2002/03/29
-
- o APIs
- ------
- * The F90 subroutines h5dwrite_f, h5dread_f, h5awrite_f, and h5aread_f
- were overloaded with a "dims" argument of type INTEGER(HSIZE_T) to
- specify the size of the array. We recommend using these subroutines
- with the new type; module subroutines that accept "dims" as an i
- INTEGER array of size 7 will be deprecated in release 1.6.
- EIP - 2002/05/06
-
- o Performance
- -------------
- * Added internal "small data" aggregation, which can reduce the number of
- actual I/O calls made, improving performance. QAK - 2002/06/05
- * Improved internal metadata aggregation, which can reduce the number of
- actual I/O calls made, improving performance. Additionally, this can
- reduce the size of files produced. QAK - 2002/06/04
- * Improved internal metadata caching, which can reduce the number of
- actual I/O calls made by a substantial amount, improving
- performance. QAK - 2002/06/03
-
-
- o Parallel library
- ==================
- * Fixed bug in parallel I/O routines where a collective I/O which used
- MPI derived types, followed by an independent I/O would cause the library
- to hang. QAK 2002/06/24
- * Added environment variable flag to control whether creating MPI derived
- types is preferred or not. This can affect performance, depending on
- which way the MPI-I/O library is optimized. The default is set to
- prefer MPI derived types for collective raw data transfers; setting the
- HDF5_MPI_PREFER_DERIVED_TYPES environment variable to "0" (i.e.:
- "setenv HDF5_MPI_PREFER_DERIVED_TYPES 0") changes the preference to avoid
- using them whenever possible. QAK - 2002/06/19
- * Changed MPI I/O routines to avoid creating MPI derived types (and thus
- needing to set the file view) for contiguous selections within datasets.
- This should result in some performance improvement for those types of
- selections. QAK - 2002/06/18
- * Changed MPI type support for collective I/O to be enabled by default.
- This can be disabled by setting the HDF5_MPI_OPT_TYPES environment
- variable to the value "0". QAK - 2002/06/14
- * Allowed chunks in chunked datasets to be cached when parallel file is
- opened for read-only access (bug #709). QAK - 2002/06/10
- * Changed method for allocating chunked dataset blocks to only allocate
- blocks that don't already exist, instead of attempting to create all the
- blocks all the time. This improves performance for chunked
- datasets. QAK - 2002/05/17
- * Allowed the call to MPI_File_sync to be avoided when the file is going to
- immediately be closed, improving performance. QAK - 2002/05/13
- * Allowed the metadata writes to be shared among all processes, easing the
- burden on process 0. QAK - 2002/05/10
-
-
- o Tools
- =======
- * h5redeploy utility was added. It updates HDF5 compiler tools
- after the HDF5 software has been installed in a new location.
-
-
- o Support for new platforms and languages
- =========================================
- * Parallel Fortran Library works now on HP-UX B.11.00 Sys V.
- EIP - 2002/05/06
- * Intel C++ and F90 compilers Version 6.0 are supported on Linux 2.4.
- * Intel C++ compilers Version 6.0 are supported on Windows 2000.
-
-
- o Misc.
- =========================================
- * zlib has been moved out of the Windows source release. Users should go to
- the ZLIB homepage(http://www.zlib.org) to download the corresponding
- zlib library.
- * The Windows binary release is built with the old version of the zlib
- library. We expect users to use zlib 1.1.4 to build with the source
- release.
- * In the Windows-specific install document, we specify how to test backward
- compatibility. However, in this release, we are not testing the backward
- compatibility of HDF5.
-
-
-Bug Fixes since HDF5-1.4.3 Release
-==================================
- * Fixed bug in chunking routines where they were using internal allocation
- free routines, instead of malloc/free, preventing user filters from
- working correctly. Chunks are now allocated/freed with malloc/free and
- so should the chunks in user filters. QAK 2002/06/18
- * Fixed bug where regular hyperslab selection could get incorrectly
- transferred when the number of elements in a row did not fit evenly
- into the buffer provided. QAK 2002/06/12
- * Fixed bug (#499) which allowed an "empty" compound or enumerated datatype
- (one with no members) to be used to create a dataset or to be committed
- to a file. QAK - 2002/06/11
- * Fixed bug (#777) which allowed a compound datatype to be inserted into
- itself. QAK - 2002/06/10
- * Fixed bug (#789) where creating 1-D dataset region reference caused the
- library to go into infinite loop. QAK - 2002/06/10
- * Fixed bug (#699, fix provided by a user) where a scalar dataspace was
- written to the file and then subsequently queried with the
- H5Sget_simple_extent_type function; type was reported as H5S_SIMPLE
- instead of H5S_SCALAR. EIP - 2002/06/04
- * Clear symbol table node "dirty" flag when flushing symbol tables to
- disk, to reduce I/O calls made & improve performance. QAK - 2002/06/03
- * Fixed bug where an object's header could get corrupted in certain
- obscure situations when many objects were created in the
- file. QAK - 2002/05/31
- * Fixed bug where read/write intent in file IDs created with H5Freopen
- was not being kept the same as the original file. QAK - 2002/05/14
- * Fixed bug where selection offsets were not being used when iterating
- through point and hyperslab selections with
- H5Diterate(). QAK - 2002/04/29
- * Fixed bug where the data for several level deep nested compound &
- variable-length datatypes used for datasets were getting corrupted when
- written to the file. QAK - 2002/04/17
- * Fixed bug where selection offset was being ignored for certain hyperslab
- selections when optimized I/O was being performed. QAK - 2002/04/02
- * Fixed limitation in h5dumper with object names which reached over 1024
- characters in length. We can now handle arbitrarily larger sizes for
- object names. BW - 2002/03/29
- * Fixed bug where variable-length string type did not behave as a
- string. SLU - 2002/03/28
- * Fixed bug in H5Gget_objinfo() which was not setting the 'fileno'
- of the H5G_stat_t struct. QAK - 2002/03/27
- * Fixed data corruption bug in hyperslab routines when contiguous
- hyperslab that spans entire dimension and is larger than type
- conversion buffer is attempted to be read. QAK - 2002/03/26
-
-
-Performance Improvements
-========================
- This release of the HDF5 library has been extensively tuned to improve
-performance, especially to improve parallel I/O performance.
- Most of the specific information for particular performance improvements
-is mentioned in the "New Features" and "Bug Fixes since HDF5-1.4.3" sections
-of this document, but in general, the library should make fewer and larger
-I/O requests when accessing a file. Additionally, improvements to the parallel
-I/O portions of the library should have reduced the communications and barriers
-used in various internal algorithms, improving the performance of the library.
- However, with the extensive changes to some portions of the library that
-were required for these improvements, some errors or unanticipated results may
-have been introduced also. Please report any problems encountered to our
-support team at hdfhelp@ncsa.uiuc.edu.
- Hopefully these improvements will benefit all HDF5 applications, but if
-there are particular I/O patterns that appear to be slower than necessary,
-please send e-mail to hdfhelp@ncsa.uiuc.edu with a sample program showing the
-problem behavior; we will look into the issue to see if it is possible to
-address it.
-
-
-Documentation
-=============
- * Documentation was updated for the hdf5-1.4.4 release.
- * A new "HDF5 User's Guide" is under development. See
- http://hdf.ncsa.uiuc.edu/HDF5/doc_dev_snapshot/H5_NewUG/current/.
- * A "Parallel HDF5 Tutorial" is available at
- http://hdf.ncsa.uiuc.edu/HDF5/doc/Tutor/.
- * The "HDF5 Tutorial" is not distributed with this release. It is
- available at http://hdf.ncsa.uiuc.edu/HDF5/doc/Tutor/.
-
-
-Platforms Tested
-================
-
- AIX 4.3.3.0 (IBM SP powerpc) xlc 5.0.2.0
- mpcc_r 5.0.2.0
- xlf 07.01.0000.0002
- mpxlf 07.01.0000.0002
- AIX 4.3 (IBM SP RS6000) C for AIX Compiler, Version 5.0.2.0
- xlf 7.1.0.2
- poe 3.1.0.12 (includes mpi)
- AIX 5.1 xlc 5.0.2.0
- xlf 07.01.0000.0002
- mpcc_r 5.0.2.0; mpxlf_r 07.01.0000.0002
- Cray T3E sn6711 2.0.5.57 Cray Standard C Version 6.5.0.3
- Cray Fortran Version 3.5.0.4
- Cray SV1 10.0.1.1 Cray Standard C Version 6.5.0.3
- Cray Fortran Version 3.5.0.4
- FreeBSD 4.6 gcc 2.95.4
- g++ 2.95.4
- HP-UX B.10.20 HP C HP92453-01 A.10.32.30
- HP F90 v2.3
- HP-UX B.11.00 HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- HP-UX B.11.00 SysV HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- HP MPI [not a product] (03/24/2000) B6060BA
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1.3m
- F90 MIPSpro 7.3.1.3m (64 only)
- Linux 2.4.9-31smp gcc 2.95.3
- g++ 2.95.3
- Intel(R) C++ Version 6.0
- Intel(R) Fortran Compiler Version 6.0
- MPICH 1.2.2
- Linux 2.2.18smp gcc 2.95.2
- gcc 2.95.2 with mpich 1.2.1
- g++ 2.95.2
- pgf90 3.2-4
- OSF1 V5.1 Compaq C V6.4-014
- Compaq Fortran V5.5-1877-48BBF
- gcc version 3.0 for C++
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) WorkShop Compilers 5.0 98/12/15 C++ 5.0
- WorkShop Compilers 5.0 98/10/25
- FORTRAN 90 2.0 Patch 107356-04
- SunOS 5.8/32 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- Patch 109503-07 2001/08/11
- Sun WorkShop 6 update 1 C++ 5.2 Patch
- 109508-04 2001/07/11
- SunOS 5.8/64 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- Patch 109503-07 2001/08/11
- Sun WorkShop 6 update 1 C++ 5.2 Patch
- 109508-04 2001/07/11
- TFLOPS r1.0.4 v4.2.2 i386 pgcc Rel 3.1-4i with mpich-1.2.3 with
- local modifications
- IA-32 Linux 2.4.9 cc Intel 5.0.1
- gcc 2.96
- Intel(R) C++ Version 6.0
- Intel(R) Fortran Compiler Version 6.0
-
- IA-64 Linux 2.4.16 ia64 gcc version 2.96 20000731
- Intel(R) C++ Version 6.0
- Intel(R) Fortran Compiler Version 6.0
- Windows 2000 (NT5.0) MSVC++ 6.0
- DEC Visual Fortran 6.0
- Windows NT4.0 MSVC++ 6.0
- DEC Visual Fortran 6.0
- Windows NT4.0 Code Warrior 6.0
-
-
-Supported Configuration Features Summary
-========================================
-
- In the tables below
- y = tested and supported
- n = not supported or not tested in this release
- x = not working in this release
- ( ) = footnote appears below second table
-
-
- Platform C C F90 F90 C++ Shared zlib Tools
- parallel parallel libraries(5)
- Solaris2.6 y n y n y y y y
- Solaris2.7 64 y y (1) y n y y y y
- Solaris2.7 32 y y (1) y n y y y y
- Solaris2.8 64 y n y n y y y y
- Solaris2.8 32 y n y n y y y y
- IRIX6.5 y y (1) n n n y y y
- IRIX64_6.5 64 y y (2) y y n y y y
- IRIX64_6.5 n32 y y (2) n n n y y y
- HPUX10.20 y n y n n y y y
- HPUX11.00 y n y n n y y y
- HPUX11 SysV y y y y n y y y
- OSF1 v5.1 y n y n y y y y
- T3E y y y y n n y y
- SV1 y n y n n n y y
- TFLOPS n y (1) n n n n y y (4)
- AIX-4.3 y y y y y n y y
- AIX-5.1 y y y y n n y y
- WinNT/2000 y n y n y y y y
- WinNT CW y n n n n n y y
- FreeBSD y n n n y y y y
- Linux 2.2 y y (1) y n y y y y
- Linux 2.4 y y (1) n n y y y y
- Linux 2.4 Intel(6) y n y n y n y y
- Linux 2.4 IA32 y n y n n n y y
- Linux 2.4 IA64 y n y n n n y y
-
-
- Platform 1.2 static- Thread- SRB GASS STREAM-
- compatibility exec safe VFD
- Solaris2.6 y x y n n y
- Solaris2.7 64 y x y n n y
- Solaris2.7 32 y x y n n y
- Solaris2.8 64 y y n n n y
- Solaris2.8 32 y x y n n y
- IRIX6.5 y x n n n y
- IRIX64_6.5 64 y x y n y y
- IRIX64_6.5 n32 y x y n y y
- HPUX10.20 y y n n n y
- HPUX11.00 y x n n n y
- HPUX11 SysV y x n n n y
- OSF1 v5.1 y y n n n y
- T3E y y n n n y
- SV1 y y n n n y
- TFLOPS y y n n n n
- AIX-4.3 y y (3) n n n y
- AIX-5.1 y y n n n y
- WinNT/2000 y y n n n n
- WinNT CW n n n n n n
- FreeBSD y y y n n y
- Linux 2.2 y y y n n y
- Linux 2.4 y y y n n y
- Linux 2.4 Intel(6) y y n n n y
- Linux 2.4 IA32 y y n n n y
- Linux 2.4 IA64 y y n n n y
-
-
- Footnotes: (1) Using mpich.
- (2) Using mpt and mpich.
- (3) When configured with static-exec enabled, tests fail in
- serial mode.
- (4) No HDF4-related tools.
- (5) Shared libraries are provided only for the C library,
- except on Windows where they are provided for all languages.
- (6) Linux 2.4 with Intel compilers.
-
-
-Known Problems
-==============
-
- * Datasets or attributes which have a variable-length string datatype are
- not printing correctly with h5dump and h5ls.
-
- * When a dataset with the variable-length datatype is overwritten,
- the library can develop memory leaks that cause the file to become
- unnecessarily large. This is planned to be fixed in the next release.
-
- * On the SV1, the h5ls test fails due to a difference between the
- SV1 printf precision and the printf precision on other platforms.
-
- * The h5dump tests may fail to match the expected output on some
- platforms (e.g. SP2 parallel, Windows) where the error messages
- directed to "stderr" do not appear in the "right order" with output
- from stdout. This is not an error.
-
- * The --enable-static-exec configure flag fails to compile for HP-UX
- 11.00 platforms.
-
- * The executables are always dynamic on IRIX64 6.5(64 and n32) and
- IRIX 6.5 even if they are configured with --enable-static-exec.
-
- * IRIX 6.5 fails to compile if configured with --enable-static-exec.
-
- * The HDF5_MPI_OPT_TYPES optimization code in the parallel HDF5 will cause
- a hang in some cases when chunked storage is used. This is now set to
- be off by default. One may turn it on by setting the environment
- variable HDF5_MPI_OPT_TYPES to a non-zero value such as 1.
-
- * On IA32 and IA64 systems, if you use a compiler other than GCC (such as
- Intel's ecc or icc compilers), you will need to modify the generated
- "libtool" program after configuration is finished. On or around line 104
- of the libtool file, there are lines which look like:
-
- # How to pass a linker flag through the compiler.
- wl=""
-
- Change these lines to this:
-
- # How to pass a linker flag through the compiler.
- wl="-Wl,"
-
- * To build the Fortran library using Intel compilers, one has to
- x modify the source code in the fortran/src directory to remove the
- !DEC and !MS compiler directives.
- x The build will fail in the fortran/test directory and then in the
- fortran/examples directory; to proceed, edit the work.pcl files in
- those directories to contain two lines
-
- work.pc
- ../src/work.pc
-
- * To build the Fortran library on IA64 use
- setenv CC "ecc -DIA64"
- setenv F9X "efc -cl,work.pcl"
- before running configure and see the steps described above.
-
-
-%%%%1.4.3%%%% Release Information for hdf5-1.4.3 (18/Februaru/02)
-
-11. Release information for HDF5 version 1.4.3
-==============================================================================
-
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.4.2 and
-HDF5-1.4.3, and contains information on the platforms tested and
-known problems in HDF5-1.4.2. For more details check the HISTORY.txt
-file in the HDF5 source.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information look at the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- New Features
-- Bug Fixes since HDF5-1.4.2
-- Documentation
-- Platforms Tested
-- Supported Configuration Features
-- Known Problems
-
-
-New Features
-============
- o Configuration
- ================
- * Can use just enable-threadsafe if the C compiler has built-in pthreads
- support.
-
- o Library
- =========
- o General
- ---------
- * Added a new test to verify the information provided by the configure
- command.
- * Changed internal error handling macros to reduce code size of library by
- about 10%.
-
- o APIs
- ------
- * Changed prototype for H5Awrite from:
- H5Awrite(hid_t attr_id, hid_t type_id, void *buf)
- to:
- H5Awrite(hid_t attr_id, hid_t type_id, const void *buf)
- * The H5Pset_fapl_split() accepts raw and meta file names similar to the
- syntax of H5Pset_fapl_multi() in addition to what it used to accept.
-
- C++ API:
- * Added operator= to class PredType
- * Add the overloaded member function Attribute::getName to return
- the attribute name's length as in C API. Note that the current
- Attribute::getName, that returns "string", is still available.
- * Following the change in the C library, the corresponding C++ API
- is changed from:
- void Attribute::write( const DataType& mem_type, void *buf )
- to:
- void Attribute::write( const DataType& mem_type, const void *buf )
-
- o Performance
- -------------
- * Added perform programs to test the HDF5 library performance. Programs
- are installed in directory perform/.
- * Improved performance of byte-swapping during data conversions.
- * Improved performance of single, contiguous hyperslabs when reading or
- writing.
- * Added support to read/write portions of chunks directly, if they are
- uncompressed and too large to cache. This should speed up I/O on chunked
- datasets for a few more cases. -QAK, 1/31/02
-
- o Parallel Library
- ==================
- * Parallel C HDF5 now works on HP-UX platforms, Compaq clusters,
- Linux clusters, Cplants (alpha-linux clusters).
-
- o Tools
- =======
- * A helper script called ``h5cc'', which helps compilation of HDF5
- programs, is now distributed with HDF5. See the reference manual
- for information on how to use this feature.
- * The H5Dumper can now dump comments associated with groups. -WCW 01-05-02
-
- o Support for new platforms and languages
- =========================================
- * HDF5 C++ Library is supported on Windows platforms (shared and static)
- * HDF5 F90 shared library is supported on Windows platforms.
- * HDF5 C Library is supported on IA32 and IA64 platforms.
-
-
-
-Bug Fixes since HDF5-1.4.2 Release
-==================================
-
- * Fixed a bug when reading chunked datasets where the edge of the dataset
- would be incorrectly detected and generate an assertion failure.
- * Fixed a bug where reading an entire dataset wasn't being handled
- optimally when the dataset had unlimited dimensions. Dataset is read
- in a single low-level I/O now, instead of being broken into separate
- pieces internally.
- * Fixed a bug where reading or writing chunked data which needed datatype
- conversion could result in data values getting corrupted.
- * Fixed a bug where appending a point selection to the current selection
- would not actually append the point when there were no points defined
- currently.
- * Fixed a bug where 'or'ing a hyperslab with a 'none' selection would
- fail. Now adds that hyperslab as the first hyperlab in the selection.
- * Fixed a bug in the 'big' test where quota limits weren't being detected
- properly if they caused close() to fail.
- * Fixed a bug in internal B-tree code where a B-tree was not being copied
- correctly.
- * Fixed an off-by-one error in H5Sselect_valid when hyperslab selections
- which would allow hyperslab selections which overlapped the edge of the
- selection by one element as valid.
- * Fixed the internal macros used to encode & decode file metadata, to avoid
- an unaligned access warning on IA64 machines.
- * Corrected behavior of H5Tinsert to not allow compound datatype fields to
- be inserted past the end of the datatype.
- * Retired the DPSS virtual file driver (--with-gridstorage configure
- option).
- * Fixed bug where variable-length datatypes for attributes was not working
- correctly.
- * Fixed bug where raw data re-allocated from the free-list would sometimes
- overlap with the metadata accumulator and get corrupted. QAK - 1/23/02
- * Fixed bug where a preempted chunk in the chunk data could still be
- used by an internal pointer and cause an assertion failure or core
- dump. QAK - 2/13/02
- * Fixed bug where non-zero fill-value was not being read correctly from
- certain chunked datasets when using an "all" or contiguous hyperslab
- selection. QAK - 2/14/02
-
-
-Documentation
-=============
- * Documentation was updated for the hdf5-1.4.3 release.
- * A new "HDF5 User's Guide" is under development. See
- http://hdf.ncsa.uiuc.edu/HDF5/doc_dev_snapshot/H5_NewUG/current/.
- * Parallel Tutorial is available at http://hdf.ncsa.uiuc.edu/HDF5/doc/Tutor/
-
-
-Platforms Tested
-================
-
- AIX 4.3.3.0 (IBM SP powerpc) xlc 5.0.2.0
- mpcc_r 5.0.2.0
- xlf 07.01.0000.0002
- mpxlf 07.01.0000.0002
- AIX 4.3 (IBM SP RS6000) C for AIX Compiler, Version 5.0.2.0
- xlf 7.1.0.2
- poe 3.1.0.12 (includes mpi)
- Cray T3E sn6711 2.0.5.57 Cray Standard C Version 6.5.0.3
- Cray Fortran Version 3.5.0.4
- Cray SV1 10.0.0.8 Cray Standard C Version 6.5.0.3
- Cray Fortran Version 3.5.0.4
- FreeBSD 4.5 gcc 2.95.3
- g++ 2.95.3
- HP-UX B.10.20 HP C HP92453-01 A.10.32.30
- HP F90 v2.3
- HP-UX B.11.00 HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- HP-UX B.11.00 SysV HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- HP MPI [not a product] (03/24/2000) B6060BA
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1.2m
- Linux 2.4.4 gcc 2.95.3
- g++ 2.95.3
- Linux 2.2.18smp gcc 2.95.2
- gcc 2.95.2 with mpich 1.2.1
- g++ 2.95.2
- pgf90 3.2-4
- OSF1 V5.1 Compaq C V6.3-028
- Compaq Fortran V5.4-1283
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) Workshop Compilers 5.0 98/12/15 C++ 5.0
- Workshop Compilers 5.0 98/10/25
- FORTRAN 90 2.0 Patch 107356-04
- SunOS 5.8/32 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- Patch 109503-07 2001/08/11
- Sun WorkShop 6 update 1 C++ 5.2 Patch
- 109508-04 2001/07/11
- SunOS 5.8/64 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- Patch 109503-07 2001/08/11
- Sun WorkShop 6 update 1 C++ 5.2 Patch
- 109508-04 2001/07/11
- TFLOPS r1.0.4 v4.0.8 i386 pgcc Rel 3.1-4i with mpich-1.2.1 with
- local modifications
- IA-32 Linux 2.2.10smpx cc Intel 5.0.1
- egcs-2.91.66
- IA-64 Linux 2.4.16 ia64 gcc version 2.96 20000731
- Intel(R) C++ Itanium(TM) Compiler
- for the Itanium(TM)-based applications,
- Version 6.0 Beta, Build 20010905
- Windows 2000 (NT5.0) MSVC++ 6.0
- DEC Visual Fortran 6.0
- Windows NT4.0 MSVC++ 6.0
- DEC Visual Fortran 6.0
- Windows NT4.0 Code Warrior 6.0
- Windows 98 MSVC++ 6.0
- DEC Visual Fortran 6.0
-
-
-Supported Configuration Features Summary
-========================================
-
- In the tables below
- y = tested and supported
- n = not supported or not tested in this release
- x = not working in this release
- ( ) = footnote appears below second table
-
-
- Platform C C F90 F90 C++ Shared zlib Tools
- parallel parallel libraries
- (5)
- Solaris2.7 y y (1) y n y y y y
- Solaris2.8 64 y n y n y y y y
- Solaris2.8 32 y n y n y y y y
- IA-64 y n n n n n y y
- IRIX6.5 y y (1) n n n y y y
- IRIX64_6.5 64 y y (2) y y n y y y
- IRIX64_6.5 32 y y (2) n n n y y y
- HPUX10.20 y n y n n y y y
- HPUX11.00 y y y n n y y y
- HPUX11 SysV y y y n n y y y
- DECOSF y n y n y y y y
- T3E y y y y n n y y
- SV1 y n y n n n y y
- TFLOPS y y (1) n n n n y y (4)
- AIX-4.3 SP2 y y y y n n y n
- AIX-4.3 SP3 y y y y y n y n
- Win2000 y n y n y (6) y y y
- Win98 y n y n y (6) y y y
- WinNT y n y n y (6) y y y
- WinNT CW y n n n n n y y
- FreeBSD y n n n y y y y
- Linux 2.2 y y (1) y n y y y y
- Linux 2.4 y y (1) n n y y y y
-
-
- Platform 1.2 static- Thread- SRB GASS STREAM-
- compatibility exec safe VFD
- Solaris2.7 n x y n n y
- Solaris2.8 64 n y n n n y
- Solaris2.8 32 n x n n n y
- IA-64 n n n n n y
- IRIX6.5 n x y n n y
- IRIX64_6.5 64 n x y n y y
- IRIX64_6.5 32 n x y n y y
- HPUX10.20 n y n n n y
- HPUX11.00 n x n n n y
- HPUX11 SysV n x n n n y
- DECOSF n y n n n y
- T3E n y n n n y
- SV1 n y n n n y
- TFLOPS n y n n n n
- AIX-4.3 SP2 n y (3) n n n y
- AIX-4.3 SP3 n y n n n y
- Win2000 n y n n n n
- Win98 n y n n n n
- WinNT n y n n n n
- WinNT CW n n n n n n
- FreeBSD n y y n n y
- Linux 2.2 n y y n n y
- Linux 2.4 n y y n n y
-
-
- Footnotes: (1) Using mpich.
- (2) Using mpt and mpich.
- (3) When configured with static-exec enabled, tests fail
- in serial mode.
- (4) No HDF4-related tools.
- (5) Shared libraries are provided only for the C library.
- (6) Exception of (5): DLL is available for C++ API on Windows
-
-
-Known Problems
-==============
-
- * Datasets or attributes which have a variable-length string datatype are
- not printing correctly with h5dump and h5ls.
-
- * When a dataset with the variable-legth datatype is overwritten,
- the library can develop memory leaks that cause the file to become
- unnecessarily large. This is planned to be fixed in the next release.
-
- * On the SV1, the h5ls test fails due to a difference between the
- SV1 printf precision and the printf precision on other platforms.
-
-
- * The h5dump tests may fail to match the expected output in some
- platforms (e.g. SP2 parallel, Windows) where the error messages
- directed to "stderr" do not appear in the "right order" with output
- from stdout. This is not an error.
-
- * The --enable-static-exec configure flag fails to compile for HP-UX
- 11.00 platforms.
-
- * The executables are always dynamic on IRIX64 6.5(64 and n32) and
- IRIX 6.5 even if they are configured with --enable-static-exec.
-
- * IRIX 6.5 fails to compile if configured with --enable-static-exec.
-
- * The HDF5_MPI_OPT_TYPES optimization code in the parallel HDF5 will cause
- a hang in some cases when chunked storage is used. This is now set to
- be off by default. One may turn it on by setting environment variable
- HDF5_MPI_OPT_TYPES to a non-zero value such as 1.
-
- * On IA64 systems one has to use -DIA64 compilation flag to compile
- h4toh5 and h5toh4 utilites. After configuration step manually modify
- Makefile in the tools/h4toh4 and tools/h5toh4 directories to add
- -DIA64 to the compilation flags.
-
- * On IA32 ansd IA64 systems, if you use a compiler other than GCC
- (such as Intel's ecc compiler), you will need to modify the generated
- "libtool" program after configuration is finished. On or around line 102
- of the libtool file, there are lines which look like:
-
- # How to pass a linker flag through the compiler.
- wl=""
-
- change the lines to this:
-
- # How to pass a linker flag through the compiler.
- wl="-Wl,"
-
-
-%%%%1.4.2%%%% Release Information for hdf5-1.4.2 (31/July/01)
-
-10. Release Information for hdf5-1.4.2
-=================================================================
-
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.4.1 and
-HDF5-1.4.2, and contains information on the platforms tested and
-known problems in HDF5-1.4.2.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information look at the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- New Features
-- Bug Fixes since HDF5-1.4.1
-- Documentation
-- Platforms Tested
-- Supported Configuration Features
-- Known Problems
-
-
-New Features
-============
-
- * File sizes greater than 2GB are now supported on Linux systems with
- version 2.4.x or higher kernels.
- * Added a global string variable H5_lib_vers_info_g which holds the
- HDF5 library version information. This can be used to identify
- an hdf5 library or hdf5 application binary.
- Also added a verification of the consistency between H5_lib_vers_info_g
- and other version information in the source code.
- * Parallel HDF5 now runs on the HP V2500 and HP N4000 machines.
- * F90 API:
- - Added aditional parameter "dims" to the h5dread_f/h5dwrite_f and
- h5aread_f/h5awrite_f subroutines. This parameter is a 1-D array
- of size 7 and contains the sizes of the data buffer dimensions.
- This change enables portability between Windows and UNIX platforms.
- In previous versions of the F90 APIs, the data buffer parameters of
- the above functions were declared as assumed-shape arrays, which
- were passed to the C functions by a descriptor. There is no
- portable means, however, of passing descriptors from F90 to C,
- causing portability problems between Windows and UNIX and among
- UNIX platforms. With this change, the data buffers are assumed-
- size arrays, which can be portably passed to the C functions.
- * F90 static library is available on Windows platforms.
- See INSTALL_Windows_withF90.txt for details.
- * F90 APIs are available on HPUX 11.00 and 10.20 and IBM SP platforms.
- * H5 <-> GIF convertor has been added. This is available under
- tools/gifconv. The convertor supports the ability to create animated
- gifs as well.
- * Verified correct operation of library on Solaris 2.8 in both 64-bit and
- 32-bit compilation modes. See INSTALL document for instructions on
- compiling the distribution with 64-bit support.
- * Added support for the Metrowerks Code Warrior compiler for Windows.
- * For H4->H5 converter utility, added a new option to choose not to convert
- HDF4 specified attributes(reference number, class) into HDF5 attributes.
- * Added support chunking and compression in SDS and image in H4->H5 converter.
- Currently HDF5 only supports gzip compression, so by default an HDF4 file
- with any other compression method will be converted into an HDF5 file in
- gzip compression.
- * correct the order or reading HDF4 image array in H4->H5 conversion.
- * Added new parallel hdf5 tests in t_mpi. The new test checks if the
- filesystem or the MPI-IO can really handle greater than 2GB files.
- If it fails, it prints information message only without failing the
- test.
- * Added a parallel HDF5 example examples/ph5example.c to illustrate
- the basic way of using parallel HDF5.
- * Added a new public macro, H5_VERS_INFO, which is a string holding
- the HDF5 library version information. This string is also compiled
- into all HDF5 binary code which helps to identify the version information
- of the binary code. One may use the Unix strings command on the binary
- file and looks for the pattern "HDF5 library version".
- * Added new checking in H5check_version() to verify the five HDF5 version
- information macros (H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE,
- H5_VERS_SUBRELEASE and H5_VERS_INFO) are consistent.
-
-
-Bug Fixes since HDF5-1.4.1 Release
-==================================
-
- * Fixed bug with non-zero userblock sizes causing raw data to not
- write correctly.
- * Fixed problems with Pablo build and linking with non-standard MPI I/O.
- * Fixed build on Linux systems with --enable-static-exec flag. It now
- works correctly.
- * IMPORTANT: Fixed file metadata corruption bug which could cause
- metadata data loss in certain situations.
- * The allocation by alignment (H5Pset_alignment) feature code somehow
- got dropped in some 1.3.x version. Re-implemented it with "new and
- improved" algorithm. It keeps track of "wasted" file-fragment in
- the free-list too.
- * Removed limitation that the data transfer buffer size needed to be
- set for datasets whose dimensions were too large for the 'all'
- selection code to handle. Any size dimensioned datasets should be
- handled correctly now.
- * Changed behavior of H5Tget_member_type to correctly emulate HDF5 v1.2.x
- when --enable-hdf5v1_2 configure flag is enabled.
- * Added --enable-linux-lfs flag to allow more control over whether to
- enable or disable large file support on Linux.
- * Fixed various bugs releated to SDS dimensional scale conversions in H4->H5
- converter.
- * Fixed a bug to correctly convert HDF4 objects with fill value into HDF5.
- * Fixed a bug of H5pubconf.h causing repeated definitions if it is included
- more than once. hdf5.h now includes H5public.h which includes
- H5pubconf.h. Applications should #include hdf5.h which handles multiple
- inclusion correctly.
- * Fixed H5FDmpio.h to be C++ friendly by making Parallel HDF5 API's to be
- external to C++.
- * Fixed a bug in H5FD_mpio_flush() that might result in negative file seek
- if both MPIO and Split-file drivers are used together.
-
-
-
-Documentation
-=============
-
- * The H5T_conv_t and H5T_cdata_t structures are now properly defined
- in the H5Tregister entry in the "H5T" section of the "HDF5 Reference
- Manual" and described in detail in section 12, "Data Conversions," in
- the "Datatypes" chapter of the "HDF5 User's Guide."
- * The new tools h52gif and gif2h5 have been added to the "Tools" section
- of the Reference Manual.
- * A "Freespace Management" section has been added to the "Performance"
- chapter of the User's Guide.
- * Several user-reported bugs have been fixed since Release 1.4.1.
- * The "HDF5 Image and Palette Specification" (in the "HDF5 Application
- Developer's Guide") has been heavily revised. Based on extensive user
- feedback and input from visualization software developers, Version 1.2
- of the image specification is substantially different from prior
- versions.
-
-
-Platforms Tested
-================
-
- AIX 4.3.3.0 (IBM SP powerpc) xlc 3.6.6.0
- mpcc_r 3.6.6.0
- xlf 07.01.0000.0002
- mpxlf 07.01.0000.0002
- AIX 4.3 (IBM SP RS6000) C for AIX Compiler, Version 5.0.2.0
- xlf 7.1.0.2
- poe 2.4.0.14 (includes mpi)
- Cray T3E sn6711 2.0.5.49a Cray Standard C Version 6.5.0.1
- Cray SV1 10.0.0.2 Cray Standard C Version 6.5.0.1
- Cray Fortran Version 3.5.0.1
- FreeBSD 4.3 gcc 2.95.3
- g++ 2.95.3
- HP-UX B.10.20 HP C HP92453-01 A.10.32.30
- HP F90 v2.3
- HP-UX B.11.00 HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- HP-UX B.11.00 SysV HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1.2m
- Linux 2.4.4 gcc 2.95.3
- g++ 2.95.3
- Linux 2.2.18smp gcc 2.95.2
- gcc 2.95.2 with mpich 1.2.1
- g++ 2.95.2
- pgf90 3.2-4
- OSF1 V4.0 DEC-V5.2-040 on Digital UNIX V4.0 (Rev 564)
- Digital Fortran 90 V4.1-270
- SunOS 5.6 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.6) WorkShop Compilers 5.0 98/10/25 FORTRAN 90
- 2.0 Patch 107356-04
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) Workshop Compilers 5.0 98/12/15 C++ 5.0
- Workshop Compilers 5.0 98/10/25 FORTRAN 90
- 2.0 Patch 107356-04
- SunOS 5.8/32 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- 2000/09/11
- Sun WorkShop 6 update 1 C++ 5.2 2000/09/11
- SunOS 5.8/64 Sun WorkShop 6 update 1 C 5.2 2000/09/11
- (Solaris 2.8) Sun WorkShop 6 update 1 Fortran 95 6.1
- 2000/09/11
- Sun WorkShop 6 update 1 C++ 5.2 2000/09/11
- TFLOPS r1.0.4 v4.0.7 i386 pgcc Rel 3.1-4i with mpich-1.2.1 with
- local modifications
- Windows 2000 (NT5.0) MSVC++ 6.0
- Windows NT4.0 MSVC++ 6.0
- DEC Visual Fortran 6.0
- Windows NT4.0 Code Warrior 6.0
- Windows 98 MSVC++ 6.0
- DEC Visual Fortran 6.0
-
-
-Supported Configuration Features Summary
-========================================
-
- In the tables below
- y = tested and supported
- n = not supported or not tested in this release
- x = not working in this release
- ( ) = footnote appears below second table
-
-
- Platform C C F90 F90 C++ Shared zlib Tools
- parallel parallel libraries
- (5)
- Solaris2.6 y n y n y y y y
- Solaris2.7 y y (1) y n y y y y
- Solaris2.8 64 y n n n y y y y
- Solaris2.8 32 y n y n y y y y
- IRIX6.5 y y (1) n n n y y y
- IRIX64_6.5 64 y y (2) y y n y y y
- IRIX64_6.5 32 y y (2) n n n y y y
- HPUX10.20 y n y n n y y y
- HPUX11.00 y n y n n y y y
- HPUX11 SysV y n y n n y y y
- DECOSF y n y n n y y y
- T3E y y y y n n y y
- SV1 y n y n n n y y
- TFLOPS y y (1) n n n n y y (4)
- AIX-4.3 SP2 y y y y n n y n
- AIX-4.3 SP3 y y y y n n y n
- Win2000 y n n n n y y y
- Win98 y n y n n y y y
- WinNT y n y n n y y y
- WinNT CW y n n n n n y y
- FreeBSD y n n n y y y y
- Linux 2.2 y y (1) y n y y y y
- Linux 2.4 y y (1) n n y y y y
-
-
- Platform 1.2 static- Thread- SRB GASS STREAM-
- compatibility exec safe VFD
- Solaris2.6 y x n n n y
- Solaris2.7 y x y n n y
- Solaris2.8 64 y y n n n y
- Solaris2.8 32 y x n n n y
- IRIX6.5 y x y n n y
- IRIX64_6.5 64 y x n n n y
- IRIX64_6.5 32 y x n n n y
- HPUX10.20 y y n n n y
- HPUX11.00 y x n n n y
- HPUX11 SysV y x n n n y
- DECOSF y y n n n y
- T3E y y n n n y
- SV1 y y n n n y
- TFLOPS y y n n n n
- AIX-4.3 SP2 y y (3) n n n y
- AIX-4.3 SP3 y y n n n y
- Win2000 y y n n n n
- Win98 n y n n n n
- WinNT y y n n n n
- WinNT CW n n n n n n
- FreeBSD y y n n n y
- Linux 2.2 y y y n n y
- Linux 2.4 y y y n n y
-
-
- Footnotes: (1) Using mpich.
- (2) Using mpt and mpich.
- (3) When configured with static-exec enabled, tests fail
- in serial mode.
- (4) No HDF4-related tools.
- (5) Shared libraries are provided only for the C library.
-
-
-Known Problems
-==============
-
- * When a dataset with the variable-legth datatype is overwritten,
- the library can develop memory leaks that cause the file to become
- unnecessarily large. This is planned to be fixed in the next release.
-
- * On the SV1, the h5ls test fails due to a difference between the
- SV1 printf precision and the printf precision on other platforms.
-
- * The h5dump tests may fail to match the expected output in some
- platforms (e.g. SP2 parallel, Windows) where the error messages
- directed to "stderr" do not appear in the "right order" with output
- from stdout. This is not an error.
-
- * The --enable-static-exec configure flag fails to compile for HP-UX
- 11.00 platforms.
-
- * The executables are always dynamic on IRIX64 6.5(64 and n32) and
- IRIX 6.5 even if they are configured with --enable-static-exec.
-
- * IRIX 6.5 fails to compile if configured with --enable-static-exec.
-
- * For 24-bit image conversion from H4->H5, the current conversion is
- not consistent with HDF5 image specification.
-
- * In some cases, and SDS with an UNLIMITED dimension that has not
- been written (current size = 0) is not converted correctly.
-
- * After "make install" or "make install-doc" one may need to reload
- the source from the tar file before doing another build.
-
- * The HDF5_MPI_OPT_TYPES optimization code in the parallel HDF5 will cause
- a hang in some cases when chunked storage is used. This is now set to
- be off by default. One may turn it on by setting environment variable
- HDF5_MPI_OPT_TYPES to a non-zero value such as 1.
-
-%%%%1.4.1%%%% Release Information for hdf5-1.4.1 (April/01)
-
-9. Release Information for hdf5-1.4.1 (April/01)
-=====================================================================
-
-
-
- HDF5 Release 1.4.1
-
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.4.0 and
-HDF5-1.4.1, and contains information on the platforms tested and
-known problems in HDF5-1.4.1.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information look at the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- New Features
-- Bug Fixes since HDF5-1.4.0
-- Documentation
-- Platforms Tested
-- Supported Configuration Features
-- Known Problems
-
-
-New Features
-============
-
- * XML output option for h5dump utility.
-
- A new option --xml to output data in XML format has been added. The
- XML output contains a complete description of the file, marked up in
- XML.
-
- The XML conforms to the HDF5 Document Type Definition (DTD), which
- is available at:
-
- http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.dtd
-
- The XML output is suitable for use with other tools, including the
- Java Tools:
-
- http://hdf.ncsa.uiuc.edu/java-hdf5-html
-
-
-Bug Fixes since HDF5-1.4.0 Release
-==================================
-
- * h4toh5 utility: conversion of images is fixed
-
- Earlier releases of the h4toh5 utility produced images that did not
- correctly conform to the HDF5 Image and Palette Specification.
-
- http://hdf.ncsa.uiuc.edu/HDF5/doc/ImageSpec.html
-
- Several required HDF5 attributes are omitted, and the dataspace
- is reversed (i.e., the ht. and width of the image dataset is
- incorrectly described.) For more information, please see:
-
- http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageDetails.htm
-
- * Fixed bug with contiguous hyperslabs not being detected, causing
- slower I/O than necessary.
- * Fixed bug where non-aligned hyperslab I/O on chunked datasets was
- causing errors during I/O
- * The RCSID string in H5public.h was causing the C++ compiling problem
- because when it was included multiple times, C++ did not like
- multiple definitions of the same static variable. All occurance of
- RCSID definition are removed since we have not used it consistently
- before.
-
-
-Documentation
-=============
-
- PDF and Postscript versions of the following documents are available
- for this release:
- Document Filename
- -------- --------
- Introduction to HDF5 H5-R141-Introduction.pdf
- HDF5 Reference Manual H5-R141-RefManual.pdf
- C++ APIs to HDF5 documents H5-R141-Cplusplus.pdf
- Fortran90 APIs to HDF5 documents H5-R141-Fortran90.pdf
-
- PDF and Postscript files containing H5-R141-DocSet.pdf
- all of the above H5-R141-DocSet.ps
-
- These files are not included in this distribution, but are available
- via the Web or FTP at the following locations:
- http://hdf.ncsa.uiuc.edu/HDF5/doc/PSandPDF/
- ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/docs/
-
- While these documents are labeled Release 1.4.1, they describe
- Release 1.4.0 as well.
-
-
-Platforms Tested
-================
-
-Due to the nature of this release only C, C++ libraries and tools were tested.
-
- AIX 4.3.3.0 (IBM SP powerpc) xlc 3.6.6
- mpcc_r 3.6.6
- Cray T3E sn6711 2.0.5.47 Cray Standard C Version 6.5.0.0
- Cray SV1 10.0.0.8 Cray Standard C Version 6.5.0.0
- FreeBSD 4.3 gcc 2.95.2
- HP-UX B.10.20 HP C HP92453-01 A.10.32.30
- HP-UX B.11.00 HP C HP92453-01 A.11.01.20
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1m
- Linux 2.2.18smp gcc-2.95.2
- g++ 2.95.2
- OSF1 V4.0 DEC-V5.2-040
- Digital Fortran 90 V4.1-270
- SunOS 5.6 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.6)
-
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) Workshop Compilers 5.0 98/12/15 C++ 5.0
- TFLOPS r1.0.4 v4.0 mpich-1.2.1 with local changes
- Windows NT4.0, 2000 (NT5.0) MSVC++ 6.0
- Windows 98 MSVC++ 6.0
-
-
-Supported Configuration Features Summary
-========================================
-
- * See "Supported Configuration Features Summary" section for the HDF5
- 1.4.0 release in the HISTORY.txt file.
-
-Known Problems
-==============
-
- * The h5dump tests may fail to match the expected output in some
- platforms (e.g. SP2 parallel, Windows) where the error messages
- directed to "stderr" do not appear in the "right order" with output
- from stdout. This is not an error.
-
- * The --enable-static-exec configure flag fails to compile for HP-UX
- 11.00 platforms.
-
- * The executable are always dynamic on IRIX64 6.5(64 and n32) and
- IRIX 6.5 even if they are configured with --enable-static-exec.
-
- * The shared library failed compilation on IRIX 6.5.
-
- * After "make install" or "make install-doc" one may need to reload the source
- from the tar file before doing another build.
-
- * See "Known problems" section for the HDF5 1.4.0 release in the
- HISTORY.txt file.
-
-%%%%1.4.0%%%% Release Information for hdf5-1.4.0 (2/22/01)
-
-8. Release Information for hdf5-1.4.0
-===================================================================
-
- HDF5 Release 1.4.0
-
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.2.0 and
-HDF5-1.4.0, and contains information on the platforms tested and
-known problems in HDF5-1.4.0. For more details check the HISTORY.txt
-file in the HDF5 source.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information look at the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- New Features
-- h4toh5 Utility
-- F90 Support
-- C++ Support
-- Pablo Support
-- Bug Fixes since HDF5-1.2.0
-- Bug Fixes since HDF5-1.4.0-beta2
-- Bug Fixes since HDF5-1.4.0
-- Documentation
-- Platforms Tested
-- Supported Configuration Features
-- Known Problems
-
-
-New Features
-============
- * The Virtual File Layer, VFL, was added to replace the old file
- drivers. It also provides an API for user defined file drivers.
- * New features added to snapshots. Use 'snapshot help' to see a
- complete list of features.
- * Improved configure to detect if MPIO routines are available when
- parallel mode is requested.
- * Added Thread-Safe support. Phase I implemented. See:
-
- http://hdf.ncsa.uiuc.edu/HDF5/papers/mthdf/MTHDFpaper.htm
-
- for more details.
- * Added data sieve buffering to raw data I/O path. This is enabled
- for all VFL drivers except the mpio & core drivers. Setting the
- sieve buffer size is controlled with the new API function,
- H5Pset_sieve_buf_size(), and retrieved with H5Pget_sieve_buf_size().
- * Added new Virtual File Driver, Stream VFD, to send/receive entire
- HDF5 files via socket connections.
- * As parts of VFL, HDF-GASS and HDF-SRB are also added to this
- release. To find out details, please read INSTALL_VFL file.
- * Increased maximum number of dimensions for a dataset (H5S_MAX_RANK)
- from 31 to 32 to align with HDF4 & netCDF.
- * Added 'query' function to VFL drivers. Also added 'type' parameter to
- VFL 'read' & 'write' calls, so they are aware of the type of data
- being accessed in the file. Updated the VFL document also.
- * A new h4toh5 utility, to convert HDF4 files to analogous HDF5 files.
- * Added a new array datatype to the datatypes which can be created.
- Removed "array fields" from compound datatypes (use an array datatype
- instead).
- * Parallel HDF5 works correctly with mpich-1.2.1 on Solaris, SGI, Linux.
- * You can now install the HDF5 documentation using the
- ``make install-doc'' command. The documentation is installed in the
- $(prefix)/doc directory where $(prefix) is the prefix specified by
- the (optional) ``--prefix'' flag during configuration.
- * HDF5 can operate correctly in the OpenMP environment in a limited way.
- Check doc/html/TechNotes/openmp-hdf5.html for details.
-
-
-h4toh5 Utility
-==============
- The h4toh5 utility is a new utility that converts an HDF4 file to an
- HDF5 file. For details, see the document, "Mapping HDF4 Objects to
- HDF5 Objects":
- http://hdf.ncsa.uiuc.edu/HDF5/papers/H4-H5MappingGuidelines.pdf
-
- Known Bugs:
-
- The h4toh5 utility produces images that do not correctly conform
- to the HDF5 Image and Palette Specification.
-
- http://hdf.ncsa.uiuc.edu/HDF5/doc/ImageSpec.html
-
- Several required HDF5 attributes are omitted, and the dataspace
- is reversed (i.e., the ht. and width of the image dataset is
- incorrectly described.) For more information, please see:
-
- http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageDetails.html
-
- This bug has been fixed for the snapshot of hdf5 1.4 release. March 12th,2001
-
- Known Limitations of the h4toh5 release
- ---------------------------------------------
-
- 1. Error handlings
-
- h4toh5 utility will print out an error message when an error occurs.
-
- 2. String Datatype
-
- HDF4 has no 'string' type. String valued data are usually defined as
- an array of 'char' in HDF4. The h4toh5 utility will generally map
- these to HDF5 'String' types rather than array of char, with the
- following additional rules:
-
- * For the data of an HDF4 SDS, image, and palette, if the data is
- declared 'DFNT_CHAR8' it will be assumed to be integer and will
- be an H5T_INTEGER type.
- * For attributes of any HDF4 object, data of type 'DFNT_CHAR8'
- will be converted to an HDF5 'H5T_STRING' type.
- * For an HDF4 Vdata, it is difficult to determine whether data
- of type 'DFNT_CHAR8' is intended to be bytes or characters. The
- h4toh5 utility will consider them to be C characters, and will
- convert them to an HDF5 'H5T_STRING' type.
-
-
- 3. Compression, Chunking and External Storage
-
- Chunking is supported, but compression and external storage is not.
-
- An HDF4 object that uses chunking will be converted to an HDF5 file
- with analogous chunked storage.
-
- An HDF4 object that uses compression will be converted to an
- uncompressed HDF5 object.
-
- An HDF4 object that uses external storage will be converted to an
- HDF5 object without external storage.
-
- 4. Memory Use
-
- This version of the h4toh5 utility copies data from HDF4 objects
- in a single read followed by a single write to the HDF5 object. For
- large objects, this requires a very large amount of memory, which may
- be extremely slow or fail on some platforms.
-
- Note that a dataset that has only been partly written will
- be read completely, including uninitialized data, and all the
- data will be written to the HDF5 object.
-
- 5. Platforms
-
- The h4toh5 utility requires HDF5-1.4.0 and HDF4r1.4
-
- h4toh5 utility has been tested on all platforms listed below (see
- section "Platforms Tested") except TFLOPS.
-
-
-F90 Support
-===========
- This is the first release of the HDF5 Library with fully integrated
- F90 API support. The Fortran Library is created when the
- --enable-fortran flag is specified during configuration.
-
- Not all F90 subroutines are implemented. Please refer to the HDF5
- Reference Manual for more details.
-
- F90 APIs are available for the Solaris 2.6 and 2.7, Linux, DEC UNIX,
- T3E, SV1 and O2K (64 bit option only) platforms. The Parallel version of
- the HDF5 F90 Library is supported on the O2K and T3E platforms.
-
- Changes since the last prototype release (July 2000)
- ----------------------------------------------------
- * h5open_f and h5close_f must be called instead of h5init_types and
- h5close_types.
-
- * The following subroutines are no longer available:
-
- h5pset_xfer_f
- h5pget_xfer_f
- h5pset_mpi_f
- h5pget_mpi_f
- h5pset_stdio_f
- h5pget_stdio_f
- h5pset_sec2_f
- h5pget_sec2_f
- h5pset_core_f
- h5pget_core_f
- h5pset_family_f
- h5pget_family_f
-
- * The following functions have been added:
-
- h5pset_fapl_mpio_f
- h5pget_fapl_mpio_f
- h5pset_dxpl_mpio_f
- h5pget_dxpl_mpio_f
-
- * In the previous HDF5 F90 releases, the implementation of object
- references and dataset region references was not portable. This
- release introduces a portable implementation, but it also introduces
- changes to the read/write APIs that handle references. If object or
- dataset region references are written or read to/from an HDF5 file,
- h5dwrite_f and h5dread_f must use the extra parameter, n, for the
- buffer size:
-
- h5dwrite(read)_f(dset_id, mem_type_id, buf, n, hdferr, &
- ^^^
- mem_space_id, file_space_id, xfer_prp)
-
- For other datatypes the APIs were not changed.
-
-
-C++ Support
-===========
- This is the first release of the HDF5 Library with fully integrated
- C++ API support. The HDF5 C++ library is built when the --enable-cxx
- flag is specified during configuration.
-
- Check the HDF5 Reference Manual for available C++ documentation.
-
- C++ APIs are available for Solaris 2.6 and 2.7, Linux, and FreeBSD.
-
-
-Pablo Support
-=============
- This version does not allow proper building of the Pablo-instrumented
- version of the library. A version supporting the pablo build is
- available on the Pablo Website at
- www-pablo.cs.uiuc.edu/pub/Pablo.Release.5/HDFLibrary/hdf5_v1.4.tar.gz
-
-
-Bug Fixes since HDF5-1.2.0
-==========================
-
-Library
--------
- * The function H5Pset_mpi is renamed as H5Pset_fapl_mpio.
- * Corrected a floating point number conversion error for the Cray J90
- platform. The error did not convert the value 0.0 correctly.
- * Error was fixed which was not allowing dataset region references to
- have their regions retrieved correctly.
- * Corrected a bug that caused non-parallel file drivers to fail in
- the parallel version.
- * Added internal free-lists to reduce memory required by the library
- and H5garbage_collect API function
- * Fixed error in H5Giterate which was not updating the "index"
- parameter correctly.
- * Fixed error in hyperslab iteration which was not walking through the
- correct sequence of array elements if hyperslabs were staggered in a
- certain pattern
- * Fixed several other problems in hyperslab iteration code.
- * Fixed another H5Giterate bug which was causes groups with large
- numbers of objects in them to misbehave when the callback function
- returned non-zero values.
- * Changed return type of H5Aiterate and H5A_operator_t typedef to be
- herr_t, to align them with the dataset and group iterator functions.
- * Changed H5Screate_simple and H5Sset_extent_simple to not allow
- dimensions of size 0 with out the same dimension being unlimited.
- * QAK - 4/19/00 - Improved metadata hashing & caching algorithms to
- avoid many hash flushes and also remove some redundant I/O when
- moving metadata blocks in the file.
- * The "struct(opt)" type conversion function which gets invoked for
- certain compound datatype conversions was fixed for nested compound
- types. This required a small change in the datatype conversion
- function API.
- * Re-wrote lots of the hyperslab code to speed it up quite a bit.
- * Added bounded garbage collection for the free lists when they run
- out of memory and also added H5set_free_list_limits API call to
- allow users to put an upper limit on the amount of memory used for
- free lists.
- * Checked for non-existent or deleted objects when dereferencing one
- with object or region references and disallow dereference.
- * "Time" datatypes (H5T_UNIX_D*) were not being stored and retrieved
- from object headers correctly, fixed now.
- * Fixed H5Dread or H5Dwrite calls with H5FD_MPIO_COLLECTIVE requests
- that may hang because not all processes are transfer the same amount
- of data. (A.K.A. prematured collective return when zero amount data
- requested.) Collective calls that may cause hanging is done via the
- corresponding MPI-IO independent calls.
- * If configure with --enable-debug=all, couple functions would issue
- warning messages to "stderr" that the operation is expensive time-wise.
- This messed up applications (like testings) that did not expect the
- extra output. It is changed so that the warning will be printed only
- if the corresponding Debug key is set.
-
-Configuration
--------------
- * The hdf5.h include file was fixed to allow the HDF5 Library to be
- compiled with other libraries/applications that use GNU autoconf.
- * Configuration for parallel HDF5 was improved. Configure now attempts
- to link with libmpi.a and/or libmpio.a as the MPI libraries by
- default. It also uses "mpirun" to launch MPI tests by default. It
- tests to link MPIO routines during the configuration stage, rather
- than failing later as before. One can just do "./configure
- --enable-parallel" if the MPI library is in the system library.
- * Added support for pthread library and thread-safe option.
- * The libhdf5.settings file shows the correct machine byte-sex.
- * Added option "--enable-stream-vfd" to configure w/o the Stream VFD.
- For Solaris, added -lsocket to the LIBS list of libraries.
-
-Tools
------
- * h5dump now accepts both short and long command-line parameters:
- -h, --help Print a usage message and exit
- -B, --bootblock Print the content of the boot block
- -H, --header Print the header only; no data is displayed
- -i, --object-ids Print the object ids
- -V, --version Print version number and exit
- -a P, --attribute=P Print the specified attribute
- -d P, --dataset=P Print the specified dataset
- -g P, --group=P Print the specified group and all members
- -l P, --soft-link=P Print the value(s) of the specified soft link
- -o F, --output=F Output raw data into file F
- -t T, --datatype=T Print the specified named data type
- -w #, --width=# Set the number of columns
-
- P - is the full path from the root group to the object.
- T - is the name of the data type.
- F - is a filename.
- # - is an integer greater than 1.
- * A change from the old way command line parameters were interpreted
- is that multiple attributes, datasets, groups, soft-links, and
- object-ids cannot be specified with just one flag but you have to
- use a flag with each object. I.e., instead of doing this:
-
- h5dump -a /attr1 /attr2 foo.h5
-
- do this:
-
- h5dump -a /attr1 -a /attr2 foo.h5
-
- The cases are similar for the other object types.
- * h5dump correctly displays compound datatypes.
- * Corrected an error in h5toh4 which did not convert the 32bits
- int from HDF5 to HDF4 correctly for the T3E platform.
- * h5dump correctly displays the committed copy of predefined types
- correctly.
- * Added an option, -V, to show the version information of h5dump.
- * Fixed a core dumping bug of h5toh4 when executed on platforms like
- TFLOPS.
- * The test script for h5toh4 used to not able to detect the hdp
- dumper command was not valid. It now detects and reports the
- failure of hdp execution.
- * Merged the tools with the 1.2.2 branch. Required adding new
- macros, VERSION12 and VERSION13, used in conditional compilation.
- Updated the Windows project files for the tools.
- * h5dump displays opaque and bitfield data correctly.
- * h5dump and h5ls can browse files created with the Stream VFD
- (eg. "h5ls <hostname>:<port>").
- * h5dump has a new feature "-o <filename>" which outputs the raw data
- of the dataset into ascii text file <filename>.
- * h5toh4 used to converts hdf5 strings type to hdf4 DFNT_INT8 type.
- Corrected to produce hdf4 DFNT_CHAR type instead.
- * h5dump and h5ls displays array data correctly.
-
-
-Bug Fixes since HDF5-1.4.0-beta2
-================================
- * Fixed a bug in the conversion from a little endian double to a big
- endian float in some special cases.
- * Corrected configuration error which was not including compression
- support correctly.
- * Cleaned up lots of warnings.
- * Changed a few h5dump command line switches and added long versions of
- the switches.
- * Changed parameters for H5Tconvert, H5Pset_bufer and H5Pget_buffer from
- size_t to hsize_t
- * Fixed fairly obscure bug in hyperslab I/O which could (in rare cases)
- not copy all the data during a transfer.
- * Removed ragged array code from library.
- * F90 library and module files are installed properly now on all supported
- platforms.
-
-
-Bug Fixes since HDF5-1.4.0 Release
-==================================
-
- * Fixed bug with contiguous hyperslabs not being detected, causing
- slower I/O than necessary.
- * Fixed bug where non-aligned hyperslab I/O on chunked datasets was
- causing errors during I/O
- * Implemented XML support in h5dump.
-
-
-Documentation
-=============
- * A new document summarizing the changes in the library leading up to
- the current release has been added:
- HDF5 Software Changes from Release to Release
- This document is in the Application Developer's Guide and is of
- particular interest to developers who must keep an application
- synchronized with the library.
- * The documentation for the Fortran90 and C++ APIs is linked to the
- opening page of the Reference Manual. Fortran90 functions are
- individually referenced from the corresponding C functions through-
- out the Reference Manual.
- * User's Guide and Reference Manual were updated to reflect changed
- function syntax and to fix reported bugs.
- * Functions that are new at this release were added to the Reference
- Manual.
- * Functions that have been removed from the library were removed from
- the User's Guide and the Reference Manual.
- * PostScript and PDF versions of the Release 1.4 document set are
- not available at the time of Release 1.4.0.
-
-
-Platforms Tested
-================
- AIX 4.3.3.0 (IBM SP powerpc) xlc 3.6.6
- mpcc_r 3.6.6
- Cray T3E sn6711 2.0.5.45 Cray Standard C Version 6.4.0.0
- Cray Fortran Version 3.4.0.2
- Cray SV1 sn9605 10.0.0.7 Cray Standard C Version 6.4.0.0
- Cray Fortran Version 3.4.0.2
- FreeBSD 4.2 gcc 2.95.2
- g++ 2.95.2
- HP-UX B.10.20 HP C HP92453-01 A.10.32.30
- HP-UX B.11.00 HP C HP92453-01 A.11.00.13
- IRIX 6.5 MIPSpro cc 7.30
- mpich-1.2.1
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1m
- mpt.1.4.0.2
- mpich-1.2.1
- Linux 2.2.16-3smp gcc-2.95.2
- g++ 2.95.2
- pgf90 3.1-3
- mpich-1.2.1
- OSF1 V4.0 DEC-V5.2-040
- Digital Fortran 90 V4.1-270
- SunOS 5.6 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.6) WorkShop Compilers 5.0 99/10/25 Fortran 90
- 2.0 Patch 107356-04
- Workshop Compilers 5.0 98/12/15 C++ 5.0
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) WorkShop Compilers 5.0 99/10/25 Fortran 90
- 2.0 Patch 107356-04
- Workshop Compilers 5.0 98/12/15 C++ 5.0
- mpich-1.2.1
- SunOS 5.5.1 gcc-2.7.2
- (Solaris 2.5.1 (x86))
- TFLOPS r1.0.4 v4.0 mpich-1.2.1 with local changes
- Windows NT4.0, 2000 (NT5.0) MSVC++ 6.0
- Windows 98 MSVC++ 6.0
-
-
-Supported Configuration Features Summary
-========================================
- In the tables below
- y = tested and supported
- n = not supported or not working in this release
- ( ) = footnote appears below table
-
- Platform C C F90 F90 C++ Shared zlib Tools
- parallel parallel libraries
- Solaris2.6 y n y n y y y y
- Solaris2.7 y y (1) y n y y y y
- Solarisx86 y n n n n y y y
- IRIX6.5 y y (1) n n n n y y
- IRIX64_6.5 64 y y (2) y y n y y y
- IRIX64_6.5 32 y y (2) n n n y y y
- HPUX10.20 y n n n n y y y
- DECOSF y n y n n y y y
- T3E y y y y n n y y
- SV1 y n y n n n y y
- TFLOPS y y (1) n n n n y y (4)
- AIX-4.3 y y n n n n y n
- Win2000 y n n n n y y y
- Win98 y n n n n y y y
- WinNT y n n n n y y y
- FreeBSD y n n n y y y y
- Linux y y (1) y n y y y y
-
-
- Platform 1.2 static- Thread- SRB GASS STREAM-
- compatibility exec safe VFD
- Solaris2.6 y n n n n y
- Solaris2.7 y n y n n y
- Solarisx86 y n n n n y
- IRIX6.5 y n y n n y
- IRIX64_6.5 64 y n n n n y
- IRIX64_6.5 32 y n n n n y
- HPUX10.20 y y n n n y
- DECOSF y y n n n y
- T3E y y n n n y
- SV1 y y n n n y
- TFLOPS y y n n n n
- AIX-4.3 y y (3) n n n y
- Win2000 y y n n n n
- Win98 y y n n n n
- WinNT y y n n n n
- FreeBSD y y n n n y
- Linux y n y n n y
-
- Footnotes: (1) Using mpich.
- (2) Using mpt and mpich.
- (3) When configured with static-exec enabled, tests fail
- in serial mode.
- (4) No HDF4-related tools.
-
-
-Known Problems
-==============
- * The stream-vfd test uses ip port 10007 for testing. If another
- application is already using that port address, the test will hang
- indefinitely and has to be terminated by the kill command. To try the
- test again, change the port address in test/stream_test.c to one not
- being used in the host.
-
- * The --enable-static-exec configure flag fails to compile for Solaris
- platforms. This is due to the fact that not all of the system
- libraries on Solaris are available in a static format.
-
- The --enable-static-exec configure flag also fails to correctly compile
- on Linux platforms using the gcc-2.95.2 compiler.
-
- The --enable-static-exec configure flag also fails to correctly compile
- on IBM SP2 platform for the serial mode. The parallel mode works fine
- with this option.
-
- The compilation fails if configured with --enable-static-exec on IRIX 6.5.
-
- The executable files in hdf5/bin are dynamic-linked for IRIX64 6.5(64 and
- n32 modes) and IRIX 6.5, even though they are compiled with static library.
-
- It is suggested that you don't use this option on these platforms
- during configuration.
-
- * testhdf5 got bus error with configuration options --prefix and --with-hdf4
- on IRIX 6.5.
-
- * With the gcc 2.95.2 compiler, HDF 5 uses the `-ansi' flag during
- compilation. The ANSI version of the compiler complains about not being
- able to handle the `long long' datatype with the warning:
-
- warning: ANSI C does not support `long long'
-
- This warning is innocuous and can be safely ignored.
-
- * SunOS 5.6 with C WorkShop Compilers 4.2: Hyperslab selections will
- fail if library is compiled using optimization of any level.
-
- * When building hdf5 tools and applications on windows platform, a linking
- warning: defaultlib "LIBC" conflicts with use of other libs will appear
- on debug version when running VC++6.0. This warning doesn't affect building
- and testing hdf5 applications. We will continue investigating this.
-
- * h5toh4 converter fails two cases(tstr.h5 and tmany.h5) for release dll
- version on windows 2000 and NT. The reason is possibly due to Windows NT
- DLL convention on freeing memory. It seems that memory cannot be freed
- across library or DLL. It is still under investigation.
-
- * HDF-GASS testings and testhdf5 in the test directory will get bus error if
- the configured with --with-gass.
-
- * HDF-SRB testing got segmentation error on Solaris 2.7.
-
- * The Stream VFD was not tested yet under Windows.
- It is not supported in the TFLOPS machine.
-
- * Shared library option is broken for IBM SP and some Origin 2000 platforms.
- One needs to run ./configure with '--disable-shared --enable-static'.
-
- * The ./dsets tests failed in the TFLOPS machine if the test program,
- dsets.c, is compiled with the -O option. The hdf5 library still works
- correctly with the -O option. The test program works fine if it is
- compiled with -O1 or -O0. Only -O (same as -O2) causes the test
- program to fail.
-
- * Certain platforms give false negatives when testing h5ls:
- - Solaris x86 2.5.1, Cray T3E and Cray J90 give errors during testing
- when displaying object references in certain files. These are benign
- differences due to the difference in sizes of the objects created on
- those platforms. h5ls appears to be dumping object references
- correctly.
- - Cray J90 give errors during testing when displaying
- some floating-point values. These are benign differences due to the
- different precision in the values displayed and h5ls appears to be
- dumping floating-point numbers correctly.
-
- * Before building HDF5 F90 Library from source on Crays (T3E and SV1)
- replace H5Aff.f90, H5Dff.f90 and H5Pff.f90 files in the fortran/src
- subdirectory in the top level directory with the Cray-specific files from
- the ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/hdf5-1.4.0/src/crayf90/ directory.
-
- * The h4toh5 utility produces images that do not correctly conform
- to the HDF5 Image and Palette Specification.
-
- http://hdf.ncsa.uiuc.edu/HDF5/doc/ImageSpec.html
-
- Several required HDF5 attributes are omitted, and the dataspace
- is reversed (i.e., the ht. and width of the image dataset is
- incorrectly described.) For more information, please see:
-
- http://hdf.ncsa.uiuc.edu/HDF5/H5Image/ImageDetails.htm
-
-%%%%1.2.2%%%% Release Information for hdf5-1.2.2 (6/23/00)
-
-7. Release Information for hdf5-1.2.2
-=================================================================
-INTRODUCTION
-
-This document describes the differences between HDF5-1.2.1 and
-HDF5-1.2.2, and contains information on the platforms where HDF5-1.2.2
-was tested and known problems in HDF5-1.2.2.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information look at the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-
-CONTENTS
-
-- Features Added since HDF5-1.2.1
-- Bug Fixes since HDF5-1.2.1
-- Known Problems
-- Platforms Tested
-
-
-Features Added since HDF5-1.2.1
-===============================
- * Added internal free-lists to reduce memory required by the library and
- H5garbage_collect API function.
- * h5dump displays opaque and bitfield types.
- * New features added to snapshots. Use 'snapshot help' to see a
- complete list of features.
- * Improved configure to detect if MPIO routines are available when
- parallel mode is requested.
-
-Bug Fixes since HDF5-1.2.1
-==========================
- * h5dump correctly displays compound datatypes, including simple and
- nested compound types.
- * h5dump correctly displays the committed copy of predefined types.
- * Corrected an error in h5toh4 which did not convert the 32-bit
- int from HDF5 to HDF4 correctly for the T3E platform.
- * Corrected a floating point number conversion error for the
- Cray J90 platform. The error did not convert the value 0.0
- correctly.
- * Fixed error in H5Giterate which was not updating the "index" parameter
- correctly.
- * Fixed error in hyperslab iteration which was not walking through the
- correct sequence of array elements if hyperslabs were staggered in a
- certain pattern.
- * Fixed several other problems in hyperslab iteration code.
- * Fixed another H5Giterate bug which caused groups with large numbers
- of objects in them to misbehave when the callback function returned
- non-zero values.
- * Changed return type of H5Aiterate and H5A_operator_t typedef to be
- herr_t, to align them with the dataset and group iterator functions.
- * Changed H5Screate_simple and H5Sset_extent_simple to not allow dimensions
- of size 0 without the same dimension being unlimited.
- * Improved metadata hashing & caching algorithms to avoid
- many hash flushes and also removed some redundant I/O when moving metadata
- blocks in the file.
- * The libhdf5.settings file shows the correct machine byte-sex.
- * The "struct(opt)" type conversion function which gets invoked for
- certain compound datatype conversions was fixed for nested compound
- types. This required a small change in the datatype conversion
- function API.
-
-Known Problems
-==============
-
-o SunOS 5.6 with C WorkShop Compilers 4.2: hyperslab selections will
- fail if library is compiled using optimization of any level.
-o TFLOPS: dsets test fails if compiled with optimization turned on.
-o J90: tools fail to dispay data for the datasets with a compound datatype.
-
-Platforms Tested
-================
-
- AIX 4.3.3 (IBM SP) 3.6.6 | binaries
- mpicc using mpich 1.1.2 | are not
- mpicc_r using IBM MPI-IO prototype | available
- AIX 4.3.2.0 (IBM SP) xlc 5.0.1.0
- Cray J90 10.0.0.7 cc 6.3.0.2
- Cray T3E 2.0.5.29 cc 6.3.0.2
- mpt.1.3
- FreeBSD 4.0 gcc 2.95.2
- HP-UX B.10.20 HP C HP92453-01 A.10.32
- HP-UX B.11.00 HP92453-01 A.11.00.13 HP C Compiler
- (static library only, h5toh4 tool is not available)
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1m
- mpt.1.4
-
- Linux 2.2.10 SMP gcc 2.95.1
- mpicc(gcc-2.95.1)
- gcc (egcs-2.91.66)
- mpicc (egcs-2.91.66)
- Linux 2.2.16 (RedHat 6.2) gcc 2.95.2
-
- OSF1 V4.0 DEC-V5.2-040
- SunOS 5.6 cc WorkShop Compilers 5.0 no optimization
- SunOS 5.7 cc WorkShop Compilers 5.0
- SolarisX86 SunOS 5.5.1 gcc version 2.7.2 with --disable-hsizet
- TFLOPS 3.2.1 pgcc Rel 3.1-3i
- mpich-1.1.2 with local changes
- Windows NT4.0 sp5 MSVC++ 6.0
- Windows 98 MSVC++ 6.0
- Windows 2000 MSVC++ 6.0
-
-
-
-%%%%1.2.1%%%% Release Information for hdf5-1.2.1
-
-6. Release Information for hdf5-1.2.1
-================================================================
-
-
-Bug fixes since HDF5-1.2.0
-==========================
-
-Configuration
--------------
-
- * The hdf5.h include file was fixed to allow the HDF5 Library to be compiled
- with other libraries/applications that use GNU autoconf.
- * Configuration for parallel HDF5 was improved. Configure now attempts to
- link with libmpi.a and/or libmpio.a as the MPI libraries by default.
- It also uses "mpirun" to launch MPI tests by default. It tests to
- link MPIO routines during the configuration stage, rather than failing
- later as before. One can just do "./configure --enable-parallel"
- if the MPI library is in the system library.
-
-Library
--------
-
- * Error was fixed which was not allowing dataset region references to have
- their regions retrieved correctly.
- * Added internal free-lists to reduce memory required by the library and
- H5garbage_collect API function
- * Fixed error in H5Giterate which was not updating the "index" parameter
- correctly.
- * Fixed error in hyperslab iteration which was not walking through the
- correct sequence of array elements if hyperslabs were staggered in a
- certain pattern
- * Fixed several other problems in hyperslab iteration code.
-
-Tests
-------
-
- * Added additional tests for group and attribute iteration.
- * Added additional test for staggered hyperslab iteration.
- * Added additional test for random 5-D hyperslab selection.
-
-Tools
-------
-
- * Added an option, -V, to show the version information of h5dump.
- * Fixed a core dumping bug of h5toh4 when executed on platforms like
- TFLOPS.
- * The test script for h5toh4 used to not able to detect the hdp
- dumper command was not valid. It now detects and reports the
- failure of hdp execution.
-
-Documentation
--------------
-
- * User's Guide and Reference Manual were updated.
- See doc/html/PSandPDF/index.html for more details.
-
-
-Platforms Tested:
-================
-Note: Due to the nature of bug fixes, only static versions of the library and tools were tested.
-
-
- AIX 4.3.2 (IBM SP) 3.6.6
- Cray T3E 2.0.4.81 cc 6.3.0.1
- mpt.1.3
- FreeBSD 3.3-STABLE gcc 2.95.2
- HP-UX B.10.20 HP C HP92453-01 A.10.32
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1m
- mpt.1.3 (SGI MPI 3.2.0.0)
-
- Linux 2.2.10 SuSE egcs-2.91.66 configured with
- (i686-pc-linux-gnu) --disable-hsizet
- mpich-1.2.0 egcs-2.91.66 19990314/Linux
-
- OSF1 V4.0 DEC-V5.2-040
- SunOS 5.6 cc WorkShop Compilers 4.2 no optimization
- SunOS 5.7 cc WorkShop Compilers 5.0
- TFLOPS 2.8 cicc (pgcc Rel 3.0-5i)
- mpich-1.1.2 with local changes
- Windows NT4.0 sp5 MSVC++ 6.0
-
-Known Problems:
-==============
-
-o SunOS 5.6 with C WorkShop Compilers 4.2: Hyperslab selections will
- fail if library is compiled using optimization of any level.
-
-
-
-%%%%1.2.0%%%% Release Information for hdf5-1.2.0
-
-5. Release Information for hdf5-1.2.0
-===================================================================
-
-A. Platforms Supported
- -------------------
-
-Operating systems listed below with compiler information and MPI library, if
-applicable, are systems that HDF5 1.2.0 was tested on.
-
- Compiler & libraries
- Platform Information Comment
- -------- ---------- --------
-
- AIX 4.3.2 (IBM SP) 3.6.6
-
- Cray J90 10.0.0.6 cc 6.3.0.0
-
- Cray T3E 2.0.4.61 cc 6.2.1.0
- mpt.1.3
-
- FreeBSD 3.2 gcc 2.95.1
-
- HP-UX B.10.20 HP C HP92453-01 A.10.32
- gcc 2.8.1
-
- IRIX 6.5 MIPSpro cc 7.30
-
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1m
- mpt.1.3 (SGI MPI 3.2.0.0)
-
- Linux 2.2.10 egcs-2.91.66 configured with
- --disable-hsizet
- lbraries: glibc2
-
- OSF1 V4.0 DEC-V5.2-040
-
- SunOS 5.6 cc WorkShop Compilers 4.2
- no optimization
- gcc 2.8.1
-
- SunOS 5.7 cc WorkShop Compilers 5.0
- gcc 2.8.1
-
- TFLOPS 2.7.1 cicc (pgcc Rel 3.0-4i)
- mpich-1.1.2 with local changes
-
- Windows NT4.0 intel MSVC++ 5.0 and 6.0
-
- Windows NT alpha 4.0 MSVC++ 5.0
-
- Windows 98 MSVC++ 5.0
-
-
-B. Known Problems
- --------------
-
-* NT alpha 4.0
- Dumper utiliy h5dump fails if linked with DLL.
-
-* SunOS 5.6 with C WorkShop Compilers 4.2
- Hyperslab selections will fail if library is compiled using optimization
- of any level.
-
-
-C. Changes Since Version 1.0.1
- ---------------------------
-
-1. Documentation
- -------------
-
-* More examples
-
-* Updated user guide, reference manual, and format specification.
-
-* Self-contained documentation for installations isolated from the
- Internet.
-
-* HDF5 Tutorial was added to the documentation
-
-2. Configuration
- -------------
-
-* Better detection and support for MPI-IO.
-
-* Recognition of compilers with known code generation problems.
-
-* Support for various compilers on a single architecture (e.g., the
- native compiler and the GNU compilers).
-
-* Ability to build from read-only media and with different compilers
- and/or options concurrently.
-
-* Added a libhdf5.settings file which summarizes the configuration
- information and is installed along with the library.
-
-* Builds a shared library on most systems that support it.
-
-* Support for Cray T3E, J90 and Windows/NT.
-
-3. Debugging
- ---------
-
-* Improved control and redirection of debugging and tracing messages.
-
-4. Datatypes
- ---------
-
-* Optimizations to compound datatype conversions and I/O operations.
-
-* Added nearly 100 optimized conversion functions for native datatypes
- including support for non-aligned data.
-
-* Added support for bitfield, opaque, and enumeration types.
-
-* Added distinctions between signed and unsigned char types to the
- list of predefined native hdf5 datatypes.
-
-* Added HDF5 type definitions for C9x types like int32_t.
-
-* Application-defined type conversion functions can handle non-packed
- data.
-
-* Changed the H5Tunregister() function to use wildcards when matching
- conversion functions. H5Tregister_hard() and H5Tregister_soft()
- were combined into H5Tregister().
-
-* Support for variable-length datatypes (arrays of varying length per
- dataset element). Variable length strings currently supported only
- as variable length arrays of 1-byte integers.
-
-5. Dataspaces
- ----------
-
-* New query functions for selections.
-
-* I/O operations bypass the stripmining loop and go directly to
- storage for certain contiguous selections in the absense of type
- conversions. In other cases the stripmining buffers are used more
- effectively.
-
-* Reduced the number of I/O requests under certain circumstances,
- improving performance on systems with high I/O latency.
-
-6. Persistent Pointers
- -------------------
-
-* Object (serial and parallel) and dataset region (serial only)
- references are implemented.
-
-7. Parallel Support
- ----------------
-
-* Improved parallel I/O performance.
-
-* Supported new platforms: Cray T3E, Linux, DEC Cluster.
-
-* Use vendor supported version of MPIO on SGI O2K and Cray platforms.
-
-* Improved the algorithm that translates an HDF5 hyperslab selection
- into an MPI type for better collective I/O performance.
-
-8. New API functions
- -----------------
-
- a. Property List Interface:
- ------------------------
-
- H5Pset_xfer - set data transfer properties
- H5Pset_preserve - set dataset transfer property list status
- H5Pget_preserve - get dataset transfer property list status
- H5Pset_hyper_cache - indicates whether to cache hyperslab blocks during I/O
- H5Pget_hyper_cache - returns information regarding the caching of
- hyperslab blocks during I/O
- H5Pget_btree_ratios - sets B-tree split ratios for a dataset
- transfer property list
- H5Pset_btree_ratios - gets B-tree split ratios for a dataset
- transfer property list
- H5Pset_vlen_mem_manager - sets the memory manager for variable-length
- datatype allocation
- H5Pget_vlen_mem_manager - sets the memory manager for variable-length
- datatype allocation
-
- b. Dataset Interface:
- ------------------
-
- H5Diterate - iterate over all selected elements in a dataspace
- H5Dget_storage_size - return the amount of storage required for a dataset
- H5Dvlen_reclaim - reclaim VL datatype memory buffers
-
- c. Dataspace Interface:
- --------------------
- H5Sget_select_hyper_nblocks - get number of hyperslab blocks
- H5Sget_select_hyper_blocklist - get the list of hyperslab blocks
- currently selected
- H5Sget_select_elem_npoints - get the number of element points
- in the current selection
- H5Sget_select_elem_pointlist - get the list of element points
- currently selected
- H5Sget_select_bounds - gets the bounding box containing
- the current selection
-
- d. Datatype Interface:
- -------------------
- H5Tget_super - return the base datatype from which a
- datatype is derived
- H5Tvlen_create - creates a new variable-length dataype
- H5Tenum_create - creates a new enumeration datatype
- H5Tenum_insert - inserts a new enumeration datatype member
- H5Tenum_nameof - returns the symbol name corresponding to a
- specified member of an enumeration datatype
- H5Tvalueof - return the value corresponding to a
- specified member of an enumeration datatype
- H5Tget_member_value - return the value of an enumeration datatype member
- H5Tset_tag - tags an opaque datatype
- H5Tget_tag - gets the tag associated with an opaque datatype
-
- e. Identifier Interface:
- ---------------------
- H5Iget_type - retrieve the type of an object
-
- f. Reference Interface:
- --------------------
- H5Rcreate - creates a reference
- H5Rdereference - open the HDF5 object referenced
- H5Rget_region - retrieve a dataspace with the specified region selected
- H5Rget_object_type - retrieve the type of object that an
- object reference points to
-
- g. Ragged Arrays (alpha) (names of those API functions were changed):
- ------------------------------------------------------------------
- H5RAcreate - create a new ragged array (old name was H5Rcreate)
- H5RAopen - open an existing array (old name was H5Ropen)
- H5RAclose - close a ragged array (old name was H5Rclose)
- H5RAwrite - write to an array (old name was H5Rwrite)
- H5RAread - read from an array (old name was H5Rread)
-
-
-9. Tools
- -----
-
-* Enhancements to the h5ls tool including the ability to list objects
- from more than one file, to display raw hexadecimal data, to
- show file addresses for raw data, to format output more reasonably,
- to show object attributes, and to perform a recursive listing,
-
-* Enhancements to h5dump: support new data types added since previous
- versions.
-
-* h5toh4: An hdf5 to hdf4 converter.
-
-
-
-%%%%1.0.1%%%% Release Information for hdf5-1.0.1
-
-4. Changes from Release 1.0.0 to Release 1.0.1
-=====================================================================
-
-* [Improvement]: configure sets up the Makefile in the parallel tests
- suit (testpar/) correctly.
-
-* [Bug-Fix]: Configure failed for all IRIX versions other than 6.3.
- It now configures correctly for all IRIX 6.x version.
-
-* Released Parallel HDF5
-
- Supported Features:
- ------------------
-
- HDF5 files are accessed according to the communicator and INFO
- object defined in the property list set by H5Pset_mpi.
-
- Independent read and write accesses to fixed and extendable dimension
- datasets.
-
- Collective read and write accesses to fixed dimension datasets.
-
- Supported Platforms:
- -------------------
-
- Intel Red
- IBM SP2
- SGI Origin 2000
-
- Changes In This Release:
- -----------------------
-
- o Support of Access to Extendable Dimension Datasets.
- Extendable dimension datasets must use chunked storage methods.
- A new function, H5Dextend, is created to extend the current
- dimensions of a dataset. The current release requires the
- MPI application must make a collective call to extend the
- dimensions of an extendable dataset before writing to the
- newly extended area. (The serial does not require the
- call of H5Dextend. The dimensions of an extendable
- dataset is increased when data is written to beyond the
- current dimensions but within the maximum dimensions.)
- The required collective call of H5Dextend may be relaxed
- in future release.
-
- This release only support independent read and write accesses
- to extendable datasets. Collective accesses to extendable
- datasets will be implemented in future releases.
-
- o Collective access to fixed dimension datasets.
- Collective access to a dataset can be specified in the transfer
- property list argument in H5Dread and H5Dwrite. The current
- release supports collective access to fixed dimension datasets.
- Collective access to extendable datasets will be implemented in
- future releases.
-
- o HDF5 files are opened according to Communicator and INFO object.
- H5Dopen now records the communicator and INFO setup by H5Pset_mmpi
- and pass them to the corresponding MPIO open file calls for
- processing.
-
- o This release has been tested on IBM SP2, Intel Red and SGI Origin 2000
- systems. It uses the ROMIO version of MPIO interface for parallel
- I/O supports.
-
-
-
-%%%%1.0.0%%%% Release Information for hdf5-1.0.0
-
-3. Changes from the Beta 1.0.0 Release to Release 1.0.0
-====================================================================
-
-* Added fill values for datasets. For contiguous datasets fill value
- performance may be quite poor since the fill value is written to the
- entire dataset when the dataset is created. This will be remedied
- in a future version. Chunked datasets using fill values do not
- incur any additional overhead. See H5Pset_fill_value().
-
-* Multiple hdf5 files can be "mounted" on one another to create a
- larger virtual file. See H5Fmount().
-
-* Object names can be removed or changed but objects are never
- actually removed from the file yet. See H5Gunlink() and H5Gmove().
-
-* Added a tuning mechanism for B-trees to insure that sequential
- writes to chunked datasets use less overhead. See H5Pset_btree_ratios().
-
-* Various optimizations and bug fixes.
-
-
-
-%%%%1.0.0 Beta%%%% Release Information for hdf5-1.0.0 Beta
-
-2. Changes from the Second Alpha 1.0.0 Release to the Beta 1.0.0 Release
-=========================================================================
-
-* Strided hyperslab selections in dataspaces now working.
-
-* The compression API has been replaced with a more general filter
- API. See doc/html/Filters.html for details.
-
-* Alpha-quality 2d ragged arrays are implemented as a layer built on
- top of other hdf5 objects. The API and storage format will almost
- certainly change.
-
-* More debugging support including API tracing. See Debugging.html.
-
-* C and Fortran style 8-bit fixed-length character string types are
- supported with space or null padding or null termination and
- translations between them.
-
-* Added function H5Fflush() to write all cached data immediately to
- the file.
-
-* Datasets maintain a modification time which can be retrieved with
- H5Gstat().
-
-* The h5ls tool can display much more information, including all the
- values of a dataset.
-
-
-
-%%%%1.0.0 Alpha 2%%%% Release Information for hdf5-1.0.0 Alpha 2
-
-1. Changes from the First Alpha 1.0.0 Release to
- the Second Alpha 1.0.0 Release
-=====================================================================
-
-* Two of the packages have been renamed. The data space API has been
- renamed from `H5P' to `H5S' and the property list (template) API has
- been renamed from `H5C' to `H5P'.
-
-* The new attribute API `H5A' has been added. An attribute is a small
- dataset which can be attached to some other object (for instance, a
- 4x4 transformation matrix attached to a 3-dimensional dataset, or an
- English abstract attached to a group).
-
-* The error handling API `H5E' has been completed. By default, when an
- API function returns failure an error stack is displayed on the
- standard error stream. The H5Eset_auto() controls the automatic
- printing and H5E_BEGIN_TRY/H5E_END_TRY macros can temporarily
- disable the automatic error printing.
-
-* Support for large files and datasets (>2GB) has been added. There
- is an html document that describes how it works. Some of the types
- for function arguments have changed to support this: all arguments
- pertaining to sizes of memory objects are `size_t' and all arguments
- pertaining to file sizes are `hsize_t'.
-
-* More data type conversions have been added although none of them are
- fine tuned for performance. There are new converters from integer
- to integer and float to float, but not between integers and floating
- points. A bug has been fixed in the converter between compound
- types.
-
-* The numbered types have been removed from the API: int8, uint8,
- int16, uint16, int32, uint32, int64, uint64, float32, and float64.
- Use standard C types instead. Similarly, the numbered types were
- removed from the H5T_NATIVE_* architecture; use unnumbered types
- which correspond to the standard C types like H5T_NATIVE_INT.
-
-* More debugging support was added. If tracing is enabled at
- configuration time (the default) and the HDF5_TRACE environment
- variable is set to a file descriptor then all API calls will emit
- the function name, argument names and values, and return value on
- that file number. There is an html document that describes this.
- If appropriate debugging options are enabled at configuration time,
- some packages will display performance information on stderr.
-
-* Data types can be stored in the file as independent objects and
- multiple datasets can share a data type.
-
-* The raw data I/O stream has been implemented and the application can
- control meta and raw data caches, so I/O performance should be
- improved from the first alpha release.
-
-* Group and attribute query functions have been implemented so it is
- now possible to find out the contents of a file with no prior
- knowledge.
-
-* External raw data storage allows datasets to be written by other
- applications or I/O libraries and described and accessed through
- HDF5.
-
-* Hard and soft (symbolic) links are implemented which allow groups to
- share objects. Dangling and recursive symbolic links are supported.
-
-* User-defined data compression is implemented although we may
- generalize the interface to allow arbitrary user-defined filters
- which can be used for compression, checksums, encryption,
- performance monitoring, etc. The publicly-available `deflate'
- method is predefined if the GNU libz.a can be found at configuration
- time.
-
-* The configuration scripts have been modified to make it easier to
- build debugging vs. production versions of the library.
-
-* The library automatically checks that the application was compiled
- with the correct version of header files.
-
-
- Parallel HDF5 Changes
-
-* Parallel support for fixed dimension datasets with contiguous or
- chunked storages. Also, support unlimited dimension datasets which
- must use chunk storage. No parallel support for compressed datasets.
-
-* Collective data transfer for H5Dread/H5Dwrite. Collective access
- support for datasets with contiguous storage only, thus only fixed
- dimension datasets for now.
-
-* H5Pset_mpi and H5Pget_mpi no longer have the access_mode
- argument. It is taken over by the data-transfer property list
- of H5Dread/H5Dwrite.
-
-* New functions H5Pset_xfer and H5Pget_xfer to handle the
- specification of independent or collective data transfer_mode
- in the dataset transfer properties list. The properties
- list can be used to specify data transfer mode in the H5Dwrite
- and H5Dread function calls.
-
-* Added parallel support for datasets with chunked storage layout.
- When a dataset is extend in a PHDF5 file, all processes that open
- the file must collectively call H5Dextend with identical new dimension
- sizes.
-
-
- LIST OF API FUNCTIONS
-
-The following functions are implemented. Errors are returned if an
-attempt is made to use some feature which is not implemented and
-printing the error stack will show `not implemented yet'.
-
-Library
- H5check - check that lib version matches header version
- H5open - initialize library (happens automatically)
- H5close - shut down the library (happens automatically)
- H5dont_atexit - don't call H5close on exit
- H5get_libversion - retrieve library version info
- H5check_version - check for specific library version
-
-Property Lists
- H5Pclose - release template resources
- H5Pcopy - copy a template
- H5Pcreate - create a new template
- H5Pget_chunk - get chunked storage properties
- H5Pset_chunk - set chunked storage properties
- H5Pget_class - get template class
- H5Pget_istore_k - get chunked storage properties
- H5Pset_istore_k - set chunked storage properties
- H5Pget_layout - get raw data layout class
- H5Pset_layout - set raw data layout class
- H5Pget_sizes - get address and size sizes
- H5Pset_sizes - set address and size sizes
- H5Pget_sym_k - get symbol table storage properties
- H5Pset_sym_k - set symbol table storage properties
- H5Pget_userblock - get user-block size
- H5Pset_userblock - set user-block size
- H5Pget_version - get file version numbers
- H5Pget_alignment - get data alignment properties
- H5Pset_alignment - set data alignment properties
- H5Pget_external_count- get count of external data files
- H5Pget_external - get information about an external data file
- H5Pset_external - add a new external data file to the list
- H5Pget_driver - get low-level file driver class
- H5Pget_stdio - get properties for stdio low-level driver
- H5Pset_stdio - set properties for stdio low-level driver
- H5Pget_sec2 - get properties for sec2 low-level driver
- H5Pset_sec2 - set properties for sec2 low-level driver
- H5Pget_core - get properties for core low-level driver
- H5Pset_core - set properties for core low-level driver
- H5Pget_split - get properties for split low-level driver
- H5Pset_split - set properties for split low-level driver
- H5P_get_family - get properties for family low-level driver
- H5P_set_family - set properties for family low-level driver
- H5Pget_cache - get meta- and raw-data caching properties
- H5Pset_cache - set meta- and raw-data caching properties
- H5Pget_buffer - get raw-data I/O pipe buffer properties
- H5Pset_buffer - set raw-data I/O pipe buffer properties
- H5Pget_preserve - get type conversion preservation properties
- H5Pset_preserve - set type conversion preservation properties
- H5Pget_nfilters - get number of raw data filters
- H5Pget_filter - get raw data filter properties
- H5Pset_filter - set raw data filter properties
- H5Pset_deflate - set deflate compression filter properties
- H5Pget_mpi - get MPI-IO properties
- H5Pset_mpi - set MPI-IO properties
- H5Pget_xfer - get data transfer properties
- + H5Pset_xfer - set data transfer properties
- + H5Pset_preserve - set dataset transfer property list status
- + H5Pget_preserve - get dataset transfer property list status
- + H5Pset_hyper_cache - indicates whether to cache hyperslab blocks during I/O
- + H5Pget_hyper_cache - returns information regarding the caching of
- hyperslab blocks during I/O
- + H5Pget_btree_ratios - sets B-tree split ratios for a dataset
- transfer property list
- + H5Pset_btree_ratios - gets B-tree split ratios for a dataset
- transfer property list
- + H5Pset_vlen_mem_manager - sets the memory manager for variable-length
- datatype allocation
- + H5Pget_vlen_mem_manager - sets the memory manager for variable-length
- datatype allocation
-
-Datasets
- H5Dclose - release dataset resources
- H5Dcreate - create a new dataset
- H5Dget_space - get data space
- H5Dget_type - get data type
- H5Dget_create_plist - get dataset creation properties
- H5Dopen - open an existing dataset
- H5Dread - read raw data
- H5Dwrite - write raw data
- H5Dextend - extend a dataset
- + H5Diterate - iterate over all selected elements in a dataspace
- + H5Dget_storage_size - return the amount of storage required for a dataset
- + H5Dvlen_reclaim - reclaim VL datatype memory buffers
-
-Attributes
- H5Acreate - create a new attribute
- H5Aopen_name - open an attribute by name
- H5Aopen_idx - open an attribute by number
- H5Awrite - write values into an attribute
- H5Aread - read values from an attribute
- H5Aget_space - get attribute data space
- H5Aget_type - get attribute data type
- H5Aget_name - get attribute name
- H5Anum_attrs - return the number of attributes for an object
- H5Aiterate - iterate over an object's attributes
- H5Adelete - delete an attribute
- H5Aclose - close an attribute
-
-Errors
- H5Eclear - clear the error stack
- H5Eprint - print an error stack
- H5Eget_auto - get automatic error reporting settings
- H5Eset_auto - set automatic error reporting
- H5Ewalk - iterate over the error stack
- H5Ewalk_cb - the default error stack iterator function
- H5Eget_major - get the message for the major error number
- H5Eget_minor - get the message for the minor error number
-
-Files
- H5Fclose - close a file and release resources
- H5Fcreate - create a new file
- H5Fget_create_plist - get file creation property list
- H5Fget_access_plist - get file access property list
- H5Fis_hdf5 - determine if a file is an hdf5 file
- H5Fopen - open an existing file
- H5Freopen - reopen an HDF5 file
- H5Fmount - mount a file
- H5Funmount - unmount a file
- H5Fflush - flush all buffers associated with a file to disk
-
-Groups
- H5Gclose - close a group and release resources
- H5Gcreate - create a new group
- H5Gopen - open an existing group
- H5Giterate - iterate over the contents of a group
- H5Gmove - change the name of some object
- H5Glink - create a hard or soft link to an object
- H5Gunlink - break the link between a name and an object
- H5Gget_objinfo - get information about a group entry
- H5Gget_linkval - get the value of a soft link
- H5Gget_comment - get the comment string for an object
- H5Gset_comment - set the comment string for an object
-
-Dataspaces
- H5Screate - create a new data space
- H5Scopy - copy a data space
- H5Sclose - release data space
- H5Screate_simple - create a new simple data space
- H5Sset_space - set simple data space extents
- H5Sis_simple - determine if data space is simple
- H5Sset_extent_simple - set simple data space dimensionality and size
- H5Sget_simple_extent_npoints - get number of points in simple extent
- H5Sget_simple_extent_ndims - get simple data space dimensionality
- H5Sget_simple_extent_dims - get simple data space size
- H5Sget_simple_extent_type - get type of simple extent
- H5Sset_extent_none - reset extent to be empty
- H5Sextent_copy - copy the extent from one data space to another
- H5Sget_select_npoints - get number of points selected for I/O
- H5Sselect_hyperslab - set hyperslab dataspace selection
- H5Sselect_elements - set element sequence dataspace selection
- H5Sselect_all - select entire extent for I/O
- H5Sselect_none - deselect all elements of extent
- H5Soffset_simple - set selection offset
- H5Sselect_valid - determine if selection is valid for extent
- + H5Sget_select_hyper_nblocks - get number of hyperslab blocks
- + H5Sget_select_hyper_blocklist - get the list of hyperslab blocks
- currently selected
- + H5Sget_select_elem_npoints - get the number of element points
- in the current selection
- + H5Sget_select_elem_pointlist - get the list of element points
- currently selected
- + H5Sget_select_bounds - gets the bounding box containing
- the current selection
-
-Datatypes
- H5Tclose - release data type resources
- H5Topen - open a named data type
- H5Tcommit - name a data type
- H5Tcommitted - determine if a type is named
- H5Tcopy - copy a data type
- H5Tcreate - create a new data type
- H5Tequal - compare two data types
- H5Tlock - lock type to prevent changes
- H5Tfind - find a data type conversion function
- H5Tconvert - convert data from one type to another
- H5Tregister - register a conversion function
- H5Tunregister - remove a conversion function
- H5Tget_overflow - get function that handles overflow conv. cases
- H5Tset_overflow - set function to handle overflow conversion cases
- H5Tget_class - get data type class
- H5Tget_cset - get character set
- H5Tget_ebias - get exponent bias
- H5Tget_fields - get floating point fields
- H5Tget_inpad - get inter-field padding
- H5Tget_member_dims - get struct member dimensions
- H5Tget_member_name - get struct member name
- H5Tget_member_offset - get struct member byte offset
- H5Tget_member_type - get struct member type
- H5Tget_nmembers - get number of struct members
- H5Tget_norm - get floating point normalization
- H5Tget_offset - get bit offset within type
- H5Tget_order - get byte order
- H5Tget_pad - get padding type
- H5Tget_precision - get precision in bits
- H5Tget_sign - get integer sign type
- H5Tget_size - get size in bytes
- H5Tget_strpad - get string padding
- H5Tinsert - insert scalar struct member
- H5Tinsert_array - insert array struct member
- H5Tpack - pack struct members
- H5Tset_cset - set character set
- H5Tset_ebias - set exponent bias
- H5Tset_fields - set floating point fields
- H5Tset_inpad - set inter-field padding
- H5Tset_norm - set floating point normalization
- H5Tset_offset - set bit offset within type
- H5Tset_order - set byte order
- H5Tset_pad - set padding type
- H5Tset_precision - set precision in bits
- H5Tset_sign - set integer sign type
- H5Tset_size - set size in bytes
- H5Tset_strpad - set string padding
- + H5Tget_super - return the base datatype from which a
- datatype is derived
- + H5Tvlen_create - creates a new variable-length dataype
- + H5Tenum_create - creates a new enumeration datatype
- + H5Tenum_insert - inserts a new enumeration datatype member
- + H5Tenum_nameof - returns the symbol name corresponding to a
- specified member of an enumeration datatype
- + H5Tvalueof - return the value corresponding to a
- specified member of an enumeration datatype
- + H5Tget_member_value - return the value of an enumeration datatype member
- + H5Tset_tag - tags an opaque datatype
- + H5Tget_tag - gets the tag associated with an opaque datatype
-
- - H5Tregister_hard - register specific type conversion function
- - H5Tregister_soft - register general type conversion function
-
-Filters
- H5Tregister - register a conversion function
-
-Compression
- H5Zregister - register new compression and uncompression
- functions for a method specified by a method number
-
-Identifiers
- + H5Iget_type - retrieve the type of an object
-
-References
- + H5Rcreate - creates a reference
- + H5Rdereference - open the HDF5 object referenced
- + H5Rget_region - retrieve a dataspace with the specified region selected
- + H5Rget_object_type - retrieve the type of object that an
- object reference points to
-
-Ragged Arrays (alpha)
- H5RAcreate - create a new ragged array
- H5RAopen - open an existing array
- H5RAclose - close a ragged array
- H5RAwrite - write to an array
- H5RAread - read from an array
-
-
diff --git a/doc/html/ADGuide/ImageSpec.html b/doc/html/ADGuide/ImageSpec.html
deleted file mode 100755
index f5bf217..0000000
--- a/doc/html/ADGuide/ImageSpec.html
+++ /dev/null
@@ -1,1279 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.72 [en] (WinNT; U) [Netscape]">
- <title>Image Specification</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Gen.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="../ed_styles/GenElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="../RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="../ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><center>
-<h1>
-HDF5 Image and Palette Specification</h1></center>
-
-<center>
-<h3>
-<i>Version 1.2</i></h3></center>
-The HDF5 specification defines the standard objects and storage for the
-standard HDF5 objects. (For information about the HDF5 library, model and
-specification, see the HDF documentation.)&nbsp; This document is an additional
-specification do define a standard profile for how to store image data
-in HDF5. Image data in HDF5 is stored as HDF5 datasets with standard attributes
-to define the properties of the image.
-<p>This specification is primarily concerned with two dimensional raster
-data similar to HDF4 Raster Images.&nbsp; Specifications for storing other
-types of imagery will be covered in other documents.
-<p>This specification defines:
-<ul>
-<li>
-Standard storage and attributes for an Image dataset (<a href="#Sect1">Section
-1</a>)</li>
-
-<li>
-Standard storage and attributes for Palettes (<a href="#sect2">Section
-2</a>)</li>
-
-<li>
-Standard for associating Palettes with Images. (<a href="#Sect3">Section
-3</a>)</li>
-</ul>
-
-<h2>
-<a NAME="Sect1"></a>1. HDF5 Image Specification</h2>
-
-<h3>
-1.1 Overview</h3>
-Image data is stored as an HDF5 dataset with values of HDF5 class Integer
-or Float.&nbsp; A common example would be a two dimensional dataset, with
-elements of class Integer, e.g., a two dimensional array of unsigned 8
-bit integers.&nbsp; However, this specification does not limit the dimensions
-or number type that may be used for an Image.
-<p>The dataset for an image is distinguished from other datasets by giving
-it an attribute "CLASS=IMAGE".&nbsp; In addition, the Image dataset may
-have an optional attribute "PALETTE" that is an array of object references
-for zero or more palettes. The Image dataset may have additional attributes
-to describe the image data, as defined in <a href="#Sect1.2">Section 1.2</a>.
-<p>A Palette is an HDF5 dataset which contains color map information.&nbsp;
-A Pallet dataset has an attribute "CLASS=PALETTE" and other attributes
-indicating the type and size of the palette, as defined in <a href="#sect2">Section
-2.1</a>.&nbsp; A Palette is an independent object, which can be shared
-among several Image datasets.
-<h3>
-<a NAME="Sect1.2"></a>1.2&nbsp; Image Attributes</h3>
-The attributes for the Image are scalars unless otherwise noted.&nbsp;
-The length of String valued attributes should be at least the number of
-characters. Optionally, String valued attributes may be stored in a String
-longer than the minimum, in which case it must be zero terminated or null
-padded.&nbsp; "Required" attributes must always be used. "Optional" attributes
-must be used when required.
-<br>&nbsp;
-<h4>
-Attributes</h4>
-
-<dl>
-<dt>
-Attribute name="<b>CLASS</b>" (Required)</dt>
-
-<dd>
-This attribute is type H5T_C_S1, with size 5.</dd>
-
-<dd>
-For all Images, the value of this attribute is "IMAGE".</dd>
-
-<dd>
-</dd>
-
-<dd>
-This attribute identifies this data set as intended to be interpreted as
-an image that conforms to the specifications on this page.</dd>
-</dl>
-
-<dt>
-Attribute name="<b>PALETTE</b>"</dt>
-
-<dl>
-<dd>
-A Image dataset within an HDF5 file may optionally specify an array of
-palettes to be viewed with. The dataset will have an attribute field called
-"<b>PALETTE</b>" which contains a one-dimensional array of object reference
-pointers (HDF5 datatype H5T_STD_REF_OBJ) which refer to palettes in the
-file. The palette datasets must conform to the Palette specification in
-<a href="#sect2">section
-2 below</a>. The first palette in this array will be the default palette
-that the data may be viewed with.</dd>
-</dl>
-
-<dl>
-<dt>
-</dt>
-
-<dt>
-Attribute name="<b>IMAGE_SUBCLASS</b>"</dt>
-
-<dd>
-If present, the value of this attribute indicates the type of Palette that
-should be used with the Image.&nbsp; This attribute is a scalar of type
-H5T_C_S1, with size according to the string plus one.&nbsp; The values
-are:</dd>
-
-<dl>
-<dt>
-"IMAGE_GRAYSCALE" (length 15)</dt>
-
-<dd>
-A grayscale image</dd>
-
-<dt>
-"IMAGE_BITMAP" (length 12)</dt>
-
-<dd>
-A bit map image</dd>
-
-<dt>
-"IMAGE_TRUECOLOR" (length 15)</dt>
-
-<dd>
-A truecolor image</dd>
-
-<dt>
-"IMAGE_INDEXED" (length 13)</dt>
-
-<dd>
-An indexed image</dd>
-
-<dd>
-</dd>
-</dl>
-
-<dt>
-Attribute name="<b>INTERLACE_MODE</b>"</dt>
-
-<dd>
-For images with more than one component for each pixel, this optional attribute
-specifies the layout of the data. The values are type H5T_C_S1 of length
-15. See <a href="#Section1.3">section 1.3</a> for information about the
-storage layout for data.</dd>
-
-<dd>
-"INTERLACE_PIXEL" (default): the component value for a pixel are contiguous.</dd>
-
-<dd>
-"INTERLACE_PLANE": each component is stored as a plane.</dd>
-
-<dt>
-</dt>
-
-<dt>
-Attribute name="<b>DISPLAY_ORIGIN</b>"</dt>
-
-<dd>
-This optional attribute indicates the intended orientation of the data
-on a two-dimensional raster display.&nbsp; The value indicates which corner
-the pixel at (0, 0) should be viewed.&nbsp; The values are type H5T_C_S1
-of length 2. If DISPLAY_ORIGIN is not set, the orientation is undefined.</dd>
-
-<dd>
-"UL": (0,0) is at the upper left.</dd>
-
-<dd>
-"LL": (0,0) is at the lower left.</dd>
-
-<dd>
-"UR": (0,0) is at the upper right.</dd>
-
-<dd>
-"LR": (0,0) is at the lower right.</dd>
-</dl>
-
-<dt>
-Attribute name="<b>IMAGE_WHITE_IS_ZERO</b>"</dt>
-
-<dl>
-<dd>
-This attribute is of type H5T_NATIVE_UCHAR.&nbsp; 0 = false, 1 = true .&nbsp;
-This is used for images with IMAGE_SUBCLASS="IMAGE_GRAYSCALE" or "IMAGE_BITMAP".</dd>
-</dl>
-
-<dl>
-<dt>
-Attribute name="<b>IMAGE_MINMAXRANGE</b>"</dt>
-
-<dd>
-If present, this attribute is an array of two numbers, of the same HDF5
-datatype as the data.&nbsp; The first element is the minimum value of the
-data, and the second is the maximum.&nbsp; This is used for images with
-IMAGE_SUBCLASS="IMAGE_GRAYSCALE", "IMAGE_BITMAP" or "IMAGE_INDEXED".</dd>
-</dl>
-
-<dt>
-Attribute name="<b>IMAGE_BACKGROUNDINDEX</b>"</dt>
-
-<dl>
-<dd>
-If set, this attribute indicates the index value that should be interpreted
-as the "background color".&nbsp; This attribute is HDF5 type H5T_NATIVE_UINT.</dd>
-</dl>
-
-<dt>
-Attribute name="<b>IMAGE_TRANSPARENCY</b>"</dt>
-
-<dl>
-<dd>
-If set, this attribute indicates the index value that should be interpreted
-as the "transparent color".&nbsp; This attribute is HDF5 type H5T_NATIVE_UINT.&nbsp;
-This attribute may not be used for IMAGE_SUBCLASS="IMAGE_TRUE_COLOR".</dd>
-</dl>
-
-<dt>
-Attribute name="<b>IMAGE_ASPECTRATIO</b>"</dt>
-
-<dl>
-<dd>
-If set, this attribute indicates the aspect ratio.</dd>
-</dl>
-
-<dt>
-Attribute name="<b>IMAGE_COLORMODEL</b>"</dt>
-
-<dl>
-<dd>
-If set, this attribute indicates the color model of Palette that should
-be used with the Image.&nbsp; This attribute is of type H5T_C_S1, with
-size 3, 4, or 5.&nbsp; The value is one of the color models described in
-the Palette specification in <a href="#sect2.2">section 2.2 below</a>.&nbsp;
-This attribute may be used only for IMAGE_SUBCLASS="IMAGE_TRUECOLOR" or
-"IMAGE_INDEXED".</dd>
-</dl>
-
-<dt>
-Attribute name="<b>IMAGE_GAMMACORRECTION</b>"</dt>
-
-<dl>
-<dd>
-If set, this attribute gives the Gamma correction.&nbsp; The attribute
-is type H5T_NATIVE_FLOAT.&nbsp; This attribute may be used only for IMAGE_SUBCLASS="IMAGE_TRUECOLOR"
-or "IMAGE_INDEXED".</dd>
-</dl>
-Attribute name="<b>IMAGE_VERSION</b>" (Required)
-<dl>
-<dd>
-This attribute is of type H5T_C_S1, with size corresponding to the length
-of the version string.&nbsp; This attribute identifies the version number
-of this specification to which it conforms.&nbsp; The current version number
-is "1.2".</dd>
-
-<br>&nbsp;
-<p>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-<center><table BORDER=2 BGCOLOR="#FFFFFF" >
-<caption><b>Table 1. Attributes of an Image Dataset</b></caption>
-
-<tr>
-<td><b>Attribute Name</b></td>
-
-<td><b>(R = Required</b>
-<br><b>O= Optional)</b></td>
-
-<td><b>Type</b></td>
-
-<td><b>String Size</b></td>
-
-<td><b>Value</b></td>
-</tr>
-
-<tr>
-<td>CLASS</td>
-
-<td>R</td>
-
-<td>String</td>
-
-<td>5</td>
-
-<td>"IMAGE"</td>
-</tr>
-
-<tr>
-<td>PALETTE</td>
-
-<td>O</td>
-
-<td>Array Object References</td>
-
-<td></td>
-
-<td>&lt;references to Palette datasets><sup>1</sup></td>
-</tr>
-
-<tr>
-<td>IMAGE_SUBCLASS</td>
-
-<td>O<sup>2</sup></td>
-
-<td>String</td>
-
-<td>15,&nbsp;
-<br>12,&nbsp;
-<br>15,
-<br>13</td>
-
-<td>
-<dt>
-"IMAGE_GRAYSCALE",</dt>
-
-<dt>
-"IMAGE_BITMAP",</dt>
-
-<dt>
-"IMAGE_TRUECOLOR",</dt>
-
-<dt>
-"IMAGE_INDEXED"</dt>
-</td>
-</tr>
-
-<tr>
-<td>INTERLACE_MODE</td>
-
-<td>O<sup>3,6</sup></td>
-
-<td>String</td>
-
-<td>15</td>
-
-<td>The layout of components if more than one component per pixel.</td>
-</tr>
-
-<tr>
-<td>DISPLAY_ORIGIN</td>
-
-<td>O</td>
-
-<td>String</td>
-
-<td>2</td>
-
-<td>If set, indicates the intended location of the pixel (0,0).</td>
-</tr>
-
-<tr>
-<td>IMAGE_WHITE_IS_ZERO</td>
-
-<td>O<sup>3,4</sup></td>
-
-<td>Unsigned Integer</td>
-
-<td></td>
-
-<td>0 = false, 1 = true</td>
-</tr>
-
-<tr>
-<td>IMAGE_MINMAXRANGE</td>
-
-<td>O<sup>3,5</sup></td>
-
-<td>Array [2] &lt;same datatype as data values></td>
-
-<td></td>
-
-<td>The (&lt;minimum>, &lt;maximum>) value of the data.</td>
-</tr>
-
-<tr>
-<td>IMAGE_BACKGROUNDINDEX</td>
-
-<td>O<sup>3</sup></td>
-
-<td>Unsigned Integer</td>
-
-<td></td>
-
-<td>The index of the background color.</td>
-</tr>
-
-<tr>
-<td>IMAGE_TRANSPARENCY</td>
-
-<td>O<sup>3,5</sup></td>
-
-<td>Unsigned Integer</td>
-
-<td></td>
-
-<td>The index of the transparent color.</td>
-</tr>
-
-<tr>
-<td>IMAGE_ASPECTRATIO</td>
-
-<td>O<sup>3,4</sup></td>
-
-<td>Unsigned Integer</td>
-
-<td></td>
-
-<td>The aspect ratio.</td>
-</tr>
-
-<tr>
-<td>IMAGE_COLORMODEL</td>
-
-<td>O<sup>3,6</sup></td>
-
-<td>String</td>
-
-<td>3, 4, or 5</td>
-
-<td>The color model, as defined below in the Palette specification for
-attribute <b>PAL_COLORMODEL</b>.</td>
-</tr>
-
-<tr>
-<td>IMAGE_GAMMACORRECTION</td>
-
-<td>O<sup>3,6</sup></td>
-
-<td>Float</td>
-
-<td></td>
-
-<td>The gamma correction.</td>
-</tr>
-
-<tr>
-<td>IMAGE_VERSION</td>
-
-<td>R</td>
-
-<td>String</td>
-
-<td>3</td>
-
-<td>"1.2"</td>
-</tr>
-</table></center>
-
-<dl><font size=-1>1.&nbsp; The first element of the array is the default
-Palette.</font>
-<br><font size=-1>2.&nbsp; This attribute is <b>required</b> for images
-that use one of the standard color map types listed.</font>
-<br><font size=-1>3. This attribute is <b>required</b> if set for the source
-image, in the case that the image is translated from another file into
-HDF5.</font>
-<br><font size=-1>4.&nbsp; This applies to:&nbsp; IMAGE_SUBCLASS="IMAGE_GRAYSCALE"
-or "IMAGE_BITMAP".</font>
-<br><font size=-1>5.&nbsp; This applies to:&nbsp; IMAGE_SUBCLASS="IMAGE_GRAYSCALE",
-"IMAGE_BITMAP", or "IMAGE_INDEXED".</font>
-<br><font size=-1>6.&nbsp; This applies to: IMAGE_SUBCLASS="IMAGE_TRUECOLOR",
-or "IMAGE_INDEXED".</font></dl>
-</dl>
-Table 2 summarizes the standard attributes for an Image datasets using
-the common sub-classes. R means that the attribute listed on the leftmost
-column is Required for the image subclass on the first row, O means that
-the attribute is Optional for that subclass and N that the attribute cannot
-be applied to that subclass. The two first rows show the only required
-attributes
-for all subclasses.
-<br>&nbsp;
-<table BORDER WIDTH="100%" >
-<caption><b>Table 2a. Applicability of Attributes to IMAGE sub-classes</b></caption>
-
-<tr>
-<td WIDTH="20%"><b>IMAGE_SUBCLASS</b><sup>1</sup></td>
-
-<td WIDTH="20%"><b>IMAGE_GRAYSCALE</b></td>
-
-<td WIDTH="20%"><b>IMAGE_BITMAP</b></td>
-</tr>
-
-<tr>
-<td WIDTH="20%">CLASS</td>
-
-<td WIDTH="20%">R</td>
-
-<td WIDTH="20%">R</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_VERSION</td>
-
-<td WIDTH="20%">R</td>
-
-<td WIDTH="20%">R</td>
-</tr>
-
-<tr>
-<td>INTERLACE_MODE</td>
-
-<td>N</td>
-
-<td>N</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_WHITE_IS_ZERO</td>
-
-<td WIDTH="20%">R</td>
-
-<td WIDTH="20%">R</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_MINMAXRANGE</td>
-
-<td WIDTH="20%">O</td>
-
-<td WIDTH="20%">O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_BACKGROUNDINDEX</td>
-
-<td WIDTH="20%">O</td>
-
-<td WIDTH="20%">O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_TRANSPARENCY</td>
-
-<td WIDTH="20%">O</td>
-
-<td WIDTH="20%">O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_ASPECTRATIO</td>
-
-<td WIDTH="20%">O</td>
-
-<td WIDTH="20%">O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_COLORMODEL</td>
-
-<td WIDTH="20%">N</td>
-
-<td WIDTH="20%">N</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_GAMMACORRECTION</td>
-
-<td WIDTH="20%">N</td>
-
-<td WIDTH="20%">N</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">PALETTE</td>
-
-<td WIDTH="20%">O</td>
-
-<td WIDTH="20%">O</td>
-</tr>
-
-<tr>
-<td>DISPLAY_ORIGIN</td>
-
-<td>O</td>
-
-<td>O</td>
-</tr>
-</table>
-
-<blockquote>&nbsp;</blockquote>
-
-<table BORDER WIDTH="100%" >
-<caption><b>Table 2b. Applicability of Attributes to IMAGE sub-classes</b></caption>
-
-<tr>
-<td WIDTH="20%"><b>IMAGE_SUBCLASS</b></td>
-
-<td WIDTH="20%"><b>IMAGE_TRUECOLOR</b></td>
-
-<td><b>IMAGE_INDEXED</b></td>
-</tr>
-
-<tr>
-<td WIDTH="20%">CLASS</td>
-
-<td WIDTH="20%">R</td>
-
-<td>R</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_VERSION</td>
-
-<td WIDTH="20%">R</td>
-
-<td>R</td>
-</tr>
-
-<tr>
-<td>INTERLACE_MODE</td>
-
-<td>R</td>
-
-<td>N</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_WHITE_IS_ZERO</td>
-
-<td WIDTH="20%">N</td>
-
-<td>N</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_MINMAXRANGE</td>
-
-<td WIDTH="20%">N</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_BACKGROUNDINDEX</td>
-
-<td WIDTH="20%">N</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_TRANSPARENCY</td>
-
-<td WIDTH="20%">N</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_ASPECTRATIO</td>
-
-<td WIDTH="20%">O</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_COLORMODEL</td>
-
-<td WIDTH="20%">O</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">IMAGE_GAMMACORRECTION</td>
-
-<td WIDTH="20%">O</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td WIDTH="20%">PALETTE</td>
-
-<td WIDTH="20%">O</td>
-
-<td>O</td>
-</tr>
-
-<tr>
-<td>DISPLAY_ORIGIN</td>
-
-<td>O</td>
-
-<td>O</td>
-</tr>
-</table>
-
-<h3>
-<a NAME="Section1.3"></a>1.3 Storage Layout and Properties for Images</h3>
-In the case of an image with more than one component per pixel (e.g., Red,
-Green, and Blue), the data may be arranged in one of two ways.&nbsp; Following
-HDF4 terminology, the data may be interlaced by pixel or by plane, which
-should be indicated by the INTERLACE_MODE&nbsp; attribute.&nbsp; In both
-cases, the dataset will have a dataspace with three dimensions, height,
-width, and components.&nbsp; The interlace modes specify different orders
-for the dimensions.
-<br>&nbsp;
-<table BORDER COLS=2 WIDTH="100%" >
-<caption><b>Table 3. Storage of multiple component image data.</b></caption>
-
-<tr>
-<td><b>Interlace Mode</b></td>
-
-<td><b>Dimensions in the Dataspace</b></td>
-</tr>
-
-<tr>
-<td>INTERLACE_PIXEL</td>
-
-<td>[height][width][pixel components]</td>
-</tr>
-
-<tr>
-<td>INTERLACE_PLANE</td>
-
-<td>[pixel components][height][width]</td>
-</tr>
-</table>
-
-<p>For example, consider a 5 (rows) by 10 (column) image, with Red, Green,
-and Blue components.&nbsp; Each component is an unsigned byte. In HDF5,
-the datatype would be declared as an unsigned 8 bit integer.&nbsp; For
-pixel interlace, the dataspace would be a three dimensional array, with
-dimensions: [10][5][3].&nbsp; For plane interleave, the dataspace would
-be three dimensions: [3][10][5].
-<p>In the case of images with only one component, the dataspace may be
-either a two dimensional array, or a three dimensional array with the third
-dimension of size 1.&nbsp; For example, a 5 by 10 image with 8 bit color
-indexes would be an HDF5 dataset with type unsigned 8 bit integer.&nbsp;
-The dataspace could be either a two dimensional array, with dimensions
-[10][5], or three dimensions, with dimensions either [10][5][1] or [1][10][5].
-<p>Image datasets may be stored with any chunking or compression properties
-supported by HDF5.
-<p><b>A note concerning compatibility with HDF5 GR interface: </b>An Image
-dataset is stored as an HDF5 dataset.&nbsp; It is important to note that
-the order of the dimensions is the same as for any other HDF5 dataset.&nbsp;
-For a two dimensional image that is to be stored as a series of horizontal
-scan lines, with the scan lines contiguous (i.e., the fastest changing
-dimension is 'width'), the image will have a dataspace with <i>dim[0] =
-height</i> and <i>dim[1]</i> = <i>width</i>.&nbsp; This is completely consistent
-with all other HDF5 datasets.
-<p>Users familiar with HDF4 should be cautioned that <i>this is not the
-same as HDF4</i>, and specifically is not consistent with what the HDF4
-GR interface does.
-<br>&nbsp;
-<h2>
-<a NAME="sect2"></a>2.&nbsp; HDF5 Palette Specification</h2>
-
-<h3>
-2.1 Overview</h3>
-A palette is the means by which color is applied to an image and is also
-referred to as a color lookup table. It is a table in which every row contains
-the numerical representation of a particular color. In the example of an
-8 bit standard RGB color model palette, this numerical representation of
-a color is presented as a triplet specifying the intensity of red, green,
-and blue components that make up each color.
-<center>
-<p><img SRC="Palettes.fm.anc.gif" ></center>
-
-<p>In this example, the color component numeric type is an 8 bit unsigned
-integer. While this is most common and recommended for general use, other
-component color numeric datatypes, such as a 16 bit unsigned integer ,
-may be used. This type is specified as the type attribute of the palette
-dataset. (see H5Tget_type(), H5Tset_type())
-<p>The minimum and maximum values of the component color numeric are specified
-as attribute of the palette dataset. See below (attribute PAL_MINMAXNUMERIC).
-If these attributes do not exist, it is assumed that the range of values
-will fill the space of the color numeric type. i.e. with an 8 bit unsigned
-integer, the valid range would be 0 to 255 for each color component.
-<p>The HDF5 palette specification additionally allows for color models
-beyond RGB. YUV, HSV, CMY, CMYK, YCbCr color models are supported, and
-may be specified as a color model attribute of the palette dataset. <i>(see
-"Palette Attributes" for details)</i>.
-<p>In HDF 4 and earlier, palettes were limited to 256 colors. The HDF5
-palette specification allows for palettes of varying length. The length
-is specified as the number of rows of the palette dataset.
-<br>&nbsp;
-<br>&nbsp;
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#666666" >
-<tr>
-<td><font color="#FFFFFF">Important Note: The specification of the Indexed
-Palette will change substantially in the next version.&nbsp; The Palette
-described here is <i>denigrated</i> and is not supported.</font></td>
-</tr>
-</table>
-
-<br>&nbsp;
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td><i>Denigrated</i>
-<p>In a standard palette, the color entries are indexed directly. HDF5
-supports the notion of a range index table. Such a table defines an ascending
-ordered list of ranges that map dataset values to the palette. If a range
-index table exists for the palette, the PAL_TYPE attribute will be set
-to "RANGEINDEX", and the PAL_RANGEINDEX attribute will contain an object
-reference to a range index table array. If not, the PAL_TYPE attribute
-either does not exist, or will be set to "STANDARD".
-<p>The range index table array consists of a one dimensional array with
-the same length as the palette dataset - 1. Ideally, the range index would
-be of the same type as the dataset it refers to, however this is not a
-requirement.
-<p><b>Example 2: A range index array of type floating point</b>
-<center>
-<p><img SRC="PaletteExample1.gif" ></center>
-
-<p>The range index array attribute defines the "<i>to</i>" of the range.
-Notice that the range index array attribute is one less entry in size than
-the palette. The first entry of 0.1259, specifies that all values below
-and up to 0.1259 inclusive, will map to the first palette entry. The second
-entry signifies that all values greater than 0.1259 up to 0.3278 inclusive,
-will map to the second palette entry, etc. All value greater than the last
-range index array attribute (100000) map to the last entry in the palette.</td>
-</tr>
-</table>
-
-<h3>
-<a NAME="sect2.2"></a>2.2. Palette Attributes</h3>
-A palette exists in an HDF file as an independent data set with accompanying
-attributes.&nbsp; The Palette attributes are scalars except where noted
-otherwise.&nbsp; String values should have size the length of the string
-value plus one.&nbsp; "Required" attributes must be used.&nbsp; "Optional"
-attributes must be used when required.
-<p>These attributes are defined as follows:
-<dl>
-<dt>
-Attribute name="<b>CLASS</b>" (Required)</dt>
-
-<dd>
-This attribute is of type H5T_C_S1, with size 7.</dd>
-
-<dd>
-For all palettes, the value of this attribute is "PALETTE". This attribute
-identifies this palette data set as a palette that conforms to the specifications
-on this page.</dd>
-
-<dt>
-Attribute name="<b>PAL_COLORMODEL</b>" (Required)</dt>
-
-<dd>
-This attribute is of type H5T_C_S1, with size 3, 4, or 5.</dd>
-
-<dd>
-Possible values for this are "RGB", "YUV", "CMY", "CMYK", "YCbCr", "HSV".</dd>
-
-<dd>
-This defines the color model that the entries in the palette data set represent.</dd>
-
-<dl>
-<dt>
-"RGB"</dt>
-
-<dd>
-Each color index contains a triplet where the the first value defines the
-red component, second defines the green component, and the third the blue
-component.</dd>
-
-<dt>
-"CMY"</dt>
-
-<dd>
-Each color index contains a triplet where the the first value defines the
-cyan component, second defines the magenta component, and the third the
-yellow component.</dd>
-
-<dt>
-"CMYK"</dt>
-
-<dd>
-Each color index contains a quadruplet where the the first value defines
-the cyan component, second defines the magenta component, the third the
-yellow component, and the forth the black component.</dd>
-
-<dt>
-"YCbCr"</dt>
-
-<dd>
-Class Y encoding model. Each color index contains a triplet where the the
-first value defines the luminance, second defines the Cb Chromonance, and
-the third the Cr Chromonance.</dd>
-
-<dt>
-"YUV"</dt>
-
-<dd>
-Composite encoding color model. Each color index contains a triplet where
-the the first value defines the luminance component, second defines the
-chromonance component, and the third the value component.</dd>
-
-<dt>
-"HSV"</dt>
-
-<dd>
-Each color index contains a triplet where the the first value defines the
-hue component, second defines the saturation component, and the third the
-value component. The hue component defines the hue spectrum with a low
-value representing magenta/red progressing to a high value which would
-represent blue/magenta, passing through yellow, green, cyan. A low value
-for the saturation component means less color saturation than a high value.
-A low value for <i>value</i> will be darker than a high value.</dd>
-
-<dd>
-</dd>
-</dl>
-
-<dt>
-Attribute name="<b>PAL_TYPE</b>" (Required)</dt>
-
-<dd>
-This attribute is of type H5T_C_S1, with size 9 or 10.</dd>
-
-<dd>
-The current supported values for this attribute are : "STANDARD8" or "RANGEINDEX"</dd>
-
-<dd>
-A PAL_TYPE of "STANDARD8" defines a palette dataset such that the first
-entry defines index 0, the second entry defines index 1, etc. up until
-the length of the palette - 1. This assumes an image dataset with direct
-indexes into the palette.</dd>
-</dl>
-
-<dl>&nbsp;
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td><i>Denigrated</i>
-<p>If the PAL_TYPE is set to "RANGEINDEX", there will be an additional
-attribute with a name of "<b>PAL_RANGEINDEX</b>",&nbsp; (See example 2
-for more details)</td>
-</tr>
-</table>
-
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td>
-<dt>
-Attribute name="<b>PAL_RANGEINDEX</b>"&nbsp;&nbsp; <i>(Denigrated)</i></dt>
-
-<dl>
-<dd>
-The <b>PAL_RANGEINDEX</b> attribute contains an HDF object reference (HDF5
-datatype H5T_STD_REF_OBJ) pointer which specifies a range index array in
-the file to be used for color lookups for the palette.&nbsp; (Only for
-PAL_TYPE="RANGEINDEX")</dd>
-</dl>
-</td>
-</tr>
-</table>
-
-<dt>
-Attribute name="<b>PAL_MINMAXNUMERIC</b>"</dt>
-
-<dl>
-<dt>
-If present, this attribute is an array of two numbers, of the same HDF5
-datatype as the palette elements or color numerics.</dt>
-
-<br>They specify the minimum and maximum values of the color numeric components.
-For example, if the palette was an RGB of type Float, the color numeric
-range for Red, Green, and Blue could be set to be between 0.0 and 1.0.
-The intensity of the color guns would then be scaled accordingly to be
-between this minimum and maximum attribute.</dl>
-Attribute name="<b>PAL_VERSION</b>"&nbsp; (Required)
-<dl>This attribute is of type H5T_C_S1, with size corresponding to the
-length of the version string.&nbsp; This attribute identifies the version
-number of this specification to which it conforms.&nbsp; The current version
-is "1.2".</dl>
-
-<center><table BORDER=2 BGCOLOR="#FFFFFF" >
-<caption><b>Table 4. Attributes of a Palette Dataset</b></caption>
-
-<tr>
-<td><b>Attribute Name</b></td>
-
-<td><b>(R = Required,</b>
-<br><b>O = Optional)</b></td>
-
-<td><b>Type</b></td>
-
-<td><b>String Size</b></td>
-
-<td><b>Value</b></td>
-</tr>
-
-<tr>
-<td>CLASS</td>
-
-<td>R</td>
-
-<td>String</td>
-
-<td>
-<center>7</center>
-</td>
-
-<td>"PALETTE"</td>
-</tr>
-
-<tr>
-<td>PAL_COLORMODEL</td>
-
-<td>R</td>
-
-<td>String</td>
-
-<td>
-<center>3, 4, or 5</center>
-</td>
-
-<td>Color Model:&nbsp; "RGB", YUV", "CMY", "CMYK", "YCbCr", or "HSV"</td>
-</tr>
-
-<tr>
-<td>PAL_TYPE</td>
-
-<td>R</td>
-
-<td>String</td>
-
-<td>
-<center>9</center>
-
-<p><br>
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td>or 10</td>
-</tr>
-</table>
-</td>
-
-<td>"STANDARD8"&nbsp;
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td>or "RANGEINDEX" <i>(Denigrated)</i></td>
-</tr>
-</table>
-</td>
-</tr>
-
-<tr>
-<td>
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td><i>Denigrated</i>
-<br>RANGE_INDEX</td>
-</tr>
-</table>
-</td>
-
-<td></td>
-
-<td>
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td>Object Reference&nbsp;</td>
-</tr>
-</table>
-</td>
-
-<td></td>
-
-<td>
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td>&lt;Object Reference to Dataset of range index values></td>
-</tr>
-</table>
-</td>
-</tr>
-
-<tr>
-<td>PAL_MINMAXNUMERIC</td>
-
-<td>O</td>
-
-<td>Array[2] of &lt;same datatype as palette></td>
-
-<td></td>
-
-<td>The first value is the &lt;Minimum value for color values>, the second
-value is &lt;Maximum value for color values><sup>2</sup></td>
-</tr>
-
-<tr>
-<td>PAL_VERSION</td>
-
-<td>R</td>
-
-<td>String</td>
-
-<td>4</td>
-
-<td>"1.2"</td>
-</tr>
-</table></center>
-
-<dl>&nbsp;
-<table BORDER COLS=1 WIDTH="100%" BGCOLOR="#CCCCCC" >
-<tr>
-<td><font size=-1>1.&nbsp; The RANGE_INDEX attribute is required if the
-PAL_TYPE is "RANGEINDEX".&nbsp; Otherwise, the RANGE_INDEX attribute should
-be omitted. (Range index is denigrated.)</font></td>
-</tr>
-</table>
-<font size=-1>2.&nbsp; The minimum and maximum are optional.&nbsp; If not
-set, the range is assumed to the maximum range of the number type.&nbsp;
-If one of these attributes is set, then both should be set.&nbsp; The value
-of the minimum must be less than or equal to the value of the maximum.</font></dl>
-</dl>
-Table 5 summarized the uses of the standard attributes for a palette dataset.
-R means that the attribute listed on the leftmost column is Required for
-the palette type on the first row, O means that the attribute is Optional
-for that type and N that the attribute cannot be applied to that type.
-The four first rows show the attributes that are always required&nbsp;
-for the two palette types.
-<br>&nbsp;
-<br>&nbsp;
-<table BORDER WIDTH="100%" >
-<caption><b>Table 5. Applicability of Attributes</b></caption>
-
-<tr>
-<td WIDTH="33%"><b>PAL_TYPE</b></td>
-
-<td WIDTH="33%"><b>STANDARD8</b></td>
-
-<td WIDTH="34%"><b>RANGEINDEX</b></td>
-</tr>
-
-<tr>
-<td WIDTH="33%">CLASS</td>
-
-<td WIDTH="33%">R</td>
-
-<td WIDTH="34%">R</td>
-</tr>
-
-<tr>
-<td WIDTH="33%">PAL_VERSION</td>
-
-<td WIDTH="33%">R</td>
-
-<td WIDTH="34%">R</td>
-</tr>
-
-<tr>
-<td WIDTH="33%">PAL_COLORMODEL</td>
-
-<td WIDTH="33%">R</td>
-
-<td WIDTH="34%">R</td>
-</tr>
-
-<tr>
-<td WIDTH="33%">RANGE_INDEX</td>
-
-<td WIDTH="33%">N</td>
-
-<td WIDTH="34%">R</td>
-</tr>
-
-<tr>
-<td WIDTH="33%">PAL_MINMAXNUMERIC</td>
-
-<td WIDTH="33%">O</td>
-
-<td WIDTH="34%">O</td>
-</tr>
-</table>
-
-<h3>
-2.3. Storage Layout for Palettes</h3>
-The values of the Palette are stored as a dataset.&nbsp; The datatype can
-be any HDF 5 atomic numeric type.&nbsp; The dataset will have dimensions
-(<tt>nentries</tt>&nbsp; by&nbsp; <tt>ncomponents</tt>), where '<tt>nentries</tt>'
-is the number of colors (usually 256) and '<tt>ncomponents'</tt> is the
-number of values per color (3 for <b>RGB</b>, 4 for <b>CMYK</b>, etc.)
-<br>&nbsp;
-<h2>
-<a NAME="Sect3"></a>3.&nbsp; Consistency and Correlation of Image and Palette
-Attributes</h2>
-The objects in this specification are an extension to the base HDF5 specification
-and library.&nbsp; They are accessible with the standard HDF5 library,
-but the semantics of the objects are not enforced by the base library.&nbsp;
-For example, it is perfectly possible to add an attribute called <b>IMAGE</b>
-to <i>any</i> dataset, or to include an object reference to <i>any</i>
-HDF5 dataset in a <b>PALETTE</b> attribute.&nbsp; This would be a valid
-HDF5 file, but not conformant to this specification.&nbsp; The rules defined
-in this specification must be implemented with appropriate software, and
-applications must use conforming software to assure correctness.
-<p>The Image and Palette specifications include several redundant standard
-attributes, such as the <b>IMAGE_COLORMODEL</b> and the <b>PAL_COLORMODEL</b>.&nbsp;
-These attributes are informative not normative, in that it is acceptable
-to attach a Palette to an Image dataset even if their attributes do not
-match.&nbsp; Software is not required to enforce consistency, and files
-may contain mismatched associations of Images and Palettes.&nbsp; In all
-cases, it is up to applications to determine what kinds of images and color
-models can be supported.
-<p>For example, an Image that was created from a file with an "RGB" may
-have a "YUV" Palette in its <b>PALETTE</b> attribute array.&nbsp; This
-would be a legal HDF5 file and also conforms to this specification, although
-it may or may not be correct for a given application.</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="../index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="../RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="../ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><!-- Created: Spring 1999 -->
-<!-- hhmts start -->
-Last modified: 8 June 2005
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/ADGuide/Makefile.am b/doc/html/ADGuide/Makefile.am
deleted file mode 100644
index fde4097..0000000
--- a/doc/html/ADGuide/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir = $(docdir)/hdf5/ADGuide
-
-# Public doc files (to be installed)...
-localdoc_DATA=Changes.html H4toH5Mapping.pdf HISTORY.txt ImageSpec.html \
- PaletteExample1.gif Palettes.fm.anc.gif RELEASE.txt
diff --git a/doc/html/ADGuide/Makefile.in b/doc/html/ADGuide/Makefile.in
deleted file mode 100644
index 81d0f44..0000000
--- a/doc/html/ADGuide/Makefile.in
+++ /dev/null
@@ -1,487 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html/ADGuide
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(localdocdir)"
-localdocDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(localdoc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdir)/hdf5/ADGuide
-
-# Public doc files (to be installed)...
-localdoc_DATA = Changes.html H4toH5Mapping.pdf HISTORY.txt ImageSpec.html \
- PaletteExample1.gif Palettes.fm.anc.gif RELEASE.txt
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/ADGuide/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/ADGuide/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-localdocDATA: $(localdoc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(localdocdir)" || $(mkdir_p) "$(DESTDIR)$(localdocdir)"
- @list='$(localdoc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(localdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(localdocdir)/$$f'"; \
- $(localdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-uninstall-localdocDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(localdoc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(localdocdir)/$$f'"; \
- rm -f "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(localdocdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-localdocDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-localdocDATA
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-localdocDATA install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-info-am \
- uninstall-localdocDATA
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/ADGuide/PaletteExample1.gif b/doc/html/ADGuide/PaletteExample1.gif
deleted file mode 100755
index 8694d9d..0000000
--- a/doc/html/ADGuide/PaletteExample1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/ADGuide/Palettes.fm.anc.gif b/doc/html/ADGuide/Palettes.fm.anc.gif
deleted file mode 100755
index d344c03..0000000
--- a/doc/html/ADGuide/Palettes.fm.anc.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/ADGuide/RELEASE.txt b/doc/html/ADGuide/RELEASE.txt
deleted file mode 100644
index 0e58c12..0000000
--- a/doc/html/ADGuide/RELEASE.txt
+++ /dev/null
@@ -1,906 +0,0 @@
-HDF5 version 1.7.48 released on Mon Jul 18 16:18:26 CDT 2005
-================================================================================
-
-
-INTRODUCTION
-
-This document describes the differences between HDF5-1.6.* and
-HDF5-1.7.*, and contains information on the platforms tested and
-known problems in HDF5-1.7.*. For more details check the HISTORY.txt
-file in the HDF5 source.
-
-The HDF5 documentation can be found on the NCSA ftp server
-(ftp.ncsa.uiuc.edu) in the directory:
-
- /HDF/HDF5/docs/
-
-For more information look at the HDF5 home page at:
-
- http://hdf.ncsa.uiuc.edu/HDF5/
-
-If you have any questions or comments, please send them to:
-
- hdfhelp@ncsa.uiuc.edu
-
-CONTENTS
-
-- New Features
-- Support for new platforms and languages
-- Bug Fixes since HDF5-1.6.0
-- Platforms Tested
-- Known Problems
-
-
-New Features
-============
-
- Configuration:
- --------------
- - When make is invoked in parallel (using -j), sequential tests
- are now executed simultaneously. This should make them execute
- more quickly on some machines.
- Also, when tests pass, they will create a foo.chkexe file.
- This prevents the test from executing again until the test or
- main library changes.
- - On windows, all.zip is deprecated. users should
- read INSTALL_Windows.txt to know the details.
- Reasons to deprecate all.zip:
- 1. Avoid confliction for windows programmers
- 2. Decrease size of CVS tree by adding all.zip
- 3. Avoid using winzip as the intermediate step
- --KY 2005/04/22
- - When HDF5 is created as a shared library, it now uses libtool's
- shared library versioning scheme. -JML 2005/04/18
- - HDF5 now uses automake 1.9.5 to generate Makefiles.in.
- This has a number of effects on users:
- The Fortran compiler should be set using the environment
- variable $FC, not $F9X. F9X still works, but is depreciated.
- The output of make may be different. This should be only a
- cosmetic effect.
- make depened (or make dep) is no longer recognized, since automake
- handles dependency tracking.
- Some new configure options exist. --enable-dependency-tracking
- and --disable-dependency-tracking are used to control automake's
- dependency tracking. Dependencies are on by default *on most
- platforms and compilers*. If --enable-dependency-tracking is
- used, they will be enabled on any platform. However, this can
- slow down builds or even cause build errors in some cases.
- Likewise, --disable-dependency-tracking can speed up builds and
- avoid some build errors.
- Some make targets have alternate names. make check-install and
- make installcheck do the same thing, for instance.
- pmake on IRIX can be invoked from the root directory, but the
- -V flag must be used to invoke it in any subdirectory or it
- will give an error about undefined variables.
- JML 2005/01 - 2005/03
- - Hardware conversion between long double and integers is also added.
- SLU 2005/02/10
- - Started to support software conversion between long double and
- integers. Hardware conversion will come very soon. SLU - 2005/1/6
- - Intel v8.0 compiler would infinite loop when compiling some test
- code with -O3 option. Changed enable-production default compiler
- option to -O2. AKC - 2004/12/06
- - Long double is assumed to be a supported C data type. It is a
- stanadard C89 type. AKC - 2004/10/22
- - The IA64 will use ecc as the C++ compiler by default.
- - Added some initial support for making purify (or similar memory
- checking products) happier by initializing buffers to zero and
- disabling the internal free list code. To take advantage of this,
- define 'H5_USING_PURIFY' in your CFLAGS when building the library.
- QAK - 2004/07/23
- - Fixed the long compile time of H5detect.c when v7.x Intel Compiler
- is used with optimization NOT off. AKC - 2004/05/20
- - Fixed configure setting of C++ for OSF1 platform. AKC - 2004/01/06
- - Prefix default is changed from /usr/local to `pwd`/hdf5.
- AKC - 2003/07/09
-
- Library:
- --------
- - Added H5F_OBJ_LOCAL flag to H5Fget_obj_count() & H5Fget_obj_ids(), to
- allow querying for objects in file that were opened with a particular
- file ID, instead of all objects opened in file with any file ID.
- QAK - 2005/06/01
- - Added H5T_CSET_UTF8 character set to mark datatypes that use the
- UTF-8 Unicode character encoding. Added tests to ensure that
- library handles UTF-8 object names, attributes, etc. -JL 2005/05/13
- - HDF5 supports collective MPI-IO for irregular selection with HDF5
- dataset. Irregular selection is when users use H5Sselect_hyperslab
- more than once for the same dataset.
- Currently, not all MPI-IO packages support complicated MPI derived
- datatype used in the implementation of irregular
- selection INSIDE HDF5.
- 1) DEC 5.x is not supporting complicated derived datatype.
- 2) For AIX 5.1 32-bit,
- if your poe version number is 3.2.0.19 or lower,
- please edit powerpc-ibm-aix5.x under hdf5/config,
- Find the line with
- << hdf5_mpi_complex_derived_datatype_works>>
- and UNCOMMENT this line before the configure.
- check poe version with the following command:
- lpp -l all | grep ppe.poe
- For AIX 5.1 64-bit,
- regardless of poe version number, please UNCOMMENT
- << hdf5_mpi_complex_derived_datatype_works>> under hdf5/config.
- We suspect there are some problems for MPI-IO implementation
- for 64-bit.
- 3) For Linux cluster,
- if mpich version is 1.2.5 or lower, collective irregular selection
- IO is not supported, internally independent IO is used.
- 4) For IRIX 6.5,
- if C compiler version is 7.3 or lower, collective irregular selection
- IO is not supported, internally independent IO is used.
- KY - 2005/07/13
- - HDF5 N-bit filter
- HDF5 support N-bit filter from this version,
- The N-Bit filter is used effectively for compressing data of N-Bit
- datatype as well as compound and array datatype with N-Bit fields.
- KY - 2005/04/15
- - HDF5 scaleoffset filter
- HDF5 supports scaleoffset filter for users to do data
- compression through HDF5 library.
- Scale-Offset compression performs a scale and/or offset operation
- on each data value and truncates the resulting value to a minimum
- number of bits and then stores the data.
- Scaleoffset filter supports floating-point and integer datatype.
- Please check the HDF5 reference manual for this.
- KY - 2005/06/06
- - Retired SRB vfd (--with-srb). Functions H5Pset_fapl_srb and
- H5Pget_fapl_srb were removed. EIP - 2005/04/07
- - Retired GASS vfd (--with-gass). Functions H5Pset_fapl_gass and
- H5Pget_fapl_gass are removed too. AKC - 2005/3/3
- - Pablo was removed from the source code EIP - 2005/01/21
- - Modified registration of SZIP to dynamically detect the presence
- or absence of the encoder. Changed configure and Makefiles,
- and tests to dynamically detect encoder. BEM - 2004/11/02
- - Added function H5Pget_data_transform, together with the previously
- added H5Pset_data_transform, to support the data transform
- feature. AKC - 2004/10/26
- - Compound datatype has been enhanced with a new feature of size
- adjustment. The size can be increased and decreased(without
- cutting the last member) as long as it doesn't go down to zero.
- No API change is involved. SLU - 2004/10/1
- - Put back 6 old error API functions to be backward compatible with
- version 1.6. They are H5Epush, H5Eprint, H5Ewalk, H5Eclear,
- H5Eset_auto, H5Eget_auto. Their new equivalent functions are
- called H5Epush_stack, H5Eprint_stack, H5Ewalk_stack,
- H5Eclear_stack, H5Eset_auto_stack, H5Eget_auto_stack. SLU -
- 2004/9/2
- - 4 new API functions, H5Tencode, H5Tdecode, H5Sencode, H5Sdecode were
- added to the library. Given object ID, these functions encode and
- decode HDF5 objects(data type and space) information into and from
- binary buffer. SLU - 2004/07/21
- - Modified the way how HDF5 calculates 'pixels_per_scanline' parameter for
- SZIP compression. Now there is no restriction on the size and shape of the
- chunk except that the total number of elements in the chunk cannot be
- bigger than 'pixels_per_block' parameter provided by the user.
- EIP - 2004/07/21
- - Added support for SZIP without encoder. Added H5Zget_filter_info
- and changed H5Pget_filter and H5Pget_filter_by_id to support this
- change. JL/NF - 2004/06/30
- - SZIP always uses K13 compression. This flag no longer needs to
- be set when calling H5Pset_szip. If the flag for CHIP
- compression is set, it will be ignored (since the two are mutually
- exclusive). JL/NF - 2004/6/30
- - A new API function H5Fget_name was added. It returns the name
- of the file by object(file, group, data set, named data type,
- attribute) ID. SLU - 2004/06/29
- - Added support for user defined identifier types. NF/JL - 2004/06/29
- - A new API function H5Fget_filesize was added. It returns the
- actual file size of the opened file. SLU - 2004/06/24
- - New Feature of Data transformation is added. AKC - 2004/05/03.
- - New exception handler for datatype conversion is put in to
- replace the old overflow callback function. This exception
- handler is set through H5Pset_type_conv_cb function.
- SLU - 2004/4/27
- - Added option that if $HDF5_DISABLE_VERSION_CHECK is set to 2,
- will suppress all library version mismatch warning messages.
- AKC - 2004/4/14
- - A new type of dataspace, null dataspace(dataspace without any
- element) was added. SLU - 2004/3/24
- - Data type conversion(software) from integer to float was added.
- SLU - 2004/3/13
- - Data type conversion(software) from float to integer was added.
- Conversion from integer to float will be added later.
- SLU -2004/2/4
- - Added new H5Premove_filter routine to remove I/O pipeline filters
- from dataset creation property lists. PVN - 2004/01/26
- - Added new 'compare' callback parameter to H5Pregister & H5Pinsert
- routines. QAK - 2004/01/07
- - Data type conversion(hardware) between integers and floats was added.
- SLU 2003/11/21
- - New function H5Iget_file_id() was added. It returns file ID given
- an object(dataset, group, or attribute) ID. SLU 2003/10/29
- - Added new fields to the H5G_stat_t for more information about an
- object's object header. QAK 2003/10/06
- - Added new H5Fget_freespace() routine to query the free space in a
- given file. QAK 2003/10/06
- - Added backward compatability with v1.6 for new Error API. SLU -
- 2003/09/24
- - Changed 'objno' field in H5G_stat_t structure from 'unsigned long[2]'
- to 'haddr_t'. QAK - 2003/08/08
- - Changed 'fileno' field in H5G_stat_t structure from 'unsigned long[2]'
- to 'unsigned long'. QAK - 2003/08/08
- - Changed 'hobj_ref_t' type from structure with array field to 'haddr_t'.
- QAK - 2003/08/08
- - Object references (hobj_ref_t) can now be compared with the 'objno'
- field in the H5G_stat_t struct for testing if two objects are the
- same within a file. QAK - 2003/08/08
- - Switched over to new error API. SLU - 2003/07/25
-
- Parallel Library:
- -----------------
- - Allow compressed, chunked datasets to be read in parallel.
- QAK - 2004/10/04
- - Add options of using atomicity and file-sync to test_mpio_1wMr.
- AKC - 2003/11/13
- - Added parallel test, test_mpio_1wMr, which tests if the
- underlaying parallel I/O system is conforming to the POSIX
- write/read requirement. AKC - 2003/11/12
-
- Fortran Library:
- ----------------
- - added missing h5tget_member_class_f function
- EIP 2005/04/06
- - added new functions h5fget_name_f and h5fget_filesize_f
- EIP 2004/07/08
- - h5dwrite/read_f and h5awrite/read_f functions only accept dims parameter
- of the type INTEGER(HSIZE_T).
- - added support for native integers of 8 bytes (i.e. when special
- compiler flag is specified to set native fortran integers to 8 bytes,
- for example, -i8 flag for PGI and Absoft Fortran compilers,
- -qintsize=8 flag for IBM xlf compiler).
- EIP 2005/06/20
-
-
- Tools:
- ------
- - new tool, h5jam. See reference manual. 2004/10/08
- - h5repack.sh did not report errors encountered during tests. It does
- now. AKC - 2004/04/02
- - Added the MPI-I/O and MPI-POSIX drivers to the list of VFL drivers
- available for h5dump and h5ls. RPM & QAK - 2004/02/01
- - Added option --vfd= to h5ls to allow a VFL driver to be selected
- by a user. RPM & QAK - 2004/02/01
- - Added option -showconfig to compiler tools (h5cc,h5fc,h5c++).
- AKC - 2004/01/08
- - Install the "h5cc" and "h5fc" tools as "h5pcc" and "h5pfc"
- respectively if library is built in parallel mode.
- WCW - 2003/11/04
- - Added metadata benchmark (perform/perf_meta). SLU - 2003/10/03
- - Changed output of "OID"s from h5dump from "<number>-<number>" to
- "<number". This affects both the "regular" and XML output.
- QAK - 2003/08/08
- - Changed output of file IDs and "OID"s from h5ls from
- "<number>:<number>:<number>:<number>" to "<number>:<number>"
- QAK - 2003/08/08
-
- High-Level APIs:
- ------
- - Added Packet Table API for creating tables with less overhead than
- H5TB API. Added C++ wrapper for Packet Tables. See documentation.
- JML - 2004/03/28
-
-
-Support for new platforms, languages and compilers.
-=======================================
- - PGI Fortran compiler is supported on Linux64 systems (x86_64)
- EIP - 2004/08/19
- - Absoft compiler f95 v9.0 supported on Linux 2.4
- EIP - 2004/07/29
- - HDF5 Fortran APIs are supported on Mac OSX with IBM XL Fortran
- compiler version 8.1. This is a default compiler.
- - HDF5 Fortran APIs are supported on MAC OSX with Absoft F95 compiler
- version 8.2; set F9X environment varibale to f95, for example
- setenv F9X f95
- Use --disable-shared --enable-static configure flags when Absoft
- compiler is used.
- EIP - 2004/07/27
- - HDF5 Fortran APIs are supported on MAC OSX with IBM XL Fortran
- Compiler version 8.1 Use "--disable-shared --enable-static"
- configure flags along with the "--enable-fortran" flag to build
- Fortran library. EIP - 2004/01/07
-
-Bug Fixes since HDF5-1.6.0 release
-==================================
-
- Library
- -------
- - More bug fixes on holding open files that are mounted and have
- IDs open. QAK - 2005/07/14
- - Don't unmount child files until the parent file actually closes.
- (Previously, if an object is holding open a file, the child files
- would get unmounted too early). QAK - 2005/07/05
- - Fixed bug where unmounted files could cause the library to go into
- an infinite loop when shutting down. QAK - 2005/06/30
- - The library didn't save the information of family driver in file.
- The original file member size was lost after file was closed (see
- bug #213). This has been fixed by saving driver name and member
- file size in the superblock. SLU - 2005/6/24
- - Fixed bug with hyperslab selections that use selection offsets and
- operate on chunked datasets going into infinite loop or dumping
- core. QAK - 2005/06/17
- - Corrected memory leak and possible corruption when opening a group.
- QAK - 2005/06/17
- - Added check for opaque datatype tags being too long (check against
- H5T_OPAQUE_TAG_MAX, currently set to 256). QAK - 2005/06/14
- - Fixed various errors in maintaining names for open objects in the
- face of unusual mount & unmount operations. QAK - 2005/06/08
- - "SEMI" and "STRONG" file close degree settings now apply only to the
- particular file ID being closed, instead of operating on all open
- file IDs for a given file. QAK - 2005/06/01
- - For family driver, the library didn't save member size in file.
- When file is reopened, the size of 1st member file determine the
- member size. Now member size is saved in file and is used to
- define member file size. Wrong file access property of member size
- will result in a failure. Using any other driver except family
- will cause library to return error. So is multi driver. SLU -
- 2005/05/24
- - Fixed error in opening object in group that was opened in mounted
- file which has been unmounted. QAK - 2005/03/17
- - Fixed a racing condition in MPIPOSIX virtual file drive close
- function. Now all processes must completed the close before any
- of them is returned. This prevents some "faster" processes start
- accessing the file for another purpose (e.g., open with truncate)
- while other "slower" processes have not closed the same file with
- the previous purpose. AKC - 2005/03/01
- - H5Tget_member_value calls for enum datatype didn't return correct
- value if H5Tenum_valueof was called first. It's fixed. SLU -
- 2005/02/08
- - For variable-length string, H5Tget_class returned H5T_STRING as its
- class. But H5Tdetect_class and H5Tget_member_class considered it
- as H5T_VLEN. This is fixed to let all these 3 functions treat it
- as H5T_STRING. SLU - 2005/02/08
- - The byte order of 1-byte integer types was fixed as little endian
- even on a big-endian machine. This has been corrected. SLU -
- 2005/02/07
- - Fix segmentation fault when calling H5Fflush with an attribute that
- hasn't had a value written to it open. QAK - 2004/10/18
- - Back up supporting bitfield and time types in H5Tget_native_type.
- Leave it to future support. The function simply returns error
- message of "not support" for bitfield and time types.
- SLU - 2004/10/5
- - Fixed address check in Core VFL driver to avoid spurious address/size
- overflows for odd valued addresses and/or sizes. QAK - 2004/09/27
- - Fixed parallel bug in which some processes attempted collective
- I/O while others did independent I/O. Bug appeared when some
- processes used point selections, and others didn't. JRM - 2004/9/15
- - Corrected error where dataset region references were written in an
- incorrect way on Cray machines. PVN & QAK - 2004/09/13
- - The H5Tget_native_type now determines the native type for integers
- based on the precision. This is to avoid cases of wrongly converting
- an int to a short in machines that have a short of 8 bytes but with
- 32bit precision (e.g Cray SV1). PVN - 2004/09/07
- - Changed H5Dread() to not overwrite data in an application's buffer
- with garbage when accessing a chunked dataset with an undefined
- fill value and an unwritten chunk is uncountered. QAK - 2004/08/25
- - Fixed error which could cause a core dump when a type conversion
- routine was registered after a compound datatype had been
- converted and then an equivalment compound datatype was converted
- again. QAK - 2004/08/07
- - Fixed memory overwrite when encoding "multi" file driver information
- for file's superblock. QAK - 2004/08/05
- - Fixed obscure bug where a filter which failed during chunk allocation
- could allow library to write uncompressed data to disk but think
- the data was compressed. QAK - 2004/07/29
- - Fixed bug where I/O to an extendible chunked dataset with zero-sized
- dimensions would cause library to fail an assertion.
- QAK - 2004/07/27
- - Fixed bug where chunked datasets which have filters defined,
- allocation time set to "late" and whose chunks don't align with
- the dataspace bounds could have incorrect data stored when
- overwriting the entire dataset on the first write. QAK - 2004/07/27
- - Added check to ensure that dataspaces have extents set. JML-2004/07/26
- - Fixed bug on some Solaris systems where HDF5 would try to use
- gettimeofday() when that function didn't work properly.
- JML - 2004/07/23
- - Fixed bug in H5Sset_extent_simple where setting maximum size to
- non-zero, then to zero would cause an error. JML - 2004/07/20
- - Allow NULL pointer for buffer parameter to H5Dread & H5Dwrite
- when not writing data ("none" selection or hyperslab or point
- selection with no elements defined). QAK - 2004/07/20
- - Calling H5Gcreate() on "/" or "." throws an error instead of
- failing quietly. JML - 2004/07/19
- - Fixed bug where setting file address size to be very small could
- trigger an assert if the file grew to more than 64 KB. Now throws
- an error and data can be recovered. JL/NF - 2004/07/14
- - Fixed bug where "resurrecting" a dataset was failing.
- QAK - 2004/07/14
- - Fixed bug where incorrect data could be read from a chunked dataset
- after it was extended. QAK - 2004/07/12
- - Fixed failure to read data back from file of compound type with
- variable-length string as field. SLU - 2004/06/10
- - Fixed potential file corruption bug when a block of metadata could
- overlap the end of the internal metadata accumulator buffer and
- the buffer would be extended correctly, but would incorrectly
- change it's starting address. QAK - 2004/06/09
- - Opaque datatype with no tag failed for some operations. Fixed.
- SLU - 2004/6/3
- - Fixed potential file corruption bug where dimensions that were
- too large (a value greater than could be represented in 32-bits)
- could cause the incorrect amount of space to be allocated in a
- file for the raw data for the dataset. QAK - 2004/06/01
- - Fixed dtypes "sw long double -> double" failure in QSC class
- machines. AKC - 2004/4/16
- - Fixed problem with fletcher32 filter when converting data of different
- endianess. PVN - 2004/03/10
- - Fixed problem with H5Tget_native_type() not handling opaque fields
- correctly. QAK - 2004/01/31
- - Fixed several errors in B-tree deletion code which could cause a
- B-tree (used with groups and chunked datasets) to become corrupt
- with the right sequence of deleted objects. QAK - 2004/01/19
- - Fixed small internal memory leaks of fill-value information.
- QAK - 2004/01/13
- - Fixed bug that caused variable-length datatypes (strings or sequences)
- used for datasets in files with objects that were unlinked to
- fail to be read/written to a file. QAK - 2004/01/13
- - Detect situation where szip 'pixels per block' is larger than the
- fastest changing dimension of a dataset's chunk size and disallow
- this (due to limits in szip library). QAK - 2003/12/31
- - Fixed bug with flattened hyperslab selections that would generate
- incorrect hyperslab information with certain high-dimensionality
- combinations of start/stride/count/block information.
- QAK - 2003/12/31
- - Fixed bug with variable-length datatypes used in compound datatypes.
- SLU - 2003/12/29
- - Fixed bug in parallel I/O routines that would cause reads from
- "short datasets" (datasets which were only partially written out)
- to return invalid data. QAK & AKC - 2003/12/19
- - Fixed bug where scalar dataspaces for attributes were reporting as
- simple dataspaces. QAK - 2003/12/13
- - Fixed problem with selection offsets of hyperslab selections in
- chunked datasets causing the library to go into an infinite loop.
- QAK - 2003/12/13
- - Fixed H5Giterate to avoid re-using index parameter after iteration
- callback has been called (allows iteration callback to modify the
- index parameter itself). QAK - 2003/12/06
- - Fixed various floating-point conversion problems, including a
- change which could corrupt data when converting from double->float.
- QAK - 2003/11/24
- - Changed "single process" metadata writing in library to collective
- I/O by all processes, in order to guarantee correct data being
- written with MPI-I/O. QAK - 2003/11/20
- - Fixed problems with fill values and variable-length types and also
- I/O on VL values that were set to NULL. QAK - 2003/11/08
- - Fixed problems with MPI datatypes that caused ASCI Q machine to
- hang. QAK - 2003/10/28
- - Removed HDF5_MPI_PREFER_DERIVED_TYPES environment variable support,
- since it had no benefit. QAK - 2003/10/28
- - Single hyperslab selections (which were set with only one call to
- H5Sselect_hyperslab) that had dimensions that could be "flattened"
- but were interspersed with dimensions that could not be flattened
- were not correctly handled, causing core dumps. QAK - 2003/10/25
- - Fixed incorrect datatype of the third parameter to the Fortran90
- h5pset(get)_cache_f subroutine (INTEGER to INTEGER(SIZE_T))
- EIP - 2003/10/13
- - Fixed problems with accessing variable-length data datatypes on
- Crays. QAK - 2003/10/10
- - Fixed potential file corruption bug when too many object header
- messages (probably attributes, from a user perspective) were
- inserted into an object header and certain other conditions were
- met. QAK - 2003/10/08
- - Changed implementation of internal ID searching algorithm to avoid
- O(n) behavior for many common cases. QAK - 2003/10/06
- - Allow partial parallel writing to compact datasets. QAK - 2003/10/06
- - Correctly create reference to shared datatype in attribute, instead
- of making a copy of the shared datatype in the attribute.
- QAK - 2003/10/01
- - Revert changes which caused files >2GB to fail when created with
- MPI-I/O file driver on certain platforms. QAK - 2003/09/16
- - Allow compound datatypes to grow in size. SLU - 2003/09/10
- - Detect if a type is already packed before attempting to pack it
- again or check if it is locked. SLU - 2003/09/10
- - Corrected bug when opening a file twice with read-only permission
- for one open and then closing the read-only access file ID would
- generate an error. QAK - 2003/09/10
- - Corrected bug in repeated calls to H5Pget_access_plist() which would
- incorrectly manage reference counts of internal information and
- eventually blow up. QAK - 2003/09/02
- - Return rank of the array datatype on successful call to
- H5Tget_array_dims(). QAK - 2003/08/30
- - Corrected bug in H5Tdetect_class which was not correctly detecting
- datatype classes of fields in nested compound datatypes in some
- circumstances. QAK - 2003/08/30
- - Corrected bug in sieve buffer code which could cause loss of data
- when a small dataset was created and deleted in quick succession.
- QAK - 2003/08/27
- - Corrected bug in H5Gget_objname_by_idx which was not allowing NULL
- for the name when just querying for the object name's length.
- QAK - 2003/08/25
- - Corrected bug in variable-length string handling which could
- generate a core dump on writing variable-length strings as part
- of a compound datatype on certain architectures. QAK - 2003/08/25
- - Corrected bug in H5Tget_native_type which would incorrectly compute
- the size of certain compound datatypes and also incorrectly
- compute the offset of the last field for those compound datatypes.
- QAK - 2003/08/25
- - Corrected bug in H5Tget_native_type which would drop string datatype
- metadata (padding, etc.) QAK - 2003/08/25
- - Corrected bugs in H5Gget_num_objs, H5Gget_objname_by_idx and
- H5Gget_objtype_by_idx to allow them to accept location IDs, not just
- group IDs. QAK - 2003/08/21
- - Corrected bug when using scalar dataspace for memory selection and
- operating on chunked dataset. QAK - 2003/08/18
- - Corrected bugs with multiple '/' characters in names for H5Glink
- and H5Gunlink. QAK - 2003/08/16
- - Corrected bug with user blocks that didn't allow a user block to
- be inserted in front of a file after the file was created.
- QAK - 2003/08/13
- - Corrected errors with using point selections to access data in
- chunked datasets. QAK - 2003/07/23
- - Corrected error with variable-length datatypes and chunked datasets
- caused H5Dwrite to fail sometimes. QAK - 2003/07/19
- - Modified library and file format to support storing indexed storage
- (chunked dataset) B-tree's with non-default internal 'K' values.
- QAK - 2003/07/15
- - Returned H5T_BKG_TEMP support to library after it was accidentally
- removed. QAK - 2003/07/14
-
- Configuration
- -------------
- - Parallel I/O with the MPI-I/O driver will no longer work if the
- filesystem is not POSIX compliant. The "HDF5_MPI_1_METAWRITE"
- environment variable has been removed. QAK - 2004/01/30
- - Fixed the error that cause "make install" to fail because of the
- macro definition syntax of "prefix?=..." AKC - 2003/07/22
-
- Performance
- -------------
- - Optimized I/O for enumerated datatypes that are a superset of source
- enumerated datatype. QAK - 2005/03/19
- - More optimizations to inner loops of datatype conversions for
- integers and floats which give a 10-50% speedup. QAK - 2003/11/07
- - Hoisted invariant 'if/else's out of inner datatype conversion loop for
- integer and floating-point values, giving about a 20% speedup.
- QAK - 2003/10/20
-
- Tools
- -----
- - Fixed h5dump to print attributes data in ASCII if -r option is used.
- AKC - 2004/11/18
- - Fixed space utilization reported in h5ls to correct error in formula
- used. QAK - 2004/10/22
- - Fixed h5redeploy which sometimes complain too many argument for the
- test command. (The complain did not hinder the h5redploy to
- proceed correctly.) AKC - 2003/11/03
- - Fixed a segmentation fault of h5diff when percentage option is used.
- AKC - 2003/08/27
- - Switched away from tools using internal "fixtype" function(s) to use
- H5Tget_native_type() internally. QAK - 2003/08/25
-
- Documentation
- -------------
-
- F90 APIs
- --------
- - h5pget_driver_f was returning information that could not be
- interpreted by fortran application program; fixed. EIP - 2005/04/10
-
-
-Platforms Tested
-================
-
- AIX 5.1 (32 and 64-bit) xlc 6.0.0.2
- xlf 8.1.0.3
- xlC 6.0.0.4
- xlc 5.0.2.5
- xlf 7.1.1.2
- xlC 5.0.2.5
- mpcc_r 5.0.2.5
- mpxlf_r 7.1.1.2
- poe 3.2.0.10
- Cray T3E sn6606 2.0.6.08 Cray Standard C Version 6.6.0.2
- Cray Fortran Version 3.6.0.0.2
- mpt 2.2.0.0
- Cray SV1 sn9617 10.0.1.2 Cray Standard C Version 6.6.0.2
- mpt 2.2.0.0
- Cray Fortran Version 3.6.0.0.2
- Cray T90IEEE 10.0.1.01y Cray Standard C Version 6.4.0.2.3
- Cray Fortran Version 3.4.0.3
- mpt 2.1.0.0
- FreeBSD 4.9 gcc 2.95.4
- g++ 2.95.4
- HP-UX B.11.00 HP C HP92453-01 A.11.01.20
- HP F90 v2.4
- HP ANSI C++ B3910B A.03.13
- MPIch 1.2.4
- IRIX 6.5 MIPSpro cc 7.30
- IRIX64 6.5 (64 & n32) MIPSpro cc 7.3.1.3m
- F90 MIPSpro 7.3.1.3m (64 only)
- MPIch 1.2.4
- Linux 2.4.18 gcc 2.96, 3.2.2, 3.2.3
- g++ 3.2.2, 3.2.3
- Intel(R) C++ Version 7.1
- Intel(R) Fortran Compiler Version 7.1
- PGI compilers (pgcc, pgf90, pgCC) version 5.0-2
- MPIch 1.2.4
- Absoft Fortran v9.0
- OSF1 V5.1 Compaq C V6.4-014
- Compaq C V6.3-027
- Compaq Fortran V5.5-1877
- Compaq C++ V6.5-014
- MPI_64bit_R5
- g++ version 3.0 for C++
- SunOS 5.7 WorkShop Compilers 5.0 98/12/15 C 5.0
- (Solaris 2.7) WorkShop Compilers 5.0 98/12/15 C++ 5.0
- WorkShop Compilers 5.0 98/10/25
- FORTRAN 90 2.0 Patch 107356-04
- SunOS 5.8 32,46 Sun WorkShop 6 update 2 C 5.3
- (Solaris 2.8) Sun WorkShop 6 update 2 Fortran 90
- Sun WorkShop 6 update 2 C++ 5.3
- SunOS 5.9 32,64 Sun C 5.6 2004/07/15
- (Solaris 2.9) Sun Fortran 95 8.0 2004/07/15
- Sun C++ 5.6 2004/07/15
- TFLOPS r1.0.4 v4.3.3 i386 pgcc Rel 3.1-4i with mpich-1.2.4 with
- local modifications
- IA-32 Linux 2.4.9 gcc 2.96
- Intel(R) C++ Version 7.0
- Intel(R) Fortran Compiler Version 7.0
-
- IA-64 Linux 2.4.16 ia64 gcc version 2.96 20000731
- Intel(R) C++ Version 7.0
- Intel(R) Fortran Compiler Version 7.0
- Windows XP MSVC++ 6.0
- MSVC++ .NET 2003,
- Intel C++ Version 8.1
- DEC Visual Fortran 6.6c
- MAC OS X Darwin 6.5
- gcc and g++ Apple Computer, Inc. GCC
- version 1161, based on gcc version 3.1
- IBM XL Fortran compiler version 8.1
- Absoft Fortran v8.2
-
-
-
-Supported Configuration Features Summary
-========================================
-
- In the tables below
- y = tested and supported
- n = not supported or not tested in this release
- x = not working in this release
- dna = does not apply
- ( ) = footnote appears below second table
-
-Platform C C F90 F90 C++ Shared zlib
- parallel parallel libraries (4)
-Solaris2.7 64-bit y y (1) y y (1) y y y
-Solaris2.7 32-bit y y (1) y y (1) y y y
-Solaris2.8 64-bit y y (1) y y (1) y y y
-Solaris2.8 32-bit y y y y (1) y y y
-IRIX6.5 y y (1) n n n y y
-IRIX64_6.5 64-bit y y (2) y y y y y
-IRIX64_6.5 32-bit y y (2) n n n y y
-HPUX11.00 y y (1) y y y y y
-OSF1 v5.1 y y y y y y y
-T3E y y (5) y y (5) n n y
-SV1 y y (5) y y (5) n n y
-T90 IEEE y y (5) y y (5) n n y
-TFLOPS n y (1) n n n n y
-AIX-5.1 32-bit y y y y y n y
-AIX-5.1 64-bit y y y y y n y
-WinXP (6) y n n n y y y
-WinXP Intel y n n n y y y
-WinNT CW y n n n n n y
-Mac OS X 10.2 y n n n y y y
-FreeBSD y y (1) n n y y y
-Linux 2.4 gcc (3) y y (1) y (PGI) n y y y
-Linux 2.4 Intel (3) y n y n y n y
-Linux 2.4 PGI (3) y n y n y n y
-Linux 2.4 IA32 Intel y n y n y n y
-Linux 2.4 IA64 Intel y n y n y n y
-
-
-ASCII Table 2 -- for RELEASE.txt
-
-Platform static- Thread- SZIP GASS STREAM- High-level H4/H5
- exec safe VFD APIs tools (7)
-Solaris2.7 64-bit x y y n y y n
-Solaris2.7 32-bit x y y n y y y
-Solaris2.8 64-bit x y y n y y n
-Solaris2.8 32-bit x y y n y y y
-IRIX6.5 x n y n y y y
-IRIX64_6.5 64-bit x y y y y y y
-IRIX64_6.5 32-bit x y y y y y y
-HPUX11.00 x n y n y y y
-OSF1 v5.1 y n y n y y y
-T3E y n n n y y y
-SV1 y n n n y y y
-T90 IEEE y n n n y y n
-TFLOPS y n n n n n n
-AIX-5.1 32-bit y n y n y y y
-AIX-5.1 64-bit y n y n y y y
-WinXP (6) y n y n n y y
-WinXP Intel y n y n n y y
-WinNT CW y n y n n y y
-Mac OS X 10.2 y n y n y y n
-FreeBSD y y y n y y y
-Linux 2.4 gcc (3) y y y n y y y
-Linux 2.4 Intel (3) y n y n y n n
-Linux 2.4 PGI (3) y n y n y n n
-Linux 2.4 IA32 Intel y n y n y y y
-Linux 2.4 IA64 Intel y n y n y y y
-
- Notes: (1) Using mpich 1.2.4.
- (2) Using mpt and mpich 1.2.4.
- (3) Linux 2.4 with GNU, Intel, and PGI compilers, respectively.
- (4) Shared libraries are provided only for the C library, except
- on Windows where they are provided for C and C++.
- (5) Using mpt.
- (6) Binaries only; source code for this platform is not being
- released at this time.
- (7) Includes the H4toH5 Library and the h4toh5 and h5toh4
- utilities.
- Compiler versions for each platform are listed in the preceding
- "Platforms Tested" table.
-
-
-
-Known Problems
-==============
-* The dataset created or rewritten with the v1.6.3 library or after can't
- be read with the v1.6.2 library or before when Fletcher32 EDC(filter) is
- enabled. There was a bug in the calculating code of the Fletcher32
- checksum in the library before v1.6.3. The checksum value wasn't consistent
- between big-endian and little-endian systems. This bug was fixed in
- Release 1.6.3. However, after fixing the bug, the checksum value is no
- longer the same as before on little-endian system. The library release
- after 1.6.4 can still read the dataset created or rewritten with the library
- of v1.6.2 or before. SLU - 2005/6/30
-* For the version 6(6.02 and 6.04) of Portland Group compiler on AMD Opteron
- processor, there's a bug in the compiler for optimization(-O2). The library
- failed in several tests but all related to multi driver. The problem has
- been reported to the vendor.
-* On windows XP, Fortran DLLs are not working with DEC Fortran 6.6c and Intel
- 8.1.
-* On IBM AIX systems, parallel HDF5 mode will fail some tests with error
- messages like "INFO: 0031-XXX ...". This is from the command poe.
- Set the environment variable MP_INFOLEVEL to 0 to minimize the messages
- and run the tests again.
- The tests may fail with messages like "The socket name is already
- in use". HDF5 does not use sockets (except for stream-VFD). This is
- due to problems of the poe command trying to set up the debug socket.
- Check if there are many old /tmp/s.pedb.* staying around. These are
- sockets used by the poe command and left behind due to failed commands.
- Ask your system administrator to clean them out. Lastly, request IBM
- to provide a mean to run poe without the debug socket.
-
-* The C++ library's tests fails when compiling with PGI C++ compiler. The
- workaround until the problem is correctly handled is to use the
- flag "--instantiate=local" prior to the configure and build steps, as:
- setenv CXX "pgCC --instantiate=local" for pgCC 5.02 and higher
- setenv CXX "pgCC -tlocal" for others
-
-* The h5dump tests may fail to match the expected output on some platforms
- (e.g. parallel jobs, Windows) where the error messages directed to
- "stderr" do not appear in the "right order" with output from stdout.
- This is not an error.
-
-* The stream-vfd test uses ip port 10007 for testing. If another
- application is already using that port address, the test will hang
- indefinitely and has to be terminated by the kill command. To try the
- test again, change the port address in test/stream_test.c to one not
- being used in the host.
-
-* The --enable-static-exec configure flag fails to compile for Solaris
- platforms. This is due to the fact that not all of the system
- libraries on Solaris are available in a static format.
-
- The --enable-static-exec configure flag also fails to correctly compile
- on IBM SP2 platform for the serial mode. The parallel mode works fine
- with this option.
-
- It is suggested that you don't use this option on these platforms
- during configuration.
-
-* With the gcc 2.95.2 compiler, HDF 5 uses the `-ansi' flag during
- compilation. The ANSI version of the compiler complains about not being
- able to handle the `long long' datatype with the warning:
-
- warning: ANSI C does not support `long long'
-
- This warning is innocuous and can be safely ignored.
-
-
-* The Stream VFD was not tested yet under Windows. It is not supported
- in the TFLOPS machine.
-
-
-* The ./dsets tests failed in the TFLOPS machine if the test program,
- dsets.c, is compiled with the -O option. The hdf5 library still works
- correctly with the -O option. The test program works fine if it is
- compiled with -O1 or -O0. Only -O (same as -O2) causes the test
- program to fail.
-
-* Certain platforms give false negatives when testing h5ls:
- - Cray J90 and Cray T90IEEE give errors during testing when displaying
- some floating-point values. These are benign differences due to
- the different precision in the values displayed and h5ls appears to
- be dumping floating-point numbers correctly.
-
-* Before building HDF5 F90 Library from source on Crays
- replace H5Aff.f90, H5Dff.f90 and H5Pff.f90 files in the fortran/src
- subdirectory in the top level directory with the Cray-specific files
- from the site:
-ftp://hdf.ncsa.uiuc.edu/pub/outgoing/hdf5/hdf5-1.6.2/F90_source_for_Crays
-
-* On some platforms that use Intel and Absoft compilers to build HDF5 fortran library,
- compilation may fail for fortranlib_test.f90, fflush1.f90 and fflush2.f90
- complaining about exit subroutine. Comment out the line
- IF (total_error .ne. 0) CALL exit (total_error)
-
-* On IA32 and IA64 systems, if you use a compiler other than GCC (such as
- Intel's ecc or icc compilers), you will need to modify the generated
- "libtool" program after configuration is finished. On or around line 104 of
- the libtool file, there are lines which look like:
-
- # How to pass a linker flag through the compiler.
- wl=""
-
- change these lines to this:
-
- # How to pass a linker flag through the compiler.
- wl="-Wl,"
-
- UPDATE: This is now done automatically by the configure script. However, if
- you still experience a problem, you may want to check this line in the
- libtool file and make sure that it has the correct value.
-
-* Information about building with PGI and Intel compilers is available in
- INSTALL file sections 5.7 and 5.8
-
-* On at least one system, (SDSC DataStar), the scheduler (in this case
- LoadLeveler) sends job status updates to standard error when you run
- any executable that was compiled with the parallel compilers.
-
- This causes problems when running "make check" on parallel builds, as
- many of the tool tests function by saving the output from test runs,
- and comparing it to an exemplar.
-
- The best solution is to reconfigure the target system so it no longer
- inserts the extra text. However, this may not be practical.
-
- In such cases, one solution is to "setenv HDF5_Make_Ignore yes" prior to
- the configure and build. This will cause "make check" to continue after
- detecting errors in the tool tests. However, in the case of SDSC DataStar,
- it also leaves you with some 150 "failed" tests to examine by hand.
-
- A second solution is to write a script to run serial tests and filter
- out the text added by the scheduler. A sample script used on SDSC
- DataStar is given below, but you will probably have to customize it
- for your installation.
-
- Observe that the basic idea is to insert the script as the first item
- on the command line which executes the the test. The script then
- executes the test and filters out the offending text before passing
- it on.
-
- #!/bin/csh
-
- set STDOUT_FILE=~/bin/serial_filter.stdout
- set STDERR_FILE=~/bin/serial_filter.stderr
-
- rm -f $STDOUT_FILE $STDERR_FILE
-
- ($* > $STDOUT_FILE) >& $STDERR_FILE
-
- set RETURN_VALUE=$status
-
- cat $STDOUT_FILE
-
- tail +3 $STDERR_FILE
-
- exit $RETURN_VALUE
-
- You get the HDF make files and test scipts to execute your filter script
- by setting the environment variable "RUNSERIAL" to the full path of the
- script prior to running configure for parallel builds. Remember to
- "unsetenv RUNSERIAL" before running configure for a serial build.
-
- Note that the RUNSERIAL environment variable exists so that we can
- can prefix serial runs as necessary on the target system. On DataStar,
- no prefix is necessary. However on an MPICH system, the prefix might
- have to be set to something like "/usr/local/mpi/bin/mpirun -np 1" to
- get the serial tests to run at all.
-
- In such cases, you will have to include the regular prefix in your
- filter script.
diff --git a/doc/html/Attributes.html b/doc/html/Attributes.html
deleted file mode 100644
index 63f8e5e..0000000
--- a/doc/html/Attributes.html
+++ /dev/null
@@ -1,287 +0,0 @@
-
-<html>
- <head>
- <title>Attribute Interface (H5A)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Attribute Interface (H5A)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The attribute API (H5A) is primarily designed to easily allow small
- datasets to be attached to primary datasets as metadata information.
- Additional goals for the H5A interface include keeping storage
- requirements for each attribute to a minimum and easily sharing
- attributes among datasets.
- <p>Because attributes are intended to be small objects, large datasets
- intended as additional information for a primary dataset should be
- stored as supplemental datasets in a group with the primary dataset.
- Attributes can then be attached to the group containing everything to
- indicate a particular type of dataset with supplemental datasets is
- located in the group. How small is "small" is not defined by the
- library and is up to the user's interpretation.
- <p>Attributes are not separate objects in the file, they are always
- contained in the object header of the object they are attached to. The
- I/O functions defined below are required to read or write attribute
- information, not the H5D I/O routines.
-
- <h2>2. Creating, Opening, Closing and Deleting Attributes</h2>
-
- <p>Attributes are created with the <code>H5Acreate()</code> function,
- and existing attributes can be accessed with either the
- <code>H5Aopen_name()</code> or <code>H5Aopen_idx()</code> functions. All
- three functions return an object ID which should be eventually released
- by calling <code>H5Aclose()</code>.
-
- <dl>
- <dt><code>hid_t H5Acreate (hid_t <em>loc_id</em>, const char
- *<em>name</em>, hid_t <em>type_id</em>, hid_t <em>space_id</em>,
- hid_t <em>create_plist_id</em>)</code>
- <dd>This function creates an attribute which is attached to the object
- specified with <em>loc_id</em>. The name specified with <em>name</em>
- for each attribute for an object must be unique for that object. The <em>type_id</em>
- and <em>space_id</em> are created with the H5T and H5S interfaces
- respectively. Currently only simple dataspaces are allowed for attribute
- dataspaces. The <em>create_plist_id</em> property list is currently
- unused, but will be used in the future for optional properties of
- attributes. The attribute ID returned from this function must be released
- with H5Aclose or resource leaks will develop. Attempting to create an
- attribute with the same name as an already existing attribute will fail,
- leaving the pre-existing attribute in place.
- This function returns an attribute ID for success or negative for failure.
-
- <br><br>
- <dt><code>hid_t H5Aopen_name (hid_t <em>loc_id</em>, const char
- *<em>name</em>)</code>
- <dd> This function opens an attribute which is attached to the object
- specified with <em>loc_id</em>. The name specified with <em>name</em>
- indicates the attribute to access. The attribute ID returned from this
- function must be released with H5Aclose or resource leaks will develop.
- This function returns an attribute ID for success or negative for failure.
-
- <br><br>
- <dt><code>hid_t H5Aopen_idx (hid_t <em>loc_id</em>, unsigned
- <em>idx</em>)</code>
- <dd>This function opens an attribute which is attached to the object
- specified with <em>loc_id</em>. The attribute specified with <em>idx</em>
- indicates the <em>idx</em>th attribute to access, starting with '0'. The
- attribute ID returned from this function must be released with H5Aclose or
- resource leaks will develop.
- This function returns an attribute ID for success or negative for failure.
-
- <br><br>
- <dt><code>herr_t H5Aclose (hid_t <em>attr_id</em>)</code>
- <dd>This function releases an attribute from use. Further use of the
- attribute ID will result in undefined behavior.
- This function returns non-negative on success, negative on failure.
-
- <br><br>
- <dt><code>herr_t H5Adelete (hid_t <em>loc_id</em>,
- const char *<em>name</em>)</code>
- <dd>This function removes the named attribute from a dataset or group.
- This function should not be used when attribute IDs are open on <em>loc_id</em>
- as it may cause the internal indexes of the attributes to change and future
- writes to the open attributes to produce incorrect results.
- Returns non-negative on success, negative on failure.
- </dl>
-
- <h2>3. Attribute I/O Functions</h2>
-
- <p>Attributes may only be written as an entire object, no partial I/O
- is currently supported.
-
- <dl>
- <dt><code>herr_t H5Awrite (hid_t <em>attr_id</em>,
- hid_t <em>mem_type_id</em>, void *<em>buf</em>)</code>
- <dd>This function writes an attribute, specified with <em>attr_id</em>,
- with <em>mem_type_id</em> specifying the datatype in memory. The entire
- attribute is written from <em>buf</em> to the file.
- This function returns non-negative on success, negative on failure.
-
- <br><br>
- <dt><code>herr_t H5Aread (hid_t <em>attr_id</em>,
- hid_t <em>mem_type_id</em>, void *<em>buf</em>)</code>
- <dd>This function read an attribute, specified with <em>attr_id</em>, with
- <em>mem_type_id</em> specifying the datatype in memory. The entire
- attribute is read into <em>buf</em> from the file.
- This function returns non-negative on success, negative on failure.
-
- </dl>
-
- <h2>4. Attribute Inquiry Functions</h2>
-
- <dl>
- <dt><code>herr_t H5Aiterate (hid_t <em>loc_id</em>,
- unsigned *<em>attr_number</em>,
- H5A_operator <em>operator</em>,
- void *<em>operator_data</em>)</code>
- <dd> This function iterates over the attributes of the dataset or group
- specified with <em>loc_id</em>. For each attribute of the object, the
- <em>operator_data</em> and some additional information (specified below)
- are passed to the <em>operator</em> function. The iteration begins with
- the <em>*attr_number</em> object in the group and the next attribute to be
- processed by the operator is returned in <em>*attr_number</em>.
- <P>The iterator returns a negative value if something is wrong, the return
- value of the last operator if it was non-zero, or zero if all attributes
- were processed.
- <P>The prototype for H5A_operator_t is: <br>
- <code>typedef herr_t (*H5A_operator_t)(hid_t <em>loc_id</em>,
- const char *<em>attr_name</em>, void *<em>operator_data</em>);</code>
- <P>The operation receives the ID for the group or dataset being iterated over
- (<em>loc_id</em>), the name of the current attribute about the object (<em>attr_name</em>)
- and the pointer to the operator data passed in to H5Aiterate
- (<em>operator_data</em>). The return values from an operator are:
- <ul>
- <li>Zero causes the iterator to continue, returning zero when all
- attributes have been processed.
- <li>Positive causes the iterator to immediately return that positive
- value, indicating short-circuit success. The iterator can be
- restarted at the next attribute.
- <li>Negative causes the iterator to immediately return that value,
- indicating failure. The iterator can be restarted at the next
- attribute.
- </ul>
- <br><br>
- <dt><code>hid_t H5Aget_space (hid_t <em>attr_id</em>)</code>
- <dd>This function retrieves a copy of the dataspace for an attribute.
- The dataspace ID returned from this function must be released with H5Sclose
- or resource leaks will develop.
- This function returns a dataspace ID for success or negative for failure.
- <br><br>
- <dt><code>hid_t H5Aget_type (hid_t <em>attr_id</em>)</code>
- <dd>This function retrieves a copy of the datatype for an attribute.
- The datatype ID returned from this function must be released with H5Tclose
- or resource leaks will develop.
- This function returns a datatype ID for success or negative for failure.
- <br><br>
- <dt><code>ssize_t H5Aget_name (hid_t <em>attr_id</em>,
- size_t <em>buf_size</em>, char *<em>buf</em>)</code>
- <dd>This function retrieves the name of an attribute for an attribute ID.
- Up to <em>buf_size</em> characters are stored in <em>buf</em> followed by a
- '\0' string terminator. If the name of the attribute is longer than
- <em>buf_size</em>-1, the string terminator is stored in the last position
- of the buffer to properly terminate the string.
- This function returns the length of the attribute's name (which may be
- longer than <em>buf_size</em>) on success or negative for failure.
- <br><br>
- <dt><code>int H5Aget_num_attrs (hid_t <em>loc_id</em>)</code>
- <dd>This function returns the number of attributes attached to a dataset or
- group, <em>loc_id</em>.
- This function returns non-negative for success or negative for failure.
- </dl>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem -->
-
-
-Last modified: 6 July 2000
-
-
-</body>
-</html>
diff --git a/doc/html/Big.html b/doc/html/Big.html
deleted file mode 100644
index fe00ff8..0000000
--- a/doc/html/Big.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Big Datasets on Small Machines</title>
- </head>
-
- <body>
- <h1>Big Datasets on Small Machines</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The HDF5 library is able to handle files larger than the
- maximum file size, and datasets larger than the maximum memory
- size. For instance, a machine where <code>sizeof(off_t)</code>
- and <code>sizeof(size_t)</code> are both four bytes can handle
- datasets and files as large as 18x10^18 bytes. However, most
- Unix systems limit the number of concurrently open files, so a
- practical file size limit is closer to 512GB or 1TB.
-
- <p>Two "tricks" must be imployed on these small systems in order
- to store large datasets. The first trick circumvents the
- <code>off_t</code> file size limit and the second circumvents
- the <code>size_t</code> main memory limit.
-
- <h2>2. File Size Limits</h2>
-
- <p>Systems that have 64-bit file addresses will be able to access
- those files automatically. One should see the following output
- from configure:
-
- <p><code><pre>
-checking size of off_t... 8
- </pre></code>
-
- <p>Also, some 32-bit operating systems have special file systems
- that can support large (&gt;2GB) files and HDF5 will detect
- these and use them automatically. If this is the case, the
- output from configure will show:
-
- <p><code><pre>
-checking for lseek64... yes
-checking for fseek64... yes
- </pre></code>
-
- <p>Otherwise one must use an HDF5 file family. Such a family is
- created by setting file family properties in a file access
- property list and then supplying a file name that includes a
- <code>printf</code>-style integer format. For instance:
-
- <p><code><pre>
-hid_t plist, file;
-plist = H5Pcreate (H5P_FILE_ACCESS);
-H5Pset_family (plist, 1&lt;&lt;30, H5P_DEFAULT);
-file = H5Fcreate ("big%03d.h5", H5F_ACC_TRUNC, H5P_DEFAULT, plist);
- </code></pre>
-
- <p>The second argument (<code>1&lt;&lt;30</code>) to
- <code>H5Pset_family()</code> indicates that the family members
- are to be 2^30 bytes (1GB) each although we could have used any
- reasonably large value. In general, family members cannot be
- 2GB because writes to byte number 2,147,483,647 will fail, so
- the largest safe value for a family member is 2,147,483,647.
- HDF5 will create family members on demand as the HDF5 address
- space increases, but since most Unix systems limit the number of
- concurrently open files the effective maximum size of the HDF5
- address space will be limited (the system on which this was
- developed allows 1024 open files, so if each family member is
- approx 2GB then the largest HDF5 file is approx 2TB).
-
- <p>If the effective HDF5 address space is limited then one may be
- able to store datasets as external datasets each spanning
- multiple files of any length since HDF5 opens external dataset
- files one at a time. To arrange storage for a 5TB dataset split
- among 1GB files one could say:
-
- <p><code><pre>
-hid_t plist = H5Pcreate (H5P_DATASET_CREATE);
-for (i=0; i&lt;5*1024; i++) {
- sprintf (name, "velocity-%04d.raw", i);
- H5Pset_external (plist, name, 0, (size_t)1&lt;&lt;30);
-}
- </code></pre>
-
- <h2>3. Dataset Size Limits</h2>
-
- <p>The second limit which must be overcome is that of
- <code>sizeof(size_t)</code>. HDF5 defines a data type called
- <code>hsize_t</code> which is used for sizes of datasets and is,
- by default, defined as <code>unsigned long long</code>.
-
- <p>To create a dataset with 8*2^30 4-byte integers for a total of
- 32GB one first creates the dataspace. We give two examples
- here: a 4-dimensional dataset whose dimension sizes are smaller
- than the maximum value of a <code>size_t</code>, and a
- 1-dimensional dataset whose dimension size is too large to fit
- in a <code>size_t</code>.
-
- <p><code><pre>
-hsize_t size1[4] = {8, 1024, 1024, 1024};
-hid_t space1 = H5Screate_simple (4, size1, size1);
-
-hsize_t size2[1] = {8589934592LL};
-hid_t space2 = H5Screate_simple (1, size2, size2};
- </pre></code>
-
- <p>However, the <code>LL</code> suffix is not portable, so it may
- be better to replace the number with
- <code>(hsize_t)8*1024*1024*1024</code>.
-
- <p>For compilers that don't support <code>long long</code> large
- datasets will not be possible. The library performs too much
- arithmetic on <code>hsize_t</code> types to make the use of a
- struct feasible.
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Fri Apr 10 13:26:04 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: Sun Jul 19 11:37:25 EDT 1998
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/Caching.html b/doc/html/Caching.html
deleted file mode 100644
index d194ba3..0000000
--- a/doc/html/Caching.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Data Caching</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>Data Caching</h1>
-
- <h2>1. Meta Data Caching</h2>
-
- <p>The HDF5 library caches two types of data: meta data and raw
- data. The meta data cache holds file objects like the file
- header, symbol table nodes, global heap collections, object
- headers and their messages, etc. in a partially decoded
- state. The cache has a fixed number of entries which is set with
- the file access property list (defaults to 10k) and each entry
- can hold a single meta data object. Collisions between objects
- are handled by preempting the older object in favor of the new
- one.
-
- <h2>2. Raw Data Chunk Caching</h2>
-
- <p>Raw data chunks are cached because I/O requests at the
- application level typically don't map well to chunks at the
- storage level. The chunk cache has a maximum size in bytes
- set with the file access property list (defaults to 1MB) and
- when the limit is reached chunks are preempted based on the
- following set of heuristics.
-
- <ul>
- <li>Chunks which have not been accessed for a long time
- relative to other chunks are penalized.
- <li>Chunks which have been accessed frequently in the recent
- past are favored.
- <li>Chunks which are completely read and not written, completely
- written but not read, or completely read and completely
- written are penalized according to <em>w0</em>, an
- application-defined weight between 0 and 1 inclusive. A weight
- of zero does not penalize such chunks while a weight of 1
- penalizes those chunks more than all other chunks. The
- default is 0.75.
- <li>Chunks which are larger than the maximum cache size do not
- participate in the cache.
- </ul>
-
- <p>One should choose large values for <em>w0</em> if I/O requests
- typically do not overlap but smaller values for <em>w0</em> if
- the requests do overlap. For instance, reading an entire 2d
- array by reading from non-overlapping "windows" in a row-major
- order would benefit from a high <em>w0</em> value while reading
- a diagonal accross the dataset where each request overlaps the
- previous request would benefit from a small <em>w0</em>.
-
- <h2>3. Data Caching Operations</h2>
-
- <p>The cache parameters for both caches are part of a file access
- property list and are set and queried with this pair of
- functions:
-
- <dl>
- <dt><code>herr_t H5Pset_cache(hid_t <em>plist</em>, unsigned int
- <em>mdc_nelmts</em>, size_t <em>rdcc_nbytes</em>, double
- <em>w0</em>)</code>
- <dt><code>herr_t H5Pget_cache(hid_t <em>plist</em>, unsigned int
- *<em>mdc_nelmts</em>, size_t *<em>rdcc_nbytes</em>, double
- <em>w0</em>)</code>
- <dd>Sets or queries the meta data cache and raw data chunk cache
- parameters. The <em>plist</em> is a file access property
- list. The number of elements (objects) in the meta data cache
- is <em>mdc_nelmts</em>. The total size of the raw data chunk
- cache and the preemption policy is <em>rdcc_nbytes</em> and
- <em>w0</em>. For <code>H5Pget_cache()</code> any (or all) of
- the pointer arguments may be null pointers.
- </dl>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Tue May 26 15:20:14 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: 13 December 1999
-<!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/Chunk_f1.gif b/doc/html/Chunk_f1.gif
deleted file mode 100644
index d73201a..0000000
--- a/doc/html/Chunk_f1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Chunk_f1.obj b/doc/html/Chunk_f1.obj
deleted file mode 100644
index 004204a..0000000
--- a/doc/html/Chunk_f1.obj
+++ /dev/null
@@ -1,252 +0,0 @@
-%TGIF 3.0-p17
-state(0,33,100.000,0,0,0,16,1,9,1,1,0,0,0,1,1,1,'Courier',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1088,1408,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
- "magenta", 65535, 0, 65535, 65280, 0, 65280, 1,
- "red", 65535, 0, 0, 65280, 0, 0, 1,
- "green", 0, 65535, 0, 0, 65280, 0, 1,
- "blue", 0, 0, 65535, 0, 0, 65280, 1,
- "yellow", 65535, 65535, 0, 65280, 65280, 0, 1,
- "pink", 65535, 49344, 52171, 65280, 49152, 51968, 1,
- "cyan", 0, 65535, 65535, 0, 65280, 65280, 1,
- "CadetBlue", 24415, 40606, 41120, 24320, 40448, 40960, 1,
- "white", 65535, 65535, 65535, 65280, 65280, 65280, 1,
- "black", 0, 0, 0, 0, 0, 0, 1,
- "DarkSlateGray", 12079, 20303, 20303, 12032, 20224, 20224, 1
-]).
-page(1,"",1).
-text('black',432,272,'Courier',0,17,2,1,0,1,49,28,302,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Point",
- "Written"]).
-box('black',256,288,320,352,0,3,1,70,0,0,0,0,0,'3',[
-]).
-text('black',288,272,'Courier',0,17,1,1,0,1,49,14,75,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Dataset"]).
-box('black',352,288,384,320,5,1,1,77,5,0,0,0,0,'1',[
-]).
-text('black',368,272,'Courier',0,17,1,1,0,1,35,14,80,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Chunk"]).
-box('black',96,32,544,384,0,1,1,118,0,0,0,0,0,'1',[
-]).
-box('black',128,64,256,128,5,1,1,131,5,0,0,0,0,'1',[
-]).
-box('black',128,128,256,192,5,1,1,132,5,0,0,0,0,'1',[
-]).
-box('black',384,64,512,128,5,1,1,137,5,0,0,0,0,'1',[
-]).
-box('black',256,128,384,192,5,1,1,142,5,0,0,0,0,'1',[
-]).
-box('black',256,192,384,256,5,1,1,144,5,0,0,0,0,'1',[
-]).
-box('black',384,192,512,256,5,1,1,146,5,0,0,0,0,'1',[
-]).
-box('black',128,64,432,224,0,3,1,26,0,0,0,0,0,'3',[
-]).
-group([
-polygon('black',11,[
- 152,80,154,86,160,86,155,89,157,94,152,91,147,94,149,89,
- 144,86,150,86,152,80],1,1,1,0,178,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',148,84,156,92,0,1,0,179,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',152,83,'Courier',0,17,1,1,0,1,112,14,180,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',152,80,'Courier',0,17,1,1,0,1,0,14,181,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-182,0,0,[
-]).
-group([
-polygon('black',11,[
- 200,96,202,102,208,102,203,105,205,110,200,107,195,110,197,105,
- 192,102,198,102,200,96],1,1,1,0,188,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',196,100,204,108,0,1,0,189,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',200,99,'Courier',0,17,1,1,0,1,112,14,190,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',200,96,'Courier',0,17,1,1,0,1,0,14,191,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-192,0,0,[
-]).
-group([
-polygon('black',11,[
- 168,128,170,134,176,134,171,137,173,142,168,139,163,142,165,137,
- 160,134,166,134,168,128],1,1,1,0,198,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',164,132,172,140,0,1,0,199,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',168,131,'Courier',0,17,1,1,0,1,112,14,200,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',168,128,'Courier',0,17,1,1,0,1,0,14,201,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-202,0,0,[
-]).
-group([
-polygon('black',11,[
- 168,160,170,166,176,166,171,169,173,174,168,171,163,174,165,169,
- 160,166,166,166,168,160],1,1,1,0,208,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',164,164,172,172,0,1,0,209,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',168,163,'Courier',0,17,1,1,0,1,112,14,210,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',168,160,'Courier',0,17,1,1,0,1,0,14,211,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-212,0,0,[
-]).
-group([
-polygon('black',11,[
- 136,144,138,150,144,150,139,153,141,158,136,155,131,158,133,153,
- 128,150,134,150,136,144],1,1,1,0,218,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',132,148,140,156,0,1,0,219,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',136,147,'Courier',0,17,1,1,0,1,112,14,220,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',136,144,'Courier',0,17,1,1,0,1,0,14,221,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-222,0,0,[
-]).
-group([
-polygon('black',11,[
- 248,144,250,150,256,150,251,153,253,158,248,155,243,158,245,153,
- 240,150,246,150,248,144],1,1,1,0,228,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',244,148,252,156,0,1,0,229,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',248,147,'Courier',0,17,1,1,0,1,112,14,230,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',248,144,'Courier',0,17,1,1,0,1,0,14,231,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-232,0,0,[
-]).
-group([
-polygon('black',11,[
- 296,176,298,182,304,182,299,185,301,190,296,187,291,190,293,185,
- 288,182,294,182,296,176],1,1,1,0,238,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',292,180,300,188,0,1,0,239,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',296,179,'Courier',0,17,1,1,0,1,112,14,240,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',296,176,'Courier',0,17,1,1,0,1,0,14,241,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-242,0,0,[
-]).
-group([
-polygon('black',11,[
- 360,208,362,214,368,214,363,217,365,222,360,219,355,222,357,217,
- 352,214,358,214,360,208],1,1,1,0,248,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',356,212,364,220,0,1,0,249,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',360,211,'Courier',0,17,1,1,0,1,112,14,250,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',360,208,'Courier',0,17,1,1,0,1,0,14,251,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-252,0,0,[
-]).
-group([
-polygon('black',11,[
- 408,192,410,198,416,198,411,201,413,206,408,203,403,206,405,201,
- 400,198,406,198,408,192],1,1,1,0,258,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',404,196,412,204,0,1,0,259,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',408,195,'Courier',0,17,1,1,0,1,112,14,260,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',408,192,'Courier',0,17,1,1,0,1,0,14,261,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-262,0,0,[
-]).
-group([
-polygon('black',11,[
- 376,128,378,134,384,134,379,137,381,142,376,139,371,142,373,137,
- 368,134,374,134,376,128],1,1,1,0,268,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',372,132,380,140,0,1,0,269,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',376,131,'Courier',0,17,1,1,0,1,112,14,270,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',376,128,'Courier',0,17,1,1,0,1,0,14,271,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-272,0,0,[
-]).
-group([
-polygon('black',11,[
- 408,80,410,86,416,86,411,89,413,94,408,91,403,94,405,89,
- 400,86,406,86,408,80],1,1,1,0,278,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',404,84,412,92,0,1,0,279,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',408,83,'Courier',0,17,1,1,0,1,112,14,280,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',408,80,'Courier',0,17,1,1,0,1,0,14,281,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-282,0,0,[
-]).
-group([
-polygon('black',11,[
- 424,304,426,310,432,310,427,313,429,318,424,315,419,318,421,313,
- 416,310,422,310,424,304],1,1,1,0,288,0,0,0,0,0,'1',
- "000",[
-]),
-box('black',420,308,428,316,0,1,0,289,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',424,307,'Courier',0,17,1,1,0,1,112,14,290,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "", 1, 0, 0,
-text('black',424,304,'Courier',0,17,1,1,0,1,0,14,291,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- ""]))
-])
-],
-292,0,0,[
-]).
diff --git a/doc/html/Chunk_f2.gif b/doc/html/Chunk_f2.gif
deleted file mode 100644
index 68f9433..0000000
--- a/doc/html/Chunk_f2.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Chunk_f2.obj b/doc/html/Chunk_f2.obj
deleted file mode 100644
index 7361c1c..0000000
--- a/doc/html/Chunk_f2.obj
+++ /dev/null
@@ -1,95 +0,0 @@
-%TGIF 3.0-p17
-state(0,33,100.000,0,0,0,16,1,9,1,1,6,1,1,0,1,0,'Courier',0,17,0,2,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1088,1408,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
- "magenta", 65535, 0, 65535, 65280, 0, 65280, 1,
- "red", 65535, 0, 0, 65280, 0, 0, 1,
- "green", 0, 65535, 0, 0, 65280, 0, 1,
- "blue", 0, 0, 65535, 0, 0, 65280, 1,
- "yellow", 65535, 65535, 0, 65280, 65280, 0, 1,
- "pink", 65535, 49344, 52171, 65280, 49152, 51968, 1,
- "cyan", 0, 65535, 65535, 0, 65280, 65280, 1,
- "CadetBlue", 24415, 40606, 41120, 24320, 40448, 40960, 1,
- "white", 65535, 65535, 65535, 65280, 65280, 65280, 1,
- "black", 0, 0, 0, 0, 0, 0, 1,
- "DarkSlateGray", 12079, 20303, 20303, 12032, 20224, 20224, 1
-]).
-page(1,"",1).
-group([
-box('black',192,416,512,544,0,1,0,22,0,0,0,0,0,'1',[
-]),
-oval('black',192,384,512,448,0,1,1,23,0,0,0,0,0,'1',[
-]),
-arc('black',0,1,1,0,192,512,352,544,192,544,512,544,0,320,64,11520,11520,24,0,0,8,3,0,0,0,'1','8','3',[
-]),
-poly('black',2,[
- 192,416,192,544],0,1,1,25,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]),
-poly('black',2,[
- 512,416,512,544],0,1,1,26,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]),
-box('black',196,452,508,572,0,1,0,27,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',352,451,'Courier',0,17,1,1,0,1,112,14,28,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "HDF5 File", 1, 0, 0,
-text('black',351,505,'Courier',0,17,1,1,0,1,63,14,29,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "HDF5 File"]))
-])
-],
-30,0,0,[
-]).
-group([
-polygon('black',5,[
- 240,160,240,352,464,352,464,160,240,160],0,1,1,0,63,0,0,0,0,0,'1',
- "00",[
-]),
-box('black',254,164,450,348,0,1,0,64,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',352,163,'Courier',0,17,1,1,0,1,112,14,65,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "Filter", 1, 0, 0,
-text('black',351,242,'Courier',0,17,2,1,0,1,49,28,66,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Filter",
- "Pipeine"]))
-])
-],
-62,0,0,[
-]).
-group([
-polygon('black',13,[
- 304,85,304,107,336,107,336,128,368,128,368,107,400,107,400,85,
- 368,85,368,64,336,64,336,85,304,85],0,1,1,0,103,0,0,0,0,0,'1',
- "0000",[
-]),
-box('black',307,68,397,124,0,1,0,104,0,0,0,0,0,'1',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',352,67,'Courier',0,17,1,1,0,1,112,14,105,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "Modify Bytes", 1, 0, 0,
-text('black',352,89,'Courier',0,17,1,1,0,1,84,14,106,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Modify Bytes"]))
-])
-],
-107,0,0,[
-]).
-box('black',176,48,528,592,0,1,1,143,0,0,0,0,0,'1',[
-]).
-poly('black',4,[
- 256,416,256,128,256,96,304,96],1,7,1,168,1,0,2,0,22,9,0,0,0,'7','22','9',
- "6",[
-]).
-poly('black',4,[
- 400,96,448,96,448,128,448,416],1,7,1,173,1,0,2,0,22,9,0,0,0,'7','22','9',
- "6",[
-]).
-text('black',432,128,'Courier',0,17,1,0,0,1,35,14,312,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Chunk"]).
-text('black',240,368,'Courier',0,17,1,0,0,1,35,14,314,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Chunk"]).
diff --git a/doc/html/Chunk_f3.gif b/doc/html/Chunk_f3.gif
deleted file mode 100644
index e6e8457..0000000
--- a/doc/html/Chunk_f3.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Chunk_f4.gif b/doc/html/Chunk_f4.gif
deleted file mode 100644
index 76f0994..0000000
--- a/doc/html/Chunk_f4.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Chunk_f5.gif b/doc/html/Chunk_f5.gif
deleted file mode 100644
index 3b12174..0000000
--- a/doc/html/Chunk_f5.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Chunk_f6.gif b/doc/html/Chunk_f6.gif
deleted file mode 100644
index 616946d..0000000
--- a/doc/html/Chunk_f6.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Chunk_f6.obj b/doc/html/Chunk_f6.obj
deleted file mode 100644
index 2b2f371..0000000
--- a/doc/html/Chunk_f6.obj
+++ /dev/null
@@ -1,107 +0,0 @@
-%TGIF 3.0-p17
-state(0,33,100.000,0,0,0,8,1,9,1,1,0,1,1,0,1,1,'Courier',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1088,1408,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-color_info(11,65535,0,[
- "magenta", 65535, 0, 65535, 65280, 0, 65280, 1,
- "red", 65535, 0, 0, 65280, 0, 0, 1,
- "green", 0, 65535, 0, 0, 65280, 0, 1,
- "blue", 0, 0, 65535, 0, 0, 65280, 1,
- "yellow", 65535, 65535, 0, 65280, 65280, 0, 1,
- "pink", 65535, 49344, 52171, 65280, 49152, 51968, 1,
- "cyan", 0, 65535, 65535, 0, 65280, 65280, 1,
- "CadetBlue", 24415, 40606, 41120, 24320, 40448, 40960, 1,
- "white", 65535, 65535, 65535, 65280, 65280, 65280, 1,
- "black", 0, 0, 0, 0, 0, 0, 1,
- "DarkSlateGray", 12079, 20303, 20303, 12032, 20224, 20224, 1
-]).
-page(1,"",1).
-polygon('black',5,[
- 128,256,256,256,256,320,128,320,128,256],5,1,1,0,26,5,0,0,0,0,'1',
- "00",[
-]).
-polygon('black',7,[
- 256,128,256,256,128,256,128,192,192,192,192,128,256,128],5,1,1,0,25,5,0,0,0,0,'1',
- "00",[
-]).
-polygon('black',7,[
- 128,64,256,64,256,128,192,128,192,192,128,192,128,64],5,1,1,0,24,5,0,0,0,0,'1',
- "00",[
-]).
-box('black',128,64,256,320,0,3,1,22,0,0,0,0,0,'3',[
-]).
-text('black',192,96,'Courier',0,17,1,1,0,1,49,14,34,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Strip 1"]).
-text('black',224,160,'Courier',0,17,1,1,0,1,49,14,40,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Strip 2"]).
-text('black',192,272,'Courier',0,17,1,1,0,1,49,14,46,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Strip 3"]).
-polygon('black',5,[
- 448,256,576,256,576,320,448,320,448,256],5,1,1,0,59,5,0,0,0,0,'1',
- "00",[
-]).
-polygon('black',7,[
- 576,128,576,256,448,256,448,192,512,192,512,128,576,128],5,1,1,0,60,5,0,0,0,0,'1',
- "00",[
-]).
-polygon('black',7,[
- 448,64,576,64,576,128,512,128,512,192,448,192,448,64],5,1,1,0,61,5,0,0,0,0,'1',
- "00",[
-]).
-box('black',448,64,576,320,0,3,1,62,0,0,0,0,0,'3',[
-]).
-text('black',512,96,'Courier',0,17,1,1,0,1,49,14,63,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Strip 1"]).
-text('black',544,160,'Courier',0,17,1,1,0,1,49,14,64,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Strip 2"]).
-text('black',512,272,'Courier',0,17,1,1,0,1,49,14,65,0,11,3,2,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Strip 3"]).
-text('black',192,32,'Courier',0,17,1,1,0,1,28,14,68,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "FILE"]).
-text('black',512,32,'Courier',0,17,1,1,0,1,42,14,70,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "MEMORY"]).
-group([
-polygon('black',6,[
- 320,160,320,208,384,208,416,184,384,160,320,160],0,3,1,0,72,0,0,0,0,0,'3',
- "00",[
-]),
-box('black',324,164,388,204,0,3,0,73,0,0,0,0,0,'3',[
-attr("", "auto_center_attr", 0, 1, 0,
-text('black',356,162,'Courier',0,17,1,1,0,1,112,14,74,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "auto_center_attr"])),
-attr("label=", "TCONV", 1, 0, 0,
-text('black',355,177,'Courier',0,17,1,1,0,1,35,14,75,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "TCONV"]))
-])
-],
-76,0,0,[
-]).
-poly('black',5,[
- 256,96,288,96,320,96,320,128,320,160],1,7,1,87,1,0,5,0,22,9,0,0,0,'7','22','9',
- "70",[
-]).
-poly('black',2,[
- 256,184,320,184],1,7,1,88,1,0,5,0,22,9,0,0,0,'7','22','9',
- "0",[
-]).
-poly('black',5,[
- 256,288,288,288,320,288,320,256,320,208],1,7,1,89,1,0,5,0,22,9,0,0,0,'7','22','9',
- "70",[
-]).
-poly('black',5,[
- 400,160,400,128,400,96,432,96,448,96],1,7,1,92,1,0,5,0,22,9,0,0,0,'7','22','9',
- "70",[
-]).
-poly('black',2,[
- 416,184,512,184],1,7,1,93,1,0,5,0,22,9,0,0,0,'7','22','9',
- "0",[
-]).
-poly('black',5,[
- 400,208,400,256,400,288,432,288,448,288],1,7,1,94,1,0,5,0,22,9,0,0,0,'7','22','9',
- "70",[
-]).
-box('black',96,0,608,352,0,1,1,99,0,0,0,0,0,'1',[
-]).
diff --git a/doc/html/Chunking.html b/doc/html/Chunking.html
deleted file mode 100644
index 3738d9a..0000000
--- a/doc/html/Chunking.html
+++ /dev/null
@@ -1,313 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Dataset Chunking</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>Dataset Chunking Issues</h1>
-
- <h2>Table of Contents</h2>
-
- <ul>
- <li><a href="#S1">1. Introduction</a>
- <li><a href="#S2">2. Raw Data Chunk Cache</a>
- <li><a href="#S3">3. Cache Efficiency</a>
- <li><a href="#S4">4. Fragmentation</a>
- <li><a href="#S5">5. File Storage Overhead</a>
- <li><a href="#S6">6. Chunk Compression</a>
- </ul>
-
- <h2><a name="S1">1. Introduction</a></h2>
-
-
- <p><em>Chunking</em> refers to a storage layout where a dataset is
- partitioned into fixed-size multi-dimensional chunks. The
- chunks cover the dataset but the dataset need not be an integral
- number of chunks. If no data is ever written to a chunk then
- that chunk isn't allocated on disk. Figure 1 shows a 25x48
- element dataset covered by nine 10x20 chunks and 11 data points
- written to the dataset. No data was written to the region of
- the dataset covered by three of the chunks so those chunks were
- never allocated in the file -- the other chunks are allocated at
- independent locations in the file and written in their entirety.
-
- <center><image src="Chunk_f1.gif"><br><b>Figure 1</b></center>
-
- <p>The HDF5 library treats chunks as atomic objects -- disk I/O is
- always in terms of complete chunks<a href="#fn1">(1)</a>. This
- allows data filters to be defined by the application to perform
- tasks such as compression, encryption, checksumming,
- <em>etc</em>. on entire chunks. As shown in Figure 2, if
- <code>H5Dwrite()</code> touches only a few bytes of the chunk,
- the entire chunk is read from the file, the data passes upward
- through the filter pipeline, the few bytes are modified, the
- data passes downward through the filter pipeline, and the entire
- chunk is written back to the file.
-
- <center><image src="Chunk_f2.gif"><br><b>Figure 2</b></center>
-
- <h2><a name="S2">2. The Raw Data Chunk Cache</a></h2>
-
- <p>It's obvious from Figure 2 that calling <code>H5Dwrite()</code>
- many times from the application would result in poor performance
- even if the data being written all falls within a single chunk.
- A raw data chunk cache layer was added between the top of the
- filter stack and the bottom of the byte modification layer<a
- href="#fn2">(2)</a>. By default, the chunk cache will store 521
- chunks or 1MB of data (whichever is less) but these values can
- be modified with <code>H5Pset_cache()</code>.
-
- <p>The preemption policy for the cache favors certain chunks and
- tries not to preempt them.
-
- <ul>
- <li>Chunks that have been accessed frequently in the near past
- are favored.
- <li>A chunk which has just entered the cache is favored.
- <li>A chunk which has been completely read or completely written
- but not partially read or written is penalized according to
- some application specified weighting between zero and one.
- <li>A chunk which is larger than the maximum cache size is not
- eligible for caching.
- </ul>
-
- <h2><a name="S3">3. Cache Efficiency</a></h2>
-
- <p>Now for some real numbers... A 2000x2000 element dataset is
- created and covered by a 20x20 array of chunks (each chunk is 100x100
- elements). The raw data cache is adjusted to hold at most 25 chunks by
- setting the maximum number of bytes to 25 times the chunk size in
- bytes. Then the application creates a square, two-dimensional memory
- buffer and uses it as a window into the dataset, first reading and then
- rewriting in row-major order by moving the window across the dataset
- (the read and write tests both start with a cold cache).
-
- <p>The measure of efficiency in Figure 3 is the number of bytes requested
- by the application divided by the number of bytes transferred from the
- file. There are at least a couple ways to get an estimate of the cache
- performance: one way is to turn on <a href="Debugging.html">cache
- debugging</a> and look at the number of cache misses. A more accurate
- and specific way is to register a data filter whose sole purpose is to
- count the number of bytes that pass through it (that's the method used
- below).
-
- <center><image src="Chunk_f3.gif"><br><b>Figure 3</b></center>
-
- <p>The read efficiency is less than one for two reasons: collisions in the
- cache are handled by preempting one of the colliding chunks, and the
- preemption algorithm occasionally preempts a chunk which hasn't been
- referenced for a long time but is about to be referenced in the near
- future.
-
- <p>The write test results in lower efficiency for most window
- sizes because HDF5 is unaware that the application is about to
- overwrite the entire dataset and must read in most chunks before
- modifying parts of them.
-
- <p>There is a simple way to improve efficiency for this example.
- It turns out that any chunk that has been completely read or
- written is a good candidate for preemption. If we increase the
- penalty for such chunks from the default 0.75 to the maximum
- 1.00 then efficiency improves.
-
- <center><image src="Chunk_f4.gif"><br><b>Figure 4</b></center>
-
- <p>The read efficiency is still less than one because of
- collisions in the cache. The number of collisions can often be
- reduced by increasing the number of slots in the cache. Figure
- 5 shows what happens when the maximum number of slots is
- increased by an order of magnitude from the default (this change
- has no major effect on memory used by the test since the byte
- limit was not increased for the cache).
-
- <center><image src="Chunk_f5.gif"><br><b>Figure 5</b></center>
-
- <p>Although the application eventually overwrites every chunk
- completely the library has know way of knowing this before hand
- since most calls to <code>H5Dwrite()</code> modify only a
- portion of any given chunk. Therefore, the first modification of
- a chunk will cause the chunk to be read from disk into the chunk
- buffer through the filter pipeline. Eventually HDF5 might
- contain a data set transfer property that can turn off this read
- operation resulting in write efficiency which is equal to read
- efficiency.
-
-
- <h2><a name="S4">4. Fragmentation</a></h2>
-
- <p>Even if the application transfers the entire dataset contents with a
- single call to <code>H5Dread()</code> or <code>H5Dwrite()</code> it's
- possible the request will be broken into smaller, more manageable
- pieces by the library. This is almost certainly true if the data
- transfer includes a type conversion.
-
- <center><image src="Chunk_f6.gif"><br><b>Figure 6</b></center>
-
- <p>By default the strip size is 1MB but it can be changed by calling
- <code>H5Pset_buffer()</code>.
-
-
- <h2><a name="S5">5. File Storage Overhead</a></h2>
-
- <p>The chunks of the dataset are allocated at independent
- locations throughout the HDF5 file and a B-tree maps chunk
- N-dimensional addresses to file addresses. The more chunks that
- are allocated for a dataset the larger the B-tree. Large B-trees
- have two disadvantages:
-
- <ul>
- <li>The file storage overhead is higher and more disk I/O is
- required to traverse the tree from root to leaves.
- <li>The increased number of B-tree nodes will result in higher
- contention for the meta data cache.
- </ul>
-
- <p>There are three ways to reduce the number of B-tree nodes. The
- obvious way is to reduce the number of chunks by choosing a larger chunk
- size (doubling the chunk size will cut the number of B-tree nodes in
- half). Another method is to adjust the split ratios for the B-tree by
- calling <code>H5Pset_btree_ratios()</code>, but this method typically
- results in only a slight improvement over the default settings.
- Finally, the out-degree of each node can be increased by calling
- <code>H5Pset_istore_k()</code> (increasing the out degree actually
- increases file overhead while decreasing the number of nodes).
-
-
- <h2><a name="S6">6. Chunk Compression</a></h2>
-
- <p>Dataset chunks can be compressed through the use of filters.
- See the chapter &ldquo;<a href="Filters.html">Filters in HDF5</a>.&rdquo;
-
- <p>Reading and rewriting compressed chunked data can result in holes
- in an HDF5 file. In time, enough such holes can increase the
- file size enough to impair application or library performance
- when working with that file. See
- &ldquo;<a href="Performance.html#Freespace">Freespace Management</a>&rdquo;
- in the chapter
- &ldquo;<a href="Performance.html">Performance Analysis and Issues</a>.&rdquo;
-
-
-<hr>
-
- <p><a name="fn1">Footnote 1:</a> Parallel versions of the library
- can access individual bytes of a chunk when the underlying file
- uses MPI-IO.
-
- <p><a name="fn2">Footnote 2:</a> The raw data chunk cache was
- added before the second alpha release.</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Tue Oct 20 12:38:40 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: 2 August 2001
-<!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/CodeReview.html b/doc/html/CodeReview.html
deleted file mode 100644
index 213cbbe..0000000
--- a/doc/html/CodeReview.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Code Review</title>
- </head>
- <body>
- <center><h1>Code Review 1</h1></center>
-
- <h3>Some background...</h3>
- <p>This is one of the functions exported from the
- <code>H5B.c</code> file that implements a B-link-tree class
- without worrying about concurrency yet (thus the `Note:' in the
- function prologue). The <code>H5B.c</code> file provides the
- basic machinery for operating on generic B-trees, but it isn't
- much use by itself. Various subclasses of the B-tree (like
- symbol tables or indirect storage) provide their own interface
- and back end to this function. For instance,
- <code>H5G_stab_find()</code> takes a symbol table OID and a name
- and calls <code>H5B_find()</code> with an appropriate
- <code>udata</code> argument that eventually gets passed to the
- <code>H5G_stab_find()</code> function.
-
- <p><code><pre>
- 1 /*-------------------------------------------------------------------------
- 2 * Function: H5B_find
- 3 *
- 4 * Purpose: Locate the specified information in a B-tree and return
- 5 * that information by filling in fields of the caller-supplied
- 6 * UDATA pointer depending on the type of leaf node
- 7 * requested. The UDATA can point to additional data passed
- 8 * to the key comparison function.
- 9 *
-10 * Note: This function does not follow the left/right sibling
-11 * pointers since it assumes that all nodes can be reached
-12 * from the parent node.
-13 *
-14 * Return: Success: SUCCEED if found, values returned through the
-15 * UDATA argument.
-16 *
-17 * Failure: FAIL if not found, UDATA is undefined.
-18 *
-19 * Programmer: Robb Matzke
-20 * matzke@llnl.gov
-21 * Jun 23 1997
-22 *
-23 * Modifications:
-24 *
-25 *-------------------------------------------------------------------------
-26 */
-27 herr_t
-28 H5B_find (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, void *udata)
-29 {
-30 H5B_t *bt=NULL;
-31 intn idx=-1, lt=0, rt, cmp=1;
-32 int ret_value = FAIL;
- </pre></code>
-
- <p>All pointer arguments are initialized when defined. I don't
- worry much about non-pointers because it's usually obvious when
- the value isn't initialized.
-
- <p><code><pre>
-33
-34 FUNC_ENTER (H5B_find, NULL, FAIL);
-35
-36 /*
-37 * Check arguments.
-38 */
-39 assert (f);
-40 assert (type);
-41 assert (type->decode);
-42 assert (type->cmp3);
-43 assert (type->found);
-44 assert (addr && H5F_addr_defined (addr));
- </pre></code>
-
- <p>I use <code>assert</code> to check invariant conditions. At
- this level of the library, none of these assertions should fail
- unless something is majorly wrong. The arguments should have
- already been checked by higher layers. It also provides
- documentation about what arguments might be optional.
-
- <p><code><pre>
-45
-46 /*
-47 * Perform a binary search to locate the child which contains
-48 * the thing for which we're searching.
-49 */
-50 if (NULL==(bt=H5AC_protect (f, H5AC_BT, addr, type, udata))) {
-51 HGOTO_ERROR (H5E_BTREE, H5E_CANTLOAD, FAIL);
-52 }
- </pre></code>
-
- <p>You'll see this quite often in the low-level stuff and it's
- documented in the <code>H5AC.c</code> file. The
- <code>H5AC_protect</code> insures that the B-tree node (which
- inherits from the H5AC package) whose OID is <code>addr</code>
- is locked into memory for the duration of this function (see the
- <code>H5AC_unprotect</code> on line 90). Most likely, if this
- node has been accessed in the not-to-distant past, it will still
- be in memory and the <code>H5AC_protect</code> is almost a
- no-op. If cache debugging is compiled in, then the protect also
- prevents other parts of the library from accessing the node
- while this function is protecting it, so this function can allow
- the node to be in an inconsistent state while calling other
- parts of the library.
-
- <p>The alternative is to call the slighlty cheaper
- <code>H5AC_find</code> and assume that the pointer it returns is
- valid only until some other library function is called, but
- since we're accessing the pointer throughout this function, I
- chose to use the simpler protect scheme. All protected objects
- <em>must be unprotected</em> before the file is closed, thus the
- use of <code>HGOTO_ERROR</code> instead of
- <code>HRETURN_ERROR</code>.
-
- <p><code><pre>
-53 rt = bt->nchildren;
-54
-55 while (lt&lt;rt && cmp) {
-56 idx = (lt + rt) / 2;
-57 if (H5B_decode_keys (f, bt, idx)&lt;0) {
-58 HGOTO_ERROR (H5E_BTREE, H5E_CANTDECODE, FAIL);
-59 }
-60
-61 /* compare */
-62 if ((cmp=(type-&gt;cmp3)(f, bt->key[idx].nkey, udata,
-63 bt->key[idx+1].nkey))&lt;0) {
-64 rt = idx;
-65 } else {
-66 lt = idx+1;
-67 }
-68 }
-69 if (cmp) {
-70 HGOTO_ERROR (H5E_BTREE, H5E_NOTFOUND, FAIL);
-71 }
- </pre></code>
-
- <p>Code is arranged in paragraphs with a comment starting each
- paragraph. The previous paragraph is a standard binary search
- algorithm. The <code>(type-&gt;cmp3)()</code> is an indirect
- function call into the subclass of the B-tree. All indirect
- function calls have the function part in parentheses to document
- that it's indirect (quite obvious here, but not so obvious when
- the function is a variable).
-
- <p>It's also my standard practice to have side effects in
- conditional expressions because I can write code faster and it's
- more apparent to me what the condition is testing. But if I
- have an assignment in a conditional expr, then I use an extra
- set of parens even if they're not required (usually they are, as
- in this case) so it's clear that I meant <code>=</code> instead
- of <code>==</code>.
-
- <p><code><pre>
-72
-73 /*
-74 * Follow the link to the subtree or to the data node.
-75 */
-76 assert (idx&gt;=0 && idx<bt->nchildren);
-77 if (bt->level > 0) {
-78 if ((ret_value = H5B_find (f, type, bt->child+idx, udata))&lt;0) {
-79 HGOTO_ERROR (H5E_BTREE, H5E_NOTFOUND, FAIL);
-80 }
-81 } else {
-82 ret_value = (type-&gt;found)(f, bt->child+idx, bt->key[idx].nkey,
-83 udata, bt->key[idx+1].nkey);
-84 if (ret_value&lt;0) {
-85 HGOTO_ERROR (H5E_BTREE, H5E_NOTFOUND, FAIL);
-86 }
-87 }
- </pre></code>
-
- <p>Here I broke the "side effect in conditional" rule, which I
- sometimes do if the expression is so long that the
- <code>&lt;0</code> gets lost at the end. Another thing to note is
- that success/failure is always determined by comparing with zero
- instead of <code>SUCCEED</code> or <code>FAIL</code>. I do this
- because occassionally one might want to return other meaningful
- values (always non-negative) or distinguish between various types of
- failure (always negative).
-
- <p><code><pre>
-88
-89 done:
-90 if (bt && H5AC_unprotect (f, H5AC_BT, addr, bt)&lt;0) {
-91 HRETURN_ERROR (H5E_BTREE, H5E_PROTECT, FAIL);
-92 }
-93 FUNC_LEAVE (ret_value);
-94 }
- </pre></code>
-
- <p>For lack of a better way to handle errors during error cleanup,
- I just call the <code>HRETURN_ERROR</code> macro even though it
- will make the error stack not quite right. I also use short
- circuiting boolean operators instead of nested <code>if</code>
- statements since that's standard C practice.
-
- <center><h1>Code Review 2</h1></center>
-
-
- <p>The following code is an API function from the H5F package...
-
- <p><code><pre>
- 1 /*--------------------------------------------------------------------------
- 2 NAME
- 3 H5Fflush
- 4
- 5 PURPOSE
- 6 Flush all cached data to disk and optionally invalidates all cached
- 7 data.
- 8
- 9 USAGE
-10 herr_t H5Fflush(fid, invalidate)
-11 hid_t fid; IN: File ID of file to close.
-12 hbool_t invalidate; IN: Invalidate all of the cache?
-13
-14 ERRORS
-15 ARGS BADTYPE Not a file atom.
-16 ATOM BADATOM Can't get file struct.
-17 CACHE CANTFLUSH Flush failed.
-18
-19 RETURNS
-20 SUCCEED/FAIL
-21
-22 DESCRIPTION
-23 This function flushes all cached data to disk and, if INVALIDATE
-24 is non-zero, removes cached objects from the cache so they must be
-25 re-read from the file on the next access to the object.
-26
-27 MODIFICATIONS:
-28 --------------------------------------------------------------------------*/
- </pre></code>
-
- <p>An API prologue is used for each API function instead of my
- normal function prologue. I use the prologue from Code Review 1
- for non-API functions because it's more suited to C programmers,
- it requires less work to keep it synchronized with the code, and
- I have better editing tools for it.
-
- <p><code><pre>
-29 herr_t
-30 H5Fflush (hid_t fid, hbool_t invalidate)
-31 {
-32 H5F_t *file = NULL;
-33
-34 FUNC_ENTER (H5Fflush, H5F_init_interface, FAIL);
-35 H5ECLEAR;
- </pre></code>
-
- <p>API functions are never called internally, therefore I always
- clear the error stack before doing anything.
-
- <p><code><pre>
-36
-37 /* check arguments */
-38 if (H5_FILE!=H5Aatom_group (fid)) {
-39 HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL); /*not a file atom*/
-40 }
-41 if (NULL==(file=H5Aatom_object (fid))) {
-42 HRETURN_ERROR (H5E_ATOM, H5E_BADATOM, FAIL); /*can't get file struct*/
-43 }
- </pre></code>
-
- <p>If something is wrong with the arguments then we raise an
- error. We never <code>assert</code> arguments at this level.
- We also convert atoms to pointers since atoms are really just a
- pointer-hiding mechanism. Functions that can be called
- internally always have pointer arguments instead of atoms
- because (1) then they don't have to always convert atoms to
- pointers, and (2) the various pointer data types provide more
- documentation and type checking than just an <code>hid_t</code>
- type.
-
- <p><code><pre>
-44
-45 /* do work */
-46 if (H5F_flush (file, invalidate)&lt;0) {
-47 HRETURN_ERROR (H5E_CACHE, H5E_CANTFLUSH, FAIL); /*flush failed*/
-48 }
- </pre></code>
-
- <p>An internal version of the function does the real work. That
- internal version calls <code>assert</code> to check/document
- it's arguments and can be called from other library functions.
-
- <p><code><pre>
-49
-50 FUNC_LEAVE (SUCCEED);
-51 }
- </pre></code>
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Sat Nov 8 17:09:33 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Mon Nov 10 15:33:33 EST 1997
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/Coding.html b/doc/html/Coding.html
deleted file mode 100644
index dbf55bf..0000000
--- a/doc/html/Coding.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<HTML>
-<HEAD><TITLE>
- HDF5 Naming Scheme
- </TITLE> </HEAD>
-
-<BODY bgcolor="#ffffff">
-
-
-<H1>
-<FONT color="#c80028"
- <I> <B> <CENTER> HDF5 Naming Scheme for </CENTER> </B> </I> </H1>
-</FONT>
-<P>
-<UL>
-
-<LI> <A HREF = "#01"><I> FILES </I> </A>
-<LI> <A HREF = "#02"><I> PACKAGES </I> </A>
-<LI> <A HREF = "#03"><I> PUBLIC vs PRIVATE </I> </A>
-<LI> <A HREF = "#04"><I> INTEGRAL TYPES </I> </A>
-<LI> <A HREF = "#05"><I> OTHER TYPES </I> </A>
-<LI> <A HREF = "#06"><I> GLOBAL VARIABLES </I> </A>
-<LI> <A HREF = "#07"><I> MACROS, PREPROCESSOR CONSTANTS, AND ENUM MEMEBERs </I> </A>
-
-</UL>
-<P>
-<center>
- Authors: <A HREF = "mailto:koziol@ncsa.uiuc.edu">
- <I>Quincey Koziol</I> </A> and
- <A HREF = "mailto:matzke@llnl.gov">
- <I> Robb Matzke </I> </A>
-
-</center>
-<UL>
-
-<FONT color="#c80028"
-<LI> <A NAME="01"> <B> <I> FILES </I> </B> </A>
-</FONT>
-
-<UL>
-
- <LI> Source files are named according to the package they contain (see
- below). All files will begin with `H5' so we can stuff our
- object files into someone else's library and not worry about file
- name conflicts.
- <P>For Example:
-<i><b>
-<dd> H5.c -- "Generic" library functions
- <br>
-<dd> H5B.c -- B-link tree functions
-</i></b>
- <p>
- <LI> If a package is in more than one file, then another name is tacked
- on. It's all lower case with no underscores or hyphens.
- <P>For Example:
-<i><b>
-<dd> H5F.c -- the file for this package
- <br>
-<dd> H5Fstdio.c -- stdio functions (just an example)
- <br>
-<dd> H5Ffcntl.c -- fcntl functions (just an example)
-</i></b>
- <p>
- <LI> Each package file has a header file of API stuff (unless there is
- no API component to the package)
- <P>For Example:
-<i><b>
-<dd> H5F.h -- things an application would see. </i> </b>
- <P>
- and a header file of private stuff
-<i><b>
- <p>
-<dd> H5Fprivate.h -- things an application wouldn't see. The
- private header includes the public header.
-</i></b>
- <p>
- and a header for private prototypes
-<i><b>
- <p>
-<dd> H5Fproto.h -- prototypes for internal functions.
-</i></b>
- <P>
- By splitting the prototypes into separate include files we don't
- have to recompile everything when just one function prototype
- changes.
-
- <LI> The main API header file is `hdf5.h' and it includes each of the
- public header files but none of the private header files. Or the
- application can include just the public header files it needs.
-
- <LI> There is no main private or prototype header file because it
- prevents make from being efficient. Instead, each source file
- includes only the private header and prototype files it needs
- (first all the private headers, then all the private prototypes).
-
- <LI> Header files should include everything they need and nothing more.
-
-</UL>
-<P>
-
-<FONT color="#c80028"
-<LI> <A NAME="02"> <B> <I> PACKAGES </I> </B> </A>
-</FONT>
-
-<P>
-Names exported beyond function scope begin with `H5' followed by zero,
-one, or two upper-case letters that describe the class of object.
-This prefix is the package name. The implementation of packages
-doesn't necessarily have to map 1:1 to the source files.
-<P>
-<i><b>
-<dd> H5 -- library functions
-<br>
-<dd> H5A -- atoms
-<br>
-<dd> H5AC -- cache
-<br>
-<dd> H5B -- B-link trees
-<br>
-<dd> H5D -- datasets
-<br>
-<dd> H5E -- error handling
-<br>
-<dd> H5F -- files
-<br>
-<dd> H5G -- groups
-<br>
-<dd> H5M -- meta data
-<br>
-<dd> H5MM -- core memory management
-<br>
-<dd> H5MF -- file memory management
-<br>
-<dd> H5O -- object headers
-<br>
-<dd> H5P -- Property Lists
-<br>
-<dd> H5S -- dataspaces
-<br>
-<dd> H5R -- relationships
-<br>
-<dd> H5T -- datatype
-</i></b>
-<p>
-Each package implements a single main class of object (e.g., the H5B
-package implements B-link trees). The main data type of a package is
-the package name followed by `_t'.
-<p>
-<i><b>
-<dd> H5F_t -- HDF5 file type
-<br>
-<dd> H5B_t -- B-link tree data type
-</i></b>
-<p>
-
-Not all packages implement a data type (H5, H5MF) and some
-packages provide access to a preexisting data type (H5MM, H5S).
-<p>
-
-
-<FONT color="#c80028"
-<LI> <A NAME="03"> <B> <I> PUBLIC vs PRIVATE </I> </B> </A>
-</FONT>
-<p>
-If the symbol is for internal use only, then the package name is
-followed by an underscore and the rest of the name. Otherwise, the
-symbol is part of the API and there is no underscore between the
-package name and the rest of the name.
-<p>
-<i><b>
-<dd> H5Fopen -- an API function.
-<br>
-<dd> H5B_find -- an internal function.
-</i></b>
-<p>
-For functions, this is important because the API functions never pass
-pointers around (they use atoms instead for hiding the implementation)
-and they perform stringent checks on their arguments. Internal
-unctions, on the other hand, check arguments with assert().
-<p>
-Data types like H5B_t carry no information about whether the type is
-public or private since it doesn't matter.
-
-<p>
-
-
-<FONT color="#c80028"
-<LI> <A NAME="04"> <B> <I> INTEGRAL TYPES </I> </B> </A>
-</FONT>
-<p>
-Integral fixed-point type names are an optional `u' followed by `int'
-followed by the size in bits (8, 16,
-32, or 64). There is no trailing `_t' because these are common
-enough and follow their own naming convention.
-<p>
-<pre><H4>
-<dd> hbool_t -- boolean values (BTRUE, BFALSE, BFAIL)
-<br>
-<dd> int8 -- signed 8-bit integers
-<br>
-<dd> uint8 -- unsigned 8-bit integers
-<br>
-<dd> int16 -- signed 16-bit integers
-<br>
-<dd> uint16 -- unsigned 16-bit integers
-<br>
-<dd> int32 -- signed 32-bit integers
-<br>
-<dd> uint32 -- unsigned 32-bit integers
-<br>
-<dd> int64 -- signed 64-bit integers
-<br>
-<dd> uint64 -- unsigned 64-bit integers
-<br>
-<dd> intn -- "native" integers
-<br>
-<dd> uintn -- "native" unsigned integers
-
-</pre></H4>
-<p>
-
-<FONT color="#c80028"
-<LI> <A NAME="05"> <B> <I> OTHER TYPES </I> </B> </A>
-</FONT>
-
-<p>
-
-Other data types are always followed by `_t'.
-<p>
-<pre><H4>
-<dd> H5B_key_t-- additional data type used by H5B package.
-</pre></H4>
-<p>
-
-However, if the name is so common that it's used almost everywhere,
-then we make an alias for it by removing the package name and leading
-underscore and replacing it with an `h' (the main datatype for a
-package already has a short enough name, so we don't have aliases for
-them).
-<P>
-<pre><H4>
-<dd> typedef H5E_err_t herr_t;
-</pre> </H4>
-<p>
-
-<FONT color="#c80028"
-<LI> <A NAME="06"> <B> <I> GLOBAL VARIABLES </I> </B> </A>
-</FONT>
-<p>
-Global variables include the package name and end with `_g'.
-<p>
-<pre><H4>
-<dd> H5AC_methods_g -- global variable in the H5AC package.
-</pre> </H4>
-<p>
-
-
-<FONT color="#c80028"
-<LI> <A NAME="07">
-<I> <B>
-MACROS, PREPROCESSOR CONSTANTS, AND ENUM MEMBERS
- </I> </B> </A>
-</FONT>
-<p>
-Same rules as other symbols except the name is all upper case. There
-are a few exceptions: <br>
-<ul>
-<li> Constants and macros defined on a system that is deficient:
- <p><pre><H4>
-<dd> MIN(x,y), MAX(x,y) and their relatives
- </pre></H4>
-
-<li> Platform constants :
- <P>
- No naming scheme; determined by OS and compiler.<br>
- These appear only in one header file anyway.
- <p>
-<li> Feature test constants (?)<br>
- Always start with `HDF5_HAVE_' like HDF5_HAVE_STDARG_H for a
- header file, or HDF5_HAVE_DEV_T for a data type, or
- HDF5_HAVE_DIV for a function.
-</UL>
-<p>
-
-</UL>
-<p>
-<H6>
-<center>
- This file /hdf3/web/hdf/internal/HDF_standard/HDF5.coding_standard.html is
- maintained by Elena Pourmal <A HREF = "mailto:epourmal@ncsa.uiuc.edu">
- <I>epourmal@ncsa.uiuc.edu</I> </A>.
-</center>
-<p>
-<center>
- Last modified August 5, 1997
-</center>
-
-</H6>
-</BODY>
-<HTML>
-
diff --git a/doc/html/Copyright.html b/doc/html/Copyright.html
deleted file mode 100644
index fdc8368..0000000
--- a/doc/html/Copyright.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<html>
-<html>
- <head>
- <title>
- HDF5 Copyright Notice
- </title>
- </head>
-
- <body bgcolor="#FFFFFF">
-
-
-
-<hr>
-
-<h3>Copyright Notice and Statement for
-<br>
-NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities</h3>
-<hr>
-<p>
-
-
-NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities
-<br>
-Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 by
-the Board of Trustees of the University of Illinois
-<br>
-<strong>All rights reserved.</strong>
-<p>
-
-Contributors: National Center for Supercomputing Applications (NCSA) at
-the University of Illinois at Urbana-Champaign (UIUC), Lawrence Livermore
-National Laboratory (LLNL), Sandia National Laboratories (SNL), Los Alamos
-National Laboratory (LANL), Jean-loup Gailly and Mark Adler (gzip library).
-<p>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted for any purpose (including commercial purposes)
-provided that the following conditions are met:
-<p>
-
-<ol>
-<li>Redistributions of source code must retain the above copyright notice,
-this list of conditions, and the following disclaimer.
-
-<li>Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions, and the following disclaimer in the
-documentation and/or materials provided with the distribution.
-
-<li>In addition, redistributions of modified forms of the source or binary
-code must carry prominent notices stating that the original code was
-changed and the date of the change.
-
-<li>All publications or advertising materials mentioning features or use of
-this software are asked, but not required, to acknowledge that it was
-developed by the National Center for Supercomputing Applications at the
-University of Illinois at Urbana-Champaign and to credit the contributors.
-
-<li>Neither the name of the University nor the names of the Contributors may
-be used to endorse or promote products derived from this software without
-specific prior written permission from the University or the Contributors,
-as appropriate for the name(s) to be used.
-
-<li>THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND THE CONTRIBUTORS "AS IS"
-WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no event
-shall the University or the Contributors be liable for any damages suffered
-by the users arising out of the use of this software, even if advised of
-the possibility of such damage.
-
-</ol>
-
-
-
-
-<hr>
-Portions of HDF5 were developed with support from the University of
-California, Lawrence Livermore National Laboratory (UC LLNL).
-The following statement applies to those portions of the product
-and must be retained in any redistribution of source code, binaries,
-documentation, and/or accompanying materials:
-
-<dir>
- This work was partially produced at the University of California,
- Lawrence Livermore National Laboratory (UC LLNL) under contract no.
- W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy
- (DOE) and The Regents of the University of California (University)
- for the operation of UC LLNL.
- <p>
- <b>DISCLAIMER:</b>
- This work was prepared as an account of work sponsored by an agency
- of the United States Government. Neither the United States
- Government nor the University of California nor any of their
- employees, makes any warranty, express or implied, or assumes any
- liability or responsibility for the accuracy, completeness, or
- usefulness of any information, apparatus, product, or process
- disclosed, or represents that its use would not infringe privately-
- owned rights. Reference herein to any specific commercial products,
- process, or service by trade name, trademark, manufacturer, or
- otherwise, does not necessarily constitute or imply its endorsement,
- recommendation, or favoring by the United States Government or the
- University of California. The views and opinions of authors
- expressed herein do not necessarily state or reflect those of the
- United States Government or the University of California, and shall
- not be used for advertising or product endorsement purposes.
-</dir>
-
-<hr>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 February 2004")
--->
-</SCRIPT>
-
-
-</body>
-</html>
-
diff --git a/doc/html/Datasets.html b/doc/html/Datasets.html
deleted file mode 100644
index eca195d..0000000
--- a/doc/html/Datasets.html
+++ /dev/null
@@ -1,954 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Dataset Interface (H5D)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Dataset Interface (H5D)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The purpose of the dataset interface is to provide a mechanism
- to describe properties of datasets and to transfer data between
- memory and disk. A dataset is composed of a collection of raw
- data points and four classes of meta data to describe the data
- points. The interface is hopefully designed in such a way as to
- allow new features to be added without disrupting current
- applications that use the dataset interface.
-
- <p>The four classes of meta data are:
-
- <dl>
- <dt>Constant Meta Data
- <dd>Meta data that is created when the dataset is created and
- exists unchanged for the life of the dataset. For instance,
- the datatype of stored array elements is defined when the
- dataset is created and cannot be subsequently changed.
-
- <dt>Persistent Meta Data
- <dd>Meta data that is an integral and permanent part of a
- dataset but can change over time. For instance, the size in
- any dimension can increase over time if such an increase is
- allowed when the dataset was created.
-
- <dt>Memory Meta Data
- <dd>Meta data that exists to describe how raw data is organized
- in the application's memory space. For instance, the data
- type of elements in an application array might not be the same
- as the datatype of those elements as stored in the HDF5 file.
-
- <dt>Transport Meta Data
- <dd>Meta data that is used only during the transfer of raw data
- from one location to another. For instance, the number of
- processes participating in a collective I/O request or hints
- to the library to control caching of raw data.
- </dl>
-
- <p>Each of these classes of meta data is handled differently by
- the library although the same API might be used to create them.
- For instance, the datatype exists as constant meta data and as
- memory meta data; the same API (the <code>H5T</code> API) is
- used to manipulate both pieces of meta data but they're handled
- by the dataset API (the <code>H5D</code> API) in different
- manners.
-
-
-
- <h2>2. Storage Layout Properties</h2>
-
- <p>The dataset API partitions these terms on three orthogonal axes
- (layout, compression, and external storage) and uses a
- <em>dataset creation property list</em> to hold the various
- settings and pass them through the dataset interface. This is
- similar to the way HDF5 files are created with a file creation
- property list. A dataset creation property list is always
- derived from the default dataset creation property list (use
- <code>H5Pcreate()</code> to get a copy of the default property
- list) by modifying properties with various
- <code>H5Pset_<em>property</em>()</code> functions.
-
- <dl>
- <dt><code>herr_t H5Pset_layout (hid_t <em>plist_id</em>,
- H5D_layout_t <em>layout</em>)</code>
- <dd>The storage layout is a piece of constant meta data that
- describes what method the library uses to organize the raw
- data on disk. The default layout is contiguous storage.
-
- <br><br>
- <dl>
- <dt><code>H5D_COMPACT</code> &nbsp;&nbsp; <i><b>(Not yet implemented.)</b></i>
- <dd>The raw data is presumably small and can be stored
- directly in the object header. Such data is
- non-extendible, non-compressible, non-sparse, and cannot
- be stored externally. Most of these restrictions are
- arbitrary but are enforced because of the small size of
- the raw data. Storing data in this format eliminates the
- disk seek/read request normally necessary to read raw
- data.
-
- <br><br>
- <dt><code>H5D_CONTIGUOUS</code>
- <dd>The raw data is large, non-extendible, non-compressible,
- non-sparse, and can be stored externally. This is the
- default value for the layout property. The term
- <em>large</em> means that it may not be possible to hold
- the entire dataset in memory. The non-compressibility is
- a side effect of the data being large, contiguous, and
- fixed-size at the physical level, which could cause
- partial I/O requests to be extremely expensive if
- compression were allowed.
-
- <br><br>
- <dt><code>H5D_CHUNKED</code>
- <dd>The raw data is large and can be extended in any
- dimension at any time (provided the data space also allows
- the extension). It may be sparse at the chunk level (each
- chunk is non-sparse, but there might only be a few chunks)
- and each chunk can be compressed and/or stored externally.
- A dataset is partitioned into chunks so each chunk is the
- same logical size. The chunks are indexed by a B-tree and
- are allocated on demand (although it might be useful to be
- able to preallocate storage for parts of a chunked array
- to reduce contention for the B-tree in a parallel
- environment). The chunk size must be defined with
- <code>H5Pset_chunk()</code>.
-
- <br><br>
- <dt><em>others...</em>
- <dd>Other layout types may be defined later without breaking
- existing code. However, to be able to correctly read or
- modify data stored with one of these new layouts, the
- application will need to be linked with a new version of
- the library. This happens automatically on systems with
- dynamic linking.
- </dl>
- </dl>
-
- <a name="Dataset_PSetChunk">
- <p>Once the general layout is defined, the user can define
- </a>
- properties of that layout. Currently, the only layout that has
- user-settable properties is the <code>H5D_CHUNKED</code> layout,
- which needs to know the dimensionality and chunk size.
- <dl>
- <dt><code>herr_t H5Pset_chunk (hid_t <em>plist_id</em>, int
- <em>ndims</em>, hsize_t <em>dim</em>[])</code>
- <dd>This function defines the logical size of a chunk for
- chunked layout. If the layout property is set to
- <code>H5D_CHUNKED</code> and the chunk size is set to
- <em>dim</em>. The number of elements in the <em>dim</em> array
- is the dimensionality, <em>ndims</em>. One need not call
- <code>H5Dset_layout()</code> when using this function since
- the chunked layout is implied.
- </dl>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: Chunked Storage</h4></caption>
- <tr>
- <td>
- <p>This example shows how a two-dimensional dataset
- is partitioned into chunks. The library can manage file
- memory by moving the chunks around, and each chunk could be
- compressed. The chunks are allocated in the file on demand
- when data is written to the chunk.
- <center>
- <img alt="Chunked Storage" src="chunk1.gif">
- </center>
-
- <p><code><pre>
-size_t hsize[2] = {1000, 1000};
-plist = H5Pcreate (H5P_DATASET_CREATE);
-H5Pset_chunk (plist, 2, size);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
-
- <p>Although it is most efficient if I/O requests are aligned on chunk
- boundaries, this is not a constraint. The application can perform I/O
- on any set of data points as long as the set can be described by the
- data space. The set on which I/O is performed is called the
- <em>selection</em>.
-
- <h2>3. Compression Properties</h2>
-
- <p>Chunked data storage
- (see <a href="#Dataset_PSetChunk"><code>H5Pset_chunk</code></a>)
- allows data compression as defined by the function
- <code>H5Pset_deflate</code>.
-
-<!--
- <dl>
- <dt><code>herr_t H5Pset_compression (hid_t <em>plist_id</em>,
- H5Z_method_t <em>method</em>)</code>
- <dt><code>H5Z_method_t H5Pget_compression (hid_t
- <em>plist_id</em>)</code>
- <dd>These functions set and query the compression method that
- is used to compress the raw data of a dataset. The
- <em>plist_id</em> is a dataset creation property list. The
- possible values for the compression method are:
-
- <br><br>
- <dl>
- <dt><code>H5Z_NONE</code>
- <dd>This is the default and specifies that no compression is
- to be performed.
-
- <br><br>
- <dt><code>H5Z_DEFLATE</code>
- <dd>This specifies that a variation of the Lempel-Ziv 1977
- (LZ77) encoding is used, the same encoding used by the
- free GNU <code>gzip</code> program.
- </dl>
--->
-
- <br><br>
- <dt><code>herr_t H5Pset_deflate (hid_t <em>plist_id</em>,
- int <em>level</em>)</code>
- <dt><code>int H5Pget_deflate (hid_t <em>plist_id</em>)</code>
- <dd>These functions set or query the deflate level of
- dataset creation property list <em>plist_id</em>. The
- <code>H5Pset_deflate()</code> sets the compression method to
- <code>H5Z_DEFLATE</code> and sets the compression level to
- some integer between one and nine (inclusive). One results in
- the fastest compression while nine results in the best
- compression ratio. The default value is six if
- <code>H5Pset_deflate()</code> isn't called. The
- <code>H5Pget_deflate()</code> returns the compression level
- for the deflate method, or negative if the method is not the
- deflate method.
- </dl>
-
- <h2>4. External Storage Properties</h2>
-
- <p>Some storage formats may allow storage of data across a set of
- non-HDF5 files. Currently, only the <code>H5D_CONTIGUOUS</code> storage
- format allows external storage. A set segments (offsets and sizes) in
- one or more files is defined as an external file list, or <em>EFL</em>,
- and the contiguous logical addresses of the data storage are mapped onto
- these segments.
-
- <dl>
- <dt><code>herr_t H5Pset_external (hid_t <em>plist</em>, const
- char *<em>name</em>, off_t <em>offset</em>, hsize_t
- <em>size</em>)</code>
- <dd>This function adds a new segment to the end of the external
- file list of the specified dataset creation property list. The
- segment begins a byte <em>offset</em> of file <em>name</em> and
- continues for <em>size</em> bytes. The space represented by this
- segment is adjacent to the space already represented by the external
- file list. The last segment in a file list may have the size
- <code>H5F_UNLIMITED</code>, in which case the external file may be
- of unlimited size and no more files can be added to the external files list.
-
- <br><br>
- <dt><code>int H5Pget_external_count (hid_t <em>plist</em>)</code>
- <dd>Calling this function returns the number of segments in an
- external file list. If the dataset creation property list has no
- external data then zero is returned.
-
- <br><br>
- <dt><code>herr_t H5Pget_external (hid_t <em>plist</em>, unsigned
- <em>idx</em>, size_t <em>name_size</em>, char *<em>name</em>, off_t
- *<em>offset</em>, hsize_t *<em>size</em>)</code>
- <dd>This is the counterpart for the <code>H5Pset_external()</code>
- function. Given a dataset creation property list and a zero-based
- index into that list, the file name, byte offset, and segment size are
- returned through non-null arguments. At most <em>name_size</em>
- characters are copied into the <em>name</em> argument which is not
- null terminated if the file name is longer than the supplied name
- buffer (this is similar to <code>strncpy()</code>).
- </dl>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: Multiple Segments</h4></caption>
- <tr>
- <td>
- <p>This example shows how a contiguous, one-dimensional dataset
- is partitioned into three parts and each of those parts is
- stored in a segment of an external file. The top rectangle
- represents the logical address space of the dataset
- while the bottom rectangle represents an external file.
- <center>
- <img alt="Multiple Segments" src="extern1.gif">
- </center>
-
- <p><code><pre>
-plist = H5Pcreate (H5P_DATASET_CREATE);
-H5Pset_external (plist, "velocity.data", 3000, 1000);
-H5Pset_external (plist, "velocity.data", 0, 2500);
-H5Pset_external (plist, "velocity.data", 4500, 1500);
- </pre></code>
-
- <p>One should note that the segments are defined in order of the
- logical addresses they represent, not their order within the
- external file. It would also have been possible to put the
- segments in separate files. Care should be taken when setting
- up segments in a single file since the library doesn't
- automatically check for segments that overlap.
- </td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: Multi-Dimensional</h4></caption>
- <tr>
- <td>
- <p>This example shows how a contiguous, two-dimensional dataset
- is partitioned into three parts and each of those parts is
- stored in a separate external file. The top rectangle
- represents the logical address space of the dataset
- while the bottom rectangles represent external files.
- <center>
- <img alt="Multiple Dimensions" src="extern2.gif">
- </center>
-
- <p><code><pre>
-plist = H5Pcreate (H5P_DATASET_CREATE);
-H5Pset_external (plist, "scan1.data", 0, 24);
-H5Pset_external (plist, "scan2.data", 0, 24);
-H5Pset_external (plist, "scan3.data", 0, 16);
- </pre></code>
-
- <p>The library maps the multi-dimensional array onto a linear
- address space like normal, and then maps that address space
- into the segments defined in the external file list.
- </td>
- </tr>
- </table>
- </center>
-
- <p>The segments of an external file can exist beyond the end of the
- file. The library reads that part of a segment as zeros. When writing
- to a segment that exists beyond the end of a file, the file is
- automatically extended. Using this feature, one can create a segment
- (or set of segments) which is larger than the current size of the
- dataset, which allows to dataset to be extended at a future time
- (provided the data space also allows the extension).
-
- <p>All referenced external data files must exist before performing raw
- data I/O on the dataset. This is normally not a problem since those
- files are being managed directly by the application, or indirectly
- through some other library.
-
-
- <h2>5. Datatype</h2>
-
- <p>Raw data has a constant datatype which describes the datatype
- of the raw data stored in the file, and a memory datatype that
- describes the datatype stored in application memory. Both data
- types are manipulated with the <a
- href="Datatypes.html"><code>H5T</code></a> API.
-
- <p>The constant file datatype is associated with the dataset when
- the dataset is created in a manner described below. Once
- assigned, the constant datatype can never be changed.
-
- <p>The memory datatype is specified when data is transferred
- to/from application memory. In the name of data sharability,
- the memory datatype must be specified, but can be the same
- type identifier as the constant datatype.
-
- <p>During dataset I/O operations, the library translates the raw
- data from the constant datatype to the memory datatype or vice
- versa. Structured datatypes include member offsets to allow
- reordering of struct members and/or selection of a subset of
- members and array datatypes include index permutation
- information to allow things like transpose operations (<b>the
- prototype does not support array reordering</b>) Permutations
- are relative to some extrinsic descritpion of the dataset.
-
-
-
- <h2>6. Data Space</h2>
-
- <p>The dataspace of a dataset defines the number of dimensions
- and the size of each dimension and is manipulated with the
- <code>H5S</code> API. The <em>simple</em> dataspace consists of
- maximum dimension sizes and actual dimension sizes, which are
- usually the same. However, maximum dimension sizes can be the
- constant <code>H5D_UNLIMITED</code> in which case the actual
- dimension size can be incremented with calls to
- <code>H5Dextend()</code>. The maximium dimension sizes are
- constant meta data while the actual dimension sizes are
- persistent meta data. Initial actual dimension sizes are
- supplied at the same time as the maximum dimension sizes when
- the dataset is created.
-
- <p>The dataspace can also be used to define partial I/O
- operations. Since I/O operations have two end-points, the raw
- data transfer functions take two data space arguments: one which
- describes the application memory data space or subset thereof
- and another which describes the file data space or subset
- thereof.
-
-
- <h2>7. Setting Constant or Persistent Properties</h2>
-
- <p>Each dataset has a set of constant and persistent properties
- which describe the layout method, pre-compression
- transformation, compression method, datatype, external storage,
- and data space. The constant properties are set as described
- above in a dataset creation property list whose identifier is
- passed to <code>H5Dcreate()</code>.
-
- <dl>
- <dt><code>hid_t H5Dcreate (hid_t <em>file_id</em>, const char
- *<em>name</em>, hid_t <em>type_id</em>, hid_t
- <em>space_id</em>, hid_t <em>create_plist_id</em>)</code>
- <dd>A dataset is created by calling <code>H5Dcreate</code> with
- a file identifier, a dataset name, a datatype, a dataspace,
- and constant properties. The datatype and dataspace are the
- type and space of the dataset as it will exist in the file,
- which may be different than in application memory.
- Dataset names within a group must be unique:
- <code>H5Dcreate</code> returns an error if a dataset with the
- name specified in <code><em>name</em></code> already exists
- at the location specified in <code><em>file_id</em></code>.
- The <em>create_plist_id</em> is a <code>H5P_DATASET_CREATE</code>
- property list created with <code>H5Pcreate()</code> and
- initialized with the various functions described above.
- <code>H5Dcreate()</code> returns a dataset handle for success
- or negative for failure. The handle should eventually be
- closed by calling <code>H5Dclose()</code> to release resources
- it uses.
-
- <br><br>
- <dt><code>hid_t H5Dopen (hid_t <em>file_id</em>, const char
- *<em>name</em>)</code>
- <dd>An existing dataset can be opened for access by calling this
- function. A dataset handle is returned for success or a
- negative value is returned for failure. The handle should
- eventually be closed by calling <code>H5Dclose()</code> to
- release resources it uses.
-
- <br><br>
- <dt><code>herr_t H5Dclose (hid_t <em>dataset_id</em>)</code>
- <dd>This function closes a dataset handle and releases all
- resources it might have been using. The handle should not be
- used in subsequent calls to the library.
-
- <br><br>
- <dt><code>herr_t H5Dextend (hid_t <em>dataset_id</em>,
- hsize_t <em>dim</em>[])</code>
- <dd>This function extends a dataset by increasing the size in
- one or more dimensions. Not all datasets can be extended.
- </dl>
-
-
-
- <h2>8. Querying Constant or Persistent Properties</h2>
-
- <p>Constant or persistent properties can be queried with a set of
- three functions. Each function returns an identifier for a copy
- of the requested properties. The identifier can be passed to
- various functions which modify the underlying object to derive a
- new object; the original dataset is completely unchanged. The
- return values from these functions should be properly destroyed
- when no longer needed.
-
- <dl>
- <dt><code>hid_t H5Dget_type (hid_t <em>dataset_id</em>)</code>
- <dd>Returns an identifier for a copy of the dataset permanent
- datatype or negative for failure.
-
- <dt><code>hid_t H5Dget_space (hid_t <em>dataset_id</em>)</code>
- <dd>Returns an identifier for a copy of the dataset permanent
- data space, which also contains information about the current
- size of the dataset if the data set is extendable with
- <code>H5Dextend()</code>.
-
- <dt><code>hid_t H5Dget_create_plist (hid_t
- <em>dataset_id</em>)</code>
- <dd>Returns an identifier for a copy of the dataset creation
- property list. The new property list is created by examining
- various permanent properties of the dataset. This is mostly a
- catch-all for everything but type and space.
- </dl>
-
-
-
- <h2>9. Setting Memory and Transfer Properties</h2>
-
- <p>A dataset also has memory properties which describe memory
- within the application, and transfer properties that control
- various aspects of the I/O operations. The memory can have a
- datatype different than the permanent file datatype (different
- number types, different struct member offsets, different array
- element orderings) and can also be a different size (memory is a
- subset of the permanent dataset elements, or vice versa). The
- transfer properties might provide caching hints or collective
- I/O information. Therefore, each I/O operation must specify
- memory and transfer properties.
-
- <p>The memory properties are specified with <em>type_id</em> and
- <em>space_id</em> arguments while the transfer properties are
- specified with the <em>transfer_id</em> property list for the
- <code>H5Dread()</code> and <code>H5Dwrite()</code> functions
- (these functions are described below).
-
- <dl>
- <dt><code>herr_t H5Pset_buffer (hid_t <em>xfer_plist</em>,
- hsize_t <em>max_buf_size</em>, void *<em>tconv_buf</em>, void
- *<em>bkg_buf</em>)</code>
- <dt><code>hsize_t H5Pget_buffer (hid_t <em>xfer_plist</em>, void
- **<em>tconv_buf</em>, void **<em>bkg_buf</em>)</code>
- <dd>Sets or retrieves the maximum size in bytes of the temporary
- buffer used for datatype conversion in the I/O pipeline. An
- application-defined buffer can also be supplied as the
- <em>tconv_buf</em> argument, otherwise a buffer will be
- allocated and freed on demand by the library. A second
- temporary buffer <em>bkg_buf</em> can also be supplied and
- should be the same size as the <em>tconv_buf</em>. The
- default values are 1MB for the maximum buffer size, and null
- pointers for each buffer indicating that they should be
- allocated on demand and freed when no longer needed. The
- <code>H5Pget_buffer()</code> function returns the maximum
- buffer size or zero on error.
- </dl>
-
- <p>If the maximum size of the temporary I/O pipeline buffers is
- too small to hold the entire I/O request, then the I/O request
- will be fragmented and the transfer operation will be strip
- mined. However, certain restrictions apply to the strip
- mining. For instance, when performing I/O on a hyperslab of a
- simple data space the strip mining is in terms of the slowest
- varying dimension. So if a 100x200x300 hyperslab is requested,
- the temporary buffer must be large enough to hold a 1x200x300
- sub-hyperslab.
-
- <p>To prevent strip mining from happening, the application should
- use <code>H5Pset_buffer()</code> to set the size of the
- temporary buffer so it's large enough to hold the entire
- request.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example</h4></caption>
- <tr>
- <td>
- <p>This example shows how to define a function that sets
- a dataset transfer property list so that strip mining
- does not occur. It takes an (optional) dataset transfer
- property list, a dataset, a data space that describes
- what data points are being transfered, and a datatype
- for the data points in memory. It returns a (new)
- dataset transfer property list with the temporary
- buffer size set to an appropriate value. The return
- value should be passed as the fifth argument to
- <code>H5Dread()</code> or <code>H5Dwrite()</code>.
- <p><code><pre>
- 1 hid_t
- 2 disable_strip_mining (hid_t xfer_plist, hid_t dataset,
- 3 hid_t space, hid_t mem_type)
- 4 {
- 5 hid_t file_type; /* File datatype */
- 6 size_t type_size; /* Sizeof larger type */
- 7 size_t size; /* Temp buffer size */
- 8 hid_t xfer_plist; /* Return value */
- 9
-10 file_type = H5Dget_type (dataset);
-11 type_size = MAX(H5Tget_size(file_type), H5Tget_size(mem_type));
-12 H5Tclose (file_type);
-13 size = H5Sget_npoints(space) * type_size;
-14 if (xfer_plist&lt;0) xfer_plist = H5Pcreate (H5P_DATASET_XFER);
-15 H5Pset_buffer(xfer_plist, size, NULL, NULL);
-16 return xfer_plist;
-17 }
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
-
-
- <h2>10. Querying Memory or Transfer Properties</h2>
-
- <p>Unlike constant and persistent properties, a dataset cannot be
- queried for it's memory or transfer properties. Memory
- properties cannot be queried because the application already
- stores those properties separate from the buffer that holds the
- raw data, and the buffer may hold multiple segments from various
- datasets and thus have more than one set of memory properties.
- The transfer properties cannot be queried from the dataset
- because they're associated with the transfer itself and not with
- the dataset (but one can call
- <code>H5Pget_<em>property</em>()</code> to query transfer
- properties from a tempalate).
-
-
- <h2>11. Raw Data I/O</h2>
-
- <p>All raw data I/O is accomplished through these functions which
- take a dataset handle, a memory datatype, a memory data space,
- a file data space, transfer properties, and an application
- memory buffer. They translate data between the memory datatype
- and space and the file datatype and space. The data spaces can
- be used to describe partial I/O operations.
-
- <dl>
- <dt><code>herr_t H5Dread (hid_t <em>dataset_id</em>, hid_t
- <em>mem_type_id</em>, hid_t <em>mem_space_id</em>, hid_t
- <em>file_space_id</em>, hid_t <em>xfer_plist_id</em>,
- void *<em>buf</em>/*out*/)</code>
- <dd>Reads raw data from the specified dataset into <em>buf</em>
- converting from file datatype and space to memory datatype
- and space.
-
- <br><br>
- <dt><code>herr_t H5Dwrite (hid_t <em>dataset_id</em>, hid_t
- <em>mem_type_id</em>, hid_t <em>mem_space_id</em>, hid_t
- <em>file_space_id</em>, hid_t <em>xfer_plist_id</em>,
- const void *<em>buf</em>)</code>
- <dd>Writes raw data from an application buffer <em>buf</em> to
- the specified dataset converting from memory datatype and
- space to file datatype and space.
- </dl>
-
-
- <p>In the name of sharability, the memory datatype must be
- supplied. However, it can be the same identifier as was used to
- create the dataset or as was returned by
- <code>H5Dget_type()</code>; the library will not implicitly
- derive memory datatypes from constant datatypes.
-
- <p>For complete reads of the dataset one may supply
- <code>H5S_ALL</code> as the argument for the file data space.
- If <code>H5S_ALL</code> is also supplied as the memory data
- space then no data space conversion is performed. This is a
- somewhat dangerous situation since the file data space might be
- different than what the application expects.
-
-
-
- <h2>12. Examples</h2>
-
- <p>The examples in this section illustrate some common dataset
- practices.
-
-
- <p>This example shows how to create a dataset which is stored in
- memory as a two-dimensional array of native <code>double</code>
- values but is stored in the file in Cray <code>float</code>
- format using LZ77 compression. The dataset is written to the
- HDF5 file and then read back as a two-dimensional array of
- <code>float</code> values.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example 1</h4></caption>
- <tr>
- <td>
- <p><code><pre>
- 1 hid_t file, data_space, dataset, properties;
- 2 double dd[500][600];
- 3 float ff[500][600];
- 4 hsize_t dims[2], chunk_size[2];
- 5
- 6 /* Describe the size of the array */
- 7 dims[0] = 500;
- 8 dims[1] = 600;
- 9 data_space = H5Screate_simple (2, dims);
-10
-11
-12 /*
-13 * Create a new file using with read/write access,
-14 * default file creation properties, and default file
-15 * access properties.
-16 */
-17 file = H5Fcreate ("test.h5", H5F_ACC_RDWR, H5P_DEFAULT,
-18 H5P_DEFAULT);
-19
-20 /*
-21 * Set the dataset creation plist to specify that
-22 * the raw data is to be partitioned into 100x100 element
-23 * chunks and that each chunk is to be compressed with
-24 * LZ77.
-25 */
-26 chunk_size[0] = chunk_size[1] = 100;
-27 properties = H5Pcreate (H5P_DATASET_CREATE);
-28 H5Pset_chunk (properties, 2, chunk_size);
-29 H5Pset_deflate (properties, 9);
-30
-31 /*
-32 * Create a new dataset within the file. The datatype
-33 * and data space describe the data on disk, which may
-34 * be different than the format used in the application's
-35 * memory.
-36 */
-37 dataset = H5Dcreate (file, "dataset", H5T_CRAY_FLOAT,
-38 data_space, properties);
-39
-40 /*
-41 * Write the array to the file. The datatype and data
-42 * space describe the format of the data in the `dd'
-43 * buffer. The raw data is translated to the format
-44 * required on disk defined above. We use default raw
-45 * data transfer properties.
-46 */
-47 H5Dwrite (dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL,
-48 H5P_DEFAULT, dd);
-49
-50 /*
-51 * Read the array as floats. This is similar to writing
-52 * data except the data flows in the opposite direction.
-53 */
-54 H5Dread (dataset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL,
-55 H5P_DEFAULT, ff);
-56
-64 H5Dclose (dataset);
-65 H5Sclose (data_space);
-66 H5Pclose (properties);
-67 H5Fclose (file);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>This example uses the file created in Example 1 and reads a
- hyperslab of the 500x600 file dataset. The hyperslab size is
- 100x200 and it is located beginning at element
- &lt;200,200&gt;. We read the hyperslab into an 200x400 array in
- memory beginning at element &lt;0,0&gt; in memory. Visually,
- the transfer looks something like this:
-
- <center>
- <img alt="Raw Data Transfer" src="dataset_p1.gif">
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example 2</h4></caption>
- <tr>
- <td>
- <p><code><pre>
- 1 hid_t file, mem_space, file_space, dataset;
- 2 double dd[200][400];
- 3 hsize_t offset[2];
- 4 hsize size[2];
- 5
- 6 /*
- 7 * Open an existing file and its dataset.
- 8 */
- 9 file = H5Fopen ("test.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
-10 dataset = H5Dopen (file, "dataset");
-11
-12 /*
-13 * Describe the file data space.
-14 */
-15 offset[0] = 200; /*offset of hyperslab in file*/
-16 offset[1] = 200;
-17 size[0] = 100; /*size of hyperslab*/
-18 size[1] = 200;
-19 file_space = H5Dget_space (dataset);
-20 H5Sselect_hyperslab (file_space, H5S_SELECT_SET, offset, NULL, size, NULL);
-21
-22 /*
-23 * Describe the memory data space.
-24 */
-25 size[0] = 200; /*size of memory array*/
-26 size[1] = 400;
-27 mem_space = H5Screate_simple (2, size);
-28
-29 offset[0] = 0; /*offset of hyperslab in memory*/
-30 offset[1] = 0;
-31 size[0] = 100; /*size of hyperslab*/
-32 size[1] = 200;
-33 H5Sselect_hyperslab (mem_space, H5S_SELECT_SET, offset, NULL, size, NULL);
-34
-35 /*
-36 * Read the dataset.
-37 */
-38 H5Dread (dataset, H5T_NATIVE_DOUBLE, mem_space,
-39 file_space, H5P_DEFAULT, dd);
-40
-41 /*
-42 * Close/release resources.
-43 */
-44 H5Dclose (dataset);
-45 H5Sclose (mem_space);
-46 H5Sclose (file_space);
-47 H5Fclose (file);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>If the file contains a compound data structure one of whose
- members is a floating point value (call it "delta") but the
- application is interested in reading an array of floating point
- values which are just the "delta" values, then the application
- should cast the floating point array as a struct with a single
- "delta" member.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example 3</h4></caption>
- <tr>
- <td>
- <p><code><pre>
- 1 hid_t file, dataset, type;
- 2 double delta[200];
- 3
- 4 /*
- 5 * Open an existing file and its dataset.
- 6 */
- 7 file = H5Fopen ("test.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
- 8 dataset = H5Dopen (file, "dataset");
- 9
-10 /*
-11 * Describe the memory datatype, a struct with a single
-12 * "delta" member.
-13 */
-14 type = H5Tcreate (H5T_COMPOUND, sizeof(double));
-15 H5Tinsert (type, "delta", 0, H5T_NATIVE_DOUBLE);
-16
-17 /*
-18 * Read the dataset.
-19 */
-20 H5Dread (dataset, type, H5S_ALL, H5S_ALL,
-21 H5P_DEFAULT, dd);
-22
-23 /*
-24 * Close/release resources.
-25 */
-26 H5Dclose (dataset);
-27 H5Tclose (type);
-28 H5Fclose (file);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
-
- <!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Tue Dec 2 09:17:09 EST 1997 -->
- <!-- hhmts start -->
- Last modified: 2 March 2001
- <!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/Dataspaces.html b/doc/html/Dataspaces.html
deleted file mode 100644
index c83d285..0000000
--- a/doc/html/Dataspaces.html
+++ /dev/null
@@ -1,742 +0,0 @@
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <TITLE>Dataspace Interface (H5S)</TITLE>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></HEAD>
-<body bgcolor="#FFFFFF">
-<!-- Note to Developers: -->
-<!-- The following H5S functions were originally documented in this -->
-<!-- file and are in the HDF5 design. However, they have not been -->
-<!-- implemented and are not on the current development schedule. -->
-<!-- So as to cease confusing the user, the relevant sections have -->
-<!-- been commented out of this file. -->
-<!-- H5Sopen H5Sselect_op H5Ssubspace -->
-<!-- H5Scommit H5Sselect_order H5Ssubspace_name -->
-<!-- H5Sis_subspace H5Ssubspace_location -->
-<!-- H5Slock -->
-<!-- The corresponding list of these same functions in the -->
-<!-- Ref Manual, pointing to this document for a description, has -->
-<!-- similarly been commented out. -->
-<!-- - - - F Baker, 7 May 2002 -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><H1>
-The Dataspace Interface (H5S)</H1>
-
-<H2>
-1. Introduction</H2>
-The dataspace interface (H5S) provides a mechanism to describe the positions
-of the elements of a dataset and is designed in such a way as to allow
-new features to be easily added without disrupting applications that use
-the dataspace interface. A dataset (defined with the dataset interface) is
-composed of a collection of raw data points of homogeneous type, defined in the
-datatype (H5T) interface, organized according to the dataspace with this
-interface.
-
-<P>A dataspace describes the locations that dataset elements are located at.
-A dataspace is either a regular N-dimensional array of data points,
-called a <I>simple</I> dataspace, or a more general collection of data
-points organized in another manner, called a <I>complex</I> dataspace.
-A <I>scalar</I> dataspace is a special case of the <I>simple</I> data
-space and is defined to be a 0-dimensional single data point in size. Currently
-only <I>scalar</I> and <I>simple</I> dataspaces are supported with this version
-of the H5S interface.
-<I>Complex</I> dataspaces will be defined and implemented in a future
-version. <I>Complex</I> dataspaces are intended to be used for such structures
-which are awkward to express in <I>simple</I> dataspaces, such as irregularly
-gridded data or adaptive mesh refinement data. This interface provides
-functions to set and query properties of a dataspace.
-
-<P>Operations on a dataspace include defining or extending the extent of
-the dataspace, selecting portions of the dataspace for I/O and storing the
-dataspaces in the file. The extent of a dataspace is the range of coordinates
-over which dataset elements are defined and stored. Dataspace selections are
-subsets of the extent (up to the entire extent) which are selected for some
-operation.
-
-<P>For example, a 2-dimensional dataspace with an extent of 10 by 10 may have
-the following very simple selection:
- <br><br><center>
- <table border cellpadding=4>
- <tr align=center>
- <th > </th> <th >0</th> <th >1</th> <th >2</th> <th >3</th> <th >4</th> <th >5</th> <th >6</th> <th >7</th> <th >8</th> <th >9</th>
- <tr align=center>
- <th>0</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>1</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>2</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>3</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>4</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>5</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>6</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>7</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>8</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>9</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- </table>
- <br><strong>Example 1: Contiguous rectangular selection</strong>
- </center>
-
-
-<br>Or, a more complex selection may be defined:
- <br><br><center>
- <table border cellpadding=4>
- <tr align=center>
- <th > </th> <th >0</th> <th >1</th> <th >2</th> <th >3</th> <th >4</th> <th >5</th> <th >6</th> <th >7</th> <th >8</th> <th >9</th>
- <tr align=center>
- <th>0</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>1</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>2</th>
- <td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>3</th>
- <td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>4</th>
- <td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>5</th>
- <td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>6</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>7</th>
- <td>-</td><td>-</td><td>X</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>8</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>9</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- </table>
- <br><strong>Example 2: Non-contiguous selection</strong>
- </center>
-
-<P>Selections within dataspaces have an offset within the extent which is used
-to locate the selection within the extent of the dataspace. Selection offsets
-default to 0 in each dimension, but may be changed to move the selection within
-a dataspace. In example 2 above, if the offset was changed to 1,1, the selection
-would look like this:
- <br><br><center>
- <table border cellpadding=4>
- <tr align=center>
- <th > </th> <th >0</th> <th >1</th> <th >2</th> <th >3</th> <th >4</th> <th >5</th> <th >6</th> <th >7</th> <th >8</th> <th >9</th>
- <tr align=center>
- <th>0</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>1</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>2</th>
- <td>-</td><td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td><td>-</td>
- <tr align=center>
- <th>3</th>
- <td>-</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>4</th>
- <td>-</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td><td>-</td>
- <tr align=center>
- <th>5</th>
- <td>-</td><td>-</td><td>X</td><td>-</td><td>X</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>6</th>
- <td>-</td><td>-</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>X</td><td>-</td><td>-</td>
- <tr align=center>
- <th>7</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>8</th>
- <td>-</td><td>-</td><td>-</td><td>X</td><td>X</td><td>X</td><td>X</td><td>-</td><td>-</td><td>-</td>
- <tr align=center>
- <th>9</th>
- <td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td>
- </table>
- <br><strong>Example 3: Non-contiguous selection with 1,1 offset</strong>
- </center>
-
-<P>Selections also have a linearization ordering of the points selected
-(defaulting to "C" order, ie. last dimension changing fastest). The
-linearization order may be specified for each point or it may be chosen by
-the axis of the dataspace. For example, with the default "C" ordering,
-example 1's selected points are iterated through in this order: (1,1), (1,2),
-(1,3), (2,1), (2,2), etc. With "FORTRAN" ordering, example 1's selected points
-would be iterated through in this order: (1,1), (2,1), (3,1), (4,1), (5,1),
-(1,2), (2,2), etc.
-
-<P>A dataspace may be stored in the file as a permanent object, to allow many
-datasets to use a commonly defined dataspace. Dataspaces with extendable
-extents (ie. unlimited dimensions) are not able to be stored as permanent
-dataspaces.
-
-<P>Dataspaces may be created using an existing permanent dataspace as a
-container to locate the new dataspace within. These dataspaces are complete
-dataspaces and may be used to define datasets. A dataspaces with a "parent"
-can be queried to determine the parent dataspace and the location within the
-parent. These dataspaces must currently be the same number of dimensions as
-the parent dataspace.
-
-<H2> 2. General Dataspace Operations</H2>
-The functions defined in this section operate on dataspaces as a whole.
-New dataspaces can be created from scratch or copied from existing data
-spaces. When a dataspace is no longer needed its resources should be released
-by calling <TT>H5Sclose()</TT>.
-<DL>
-
-<DT>
-<TT>hid_t H5Screate(H5S_class_t <I>type</I>)</TT></DT>
-
-<DD>
- This function creates a new dataspace of a particular <I>type</I>. The
-types currently supported are H5S_SCALAR and H5S_SIMPLE;
-others are planned to be added later.
-</DD>
-
-<!-- Unimplemented function
-<DT>
-<TT>hid_t H5Sopen(hid_t <I>location</I>, const char *<I>name</I>)</TT></DT>
-
-<DD>
- This function opens a permanent dataspace for use in an application.
-The <I>location</I> argument is a file or group ID and <I>name</I> is
-an absolute or relative path to the permanent dataspace. The dataspace ID which
-is returned is a handle to a permanent dataspace which can't be modified.
-</DD>
--->
-
-<DT>
-<TT>hid_t H5Scopy (hid_t <I>space</I>)</TT></DT>
-
-<DD>
- This function creates a new dataspace which is an exact copy of the
-dataspace <I>space</I>.
-</DD>
-
-<!-- Unimplemented function
-<DT>
-<TT>hid_t H5Ssubspace (hid_t <I>space</I>)</TT></DT>
-
-<DD>
- This function uses the currently defined selection and offset in <I>space</I>
-to create a dataspace which is located within <I>space</I>. The <I>space</I>
-dataspace must be a sharable dataspace located in the file, not a dataspace for
-a dataset. The relationship of the new dataspace within the existing dataspace
-is preserved when the new dataspace is used to create datasets. Currently,
-only subspaces which are equivalent to simple dataspaces (ie. rectangular
-contiguous areas) are allowed. A subspace is not "simplified" or reduced in
-the number of dimensions used if the selection is "flat" in one dimension, they
-always have the same number of dimensions as their parent dataspace.
-</DD>
--->
-
-<!-- Unimplemented function
-<DT>
-<TT>herr_t H5Scommit (hid_t <I>location</I>, const char *<I>name</I>, hid_t <I>space</I>)</TT></DT>
-
-<DD>
- The dataspaces specified with <I>space</I> is stored in the file specified
-by <I>location</I>. <I>Location</I> may be either a file or group handle
-and <I>name</I> is an absolute or relative path to the location to store the
-dataspace. After this call, the dataspace is permanent and can't be modified.
-</DD>
--->
-
-<DT>
-<TT>herr_t H5Sclose (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-Releases resources associated with a dataspace. Subsequent use of the
-dataspace identifier after this call is undefined.
-</DD>
-
-<!-- NOT YET IMPLEMENTED (R1.2 -- 9908)
-
-<DT>
-<TT>H5S_class_t H5Sextent_class (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-Query a dataspace to determine the current class of a dataspace. The value
-which is returned is one of: H5S_SCALAR, H5S_SIMPLE on success or
-H5S_NO_CLASS on failure.
-</DD>
-
--->
-
-</DL>
-
-
-<H2> 3. Dataspace Extent Operations</H2>
-These functions operate on the extent portion of a dataspace.
-
-<DL>
-<DT>
-<TT>herr_t H5Sset_extent_simple (hid_t <I>space</I>, int <I>rank</I>, const hsize_t
-*<I>current_size</I>, const hsize_t *<I>maximum_size</I>)</TT></DT>
-
-<DD>
-Sets or resets the size of an existing dataspace, where <I>rank</I> is
-the dimensionality, or number of dimensions, of the dataspace.
-<I>current_size</I> is an array of size <I>rank</I> which contains the new size
-of each dimension in the dataspace. <I>maximum_size</I> is an array of size
-<I>rank</I> which contains the maximum size of each dimension in the dataspace.
-Any previous extent is removed from the dataspace, the dataspace type is set to
-H5S_SIMPLE and the extent is set as specified.
-</DD>
-
-<DT>
-<TT>herr_t H5Sset_extent_none (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-Removes the extent from a dataspace and sets the type to H5S_NO_CLASS.
-</DD>
-
-<DT>
-<TT>herr_t H5Sextent_copy (hid_t <I>dest_space</I>,
- hid_t <I>source_space</I>)</TT></DT>
-
-<DD>
-Copies the extent from <I>source_space</I> to <I>dest_space</I>, which may
-change the type of the dataspace. Returns non-negative on success, negative on
-failure.
-</DD>
-
-<DT>
-<TT>hsize_t H5Sget_simple_extent_npoints (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-This function determines the number of elements in a dataspace. For example, a
-simple 3-dimensional dataspace with dimensions 2, 3 and 4 would have 24
-elements.
-Returns the number of elements in the dataspace, negative on failure.
-</DD>
-
-<DT>
-<TT>int H5Sget_simple_extent_ndims (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-This function determines the dimensionality (or rank) of a dataspace.
-Returns the number of dimensions in the dataspace, negative on failure.
-</DD>
-
-<DT>
-<TT>herr_t H5Sget_simple_extent_dims (hid_t <I>space</I>, hsize_t *<I>dims</I>,
- hsize_t *<I>max</I>)</TT></DT>
-
-<DD>
-The function retrieves the size of the extent of the dataspace <I>space</I> by
-placing the size of each dimension in the array <I>dims</I>. Also retrieves
-the size of the maximum extent of the dataspace, placing the results in
-<I>max</I>.
-Returns non-negative on success, negative on failure.
-</DD>
-
-</DL>
-
-<H2> 4. Dataspace Selection Operations</H2>
-Selections are maintained separately from extents in dataspaces and operations
-on the selection of a dataspace do not affect the extent of the dataspace.
-Selections are independent of extent type and the boundaries of selections are
-reconciled with the extent at the time of the data transfer. Selection offsets
-apply a selection to a location within an extent, allowing the same selection
-to be moved within the extent without requiring a new selection to be specified.
-Offsets default to 0 when the dataspace is created. Offsets are applied when
-an I/O transfer is performed (and checked during calls to H5Sselect_valid).
-Selections have an iteration order for the points selected, which can be any
-permutation of the dimensions involved (defaulting to 'C' array order) or a
-specific order for the selected points, for selections composed of single array
-elements with H5Sselect_elements.
-
-<!-- Unimplemented function
-Selections can also be copied or combined
-together in various ways with H5Sselect_op.
--->
-
-Further methods of selecting
-portions of a dataspace may be added in the future.
-
-<DL>
-<DT>
-<TT>herr_t H5Sselect_hyperslab (hid_t <I>space</I>, h5s_seloper_t <I>op</I>,
- const hsize_t * <I>start</I>, const hsize_t * <I>stride</I>,
- const hsize_t * <I>count</I>, const hsize_t * <I>block</I>)</TT></DT>
-
-<DD>
-This function selects a hyperslab region to add to the current selected region
-for the <I>space</I> dataspace. The <I>start</I>, <I>stride</I>, <I>count</I>
-and <I>block</I> arrays must be the same size as the rank of the dataspace.
-The selection operator <I>op</I> determines how the new selection is to be
-combined with the already existing selection for the dataspace.
-Currently, The following operators are supported:
- <dir>
- <table width=80% border=0>
- <tr><td valign=top>
- <code>H5S_SELECT_SET</code>
- </td><td valign=top>
- Replaces the existing selection with the parameters from this call.
- Overlapping blocks are not supported with this operator.
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_OR</code>
- </td><td valign=top>
- Adds the new selection to the existing selection.
- </td></tr>
- </table>
- </dir>
-<P>
-The <I>start</I> array determines the starting coordinates of the hyperslab
-to select. The <I>stride</I> array chooses array locations from the dataspace
-with each value in the <I>stride</I> array determining how many elements to move
-in each dimension. Setting a value in the <I>stride</I> array to 1 moves to
-each element in that dimension of the dataspace, setting a value of 2 in a
-location in the <I>stride</I> array moves to every other element in that
-dimension of the dataspace. In other words, the <I>stride</I> determines the
-number of elements to move from the <I>start</I> location in each dimension.
-Stride values of 0 are not allowed. If the <I>stride</I> parameter is <TT>NULL</TT>,
-a contiguous hyperslab is selected (as if each value in the <I>stride</I> array
-was set to all 1's). The <I>count</I> array determines how many blocks to
-select from the dataspace, in each dimension. The <I>block</I> array determines
-the size of the element block selected from the dataspace. If the <I>block</I>
-parameter is set to <TT>NULL</TT>, the block size defaults to a single element
-in each dimension (as if the <I>block</I> array was set to all 1's).
-<P>For example, in a 2-dimensional dataspace, setting <I>start</I> to [1,1],
-<I>stride</I> to [4,4], <I>count</I> to [3,7] and <I>block</I> to [2,2] selects
-21 2x2 blocks of array elements starting with location (1,1) and selecting
-blocks at locations (1,1), (5,1), (9,1), (1,5), (5,5), etc.
-<P>Regions selected with this function call default to 'C' order iteration when
-I/O is performed.
-</DD>
-
-<DT>
-<TT>herr_t H5Sselect_elements (hid_t <I>space</I>, h5s_seloper_t <I>op</I>,
- const size_t <I>num_elements</I>, const hsize_t *<I>coord</I>[])</TT></DT>
-
-<DD>
-This function selects array elements to be included in the selection for the
-<I>space</I> dataspace. The number of elements selected must be set with the
-<I>num_elements</I>. The <I>coord</I> array is a two-dimensional array of size
-&lt;dataspace rank&gt; by &lt;<I>num_elements</I>&gt; in size (ie. a list of
-coordinates in the array). The order of the element coordinates in the
-<I>coord</I> array also specifies the order that the array elements are
-iterated through when I/O is performed. Duplicate coordinate locations are not
-checked for.
-
-<P>The selection operator <I>op</I> determines how the new selection is to be
-combined with the already existing selection for the dataspace.
-The following operators are supported:
- <dir>
- <table width=80% border=0>
- <tr><td valign=top>
- <code>H5S_SELECT_SET</code>
- </td><td valign=top>
- Replaces the existing selection with the parameters from this call.
- Overlapping blocks are not supported with this operator.
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_OR</code>
- </td><td valign=top>
- Adds the new selection to the existing selection.
- </td></tr>
- </table>
- </dir>
-When operators other than
-H5S_SELECT_SET are used to combine a new selection with an existing selection,
-the selection ordering is reset to 'C' array ordering.
-</DD>
-
-<DT>
-<TT>herr_t H5Sselect_all (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-This function selects the special H5S_SELECT_ALL region for the <I>space</I>
-dataspace. H5S_SELECT_ALL selects the entire dataspace for any dataspace is is
-applied to.
-</DD>
-
-<DT>
-<TT>herr_t H5Sselect_none (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-This function resets the selection region for the <I>space</I>
-dataspace not to include any elements.
-</DD>
-
-<DT>
-<!-- Unimplemented function
-<TT>herr_t H5Sselect_op (hid_t <I>space1</I>, h5s_seloper_t <I>op</I>,
- hid_t <I>space2</I>)</TT></DT>
-
-<DD>
-Uses <I>space2</I> to perform an operation on <I>space1</I>. The valid
-operations for <I>op</I> are:
-<DL>
- <DT>H5S_SELECT_COPY
- <DD>Copies the selection from <I>space2</I> into <I>space1</I>, removing any
- previously defined selection for <I>space1</I>. The selection order
- and offset are also copied to <I>space1</I>
- <DT>H5S_SELECT_UNION
- <DD>Performs a set union of the selection of the dataspace <I>space2</I>
- with the selection from the dataspace <I>space1</I>, with the result
- being stored in <I>space1</I>. The selection order for <I>space1</I> is
- reset to 'C' order.
- <DT>H5S_SELECT_INTERSECT
- <DD>Performs an set intersection of the selection from <I>space2</I> with
- <I>space1</I>, with the result being stored in <I>space1</I>. The
- selection order for <I>space1</I> is reset to 'C' order.
- <DT>H5S_SELECT_DIFFERENCE
- <DD>Performs a set difference of the selection from <I>space2</I> with
- <I>space1</I>, with the result being stored in <I>space1</I>. The
- selection order for <I>space1</I> is reset to 'C' order.
-</DL>
-
-</DD>
--->
-
-<!-- Unimplemented function
-<DT>
-<TT>herr_t H5Sselect_order (hid_t <I>space</I>,
- hsize_t <I>perm_vector</I>[])</TT></DT>
-
-<DD>
-This function selects the order to iterate through the dimensions of a dataspace
-when performing I/O on a selection. If a specific order has already been
-selected for the selection with H5Sselect_elements, this function will remove
-it and use a dimension oriented ordering on the selected elements. The elements
-of the <I>perm_vector</I> array must be unique and between 0 and the rank of the
-dataspace, minus 1. The order of the elements in <I>perm_vector</I> specify
-the order to iterate through the selection for each dimension of the dataspace.
-To iterate through a 3-dimensional dataspace selection in 'C' order, specify
-the elements of the <I>perm_vector</I> as [0, 1, 2], for FORTRAN order they
-would be [2, 1, 0]. Other orderings, such as [1, 2, 0] are also possible, but
-may execute slower.
-</DD>
--->
-
-<DT>
-<TT>htri_t H5Sselect_valid (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-This function verifies that the selection for a dataspace is within the extent
-of the dataspace, if the currently set offset for the dataspace is used.
-Returns TRUE if the selection is contained within the extent, FALSE if it
-is not contained within the extent and FAIL on error conditions (such as if
-the selection or extent is not defined).
-</DD>
-
-<DT>
-<TT>hsize_t H5Sget_select_npoints (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-This function determines the number of elements in the current selection
-of a dataspace.
-</DD>
-
-<DT>
-<TT>herr_t H5Soffset_simple (hid_t <I>space</I>, const hssize_t *
- <I>offset</I>)</TT></DT>
-
-<DD>
-Sets the offset of a simple dataspace <I>space</I>. The <I>offset</I> array
-must be the same number of elements as the number of dimensions for the
-dataspace. If the <I>offset</I> array is set to <TT>NULL</TT>, the offset
-for the dataspace is reset to 0.
-</DD>
-
-</DL>
-
-<!-- Inappropriate header until "Unimplemented functions" reinstated.
-<H2> 5. Misc. Dataspace Operations</H2>
--->
-<H2> 5. Convenience Dataspace Operation</H2>
-
-<DL>
-
-<!-- Unimplemented function
-<DT>
-<TT>herr_t H5Slock (hid_t <I>space</I>)</TT></DT>
-
-<DD>
-Locks the dataspace so that it cannot be modified or closed. When the library
-exits, the dataspace will be unlocked and closed.
-</DD>
--->
-
-<DT>
-<TT>hid_t H5Screate_simple(int <I>rank</I>, const hsize_t *<I>current_size</I>,
- const hsize_t *<I>maximum_size</I>)</TT></DT>
-
-<DD>
- This function is a "convenience" wrapper to create a simple dataspace
-and set it's extent in one call. It is equivalent to calling H5Screate
-and H5Sset_extent_simple() in two steps.
-</DD>
-
-<!-- Unimplemented function
-<DT>
-<TT>int H5Sis_subspace(hid_t <I>space</I>)</TT></DT>
-
-<DD>
- This function returns positive if <I>space</I> is located within another
-dataspace, zero if it is not, and negative on a failure.
-</DD>
--->
-
-<!-- Unimplemented function
-<DT>
-<TT>char *H5Ssubspace_name(hid_t <I>space</I>)</TT></DT>
-
-<DD>
- This function returns the name of the named dataspace that <I>space</I>
-is located within. If <I>space</I> is not located within another dataspace,
-or an error occurs, NULL is returned. The application is responsible for
-freeing the string returned.
-</DD>
--->
-
-<!-- Unimplemented function
-<DT>
-<TT>herr_t H5Ssubspace_location(hid_t <I>space</I>, hsize_t *<I>loc</I>)</TT></DT>
-
-<DD>
- If <I>space</I> is located within another dataspace, this function puts
-the location of the origin of <I>space</I> in the <I>loc</I> array. The <I>loc</I>
-array must be at least as large as the number of dimensions of <I>space</I>.
-If <I>space</I> is not located within another dataspace
-or an error occurs, a negative value is returned, otherwise a non-negative value
-is returned.
-</DD>
--->
-
-</DL>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Thu Dec 4 14:57:32 EST 1997 -->
-<!-- hhmts start -->
-Last modified: 7 May 2002
-<!-- hhmts end -->
-
-
-</BODY>
-</HTML>
diff --git a/doc/html/Datatypes.html b/doc/html/Datatypes.html
deleted file mode 100644
index 232d7fb..0000000
--- a/doc/html/Datatypes.html
+++ /dev/null
@@ -1,3114 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Datatype Interface (H5T)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Datatype Interface (H5T)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The datatype interface provides a mechanism to describe the
- storage format of individual data points of a data set and is
- hopefully designed in such a way as to allow new features to be
- easily added without disrupting applications that use the
- datatype interface. A dataset (the H5D interface) is composed of a
- collection or raw data points of homogeneous type organized
- according to the data space (the H5S interface).
-
- <p>A datatype is a collection of datatype properties, all of
- which can be stored on disk, and which when taken as a whole,
- provide complete information for data conversion to or from that
- datatype. The interface provides functions to set and query
- properties of a datatype.
-
- <p>A <em>data point</em> is an instance of a <em>datatype</em>,
- which is an instance of a <em>type class</em>. We have defined
- a set of type classes and properties which can be extended at a
- later time. The atomic type classes are those which describe
- types which cannot be decomposed at the datatype interface
- level; all other classes are compound.
-
- <h2>2. General Datatype Operations</h2>
-
- <p>The functions defined in this section operate on datatypes as
- a whole. New datatypes can be created from scratch or copied
- from existing datatypes. When a datatype is no longer needed
- its resources should be released by calling <code>H5Tclose()</code>.
-
- <p> Datatypes come in two flavors: named datatypes and transient
- datatypes. A named datatype is stored in a file while the
- transient flavor is independent of any file. Named datatypes
- are always read-only, but transient types come in three
- varieties: modifiable, read-only, and immutable. The difference
- between read-only and immutable types is that immutable types
- cannot be closed except when the entire library is closed (the
- predefined types like <code>H5T_NATIVE_INT</code> are immutable
- transient types).
-
- <dl>
- <dt><code>hid_t H5Tcreate (H5T_class_t <em>class</em>, size_t
- <em>size</em>)</code>
- <dd> Datatypes can be created by calling this
- function, where <em>class</em> is a datatype class
- identifier. However, the only class currently allowed is
- <code>H5T_COMPOUND</code> to create a new empty compound
- datatype where <em>size</em> is the total size in bytes of an
- instance of this datatype. Other datatypes are created with
- <code>H5Tcopy()</code>. All functions that return datatype
- identifiers return a negative value for failure.
-
- <br><br>
- <dt><code>hid_t H5Topen (hid_t <em>location</em>, const char
- *<em>name</em>)</code>
- <dd>A named datatype can be opened by calling this function,
- which returns a datatype identifier. The identifier should
- eventually be released by calling <code>H5Tclose()</code> to
- release resources. The named datatype returned by this
- function is read-only or a negative value is returned for
- failure. The <em>location</em> is either a file or group
- identifier.
-
- <br><br>
- <dt><code>herr_t H5Tcommit (hid_t <em>location</em>, const char
- *<em>name</em>, hid_t <em>type</em>)</code>
- <dd>A transient datatype (not immutable) can be committed to a
- file and turned into a named datatype by calling this
- function. The <em>location</em> is either a file or group
- identifier and when combined with <em>name</em> refers to a new
- named datatype.
-
- <br><br>
- <dt><code>htri_t H5Tcommitted (hid_t <em>type</em>)</code>
- <dd>A type can be queried to determine if it is a named type or
- a transient type. If this function returns a positive value
- then the type is named (that is, it has been committed perhaps
- by some other application). Datasets which return committed
- datatypes with <code>H5Dget_type()</code> are able to share
- the datatype with other datasets in the same file.
-
- <br><br>
- <dt><code>hid_t H5Tcopy (hid_t <em>type</em>)</code>
- <dd>This function returns a modifiable transient datatype
- which is a copy of <em>type</em> or a negative value for
- failure. If <em>type</em> is a dataset identifier then the type
- returned is a modifiable transient copy of the datatype of
- the specified dataset.
-
- <br><br>
- <dt><code>herr_t H5Tclose (hid_t <em>type</em>)</code>
- <dd>Releases resources associated with a datatype. The
- datatype identifier should not be subsequently used since the
- results would be unpredictable. It is illegal to close an
- immutable transient datatype.
-
- <br><br>
- <dt><code>htri_t H5Tequal (hid_t <em>type1</em>, hid_t
- <em>type2</em>)</code>
- <dd>Determines if two types are equal. If <em>type1</em> and
- <em>type2</em> are the same then this function returns
- <code>TRUE</code>, otherwise it returns <code>FALSE</code> (an
- error results in a negative return value).
-
- <br><br>
- <dt><code>herr_t H5Tlock (hid_t <em>type</em>)</code>
- <dd>A transient datatype can be locked, making it immutable
- (read-only and not closable). The library does this to all
- predefined types to prevent the application from inadvertently
- modifying or deleting (closing) them, but the application is
- also allowed to do this for its own datatypes. Immutable
- datatypes are closed when the library closes (either by
- <code>H5close()</code> or by normal program termination).
- </dl>
-
- <h2>3. Properties of Atomic Types</h2>
-
- <p>An atomic type is a type which cannot be decomposed into
- smaller units at the API level. All atomic types have a common
- set of properties which are augmented by properties specific to
- a particular type class. Some of these properties also apply to
- compound datatypes, but we discuss them only as they apply to
- atomic datatypes here. The properties and the functions that
- query and set their values are:
-
- <dl>
- <dt><code>H5T_class_t H5Tget_class (hid_t <em>type</em>)</code>
- <dd>This property holds one of the class names:
- <code>H5T_INTEGER, H5T_FLOAT, H5T_TIME, H5T_STRING, or
- H5T_BITFIELD</code>. This property is read-only and is set
- when the datatype is created or copied (see
- <code>H5Tcreate()</code>, <code>H5Tcopy()</code>). If this
- function fails it returns <code>H5T_NO_CLASS</code> which has
- a negative value (all other class constants are non-negative).
-
- <br><br>
- <dt><code>size_t H5Tget_size (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_size (hid_t <em>type</em>, size_t
- <em>size</em>)</code>
- <dd>This property is total size of the datum in bytes, including
- padding which may appear on either side of the actual value.
- If this property is reset to a smaller value which would cause
- the significant part of the data to extend beyond the edge of
- the datatype then the <code>offset</code> property is
- decremented a bit at a time. If the offset reaches zero and
- the significant part of the data still extends beyond the edge
- of the datatype then the <code>precision</code> property is
- decremented a bit at a time. Decreasing the size of a
- datatype may fail if the <code>H5T_FLOAT</code> bit fields would
- extend beyond the significant part of the type. Adjusting the
- size of an <code>H5T_STRING</code> automatically adjusts the
- precision as well. On error, <code>H5Tget_size()</code>
- returns zero which is never a valid size.
-
- <br><br>
- <dt><code>H5T_order_t H5Tget_order (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_order (hid_t <em>type</em>, H5T_order_t
- <em>order</em>)</code>
- <dd>All atomic datatypes have a byte order which describes how
- the bytes of the datatype are layed out in memory. If the
- lowest memory address contains the least significant byte of
- the datum then it is said to be <em>little-endian</em> or
- <code>H5T_ORDER_LE</code>. If the bytes are in the oposite
- order then they are said to be <em>big-endian</em> or
- <code>H5T_ORDER_BE</code>. Some datatypes have the same byte
- order on all machines and are <code>H5T_ORDER_NONE</code>
- (like character strings). If <code>H5Tget_order()</code>
- fails then it returns <code>H5T_ORDER_ERROR</code> which is a
- negative value (all successful return values are
- non-negative).
-
- <br><br>
- <dt><code>size_t H5Tget_precision (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_precision (hid_t <em>type</em>, size_t
- <em>precision</em>)</code>
- <dd>Some datatypes occupy more bytes than what is needed to
- store the value. For instance, a <code>short</code> on a Cray
- is 32 significant bits in an eight-byte field. The
- <code>precision</code> property identifies the number of
- significant bits of a datatype and the <code>offset</code>
- property (defined below) identifies its location. The
- <code>size</code> property defined above represents the entire
- size (in bytes) of the datatype. If the precision is
- decreased then padding bits are inserted on the MSB side of
- the significant bits (this will fail for
- <code>H5T_FLOAT</code> types if it results in the sign,
- mantissa, or exponent bit field extending beyond the edge of
- the significant bit field). On the other hand, if the
- precision is increased so that it "hangs over" the edge of the
- total size then the <code>offset</code> property is
- decremented a bit at a time. If the <code>offset</code>
- reaches zero and the significant bits still hang over the
- edge, then the total size is increased a byte at a time. The
- precision of an <code>H5T_STRING</code> is read-only and is
- always eight times the value returned by
- <code>H5Tget_size()</code>. <code>H5Tget_precision()</code>
- returns zero on failure since zero is never a valid precision.
-
- <br><br>
- <dt><code>size_t H5Tget_offset (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_offset (hid_t <em>type</em>, size_t
- <em>offset</em>)</code>
- <dd>While the <code>precision</code> property defines the number
- of significant bits, the <code>offset</code> property defines
- the location of those bits within the entire datum. The bits
- of the entire data are numbered beginning at zero at the least
- significant bit of the least significant byte (the byte at the
- lowest memory address for a little-endian type or the byte at
- the highest address for a big-endian type). The
- <code>offset</code> property defines the bit location of the
- least signficant bit of a bit field whose length is
- <code>precision</code>. If the offset is increased so the
- significant bits "hang over" the edge of the datum, then the
- <code>size</code> property is automatically incremented. The
- offset is a read-only property of an <code>H5T_STRING</code>
- and is always zero. <code>H5Tget_offset()</code> returns zero
- on failure which is also a valid offset, but is guaranteed to
- succeed if a call to <code>H5Tget_precision()</code> succeeds
- with the same arguments.
-
- <br><br>
- <dt><code>herr_t H5Tget_pad (hid_t <em>type</em>, H5T_pad_t
- *<em>lsb</em>, H5T_pad_t *<em>msb</em>)</code>
- <dt><code>herr_t H5Tset_pad (hid_t <em>type</em>, H5T_pad_t
- <em>lsb</em>, H5T_pad_t <em>msb</em>)</code>
- <dd>The bits of a datum which are not significant as defined by
- the <code>precision</code> and <code>offset</code> properties
- are called <em>padding</em>. Padding falls into two
- categories: padding in the low-numbered bits is <em>lsb</em>
- padding and padding in the high-numbered bits is <em>msb</em>
- padding (bits are numbered according to the description for
- the <code>offset</code> property). Padding bits can always be
- set to zero (<code>H5T_PAD_ZERO</code>) or always set to one
- (<code>H5T_PAD_ONE</code>). The current pad types are returned
- through arguments of <code>H5Tget_pad()</code> either of which
- may be null pointers.
- </dl>
-
- <h3>3.1. Properties of Integer Atomic Types</h3>
-
- <p>Integer atomic types (<code>class=H5T_INTEGER</code>)
- describe integer number formats. Such types include the
- following information which describes the type completely and
- allows conversion between various integer atomic types.
-
- <dl>
- <dt><code>H5T_sign_t H5Tget_sign (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_sign (hid_t <em>type</em>, H5T_sign_t
- <em>sign</em>)</code>
- <dd>Integer data can be signed two's complement
- (<code>H5T_SGN_2</code>) or unsigned
- (<code>H5T_SGN_NONE</code>). Whether data is signed or not
- becomes important when converting between two integer
- datatypes of differing sizes as it determines how values are
- truncated and sign extended.
- </dl>
-
- <h3>3.2. Properties of Floating-point Atomic Types</h3>
-
- <p>The library supports floating-point atomic types
- (<code>class=H5T_FLOAT</code>) as long as the bits of the
- exponent are contiguous and stored as a biased positive number,
- the bits of the mantissa are contiguous and stored as a positive
- magnitude, and a sign bit exists which is set for negative
- values. Properties specific to floating-point types are:
-
- <dl>
- <dt><code>herr_t H5Tget_fields (hid_t <em>type</em>, size_t
- *<em>spos</em>, size_t *<em>epos</em>, size_t
- *<em>esize</em>, size_t *<em>mpos</em>, size_t
- *<em>msize</em>)</code>
- <dt><code>herr_t H5Tset_fields (hid_t <em>type</em>, size_t
- <em>spos</em>, size_t <em>epos</em>, size_t <em>esize</em>,
- size_t <em>mpos</em>, size_t <em>msize</em>)</code>
- <dd>A floating-point datum has bit fields which are the exponent
- and mantissa as well as a mantissa sign bit. These properties
- define the location (bit position of least significant bit of
- the field) and size (in bits) of each field. The bit
- positions are numbered beginning at zero at the beginning of
- the significant part of the datum (see the descriptions of the
- <code>precision</code> and <code>offset</code>
- properties). The sign bit is always of length one and none of
- the fields are allowed to overlap. When expanding a
- floating-point type one should set the precision first; when
- decreasing the size one should set the field positions and
- sizes first.
-
- <br><br>
- <dt><code>size_t H5Tget_ebias (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_ebias (hid_t <em>type</em>, size_t
- <em>ebias</em>)</code>
- <dd>The exponent is stored as a non-negative value which is
- <code>ebias</code> larger than the true exponent.
- <code>H5Tget_ebias()</code> returns zero on failure which is
- also a valid exponent bias, but the function is guaranteed to
- succeed if <code>H5Tget_precision()</code> succeeds when
- called with the same arguments.
-
- <br><br>
- <dt><code>H5T_norm_t H5Tget_norm (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_norm (hid_t <em>type</em>, H5T_norm_t
- <em>norm</em>)</code>
- <dd>This property determines the normalization method of the
- mantissa.
- <ul>
- <li>If the value is <code>H5T_NORM_MSBSET</code> then the
- mantissa is shifted left (if non-zero) until the first bit
- after the radix point is set and the exponent is adjusted
- accordingly. All bits of the mantissa after the radix
- point are stored.
-
- <li>If its value is <code>H5T_NORM_IMPLIED</code> then the
- mantissa is shifted left (if non-zero) until the first bit
- after the radix point is set and the exponent is adjusted
- accordingly. The first bit after the radix point is not stored
- since it's always set.
-
- <li>If its value is <code>H5T_NORM_NONE</code> then the fractional
- part of the mantissa is stored without normalizing it.
- </ul>
-
- <br><br>
- <dt><code>H5T_pad_t H5Tget_inpad (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_inpad (hid_t <em>type</em>, H5T_pad_t
- <em>inpad</em>)</code>
- <dd>If any internal bits (that is, bits between the sign bit,
- the mantissa field, and the exponent field but within the
- precision field) are unused, then they will be filled
- according to the value of this property. The <em>inpad</em>
- argument can be <code>H5T_PAD_ZERO</code> if the internal
- padding should always be set to zero, or <code>H5T_PAD_ONE</code>
- if it should always be set to one.
- <code>H5Tget_inpad()</code> returns <code>H5T_PAD_ERROR</code>
- on failure which is a negative value (successful return is
- always non-negative).
- </dl>
-
- <h3>3.3. Properties of Date and Time Atomic Types</h3>
-
- <p>Dates and times (<code>class=H5T_TIME</code>) are stored as
- character strings in one of the ISO-8601 formats like
- "<em>1997-12-05 16:25:30</em>"; as character strings using the
- Unix asctime(3) format like "<em>Thu Dec 05 16:25:30 1997</em>";
- as an integer value by juxtaposition of the year, month, and
- day-of-month, hour, minute and second in decimal like
- <em>19971205162530</em>; as an integer value in Unix time(2)
- format; or other variations.
-
- <h3>3.4. Properties of Character String Atomic Types</h3>
-
- <p>Fixed-length character string types are used to store textual
- information. The <code>offset</code> property of a string is
- always zero and the <code>precision</code> property is eight
- times as large as the value returned by
- <code>H5Tget_size()</code> (since precision is measured in bits
- while size is measured in bytes). Both properties are
- read-only.
-
- <dl>
- <dt><code>H5T_cset_t H5Tget_cset (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_cset (hid_t <em>type</em>, H5T_cset_t
- <em>cset</em>)</code>
- <dd>HDF5 is able to distinguish between character sets of
- different nationalities and to convert between them to the
- extent possible. The only character set currently supported
- is <code>H5T_CSET_ASCII</code>.
-
- <br><br>
- <dt><code>H5T_str_t H5Tget_strpad (hid_t <em>type</em>)</code>
- <dt><code>herr_t H5Tset_strpad (hid_t <em>type</em>, H5T_str_t
- <em>strpad</em>)</code>
- <dd>The method used to store character strings differs with the
- programming language: C usually null terminates strings while
- Fortran left-justifies and space-pads strings. This property
- defines the storage mechanism and can be
-
- <p>
- <dl>
- <dt><code>H5T_STR_NULLTERM</code>
- <dd>A C-style string which is guaranteed to be null
- terminated. When converting from a longer string the
- value will be truncated and then a null character
- appended.
-
- <br><br>
- <dt><code>H5T_STR_NULLPAD</code>
- <dd>A C-style string which is padded with null characters
- but not necessarily null terminated. Conversion from a
- long string to a shorter <code>H5T_STR_NULLPAD</code>
- string will truncate but not null terminate. Conversion
- from a short value to a longer value will append null
- characters as with <code>H5T_STR_NULLTERM</code>.
-
- <br><br>
- <dt><code>H5T_STR_SPACEPAD</code>
- <dd>A Fortran-style string which is padded with space
- characters. This is the same as
- <code>H5T_STR_NULLPAD</code> except the padding character
- is a space instead of a null.
- </dl>
-
- <p><code>H5Tget_strpad()</code> returns
- <code>H5T_STR_ERROR</code> on failure, a negative value (all
- successful return values are non-negative).
- </dl>
-
- <h3>3.5. Properties of Bit Field Atomic Types</h3>
-
- <p>Converting a bit field (<code>class=H5T_BITFIELD</code>) from
- one type to another simply copies the significant bits. If the
- destination is smaller than the source then bits are truncated.
- Otherwise new bits are filled according to the <code>msb</code>
- padding type.
-
- <h3>3.6. Character and String Datatype Issues</h3>
-
- The <code>H5T_NATIVE_CHAR</code> and <code>H5T_NATIVE_UCHAR</code>
- datatypes are actually numeric data (1-byte integers). If the
- application wishes to store character data, then an HDF5
- <em>string</em> datatype should be derived from
- <code>H5T_C_S1</code> instead.
-
- <h4>Motivation</h4>
-
- HDF5 defines at least three classes of datatypes:
- integer data, floating point data, and character data.
- However, the C language defines only integer and
- floating point datatypes; character data in C is
- overloaded on the 8- or 16-bit integer types and
- character strings are overloaded on arrays of those
- integer types which, by convention, are terminated with
- a zero element.
-
- In C, the variable <code>unsigned char s[256]</code> is
- either an array of numeric data, a single character string
- with at most 255 characters, or an array of 256 characters,
- depending entirely on usage. For uniformity with the
- other <code>H5T_NATIVE_</code> types, HDF5 uses the
- numeric interpretation of <code>H5T_NATIVE_CHAR</code>
- and <code>H5T_NATIVE_UCHAR</code>.
-
-
- <h4>Usage</h4>
-
- To store <code>unsigned char s[256]</code> data as an
- array of integer values, use the HDF5 datatype
- <code>H5T_NATIVE_UCHAR</code> and a data space that
- describes the 256-element array. Some other application
- that reads the data will then be able to read, say, a
- 256-element array of 2-byte integers and HDF5 will
- perform the numeric translation.
-
- To store <code>unsigned char s[256]</code> data as a
- character string, derive a fixed length string datatype
- from <code>H5T_C_S1</code> by increasing its size to
- 256 characters. Some other application that reads the
- data will be able to read, say, a space padded string
- of 16-bit characters and HDF5 will perform the character
- and padding translations.
-
- <pre>
- hid_t s256 = H5Tcopy(H5T_C_S1);
- H5Tset_size(s256, 256);
- </pre>
-
- To store <code>unsigned char s[256]</code> data as
- an array of 256 ASCII characters, use an
- HDF5 data space to describe the array and derive a
- one-character string type from <code>H5T_C_S1</code>.
- Some other application will be able to read a subset
- of the array as 16-bit characters and HDF5 will
- perform the character translations.
- The <code>H5T_STR_NULLPAD</code> is necessary because
- if <code>H5T_STR_NULLTERM</code> were used
- (the default) then the single character of storage
- would be for the null terminator and no useful data
- would actually be stored (unless the length were
- incremented to more than one character).
-
- <pre>
- hid_t s1 = H5Tcopy(H5T_C_S1);
- H5Tset_strpad(s1, H5T_STR_NULLPAD);
- </pre>
-
- <h4>Summary</h4>
-
- The C language uses the term <code>char</code> to
- represent one-byte numeric data and does not make
- character strings a first-class datatype.
- HDF5 makes a distinction between integer and
- character data and maps the C <code>signed char</code>
- (<code>H5T_NATIVE_CHAR</code>) and
- <code>unsigned char</code> (<code>H5T_NATIVE_UCHAR</code>)
- datatypes to the HDF5 integer type class.
-
- <h2>4. Properties of Opaque Types</h2>
-
- <p>Opaque types (<code>class=H5T_OPAQUE</code>) provide the
- application with a mechanism for describing data which cannot be
- otherwise described by HDF5. The only properties associated with
- opaque types are a size in bytes and an ASCII tag which is
- manipulated with <code>H5Tset_tag()</code> and
- <code>H5Tget_tag()</code> functions. The library contains no
- predefined conversion functions but the application is free to
- register conversions between any two opaque types or between an
- opaque type and some other type.
-
- <h2>5. Properties of Compound Types</h2>
-
- <p>A compound datatype is similar to a <code>struct</code> in C
- or a common block in Fortran: it is a collection of one or more
- atomic types or small arrays of such types. Each
- <em>member</em> of a compound type has a name which is unique
- within that type, and a byte offset that determines the first
- byte (smallest byte address) of that member in a compound datum.
- A compound datatype has the following properties:
-
- <dl>
- <dt><code>H5T_class_t H5Tget_class (hid_t <em>type</em>)</code>
- <dd>All compound datatypes belong to the type class
- <code>H5T_COMPOUND</code>. This property is read-only and is
- defined when a datatype is created or copied (see
- <code>H5Tcreate()</code> or <code>H5Tcopy()</code>).
-
- <br><br>
- <dt><code>size_t H5Tget_size (hid_t <em>type</em>)</code>
- <dd>Compound datatypes have a total size in bytes which is
- returned by this function. All members of a compound
- datatype must exist within this size. A value of zero is returned
- for failure; all successful return values are positive.
-
- <br><br>
- <dt><code>int H5Tget_nmembers (hid_t <em>type</em>)</code>
- <dd>A compound datatype consists of zero or more members
- (defined in any order) with unique names and which occupy
- non-overlapping regions within the datum. In the functions
- that follow, individual members are referenced by an index
- number between zero and <em>N</em>-1, inclusive, where
- <em>N</em> is the value returned by this function.
- <code>H5Tget_nmembers()</code> returns -1 on failure.
-
- <br><br>
- <dt><code>char *H5Tget_member_name (hid_t <em>type</em>, unsigned
- <em>membno</em>)</code>
- <dd>Each member has a name which is unique among its siblings in
- a compound datatype. This function returns a pointer to a
- null-terminated copy of the name allocated with
- <code>malloc()</code> or the null pointer on failure. The
- caller is responsible for freeing the memory returned by this
- function.
-
- <br><br>
- <dt><code>size_t H5Tget_member_offset (hid_t <em>type</em>, unsigned
- <em>membno</em>)</code>
- <dd>The byte offset of member number <em>membno</em> with
- respect to the beginning of the containing compound datum is
- returned by this function. A zero is returned on failure
- which is also a valid offset, but this function is guaranteed
- to succeed if a call to <code>H5Tget_member_class()</code>
- succeeds when called with the same <em>type</em> and
- <em>membno</em> arguments.
-
- <br><br>
- <dt><code>hid_t H5Tget_member_type (hid_t <em>type</em>, unsigned
- <em>membno</em>)</code>
- <dd>Each member has its own datatype, a copy of which is
- returned by this function. The returned datatype identifier
- should be released by eventually calling
- <code>H5Tclose()</code> on that type.
- </dl>
-
- <p>Properties of members of a compound datatype are
- defined when the member is added to the compound type (see
- <code>H5Tinsert()</code>) and cannot be subsequently modified.
- This makes it imposible to define recursive data structures.
-
-
- <a name="DTypes-PredefinedAtomic">
- <h2>6. Predefined Atomic Datatypes</h2>
- </a>
-
- <p>The library predefines a modest number of datatypes having
- names like <code>H5T_<em>arch</em>_<em>base</em></code> where
- <em>arch</em> is an architecture name and <em>base</em> is a
- programming type name. New types can be derived from the
- predifined types by copying the predefined type (see
- <code>H5Tcopy()</code>) and then modifying the result.
-
- <p>
- <center>
- <table align=center width="80%">
- <tr>
- <th align=left width="20%">Architecture Name</th>
- <th align=left width="80%">Description</th>
- </tr>
-
- <tr valign=top>
- <td><code>IEEE</code></td>
- <td>This architecture defines standard floating point
- types in various byte orders.</td>
- </tr>
-
- <tr valign=top>
- <td><code>STD</code></td>
- <td>This is an architecture that contains semi-standard
- datatypes like signed two's complement integers,
- unsigned integers, and bitfields in various byte
- orders.</td>
- </tr>
-
- <tr valign=top>
- <td><code>UNIX</code></td>
- <td>Types which are specific to Unix operating systems are
- defined in this architecture. The only type currently
- defined is the Unix date and time types
- (<code>time_t</code>).</td>
- </tr>
-
- <tr valign=top>
- <td><code>C<br>FORTRAN</code></td>
- <td>Types which are specific to the C or Fortran
- programming languages are defined in these
- architectures. For instance, <code>H5T_C_STRING</code>
- defines a base string type with null termination which
- can be used to derive string types of other
- lengths.</td>
- </tr>
-
- <tr valign=top>
- <td><code>NATIVE</code></td>
- <td>This architecture contains C-like datatypes for the
- machine on which the library was compiled. The types
- were actually defined by running the
- <code>H5detect</code> program when the library was
- compiled. In order to be portable, applications should
- almost always use this architecture to describe things
- in memory.</td>
- </tr>
-
- <tr valign=top>
- <td><code>CRAY</code></td>
- <td>Cray architectures. These are word-addressable,
- big-endian systems with non-IEEE floating point.</td>
- </tr>
-
- <tr valign=top>
- <td><code>INTEL</code></td>
- <td>All Intel and compatible CPU's including 80286, 80386,
- 80486, Pentium, Pentium-Pro, and Pentium-II. These are
- little-endian systems with IEEE floating-point.</td>
- </tr>
-
- <tr valign=top>
- <td><code>MIPS</code></td>
- <td>All MIPS CPU's commonly used in SGI systems. These
- are big-endian systems with IEEE floating-point.</td>
- </tr>
-
- <tr valign=top>
- <td><code>ALPHA</code></td>
- <td>All DEC Alpha CPU's, little-endian systems with IEEE
- floating-point.</td>
- </tr>
- </table>
- </center>
-
- <p>The base name of most types consists of a letter, a precision
- in bits, and an indication of the byte order. The letters are:
-
- <p>
- <center>
- <table border align=center width="40%">
- <tr>
- <td align=center width="30%">B</td>
- <td width="70%">Bitfield</td>
- </tr>
- <tr>
- <td align=center>D</td>
- <td>Date and time</td>
- </tr>
- <tr>
- <td align=center>F</td>
- <td>Floating point</td>
- </tr>
- <tr>
- <td align=center>I</td>
- <td>Signed integer</td>
- </tr>
- <tr>
- <td align=center>R</td>
- <td>References</td>
- </tr>
- <tr>
- <td align=center>S</td>
- <td>Character string</td>
- </tr>
- <tr>
- <td align=center>U</td>
- <td>Unsigned integer</td>
- </tr>
- </table>
- </center>
-
- <p>The byte order is a two-letter sequence:
-
- <p>
- <center>
- <table border align=center width="40%">
- <tr>
- <td align=center width="30%">BE</td>
- <td width="70%">Big endian</td>
- </tr>
- <tr>
- <td align=center>LE</td>
- <td>Little endian</td>
- </tr>
- <tr>
- <td align=center>VX</td>
- <td>Vax order</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr>
- <th align=left><br><br>Example</th>
- <th align=left><br><br>Description</th>
- </tr>
-
- <tr valign=top>
- <td><code>H5T_IEEE_F64LE</code></td>
- <td>Eight-byte, little-endian, IEEE floating-point</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_IEEE_F32BE</code></td>
- <td>Four-byte, big-endian, IEEE floating point</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_STD_I32LE</code></td>
- <td>Four-byte, little-endian, signed two's complement integer</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_STD_U16BE</code></td>
- <td>Two-byte, big-endian, unsigned integer</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_UNIX_D32LE</code></td>
- <td>Four-byte, little-endian, time_t</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_C_S1</code></td>
- <td>One-byte, null-terminated string of eight-bit characters</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_INTEL_B64</code></td>
- <td>Eight-byte bit field on an Intel CPU</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_CRAY_F64</code></td>
- <td>Eight-byte Cray floating point</td>
- </tr>
- <tr valign=top>
- <td><code>H5T_STD_ROBJ</code></td>
- <td>Reference to an entire object in a file</td>
- </tr>
- </table>
- </center>
-
- <p>The <code>NATIVE</code> architecture has base names which don't
- follow the same rules as the others. Instead, native type names
- are similar to the C type names. Here are some examples:
-
- <p>
- <center>
- <table align=center width="80%">
- <tr>
- <th align=left><br><br>Example</th>
- <th align=left><br><br>Corresponding C Type</th>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_CHAR</code></td>
- <td><code>char</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_SCHAR</code></td>
- <td><code>signed char</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_UCHAR</code></td>
- <td><code>unsigned char</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_SHORT</code></td>
- <td><code>short</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_USHORT</code></td>
- <td><code>unsigned short</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_INT</code></td>
- <td><code>int</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_UINT</code></td>
- <td><code>unsigned</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_LONG</code></td>
- <td><code>long</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_ULONG</code></td>
- <td><code>unsigned long</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_LLONG</code></td>
- <td><code>long long</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_ULLONG</code></td>
- <td><code>unsigned long long</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_FLOAT</code></td>
- <td><code>float</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_DOUBLE</code></td>
- <td><code>double</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_LDOUBLE</code></td>
- <td><code>long double</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_HSIZE</code></td>
- <td><code>hsize_t</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_HSSIZE</code></td>
- <td><code>hssize_t</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_HERR</code></td>
- <td><code>herr_t</code></td>
- </tr>
- <tr>
- <td><code>H5T_NATIVE_HBOOL</code></td>
- <td><code>hbool_t</code></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: A 128-bit
- integer</h4></caption>
- <tr>
- <td>
- <p>To create a 128-bit, little-endian signed integer
- type one could use the following (increasing the
- precision of a type automatically increases the total
- size):
-
- <p><code><pre>
-hid_t new_type = H5Tcopy (H5T_NATIVE_INT);
-H5Tset_precision (new_type, 128);
-H5Tset_order (new_type, H5T_ORDER_LE);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: An 80-character
- string</h4></caption>
- <tr>
- <td>
- <p>To create an 80-byte null terminated string type one
- might do this (the offset of a character string is
- always zero and the precision is adjusted
- automatically to match the size):
-
- <p><code><pre>
-hid_t str80 = H5Tcopy (H5T_C_S1);
-H5Tset_size (str80, 80);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>A complete list of the datatypes predefined in HDF5 can be found in
- <a href="PredefDTypes.html"><cite>HDF5 Predefined Datatypes</cite></a>
- in the <a href="RM_H5Front.html"><cite>HDF5 Reference Manual</cite></a>.
-
-
- <h2>7. Defining Compound Datatypes</h2>
-
- <p>Unlike atomic datatypes which are derived from other atomic
- datatypes, compound datatypes are created from scratch. First,
- one creates an empty compound datatype and specifies it's total
- size. Then members are added to the compound datatype in any
- order.
-
- <p>Usually a C struct will be defined to hold a data point in
- memory, and the offsets of the members in memory will be the
- offsets of the struct members from the beginning of an instance
- of the struct.
-
- <dl>
- <dt><code>HOFFSET(s,m)</code>
- <dd>This macro computes the offset of member <em>m</em> within
- a struct <em>s</em>.
- <dt><code>offsetof(s,m)</code>
- <dd>This macro defined in <code>stddef.h</code> does
- exactly the same thing as the <code>HOFFSET()</code> macro.
- </dl>
-
- <p>Each member must have a descriptive name which is the
- key used to uniquely identify the member within the compound
- datatype. A member name in an HDF5 datatype does not
- necessarily have to be the same as the name of the member in the
- C struct, although this is often the case. Nor does one need to
- define all members of the C struct in the HDF5 compound
- datatype (or vice versa).
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: A simple struct</h4></caption>
- <tr>
- <td>
- <p>An HDF5 datatype is created to describe complex
- numbers whose type is defined by the
- <code>complex_t</code> struct.
-
- <p><code><pre>
-typedef struct {
- double re; /*real part*/
- double im; /*imaginary part*/
-} complex_t;
-
-hid_t complex_id = H5Tcreate (H5T_COMPOUND, sizeof tmp);
-H5Tinsert (complex_id, "real", HOFFSET(complex_t,re),
- H5T_NATIVE_DOUBLE);
-H5Tinsert (complex_id, "imaginary", HOFFSET(complex_t,im),
- H5T_NATIVE_DOUBLE);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>Member alignment is handled by the <code>HOFFSET</code>
- macro. However, data stored on disk does not require alignment,
- so unaligned versions of compound data structures can be created
- to improve space efficiency on disk. These unaligned compound
- datatypes can be created by computing offsets by hand to
- eliminate inter-member padding, or the members can be packed by
- calling <code>H5Tpack()</code> (which modifies a datatype
- directly, so it is usually preceded by a call to
- <code>H5Tcopy()</code>):
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: A packed struct</h4></caption>
- <tr>
- <td>
- <p>This example shows how to create a disk version of a
- compound datatype in order to store data on disk in
- as compact a form as possible. Packed compound
- datatypes should generally not be used to describe memory
- as they may violate alignment constraints for the
- architecture being used. Note also that using a
- packed datatype for disk storage may involve a higher
- data conversion cost.
- <p><code><pre>
-hid_t complex_disk_id = H5Tcopy (complex_id);
-H5Tpack (complex_disk_id);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: A flattened struct</h4></caption>
- <tr>
- <td>
- <p>Compound datatypes that have a compound datatype
- member can be handled two ways. This example shows
- that the compound datatype can be flattened,
- resulting in a compound type with only atomic
- members.
-
- <p><code><pre>
-typedef struct {
- complex_t x;
- complex_t y;
-} surf_t;
-
-hid_t surf_id = H5Tcreate (H5T_COMPOUND, sizeof tmp);
-H5Tinsert (surf_id, "x-re", HOFFSET(surf_t,x.re),
- H5T_NATIVE_DOUBLE);
-H5Tinsert (surf_id, "x-im", HOFFSET(surf_t,x.im),
- H5T_NATIVE_DOUBLE);
-H5Tinsert (surf_id, "y-re", HOFFSET(surf_t,y.re),
- H5T_NATIVE_DOUBLE);
-H5Tinsert (surf_id, "y-im", HOFFSET(surf_t,y.im),
- H5T_NATIVE_DOUBLE);
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: A nested struct</h4></caption>
- <tr>
- <td>
- <p>However, when the <code>complex_t</code> is used
- often it becomes inconvenient to list its members over
- and over again. So the alternative approach to
- flattening is to define a compound datatype and then
- use it as the type of the compound members, as is done
- here (the typedefs are defined in the previous
- examples).
-
- <p><code><pre>
-hid_t complex_id, surf_id; /*hdf5 datatypes*/
-
-complex_id = H5Tcreate (H5T_COMPOUND, sizeof c);
-H5Tinsert (complex_id, "re", HOFFSET(complex_t,re),
- H5T_NATIVE_DOUBLE);
-H5Tinsert (complex_id, "im", HOFFSET(complex_t,im),
- H5T_NATIVE_DOUBLE);
-
-surf_id = H5Tcreate (H5T_COMPOUND, sizeof s);
-H5Tinsert (surf_id, "x", HOFFSET(surf_t,x), complex_id);
-H5Tinsert (surf_id, "y", HOFFSET(surf_t,y), complex_id);
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
-
-
- <a name="Datatypes_Enum">&nbsp;</a>
- <h2>8. Enumeration Datatypes</h2>
-
- <h3>8.1. Introduction</h3>
-
- <p>An HDF enumeration datatype is a 1:1 mapping between a set of
- symbols and a set of integer values, and an order is imposed on
- the symbols by their integer values. The symbols are passed
- between the application and library as character strings and all
- the values for a particular enumeration type are of the same
- integer type, which is not necessarily a native type.
-
- <h3>8.2. Creation</h3>
-
- <p>Creation of an enumeration datatype resembles creation of a
- compound datatype: first an empty enumeration type is created,
- then members are added to the type, then the type is optionally
- locked.
-
- <dl>
- <dt><code>hid_t H5Tcreate(H5T_class_t <em>type_class</em>,
- size_t <em>size</em>)</code>
- <dd>This function creates a new empty enumeration datatype based
- on a native signed integer type. The first argument is the
- constant <code>H5T_ENUM</code> and the second argument is the
- size in bytes of the native integer on which the enumeration
- type is based. If the architecture does not support a native
- signed integer of the specified size then an error is
- returned.
-
- <pre>
-/* Based on a native signed short */
-hid_t hdf_en_colors = H5Tcreate(H5T_ENUM, sizeof(short));</pre>
-
-
- <dt><code>hid_t H5Tenum_create(hid_t <em>base</em>)</code>
- <dd>This function creates a new empty enumeration datatype based
- on some integer datatype <em>base</em> and is a
- generalization of the <code>H5Tcreate()</code> function. This
- function is useful when creating an enumeration type based on
- some non-native integer datatype, but it can be used for
- native types as well.
-
- <pre>
-/* Based on a native unsigned short */
-hid_t hdf_en_colors_1 = H5Tenum_create(H5T_NATIVE_USHORT);
-
-/* Based on a MIPS 16-bit unsigned integer */
-hid_t hdf_en_colors_2 = H5Tenum_create(H5T_MIPS_UINT16);
-
-/* Based on a big-endian 16-bit unsigned integer */
-hid_t hdf_en_colors_3 = H5Tenum_create(H5T_STD_U16BE);</pre>
-
-
- <dt><code>herr_t H5Tenum_insert(hid_t <em>etype</em>, const char
- *<em>symbol</em>, void *<em>value</em>)</code>
- <dd>Members are inserted into the enumeration datatype
- <em>etype</em> with this function. Each member has a symbolic
- name <em>symbol</em> and some integer representation
- <em>value</em>. The <em>value</em> argument must point to a value
- of the same datatype as specified when the enumeration type
- was created. The order of member insertion is not important
- but all symbol names and values must be unique within a
- particular enumeration type.
-
- <pre>
-short val;
-H5Tenum_insert(hdf_en_colors, "RED", (val=0,&amp;val));
-H5Tenum_insert(hdf_en_colors, "GREEN", (val=1,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLUE", (val=2,&amp;val));
-H5Tenum_insert(hdf_en_colors, "WHITE", (val=3,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLACK", (val=4,&amp;val));</pre>
-
-
- <dt><code>herr_t H5Tlock(hid_t <em>etype</em>)</code>
- <dd>This function locks a datatype so it cannot be modified or
- freed unless the entire HDF5 library is closed. Its use is
- completely optional but using it on an application datatype
- makes that datatype act like a predefined datatype.
-
- <pre>
-H5Tlock(hdf_en_colors);</pre>
-
- </dl>
-
- <h3>8.3. Integer Operations</h3>
-
- <p>Because an enumeration datatype is derived from an integer
- datatype, any operation which can be performed on integer
- datatypes can also be performed on enumeration datatypes. This
- includes:
-
- <p>
- <center>
- <table>
- <tr>
- <td><code>H5Topen()</code></td>
- <td><code>H5Tcreate()</code></td>
- <td><code>H5Tcopy()</code></td>
- <td><code>H5Tclose()</code></td>
- </tr><tr>
- <td><code>H5Tequal()</code></td>
- <td><code>H5Tlock()</code></td>
- <td><code>H5Tcommit()</code></td>
- <td><code>H5Tcommitted()</code></td>
- </tr><tr>
- <td><code>H5Tget_class()</code></td>
- <td><code>H5Tget_size()</code></td>
- <td><code>H5Tget_order()</code></td>
- <td><code>H5Tget_pad()</code></td>
- </tr><tr>
- <td><code>H5Tget_precision()</code></td>
- <td><code>H5Tget_offset()</code></td>
- <td><code>H5Tget_sign()</code></td>
- <td><code>H5Tset_size()</code></td>
- </tr><tr>
- <td><code>H5Tset_order()</code></td>
- <td><code>H5Tset_precision()</code></td>
- <td><code>H5Tset_offset()</code></td>
- <td><code>H5Tset_pad()</code></td>
- </tr><tr>
- <td><code>H5Tset_sign()</code></td>
- </tr>
- </table>
- </center>
-
- <p>In addition, the new function <code>H5Tget_super()</code> will
- be defined for all datatypes that are derived from existing
- types (currently just enumeration types).
-
- <dl>
- <dt><code>hid_t H5Tget_super(hid_t <em>type</em>)</code>
- <dd>Return the datatype from which <em>type</em> is
- derived. When <em>type</em> is an enumeration datatype then
- the returned value will be an integer datatype but not
- necessarily a native type. One use of this function would be
- to create a new enumeration type based on the same underlying
- integer type and values but with possibly different symbols.
-
- <pre>
-hid_t itype = H5Tget_super(hdf_en_colors);
-hid_t hdf_fr_colors = H5Tenum_create(itype);
-H5Tclose(itype);
-
-short val;
-H5Tenum_insert(hdf_fr_colors, "ouge", (val=0,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "vert", (val=1,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "bleu", (val=2,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "blanc", (val=3,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "noir", (val=4,&amp;val));
-H5Tlock(hdf_fr_colors);</pre>
- </dl>
-
- <h3>8.4. Type Functions</h3>
-
- <p>A small set of functions is available for querying properties
- of an enumeration type. These functions are likely to be used
- by browsers to display datatype information.
-
- <dl>
- <dt><code>int H5Tget_nmembers(hid_t <em>etype</em>)</code>
- <dd>When given an enumeration datatype <em>etype</em> this
- function returns the number of members defined for that
- type. This function is already implemented for compound
- datatypes.
-
- <br><br>
- <dt><code>char *H5Tget_member_name(hid_t <em>etype</em>, unsigned
- <em>membno</em>)</code>
- <dd>Given an enumeration datatype <em>etype</em> this function
- returns the symbol name for the member indexed by
- <em>membno</em>. Members are numbered from zero to
- <em>N</em>-1 where <em>N</em> is the return value from
- <code>H5Tget_nmembers()</code>. The members are stored in no
- particular order. This function is already implemented for
- compound datatypes. If an error occurs then the null pointer
- is returned. The return value should be freed by calling
- <code>free()</code>.
-
- <br><br>
- <dt><code>herr_t H5Tget_member_value(hid_t <em>etype</em>, unsigned
- <em>membno</em>, void *<em>value</em>/*out*/)</code>
- <dd>Given an enumeration datatype <em>etype</em> this function
- returns the value associated with the member indexed by
- <em>membno</em> (as described for
- <code>H5Tget_member_name()</code>). The value returned
- is in the domain of the underlying integer
- datatype which is often a native integer type. The
- application should ensure that the memory pointed to by
- <em>value</em> is large enough to contain the result (the size
- can be obtained by calling <code>H5Tget_size()</code> on
- either the enumeration type or the underlying integer type
- when the type is not known by the C compiler.
-
- <pre>
-int n = H5Tget_nmembers(hdf_en_colors);
-unsigned u;
-for (u=0; u&lt;(unsigned)n; u++) {
- char *symbol = H5Tget_member_name(hdf_en_colors, u);
- short val;
- H5Tget_member_value(hdf_en_colors, u, &amp;val);
- printf("#%u %20s = %d\n", u, symbol, val);
- free(symbol);
-}</pre>
-
- <p>
- Output:
- <pre>
-#0 BLACK = 4
-#1 BLUE = 2
-#2 GREEN = 1
-#3 RED = 0
-#4 WHITE = 3</pre>
- </dl>
-
- <h3>8.5. Data Functions</h3>
-
- <p>In addition to querying about the enumeration type properties,
- an application may want to make queries about enumerated
- data. These functions perform efficient mappings between symbol
- names and values.
-
- <dl>
- <dt><code>herr_t H5Tenum_valueof(hid_t <em>etype</em>, const char
- *<em>symbol</em>, void *<em>value</em>/*out*/)</code>
- <dd>Given an enumeration datatype <em>etype</em> this function
- returns through <em>value</em> the bit pattern associated with
- the symbol name <em>symbol</em>. The <em>value</em> argument
- should point to memory which is large enough to hold the result,
- which is returned as the underlying integer datatype specified
- when the enumeration type was created, often a native integer
- type.
-
- <br><br>
- <dt><code>herr_t H5Tenum_nameof(hid_t <em>etype</em>, void
- *<em>value</em>, char *<em>symbol</em>, size_t
- <em>size</em>)</code>
- <dd>This function translates a bit pattern pointed to by
- <em>value</em> to a symbol name according to the mapping
- defined in the enumeration datatype <em>etype</em> and stores
- at most <em>size</em> characters of that name (counting the
- null terminator) to the <em>symbol</em> buffer. If the name is
- longer than the result buffer then the result is not null
- terminated and the function returns failure. If <em>value</em>
- points to a bit pattern which is not in the domain of the
- enumeration type then the first byte of the <em>symbol</em>
- buffer is set to zero and the function fails.
-
- <pre>
-short data[1000] = {4, 2, 0, 0, 5, 1, ...};
-int i;
-char symbol[32];
-
-for (i=0; i&lt;1000; i++) {
- if (H5Tenum_nameof(hdf_en_colors, data+i, symbol,
- sizeof symbol))&lt;0) {
- if (symbol[0]) {
- strcpy(symbol+sizeof(symbol)-4, "...");
- } else {
- strcpy(symbol, "UNKNOWN");
- }
- }
- printf("%d %s\n", data[i], symbol);
-}
-printf("}\n");</pre>
-
- <p>
- Output:
- <pre>
-4 BLACK
-2 BLUE
-0 RED
-0 RED
-5 UNKNOWN
-1 GREEN
-...</pre>
- </dl>
-
- <h3>8.6. Conversion</h3>
-
- <p>Enumerated data can be converted from one type to another
- provided the destination enumeration type contains all the
- symbols of the source enumeration type. The conversion operates
- by matching up the symbol names of the source and destination
- enumeration types to build a mapping from source value to
- destination value. For instance, if we are translating from an
- enumeration type that defines a sequence of integers as the
- values for the colors to a type that defines a different bit for
- each color then the mapping might look like this:
-
- <p><img src="EnumMap.gif" alt="Enumeration Mapping">
-
- <p>That is, a source value of <code>2</code> which corresponds to
- <code>BLUE</code> would be mapped to <code>0x0004</code>. The
- following code snippet builds the second datatype, then
- converts a raw data array from one datatype to another, and
- then prints the result.
-
- <pre>
-/* Create a new enumeration type */
-short val;
-hid_t bits = H5Tcreate(H5T_ENUM, sizeof val);
-H5Tenum_insert(bits, "RED", (val=0x0001,&amp;val));
-H5Tenum_insert(bits, "GREEN", (val=0x0002,&amp;val));
-H5Tenum_insert(bits, "BLUE", (val=0x0004,&amp;val));
-H5Tenum_insert(bits, "WHITE", (val=0x0008,&amp;val));
-H5Tenum_insert(bits, "BLACK", (val=0x0010,&amp;val));
-
-/* The data */
-short data[6] = {1, 4, 2, 0, 3, 5};
-
-/* Convert the data from one type to another */
-H5Tconvert(hdf_en_colors, bits, 5, data, NULL, plist_id);
-
-/* Print the data */
-for (i=0; i&lt;6; i++) {
- printf("0x%04x\n", (unsigned)(data[i]));
-}</pre>
-
- <p>
- Output:
- <pre>
-
-0x0002
-0x0010
-0x0004
-0x0001
-0x0008
-0xffff</pre>
-
- <p>If the source data stream contains values which are not in the
- domain of the conversion map then an overflow exception is
- raised within the library, causing the application defined
- overflow handler to be invoked (see
- <code>H5Tset_overflow()</code>). If no overflow handler is
- defined then all bits of the destination value will be set.
-
- <p>The HDF library will not provide conversions between enumerated
- data and integers although the application is free to do so
- (this is a policy we apply to all classes of HDF datatypes).
- However, since enumeration types are derived from
- integer types it is permissible to treat enumerated data as
- integers and perform integer conversions in that context.
-
- <h3>8.7. Symbol Order</h3>
-
- <p>Symbol order is determined by the integer values associated
- with each symbol. When the integer datatype is a native type,
- testing the relative order of two symbols is an easy process:
- simply compare the values of the symbols. If only the symbol
- names are available then the values must first be determined by
- calling <code>H5Tenum_valueof()</code>.
-
- <pre>
-short val1, val2;
-H5Tenum_valueof(hdf_en_colors, "WHITE", &amp;val1);
-H5Tenum_valueof(hdf_en_colors, "BLACK", &amp;val2);
-if (val1 &lt; val2) ...</pre>
-
- <p>When the underlying integer datatype is not a native type then
- the easiest way to compare symbols is to first create a similar
- enumeration type that contains all the same symbols but has a
- native integer type (HDF type conversion features can be used to
- convert the non-native values to native values). Once we have a
- native type we can compare symbol order as just described. If
- <code>foreign</code> is some non-native enumeration type then a
- native type can be created as follows:
-
- <pre>
-int n = H5Tget_nmembers(foreign);
-hid_t itype = H5Tget_super(foreign);
-void *val = malloc(n * MAX(H5Tget_size(itype), sizeof(int)));
-char *name = malloc(n * sizeof(char*));
-unsigned u;
-
-/* Get foreign type information */
-for (u=0; u&lt;(unsigned)n; u++) {
- name[u] = H5Tget_member_name(foreign, u);
- H5Tget_member_value(foreign, u,
- (char*)val+u*H5Tget_size(foreign));
-}
-
-/* Convert integer values to new type */
-H5Tconvert(itype, H5T_NATIVE_INT, n, val, NULL, plist_id);
-
-/* Build a native type */
-hid_t native = H5Tenum_create(H5T_NATIVE_INT);
-for (i=0; i&lt;n; i++) {
- H5Tenum_insert(native, name[i], ((int*)val)[i]);
- free(name[i]);
-}
-free(name);
-free(val);</pre>
-
- <p>It is also possible to convert enumerated data to a new type
- that has a different order defined for the symbols. For
- instance, we can define a new type, <code>reverse</code> that
- defines the same five colors but in the reverse order.
-
- <pre>
-short val;
-int i;
-char sym[8];
-short data[5] = {0, 1, 2, 3, 4};
-
-hid_t reverse = H5Tenum_create(H5T_NATIVE_SHORT);
-H5Tenum_insert(reverse, "BLACK", (val=0,&amp;val));
-H5Tenum_insert(reverse, "WHITE", (val=1,&amp;val));
-H5Tenum_insert(reverse, "BLUE", (val=2,&amp;val));
-H5Tenum_insert(reverse, "GREEN", (val=3,&amp;val));
-H5Tenum_insert(reverse, "RED", (val=4,&amp;val));
-
-/* Print data */
-for (i=0; i&lt;5; i++) {
- H5Tenum_nameof(hdf_en_colors, data+i, sym, sizeof sym);
- printf ("%d %s\n", data[i], sym);
-}
-
-puts("Converting...");
-H5Tconvert(hdf_en_colors, reverse, 5, data, NULL, plist_id);
-
-/* Print data */
-for (i=0; i&lt;5; i++) {
- H5Tenum_nameof(reverse, data+i, sym, sizeof sym);
- printf ("%d %s\n", data[i], sym);
-}</pre>
-
- <p>
- Output:
- <pre>
-0 RED
-1 GREEN
-2 BLUE
-3 WHITE
-4 BLACK
-Converting...
-4 RED
-3 GREEN
-2 BLUE
-1 WHITE
-0 BLACK</pre>
-
- <h3>8.8. Equality</h3>
-
- <p>The order that members are inserted into an enumeration type is
- unimportant; the important part is the associations between the
- symbol names and the values. Thus, two enumeration datatypes
- will be considered equal if and only if both types have the same
- symbol/value associations and both have equal underlying integer
- datatypes. Type equality is tested with the
- <code>H5Tequal()</code> function.
-
- <h3>8.9. Interacting with C's <code>enum</code> Type</h3>
-
- <p>Although HDF enumeration datatypes are similar to C
- <code>enum</code> datatypes, there are some important
- differences:
-
- <p>
- <center>
- <table border width="80%">
- <tr>
- <th>Difference</th>
- <th>Motivation/Implications</th>
- </tr>
-
- <tr>
- <td valign=top>Symbols are unquoted in C but quoted in
- HDF.</td>
- <td valign=top>This allows the application to manipulate
- symbol names in ways that are not possible with C.</td>
- </tr>
-
- <tr>
- <td valign=top>The C compiler automatically replaces all
- symbols with their integer values but HDF requires
- explicit calls to do the same.</td>
- <td valign=top>C resolves symbols at compile time while
- HDF resolves symbols at run time.</td>
- </tr>
-
- <tr>
- <td valign=top>The mapping from symbols to integers is
- <em>N</em>:1 in C but 1:1 in HDF.</td>
- <td valign=top>HDF can translate from value to name
- uniquely and large <code>switch</code> statements are
- not necessary to print values in human-readable
- format.</td>
- </tr>
-
- <tr>
- <td valign=top>A symbol must appear in only one C
- <code>enum</code> type but may appear in multiple HDF
- enumeration types.</td>
- <td valign=top>The translation from symbol to value in HDF
- requires the datatype to be specified while in C the
- datatype is not necessary because it can be inferred
- from the symbol.</td>
- </tr>
-
- <tr>
- <td valign=top>The underlying integer value is always a
- native integer in C but can be a foreign integer type in
- HDF.</td>
- <td valign=top>This allows HDF to describe data that might
- reside on a foreign architecture, such as data stored in
- a file.</td>
- </tr>
-
- <tr>
- <td valign=top>The sign and size of the underlying integer
- datatype is chosen automatically by the C compiler but
- must be fully specified with HDF.</td>
- <td valign=top>Since HDF doesn't require finalization of a
- datatype, complete specification of the type must be
- supplied before the type is used. Requiring that
- information at the time of type creation was a design
- decision to simplify the library.</td>
- </tr>
- </table>
- </center>
-
- <p>The examples below use the following C datatypes:
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-/* English color names */
-typedef enum {
- RED,
- GREEN,
- BLUE,
- WHITE,
- BLACK
-} c_en_colors;
-
-/* Spanish color names, reverse order */
-typedef enum {
- NEGRO
- BLANCO,
- AZUL,
- VERDE,
- ROJO,
-} c_sp_colors;
-
-/* No enum definition for French names */
- </pre></code>
- </td>
- </tr>
- </table>
-
- <h4>Creating HDF Types from C Types</h4>
-
- <p>An HDF enumeration datatype can be created from a C
- <code>enum</code> type simply by passing pointers to the C
- <code>enum</code> values to <code>H5Tenum_insert()</code>. For
- instance, to create HDF types for the <code>c_en_colors</code>
- type shown above:
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-
-c_en_colors val;
-hid_t hdf_en_colors = H5Tcreate(H5T_ENUM, sizeof(c_en_colors));
-H5Tenum_insert(hdf_en_colors, "RED", (val=RED, &amp;val));
-H5Tenum_insert(hdf_en_colors, "GREEN", (val=GREEN,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLUE", (val=BLUE, &amp;val));
-H5Tenum_insert(hdf_en_colors, "WHITE", (val=WHITE,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLACK", (val=BLACK,&amp;val));</pre></code>
- </td>
- </tr>
- </table>
-
- <h4>Name Changes between Applications</h4>
-
- <p>Occassionally two applicatons wish to exchange data but they
- use different names for the constants they exchange. For
- instance, an English and a Spanish program may want to
- communicate color names although they use different symbols in
- the C <code>enum</code> definitions. The communication is still
- possible although the applications must agree on common terms
- for the colors. The following example shows the Spanish code to
- read the values assuming that the applications have agreed that
- the color information will be exchanged using Enlish color
- names:
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-
-c_sp_colors val, data[1000];
-hid_t hdf_sp_colors = H5Tcreate(H5T_ENUM, sizeof(c_sp_colors));
-H5Tenum_insert(hdf_sp_colors, "RED", (val=ROJO, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "GREEN", (val=VERDE, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "BLUE", (val=AZUL, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "WHITE", (val=BLANCO, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "BLACK", (val=NEGRO, &amp;val));
-
-H5Dread(dataset, hdf_sp_colors, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);</pre></code>
- </td>
- </tr>
- </table>
-
-
- <h4>Symbol Ordering across Applications</h4>
-
- <p>Since symbol ordering is completely determined by the integer values
- assigned to each symbol in the <code>enum</code> definition,
- ordering of <code>enum</code> symbols cannot be preserved across
- files like with HDF enumeration types. HDF can convert from one
- application's integer values to the other's so a symbol in one
- application's C <code>enum</code> gets mapped to the same symbol
- in the other application's C <code>enum</code>, but the relative
- order of the symbols is not preserved.
-
- <p>For example, an application may be defined to use the
- definition of <code>c_en_colors</code> defined above where
- <code>WHITE</code> is less than <code>BLACK</code>, but some
- other application might define the colors in some other
- order. If each application defines an HDF enumeration type based
- on that application's C <code>enum</code> type then HDF will
- modify the integer values as data is communicated from one
- application to the other so that a <code>RED</code> value
- in the first application is also a <code>RED</code> value in the
- other application.
-
- <p>A case of this reordering of symbol names was also shown in the
- previous code snippet (as well as a change of language), where
- HDF changed the integer values so 0 (<code>RED</code>) in the
- input file became 4 (<code>ROJO</code>) in the <code>data</code>
- array. In the input file, <code>WHITE</code> was less than
- <code>BLACK</code>; in the application the opposite is true.
-
- <p>In fact, the ability to change the order of symbols is often
- convenient when the enumeration type is used only to group
- related symbols that don't have any well defined order
- relationship.
-
- <h4>Internationalization</h4>
-
- <p>The HDF enumeration type conversion features can also be used
- to provide internationalization of debugging output. A program
- written with the <code>c_en_colors</code> datatype could define
- a separate HDF datatype for languages such as English, Spanish,
- and French and cast the enumerated value to one of these HDF
- types to print the result.
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-
-c_en_colors val, *data=...;
-
-hid_t hdf_sp_colors = H5Tcreate(H5T_ENUM, sizeof val);
-H5Tenum_insert(hdf_sp_colors, "ROJO", (val=RED, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "VERDE", (val=GREEN, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "AZUL", (val=BLUE, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "BLANCO", (val=WHITE, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "NEGRO", (val=BLACK, &amp;val));
-
-hid_t hdf_fr_colors = H5Tcreate(H5T_ENUM, sizeof val);
-H5Tenum_insert(hdf_fr_colors, "OUGE", (val=RED, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "VERT", (val=GREEN, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "BLEU", (val=BLUE, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "BLANC", (val=WHITE, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "NOIR", (val=BLACK, &amp;val));
-
-void
-nameof(lang_t language, c_en_colors val, char *name, size_t size)
-{
- switch (language) {
- case ENGLISH:
- H5Tenum_nameof(hdf_en_colors, &amp;val, name, size);
- break;
- case SPANISH:
- H5Tenum_nameof(hdf_sp_colors, &amp;val, name, size);
- break;
- case FRENCH:
- H5Tenum_nameof(hdf_fr_colors, &amp;val, name, size);
- break;
- }
-}</pre></code>
- </td>
- </tr>
- </table>
-
- <h3>8.10. Goals That Have Been Met</h3>
-
- <p>The main goal of enumeration types is to provide communication
- of enumerated data using symbolic equivalence. That is, a
- symbol written to a dataset by one application should be read as
- the same symbol by some other application.
-
- <p>
- <table width="90%">
- <tr>
- <td valign=top><b>Architecture Independence</b></td>
- <td valign=top>Two applications shall be able to exchange
- enumerated data even when the underlying integer values
- have different storage formats. HDF accomplishes this for
- enumeration types by building them upon integer types.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Preservation of Order Relationship</b></td>
- <td valign=top>The relative order of symbols shall be
- preserved between two applications that use equivalent
- enumeration datatypes. Unlike numeric values that have
- an implicit ordering, enumerated data has an explicit
- order defined by the enumeration datatype and HDF
- records this order in the file.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Order Independence</b></td>
- <td valign=top>An application shall be able to change the
- relative ordering of the symbols in an enumeration
- datatype. This is accomplished by defining a new type with
- different integer values and converting data from one type
- to the other.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Subsets</b></td>
- <td valign=top>An application shall be able to read
- enumerated data from an archived dataset even after the
- application has defined additional members for the
- enumeration type. An application shall be able to write
- to a dataset when the dataset contains a superset of the
- members defined by the application. Similar rules apply
- for in-core conversions between enumerated datatypes.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Targetable</b></td>
- <td valign=top>An application shall be able to target a
- particular architecture or application when storing
- enumerated data. This is accomplished by allowing
- non-native underlying integer types and converting the
- native data to non-native data.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Efficient Data Transfer</b></td>
- <td valign=top>An application that defines a file dataset
- that corresponds to some native C enumerated data array
- shall be able to read and write to that dataset directly
- using only Posix read and write functions. HDF already
- optimizes this case for integers, so the same optimization
- will apply to enumerated data.
- </tr>
-
- <tr>
- <td valign=top><b>Efficient Storage</b></td>
- <td valign=top>Enumerated data shall be stored in a manner
- which is space efficient. HDF stores the enumerated data
- as integers and allows the application to chose the size
- and format of those integers.</td>
- </tr>
- </table>
-
-
-
-
-
-
-
-<h2>9. Variable-length Datatypes</h2>
-
-<h3>9.1. Overview And Justification</h3>
-
-Variable-length (VL) datatypes are sequences of an existing datatype
-(atomic, VL, or compound) which are not fixed in length from one dataset location
-to another. In essence, they are similar to C character strings -- a sequence of
-a type which is pointed to by a particular type of <em>pointer</em> -- although
-they are implemented more closely to FORTRAN strings by including an explicit
-length in the pointer instead of using a particular value to terminate the
-sequence.
-
-<p>
-VL datatypes are useful to the scientific community in many different ways,
-some of which are listed below:
-<ul>
- <li>Ragged arrays: Multi-dimensional ragged arrays can be implemented with
- the last (fastest changing) dimension being ragged by using a
- VL datatype as the type of the element stored. (Or as a field in a
- compound datatype.)
- <li>Fractal arrays: If a compound datatype has a VL field of another compound
- type with VL fields (a <em>nested</em> VL datatype), this can be used to
- implement ragged arrays of ragged arrays, to whatever nesting depth is
- required for the user.
- <li>Polygon lists: A common storage requirement is to efficiently store arrays
- of polygons with different numbers of vertices. VL datatypes can be
- used to efficiently and succinctly describe an array of polygons with
- different numbers of vertices.
- <li>Character strings: Perhaps the most common use of VL datatypes will be to
- store C-like VL character strings in dataset elements or as attributes
- of objects.
- <li>Indices: An array of VL object references could be used as an index to
- all the objects in a file which contain a particular sequence of
- dataset values. Perhaps an array something like the following:
- <pre>
- Value1: Object1, Object3, Object9
- Value2: Object0, Object12, Object14, Object21, Object22
- Value3: Object2
- Value4: &lt;none&gt;
- Value5: Object1, Object10, Object12
- .
- .
- </pre>
- <li>Object Tracking: An array of VL dataset region references can be used as
- a method of tracking objects or features appearing in a sequence of
- datasets. Perhaps an array of them would look like:
- <pre>
- Feature1: Dataset1:Region, Dataset3:Region, Dataset9:Region
- Feature2: Dataset0:Region, Dataset12:Region, Dataset14:Region,
- Dataset21:Region, Dataset22:Region
- Feature3: Dataset2:Region
- Feature4: &lt;none&gt;
- Feature5: Dataset1:Region, Dataset10:Region, Dataset12:Region
- .
- .
- </pre>
-</ul>
-
-
-<h3>9.2. Variable-length Datatype Memory Management</h3>
-
-With each element possibly being of different sequence lengths for a
-dataset with a VL datatype, the memory for the VL datatype must be dynamically
-allocated. Currently there are two methods of managing the memory for
-VL datatypes: the standard C malloc/free memory allocation routines or a method
-of calling user-defined memory management routines to allocate or free memory.
-Since the memory allocated when reading (or writing) may be complicated to
-release, an HDF5 routine is provided to traverse a memory buffer and free the
-VL datatype information without leaking memory.
-
-
-<h4>Variable-length datatypes cannot be divided</h4>
-
-VL datatypes are designed so that they cannot be subdivided by the library
-with selections, etc. This design was chosen due to the complexities in
-specifying selections on each VL element of a dataset through a selection API
-that is easy to understand. Also, the selection APIs work on dataspaces, not
-on datatypes. At some point in time, we may want to create a way for
-dataspaces to have VL components to them and we would need to allow selections
-of those VL regions, but that is beyond the scope of this document.
-
-
-<h4>What happens if the library runs out of memory while reading?</h4>
-
-It is possible for a call to <code>H5Dread</code> to fail while reading in
-VL datatype information if the memory required exceeds that which is available.
-In this case, the <code>H5Dread</code> call will fail gracefully and any
-VL data which has been allocated prior to the memory shortage will be returned
-to the system via the memory management routines detailed below.
-It may be possible to design a <em>partial read</em> API function at a
-later date, if demand for such a function warrants.
-
-
-<h4>Strings as variable-length datatypes</h4>
-
-Since character strings are a special case of VL data that is implemented
-in many different ways on different machines and in different programming
-languages, they are handled somewhat differently from other VL datatypes in HDF5.
-
-<p>
-HDF5 has native VL strings for each language API, which are stored the
-same way on disk, but are exported through each language API in a natural way
-for that language. When retrieving VL strings from a dataset, users may choose
-to have them stored in memory as a native VL string or in HDF5's <code>hvl_t</code>
-struct for VL datatypes.
-
-<p>
-VL strings may be created in one of two ways: by creating a VL datatype with
-a base type of <code>H5T_NATIVE_ASCII</code>, <code>H5T_NATIVE_UNICODE</code>,
-etc., or by creating a string datatype and setting its length to
-<code>H5T_VARIABLE</code>. The second method is used to access
-native VL strings in memory. The library will convert between the two types,
-but they are stored on disk using different datatypes and have different
-memory representations.
-
-<p>
-Multi-byte character representations, such as UNICODE or <em>wide</em>
-characters in C/C++, will need the appropriate character and string datatypes
-created so that they can be described properly through the datatype API.
-Additional conversions between these types and the current ASCII characters
-will also be required.
-
-<p>
-Variable-width character strings (which might be compressed data or some
-other encoding) are not currently handled by this design. We will evaluate
-how to implement them based on user feedback.
-
-
-<h3>9.3. Variable-length Datatype API</h3>
-
-<h4>Creation</h4>
-
-VL datatypes are created with the <code>H5Tvlen_create()</code> function
-as follows:
-<dl>
- <dd><em>type_id</em> = <code>H5Tvlen_create</code>(<em>hid_t</em> <code>base_type_id</code>);
-</dl>
-
-<p>
-The base datatype will be the datatype that the sequence is composed of,
-characters for character strings, vertex coordinates for polygon lists, etc.
-The base datatype specified for the VL datatype can be of any HDF5 datatype,
-including another VL datatype, a compound datatype, or an atomic datatype.
-
-
-<h4>Query base datatype of VL datatype</h4>
-
-It may be necessary to know the base datatype of a VL datatype before
-memory is allocated, etc. The base datatype is queried with the
-<code>H5Tget_super()</code> function, described in the H5T documentation.
-
-
-<h4>Query minimum memory required for VL information</h4>
-
-It order to predict the memory usage that <code>H5Dread</code> may need
-to allocate to store VL data while reading the data, the
-<code>H5Dget_vlen_size()</code> function is provided:
-<dl>
- <dd><em>herr_t</em>
- <code>H5Dget_vlen_buf_size</code>(<em>hid_t</em> <code>dataset_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hsize_t</em> *<code>size</code>)
-</dl>
- (This function is not implemented in Release 1.2.)
-
-<p>
-This routine checks the number of bytes required to store the VL data from
-the dataset, using the <code>space_id</code> for the selection in the dataset
-on disk and the <code>type_id</code> for the memory representation of the
-VL data in memory. The *<code>size</code> value is modified according to
-how many bytes are required to store the VL data in memory.
-
-
-<h4>Specifying how to manage memory for the VL datatype</h4>
-
-The memory management method is determined by dataset transfer properties
-passed into the <code>H5Dread</code> and <code>H5Dwrite</code> functions
-with the dataset transfer property list.
-
-<p>
-Default memory management is set by using <code>H5P_DEFAULT</code>
-for the dataset transfer property list identifier.
-If <code>H5P_DEFAULT</code> is used with <code>H5Dread</code>,
-the system <code>malloc</code> and <code>free</code> calls
-will be used for allocating and freeing memory.
-In such a case, <code>H5P_DEFAULT</code> should also be passed
-as the property list identifier to <code>H5Dvlen_reclaim</code>.
-
-<p>
-The rest of this subsection is relevant only to those who choose
-<i>not</i> to use default memory management.
-
-<p>
-The user can choose whether to use the
-system <code>malloc</code> and <code>free</code> calls or
-user-defined, or custom, memory management functions.
-If user-defined memory management functions are to be used,
-the memory allocation and free routines must be defined via
-<code>H5Pset_vlen_mem_manager()</code>, as follows:
-<dl>
- <dd><em>herr_t</em>
- <code>H5Pset_vlen_mem_manager</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5MM_allocate_t</em> <code>alloc</code>,
- <em>void</em> *<code>alloc_info</code>,
- <em>H5MM_free_t</em> <code>free</code>,
- <em>void</em> *<code>free_info</code>)
-</dl>
-
-
-<p>
-The <code>alloc</code> and <code>free</code> parameters
-identify the memory management routines to be used.
-If the user has defined custom memory management routines,
-<code>alloc</code> and/or <code>free</code> should be set to make
-those routine calls (i.e., the name of the routine is used as
-the value of the parameter);
-if the user prefers to use the system's <code> malloc</code>
-and/or <code>free</code>, the <code>alloc</code> and
-<code>free</code> parameters, respectively, should be set to
-<code> NULL</code>
-<p>
-The prototypes for the user-defined functions would appear as follows:
-<dl>
- <dd><code>typedef</code> <em>void</em>
- *(*<code>H5MM_allocate_t</code>)(<em>size_t</em> <code>size</code>,
- <em>void</em> *<code>info</code>) ;
- <dd><code>typedef</code> <em>void</em>
- (*<code>H5MM_free_t</code>)(<em>void</em> *<code>mem</code>,
- <em>void</em> *<code>free_info</code>) ;
-</dl>
-
-<p>
-The <code>alloc_info</code> and <code>free_info</code> parameters can be
-used to pass along any required information to the user's memory management
-routines.
-
-<p>
-In summary, if the user has defined custom memory management
-routines, the name(s) of the routines are passed in the
-<code>alloc</code> and <code>free</code> parameters and the
-custom routines' parameters are passed in the
-<code>alloc_info</code> and <code>free_info</code> parameters.
-If the user wishes to use the system <code> malloc</code> and
-<code>free</code> functions, the <code>alloc</code> and/or
-<code>free</code> parameters are set to <code> NULL</code>
-and the <code>alloc_info</code> and <code>free_info</code>
-parameters are ignored.
-
-<h4>Recovering memory from VL buffers read in</h4>
-
-The complex memory buffers created for a VL datatype may be reclaimed with
-the <code>H5Dvlen_reclaim()</code> function call, as follows:
-<dl>
- <dd><em>herr_t</em>
- <code>H5Dvlen_reclaim</code>(<em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hid_t</em> <code>plist_id</code>,
- <em>void</em> *<code>buf</code>);
-</dl>
-
-<p>
-The <code>type_id</code> must be the datatype stored in the buffer,
-<code>space_id</code> describes the selection for the memory buffer
-to free the VL datatypes within,
-<code>plist_id</code> is the dataset transfer property list which
-was used for the I/O transfer to create the buffer, and
-<code>buf</code> is the pointer to the buffer to free the VL memory within.
-The VL structures (<code>hvl_t</code>) in the user's buffer are
-modified to zero out the VL information after it has been freed.
-
-<p>
-If nested VL datatypes were used to create the buffer,
-this routine frees them from the bottom up,
-releasing all the memory without creating memory leaks.
-
-
-<h3>9.4. Code Examples</h3>
-
-The following example creates the following one-dimensional array
-of size 4 of variable-length datatype.
-<pre>
- 0 10 20 30
- 11 21 31
- 22 32
- 33
-</pre>
-Each element of the VL datatype is of H5T_NATIVE_UINT type.
-<p>
-The array is stored in the dataset and then read back into memory.
-Default memory management routines are used for writing the VL data.
-Custom memory management routines are used for reading the VL data and
-reclaiming memory space.
-
-<center>
-<table border align=center width="100%">
- <caption align=bottom><h4>Example: Variable-length Datatypes</h4></caption>
- <tr>
- <td>
- <pre>
-#include &lt;hdf5.h&gt;
-
-#define FILE "vltypes.h5"
-#define MAX(X,Y) ((X)&gt;(Y)?(X):(Y))
-
-/* 1-D dataset with fixed dimensions */
-#define SPACE_NAME "Space"
-#define SPACE_RANK 1
-#define SPACE_DIM 4
-
-void *vltypes_alloc_custom(size_t size, void *info);
-void vltypes_free_custom(void *mem, void *info);
-
-/****************************************************************
-**
-** vltypes_alloc_custom(): VL datatype custom memory
-** allocation routine. This routine just uses malloc to
-** allocate the memory and increments the amount of memory
-** allocated.
-**
-****************************************************************/
-void *vltypes_alloc_custom(size_t size, void *info)
-{
-
- void *ret_value=NULL; /* Pointer to return */
- int *mem_used=(int *)info; /* Get the pointer to the memory used */
- size_t extra; /* Extra space needed */
-
- /*
- * This weird contortion is required on the DEC Alpha to keep the
- * alignment correct.
- */
- extra=MAX(sizeof(void *),sizeof(int));
-
- if((ret_value=(void *)malloc(extra+size))!=NULL) {
- *(int *)ret_value=size;
- *mem_used+=size;
- } /* end if */
- ret_value=((unsigned char *)ret_value)+extra;
- return(ret_value);
-}
-/******************************************************************
-** vltypes_free_custom(): VL datatype custom memory
-** allocation routine. This routine just uses free to
-** release the memory and decrements the amount of memory
-** allocated.
-** ****************************************************************/
-void vltypes_free_custom(void *_mem, void *info)
-
-{
- unsigned char *mem;
- int *mem_used=(int *)info; /* Get the pointer to the memory used */
- size_t extra; /* Extra space needed */
- /*
- * This weird contortion is required on the DEC Alpha to keep the
- * alignment correct.
- */
- extra=MAX(sizeof(void *),sizeof(int));
- if(_mem!=NULL) {
- mem=((unsigned char *)_mem)-extra;
- *mem_used-=*(int *)mem;
- free(mem);
- } /* end if */
-}
-
-int main(void)
-
-{
- hvl_t wdata[SPACE_DIM]; /* Information to write */
- hvl_t rdata[SPACE_DIM]; /* Information read in */
- hid_t fid; /* HDF5 File IDs */
- hid_t dataset; /* Dataset ID */
- hid_t sid; /* Dataspace ID */
- hid_t tid; /* Datatype ID */
- hid_t xfer_pid; /* Dataset transfer property list ID */
- hsize_t dims[] = {SPACE_DIM};
- uint i,j; /* counting variables */
- int mem_used=0; /* Memory used during allocation */
- herr_t ret; /* Generic return value */
-
- /*
- * Allocate and initialize VL data to write
- */
- for(i=0; i&lt;SPACE_DIM; i++) {
-
- wdata[i].p= (unsigned int *)malloc((i+1)*sizeof(unsigned int));
- wdata[i].len=i+1;
- for(j=0; j&lt;(i+1); j++)
- ((unsigned int *)wdata[i].p)[j]=i*10+j;
- } /* end for */
-
- /*
- * Create file.
- */
- fid = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Create dataspace for datasets.
- */
- sid = H5Screate_simple(SPACE_RANK, dims, NULL);
-
- /*
- * Create a datatype to refer to.
- */
- tid = H5Tvlen_create (H5T_NATIVE_UINT);
-
- /*
- * Create a dataset.
- */
- dataset=H5Dcreate(fid, "Dataset", tid, sid, H5P_DEFAULT);
-
- /*
- * Write dataset to disk.
- */
- ret=H5Dwrite(dataset, tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
-
- /*
- * Change to the custom memory allocation routines for reading
- * VL data
- */
- xfer_pid=H5Pcreate(H5P_DATASET_XFER);
-
- ret=H5Pset_vlen_mem_manager(xfer_pid, vltypes_alloc_custom,
- &mem_used, vltypes_free_custom,
- &mem_used);
-
- /*
- * Read dataset from disk. vltypes_alloc_custom and
- * will be used to manage memory.
- */
- ret=H5Dread(dataset, tid, H5S_ALL, H5S_ALL, xfer_pid, rdata);
-
- /*
- * Display data read in
- */
- for(i=0; i&lt;SPACE_DIM; i++) {
- printf("%d-th element length is %d \n", i,
- (unsigned) rdata[i].len);
- for(j=0; j&lt;rdata[i].len; j++) {
- printf(" %d ",((unsigned int *)rdata[i].p)[j] );
- }
- printf("\n");
- } /* end for */
-
- /*
- * Reclaim the read VL data. vltypes_free_custom will be used
- * to reclaim the space.
- */
- ret=H5Dvlen_reclaim(tid, sid, xfer_pid, rdata);
-
- /*
- * Reclaim the write VL data. C language free function will be
- * used to reclaim space.
- */
- ret=H5Dvlen_reclaim(tid, sid, H5P_DEFAULT, wdata);
-
- /*
- * Close Dataset
- */
- ret = H5Dclose(dataset);
-
- /*
- * Close datatype
- */
- ret = H5Tclose(tid);
-
- /*
- * Close disk dataspace
- */
- ret = H5Sclose(sid);
-
- /*
- * Close dataset transfer property list
- */
- ret = H5Pclose(xfer_pid);
-
- /*
- * Close file
- */
- ret = H5Fclose(fid);
-
-}
- </pre>
- </td>
- </tr>
-</table>
-</center>
-
-And the output from this sample code would be as follows:
-
-<center>
-<table border align=center width="100%">
- <caption align=bottom><h4>Example: Variable-length Datatypes, Sample Output</h4></caption>
- <tr>
- <td>
- <pre>
-0-th element length is 1
-0
-1-th element length is 2
-10 11
-2-th element length is 3
-20 21 22
-3-th element length is 4
-30 31 32 33
- </pre>
- </td>
- </tr>
-</table>
-</center>
-
-<p>
-For further samples of VL datatype code, see the tests in <code>test/tvltypes.c</code>
-in the HDF5 distribution.
-
-
-
-
-<h2>10. Array Datatypes</h2>
-
-The array class of datatypes, <code>H5T_ARRAY</code>, allows the
-construction of true, homogeneous, multi-dimensional arrays.
-Since these are homogeneous arrays, each element of the array will be
-of the same datatype, designated at the time the array is created.
-
-<p>
-Arrays can be nested.
-Not only is an array datatype used as an element of an HDF5 dataset,
-but the elements of an array datatype may be of any datatype,
-including another array datatype.
-
-<p>
-Array datatypes cannot be subdivided for I/O; the entire array must
-be transferred from one dataset to another.
-
-<p>
-Within the limitations outlined in the next paragraph, array datatypes
-may be <em>N</em>-dimensional and of any dimension size.
-Unlimited dimensions, however, are not supported.
-Functionality similar to unlimited dimension arrays is available through
-the use of variable-length datatypes.
-
-<p>
-The maximum number of dimensions, i.e., the maximum rank, of an array
-datatype is specified by the HDF5 library constant <code>H5S_MAX_RANK</code>.
-The minimum rank is 1 (one).
-All dimension sizes must be greater than 0 (zero).
-
-<p>
-One array dataype may only be converted to another array datatype
-if the number of dimensions and the sizes of the dimensions are equal
-and the datatype of the first array's elements can be converted
-to the datatype of the second array's elements.
-
-<h3>10.1 Array Datatype APIs</h2>
-
-The functions for creating and manipulating array datadypes are
-as follows:
-
-<dir>
-<table>
- <tr>
- <td><code><b>H5Tarray_create</b></code>
- </td><td>&nbsp;&nbsp;
- </td><td>Creates an array datatype.
- </td></tr><tr><td colspan=3><dir>
- <em>hid_t</em> <code>H5Tarray_create</code>(
- <em>hid_t</em> <code>base</code>,
- <em>int</em> <code>rank</code>,
- <em>const hsize_t</em> <code>dims[/*rank*/]</code>,
- <em>const int</em> <code>perm[/*rank*/]</code>
- )
- </dir>
- </td></tr><tr>
- <td><code><b>H5Tget_array_ndims</b></code>
- </td><td>&nbsp;&nbsp;
- </td><td>Retrieves the rank of the array datatype.
- </td></tr><tr><td colspan=3><dir>
- <em>int</em> <code>H5Tget_array_ndims</code>(
- <em>hid_t</em> <code>adtype_id</code>
- )
- </dir>
- </td></tr><tr>
- <td><code><b>H5Tget_array_dims</b></code>
- </td><td>&nbsp;&nbsp;
- </td><td>Retrieves the dimension sizes of the array datatype.
- </td></tr><tr><td colspan=3><dir>
- <em>int</em> <code>H5Tget_array_dims</code>(
- <em>hid_t</em> <code>adtype_id</code>,
- <em>hsize_t *</em><code>dims[]</code>,
- <em>int *</em><code>perm[]</code>
- )
- </dir>
- </td></tr>
-</table>
-</dir>
-
-
-<h3>10.2 Transition Issues in Adapting Existing Software<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-(Transition to HDF5 Release 1.4 Only)</h3>
-
-The array datatype class is new with Release 1.4;
-prior releases included an array element for compound datatypes.
-<p>
-The use of the array datatype class will not interfere with the
-use of existing compound datatypes. Applications may continue to
-read and write the older field arrays, but they will no longer be
-able to create array fields in newly-defined compound datatypes.
-<p>
-Existing array fields will be transparently mapped to array datatypes
-when they are read in.
-
-
-<h3>10.3 Code Example</h3>
-
-The following example creates an array datatype and a dataset
-containing elements of the array datatype in an HDF5 file.
-It then writes the dataset to the file.
-<p>
-
-<center>
-<table border align=center width="100%">
- <caption align=bottom><h4>Example: Array Datatype</h4></caption>
- <tr>
- <td>
- <pre>
-#include &lt;hdf5.h&gt;
-
-#define FILE "SDS_array_type.h5"
-#define DATASETNAME "IntArray"
-#define ARRAY_DIM1 5 /* array dimensions and rank */
-#define ARRAY_DIM2 4
-#define ARRAY_RANK 2
-#define SPACE_DIM 10 /* dataset dimensions and rank */
-#define RANK 1
-
-int
-main (void)
-{
- hid_t file, dataset; /* file and dataset handles */
- hid_t datatype, dataspace; /* handles */
- hsize_t sdims[] = {SPACE_DIM}; /* dataset dimensions */
- hsize_t adims[] = {ARRAY_DIM1, ARRAY_DIM2}; /* array dimensions */
- hsize_t adims_out[2];
- herr_t status;
- int data[SPACE_DIM][ARRAY_DIM1][ARRAY_DIM2]; /* data to write */
- int k, i, j;
- int array_rank_out;
-
- /*
- * Data and output buffer initialization.
- */
- for (k = 0; k &lt; SPACE_DIM; k++) {
- for (j = 0; j &lt; ARRAY_DIM1; j++) {
- for (i = 0; i &lt; ARRAY_DIM2; i++)
- data[k][j][i] = k;
- }
- }
- /*
- * Create a new file using H5F_ACC_TRUNC access,
- * default file creation properties, and default file
- * access properties.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Describe the size of the array and create the data space for fixed
- * size dataset.
- */
- dataspace = H5Screate_simple(RANK, sdims, NULL);
-
- /*
- * Define array datatype for the data in the file.
- */
- datatype = H5Tarray_create(H5T_NATIVE_INT, ARRAY_RANK, adims, NULL);
-
- /*
- * Create a new dataset within the file using defined dataspace and
- * datatype and default dataset creation properties.
- */
- dataset = H5Dcreate(file, DATASETNAME, datatype, dataspace,
- H5P_DEFAULT);
-
- /*
- * Write the data to the dataset using default transfer properties.
- */
- status = H5Dwrite(dataset, datatype, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, data);
-
-
- /*
- * Close/release resources.
- */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Dclose(dataset);
- /*
- * Reopen dataset, and return information about its datatype.
- */
- dataset = H5Dopen(file, DATASETNAME);
- datatype = H5Dget_type(dataset);
- array_rank_out = H5Tget_array_ndims(datatype);
- status = H5Tget_array_dims(datatype, adims_out, NULL);
- printf(" Array datatype rank is %d \n", array_rank_out);
- printf(" Array dimensions are %d x %d \n", (int)adims_out[0],
- (int)adims_out[1]);
-
- H5Tclose(datatype);
- H5Dclose(dataset);
- H5Fclose(file);
-
- return 0;
-}
- </pre>
- </td>
- </tr>
-</table>
-</center>
-
-
-
- <h2>11. Sharing Datatypes among Datasets</h2>
-
- <p>If a file has lots of datasets which have a common datatype,
- then the file could be made smaller by having all the datasets
- share a single datatype. Instead of storing a copy of the
- datatype in each dataset object header, a single datatype is stored
- and the object headers point to it. The space savings is
- probably only significant for datasets with a compound datatype,
- since the atomic datatypes can be described with just a few
- bytes anyway.
-
- <p>To create a bunch of datasets that share a single datatype
- just create the datasets with a committed (named) datatype.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: Shared Datatypes</h4></caption>
- <tr>
- <td>
- <p>To create two datasets that share a common datatype
- one just commits the datatype, giving it a name, and
- then uses that datatype to create the datasets.
-
- <p><code><pre>
-hid_t t1 = ...some transient type...;
-H5Tcommit (file, "shared_type", t1);
-hid_t dset1 = H5Dcreate (file, "dset1", t1, space, H5P_DEFAULT);
-hid_t dset2 = H5Dcreate (file, "dset2", t1, space, H5P_DEFAULT);
- </code></pre>
-
- <p>And to create two additional datasets later which
- share the same type as the first two datasets:
-
- <p><code><pre>
-hid_t dset1 = H5Dopen (file, "dset1");
-hid_t t2 = H5Dget_type (dset1);
-hid_t dset3 = H5Dcreate (file, "dset3", t2, space, H5P_DEFAULT);
-hid_t dset4 = H5Dcreate (file, "dset4", t2, space, H5P_DEFAULT);
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
-
-
-
- <a name="Datatypes-DataConversion">
- <h2>12. Data Conversion</h2>
- </a>
-
- <p>The library is capable of converting data from one type to
- another and does so automatically when reading or writing the
- raw data of a dataset, attribute data, or fill values. The
- application can also change the type of data stored in an array.
-
- <p>In order to insure that data conversion exceeds disk I/O rates,
- common data conversion paths can be hand-tuned and optimized for
- performance. The library contains very efficient code for
- conversions between most native datatypes and a few non-native
- datatypes, but if a hand-tuned conversion function is not
- available, then the library falls back to a slower but more
- general conversion function. The application programmer can
- define additional conversion functions when the libraries
- repertoire is insufficient. In fact, if an application does
- define a conversion function which would be of general interest,
- we request that the function be submitted to the HDF5
- development team for inclusion in the library.
-
- <p><b>Note:</b> The HDF5 library contains a deliberately limited
- set of conversion routines. It can convert from one integer
- format to another, from one floating point format to another,
- and from one struct to another. It can also perform byte
- swapping when the source and destination types are otherwise the
- same. The library does not contain any functions for converting
- data between integer and floating point formats. It is
- anticipated that some users will find it necessary to develop
- float to integer or integer to float conversion functions at the
- application level; users are invited to submit those functions
- to be considered for inclusion in future versions of the
- library.
-
- <p>A conversion path contains a source and destination datatype
- and each path contains a <em>hard</em> conversion function
- and/or a <em>soft</em> conversion function. The only difference
- between hard and soft functions is the way in which the library
- chooses which function applies: A hard function applies to a
- specific conversion path while a soft function may apply to
- multiple paths. When both hard and soft functions apply to a
- conversion path, then the hard function is favored and when
- multiple soft functions apply, the one defined last is favored.
-
- <p>A data conversion function is of type <code>H5T_conv_t</code>,
- which is defined as follows:
-
-<dir><pre><em>typedef</em> herr_t (<em>*H5T_conv_t</em>) (hid_t <em>src_id</em>,
- hid_t <em>dst_id</em>,
- H5T_cdata_t *<em>cdata</em>,
- hsize_t <em>nelmts</em>,
- size_t <em>buf_stride</em>,
- size_t <em>bkg_stride</em>,
- void *<em>buffer</em>,
- void *<em>bkg_buffer</em>,
- hid_t <em>dset_xfer_plist</em>);</pre></dir>
-
-
- <p>The conversion function is called with
- the source and destination datatypes (<em>src_id</em> and
- <em>dst_id</em>),
- the path-constant data struct (<em>cdata</em>),
- the number of instances of the datatype to convert (<em>nelmts</em>),
- a conversion buffer (<em>buffer</em>) which initially contains
- an array of data having the source type and on return will
- contain an array of data having the destination type,
- a temporary or background buffer (<em>bkg_buffer</em>,
- see description of <code>H5T_BKG_YES</code> below),
- conversion and background buffer strides (<em>buf_stride</em> and
- <em>bkg_stride</em>) that indicate what data is to be converted, and
- a dataset transfer properties list (<em>dset_xfer_plist</em>).
-
- <p><em>buf_stride</em> and <em>bkg_stride</em> are in bytes and
- are related to the size of the datatype.
- If every data element is to be converted, the parameter's value
- is equal to the size of the datatype;
- if every other data element is to be converted, the parameter's value
- is equal to twice the size of the datatype; etc.
-
- <p><em>dset_xfer_plist</em> may contain properties that are passed
- to the read and write calls.
- This parameter is currently used only with variable-length data.
-
- <p><em>bkg_buffer</em> and <em>bkg_stride</em> are used only with
- compound datatypes.
-
- <p>The path-constant data struct, <code>H5T_cdata_t</code>,
- is declared as follows:
-
-<dir><pre><em>typedef</em> struct <em>*H5T_cdata_t</em> (H5T_cmd_t <em>command</em>,
- H5T_bkg_t <em>need_bkg</em>,
- hbool_t *<em>recalc</em>,
- void *<em>priv</em>)</pre></dir>
-
- <p>The <code>command</code> field of the <em>cdata</em> argument
- determines what happens within the conversion function. It's
- values can be:
-
- <dl>
- <dt><code>H5T_CONV_INIT</code>
- <dd>This command is to hard conversion functions when they're
- registered or soft conversion functions when the library is
- determining if a conversion can be used for a particular path.
- The <em>src_type</em> and <em>dst_type</em> are the end-points
- of the path being queried and <em>cdata</em> is all zero. The
- library should examine the source and destination types and
- return zero if the conversion is possible and negative
- otherwise (hard conversions need not do this since they've
- presumably been registered only on paths they support). If
- the conversion is possible the library may allocate and
- initialize private data and assign the pointer to the
- <code>priv</code> field of <em>cdata</em> (or private data can
- be initialized later). It should also initialize the
- <code>need_bkg</code> field described below. The <em>buf</em>
- and <em>background</em> pointers will be null pointers.
-
- <br><br>
- <dt><code>H5T_CONV_CONV</code>
- <dd>This command indicates that data points should be converted.
- The conversion function should initialize the
- <code>priv</code> field of <em>cdata</em> if it wasn't
- initialize during the <code>H5T_CONV_INIT</code> command and
- then convert <em>nelmts</em> instances of the
- <em>src_type</em> to the <em>dst_type</em>. The
- <em>buffer</em> serves as both input and output. The
- <em>background</em> buffer is supplied according to the value
- of the <code>need_bkg</code> field of <em>cdata</em> (the
- values are described below).
-
- <br><br>
- <dt><code>H5T_CONV_FREE</code>
- <dd>The conversion function is about to be removed from some
- path and the private data (the
- <code><em>cdata</em>->priv</code> pointer) should be freed and
- set to null. All other pointer arguments are null, the
- <em>src_type</em> and <em>dst_type</em> are invalid
- (negative), and the <em>nelmts</em> argument is zero.
-
- <br><br>
- <dt><em>Others...</em>
- <dd>Other commands might be implemented later and conversion
- functions that don't support those commands should return a
- negative value.
- </dl>
-
-
- <p>Whether a background buffer is supplied to a conversion
- function, and whether the background buffer is initialized
- depends on the value of <code><em>cdata</em>->need_bkg</code>
- which the conversion function should have initialized during the
- H5T_CONV_INIT command. It can have one of these values:
-
- <dl>
- <dt><code>H5T_BKG_NONE</code>
- <dd>No background buffer will be supplied to the conversion
- function. This is the default.
-
- <br><br>
- <dt><code>H5T_BKG_TEMP</code>
- <dd>A background buffer will be supplied but it will not be
- initialized. This is useful for those functions requiring some
- extra buffer space as the buffer can probably be allocated
- more efficiently by the library (the application can supply
- the buffer as part of the dataset transfer property list).
-
- <br><br>
- <dt><code>H5T_BKG_YES</code>
- <dd>An initialized background buffer is passed to the conversion
- function. The buffer is initialized with the current values
- of the destination for the data which is passed in through the
- <em>buffer</em> argument. It can be used to "fill in between
- the cracks". For instance, if the destination type is a
- compound datatype and we are initializing only part of the
- compound datatype from the source type then the background
- buffer can be used to initialize the other part of the
- destination.
- </dl>
-
- <p>The <code>recalc</code> field of <em>cdata</em> is set when the
- conversion path table changes. It can be used by conversion
- function that cache other conversion paths so they know when
- their cache needs to be recomputed.
-
-
- <p>Once a conversion function is written it can be registered and
- unregistered with these functions:
-
- <dl>
- <dt><code>herr_t H5Tregister(H5T_pers_t <em>pers</em>, const
- char *<em>name</em>, hid_t <em>src_type</em>, hid_t
- <em>dest_type</em>, H5T_conv_t <em>func</em>)</code>
- <dd>Once a conversion function is written, the library must be
- notified so it can be used. The function can be registered as
- a hard (<code>H5T_PERS_HARD</code>) or soft
- (<code>H5T_PERS_SOFT</code>) conversion depending on the value
- of <em>pers</em>, displacing any previous conversions for all
- applicable paths. The <em>name</em> is used only for
- debugging but must be supplied. If <em>pers</em> is
- <code>H5T_PERS_SOFT</code> then only the type classes of the
- <em>src_type</em> and <em>dst_type</em> are used. For
- instance, to register a general soft conversion function that
- can be applied to any integer to integer conversion one could
- say: <code>H5Tregister(H5T_PERS_SOFT, "i2i", H5T_NATIVE_INT,
- H5T_NATIVE_INT, convert_i2i)</code>. One special conversion
- path called the "no-op" conversion path is always defined by
- the library and used as the conversion function when no data
- transformation is necessary. The application can redefine this
- path by specifying a new hard conversion function with a
- negative value for both the source and destination datatypes,
- but the library might not call the function under certain
- circumstances.
-
- <br><br>
- <dt><code>herr_t H5Tunregister (H5T_pers_t <em>pers</em>, const
- char *<em>name</em>, hid_t <em>src_type</em>, hid_t
- <em>dest_type</em>, H5T_conv_t <em>func</em>)</code>
- <dd>Any conversion path or function that matches the critera
- specified by a call to this function is removed from the type
- conversion table. All fields have the same interpretation as
- for <code>H5Tregister()</code> with the added feature that any
- (or all) may be wild cards. The
- <code>H5T_PERS_DONTCARE</code> constant should be used to
- indicate a wild card for the <em>pers</em> argument. The wild
- card <em>name</em> is the null pointer or empty string, the
- wild card for the <em>src_type</em> and <em>dest_type</em>
- arguments is any negative value, and the wild card for the
- <em>func</em> argument is the null pointer. The special no-op
- conversion path is never removed by this function.
- </dl>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: A conversion
- function</h4></caption>
- <tr>
- <td>
- <p>Here's an example application-level function that
- converts Cray <code>unsigned short</code> to any other
- 16-bit unsigned big-endian integer. A cray
- <code>short</code> is a big-endian value which has 32
- bits of precision in the high-order bits of a 64-bit
- word.
-
- <p><code><pre>
- 1 typedef struct {
- 2 size_t dst_size;
- 3 int direction;
- 4 } cray_ushort2be_t;
- 5
- 6 herr_t
- 7 cray_ushort2be (hid_t src, hid_t dst,
- 8 H5T_cdata_t *cdata, hsize_t nelmts,
- 9 size_t buf_str, size_t bkg_str, void *buf,
-10 const void *background, hid_t plist)
-11 {
-12 unsigned char *src = (unsigned char *)buf;
-13 unsigned char *dst = src;
-14 cray_ushort2be_t *priv = NULL;
-15
-16 switch (cdata-&gt;command) {
-17 case H5T_CONV_INIT:
-18 /*
-19 * We are being queried to see if we handle this
-20 * conversion. We can handle conversion from
-21 * Cray unsigned short to any other big-endian
-22 * unsigned integer that doesn't have padding.
-23 */
-24 if (!H5Tequal (src, H5T_CRAY_USHORT) ||
-25 H5T_ORDER_BE != H5Tget_order (dst) ||
-26 H5T_SGN_NONE != H5Tget_signed (dst) ||
-27 8*H5Tget_size (dst) != H5Tget_precision (dst)) {
-28 return -1;
-29 }
-30
-31 /*
-32 * Initialize private data. If the destination size
-33 * is larger than the source size, then we must
-34 * process the elements from right to left.
-35 */
-36 cdata-&gt;priv = priv = malloc (sizeof(cray_ushort2be_t));
-37 priv-&gt;dst_size = H5Tget_size (dst);
-38 if (priv-&gt;dst_size&gt;8) {
-39 priv-&gt;direction = -1;
-40 } else {
-41 priv-&gt;direction = 1;
-42 }
-43 break;
-44
-45 case H5T_CONV_FREE:
-46 /*
-47 * Free private data.
-48 */
-49 free (cdata-&gt;priv);
-50 cdata-&gt;priv = NULL;
-51 break;
-52
-53 case H5T_CONV_CONV:
-54 /*
-55 * Convert each element, watch out for overlap src
-56 * with dst on the left-most element of the buffer.
-57 */
-58 priv = (cray_ushort2be_t *)(cdata-&gt;priv);
-59 if (priv-&gt;direction&lt;0) {
-60 src += (nelmts - 1) * 8;
-61 dst += (nelmts - 1) * dst_size;
-62 }
-63 for (i=0; i&lt;n; i++) {
-64 if (src==dst && dst_size&lt;4) {
-65 for (j=0; j&lt;dst_size; j++) {
-66 dst[j] = src[j+4-dst_size];
-67 }
-68 } else {
-69 for (j=0; j&lt;4 && j&lt;dst_size; j++) {
-70 dst[dst_size-(j+1)] = src[3-j];
-71 }
-72 for (j=4; j&lt;dst_size; j++) {
-73 dst[dst_size-(j+1)] = 0;
-74 }
-75 }
-76 src += 8 * direction;
-77 dst += dst_size * direction;
-78 }
-79 break;
-80
-81 default:
-82 /*
-83 * Unknown command.
-84 */
-85 return -1;
-86 }
-87 return 0;
-88 }
- </pre></code>
-
- <p>The <em>background</em> argument is ignored since
- it's generally not applicable to atomic datatypes.
- </td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom><h4>Example: Soft
- Registration</h4></caption>
- <tr>
- <td>
- <p>The convesion function described in the previous
- example applies to more than one conversion path.
- Instead of enumerating all possible paths, we register
- it as a soft function and allow it to decide which
- paths it can handle.
-
- <p><code><pre>
-H5Tregister(H5T_PERS_SOFT, "cus2be",
- H5T_NATIVE_INT, H5T_NATIVE_INT,
- cray_ushort2be);
- </pre></code>
-
- <p>This causes it to be consulted for any conversion
- from an integer type to another integer type. The
- first argument is just a short identifier which will
- be printed with the datatype conversion statistics.
- </td>
- </tr>
- </table>
- </center>
-
-
- <p><b>NOTE:</b> The idea of a master soft list and being able to
- query conversion functions for their abilities tries to overcome
- problems we saw with AIO. Namely, that there was a dichotomy
- between generic conversions and specific conversions that made
- it very difficult to write a conversion function that operated
- on, say, integers of any size and order as long as they don't
- have zero padding. The AIO mechanism required such a function
- to be explicitly registered (like
- <code>H5Tregister_hard()</code>) for each an every possible
- conversion path whether that conversion path was actually used
- or not.</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Thu Dec 4 14:57:32 EST 1997 -->
-<!-- hhmts start -->
-Last modified: 2 August 2001
-<!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/DatatypesEnum.html b/doc/html/DatatypesEnum.html
deleted file mode 100644
index 607030a..0000000
--- a/doc/html/DatatypesEnum.html
+++ /dev/null
@@ -1,926 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Enumeration Data Types in the Data Type Interface (H5T)</title>
- </head>
-
- <body bgcolor="#FFFFFF">
-
-
-<hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="index.html">Other HDF5 documents and links</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html">HDF5 User's Guide</a>:&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <br>
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Data Types</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <a href="References.html">References</a>&nbsp;&nbsp;
- <br>
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <br>
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
- <a href="Ragged.html">Ragged Arrays</a>&nbsp;&nbsp;
-<!--
-<hr>
-And in this document, the
-<a href="H5.user.html">HDF5 User's Guide</a>:&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="Attributes.html">H5A</a>&nbsp;&nbsp;
- <a href="Datasets.html">H5D</a>&nbsp;&nbsp;
- <a href="Errors.html">H5E</a>&nbsp;&nbsp;
- <a href="Files.html">H5F</a>&nbsp;&nbsp;
- <a href="Groups.html">H5G</a>&nbsp;&nbsp;
- <a href="Properties.html">H5P</a>&nbsp;&nbsp;
- <a href="References.html">H5R & H5I</a>&nbsp;&nbsp;
- <a href="Ragged.html">H5RA</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">H5S</a>&nbsp;&nbsp;
- <a href="Datatypes.html">H5T</a>&nbsp;&nbsp;
- <a href="Filters.html">H5Z</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
--->
-</td></tr>
-</table>
-</center>
-<hr>
-
-
- <h1>The Data Type Interface (H5T) <font size=-1><i>(contitnued)</i></font></h1>
-
- <p align=right><font size=-1><i>
- (Return to <a href="Datatypes.html#Datatypes_Enum">Data Types Interface (H5T)</a>.)
- </font></i>
-
- <h2>7. Enumeration Data Types</h2>
-
- <h3>7.1. Introduction</h2>
-
- <p>An HDF enumeration data type is a 1:1 mapping between a set of
- symbols and a set of integer values, and an order is imposed on
- the symbols by their integer values. The symbols are passed
- between the application and library as character strings and all
- the values for a particular enumeration type are of the same
- integer type, which is not necessarily a native type.
-
- <h3>7.2. Creation</h2>
-
- <p>Creation of an enumeration data type resembles creation of a
- compound data type: first an empty enumeration type is created,
- then members are added to the type, then the type is optionally
- locked.
-
- <dl>
- <dt><code>hid_t H5Tcreate(H5T_class_t <em>type_class</em>,
- size_t <em>size</em>)</code>
- <dd>This function creates a new empty enumeration data type based
- on a native signed integer type. The first argument is the
- constant <code>H5T_ENUM</code> and the second argument is the
- size in bytes of the native integer on which the enumeration
- type is based. If the architecture does not support a native
- signed integer of the specified size then an error is
- returned.
-
- <pre>
-/* Based on a native signed short */
-hid_t hdf_en_colors = H5Tcreate(H5T_ENUM, sizeof(short));</pre>
-
-
- <dt><code>hid_t H5Tenum_create(hid_t <em>base</em>)</code>
- <dd>This function creates a new empty enumeration data type based
- on some integer data type <em>base</em> and is a
- generalization of the <code>H5Tcreate()</code> function. This
- function is useful when creating an enumeration type based on
- some non-native integer data type, but it can be used for
- native types as well.
-
- <pre>
-/* Based on a native unsigned short */
-hid_t hdf_en_colors_1 = H5Tenum_create(H5T_NATIVE_USHORT);
-
-/* Based on a MIPS 16-bit unsigned integer */
-hid_t hdf_en_colors_2 = H5Tenum_create(H5T_MIPS_UINT16);
-
-/* Based on a big-endian 16-bit unsigned integer */
-hid_t hdf_en_colors_3 = H5Tenum_create(H5T_STD_U16BE);</pre>
-
-
- <dt><code>herr_t H5Tenum_insert(hid_t <em>etype</em>, const char
- *<em>symbol</em>, void *<em>value</em>)</code>
- <dd>Members are inserted into the enumeration data type
- <em>etype</em> with this function. Each member has a symbolic
- name <em>symbol</em> and some integer representation
- <em>value</em>. The <em>value</em> argument must point to a value
- of the same data type as specified when the enumeration type
- was created. The order of member insertion is not important
- but all symbol names and values must be unique within a
- particular enumeration type.
-
- <pre>
-short val;
-H5Tenum_insert(hdf_en_colors, "RED", (val=0,&amp;val));
-H5Tenum_insert(hdf_en_colors, "GREEN", (val=1,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLUE", (val=2,&amp;val));
-H5Tenum_insert(hdf_en_colors, "WHITE", (val=3,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLACK", (val=4,&amp;val));</pre>
-
-
- <dt><code>herr_t H5Tlock(hid_t <em>etype</em>)</code>
- <dd>This function locks a data type so it cannot be modified or
- freed unless the entire HDF5 library is closed. Its use is
- completely optional but using it on an application data type
- makes that data type act like a predefined data type.
-
- <pre>
-H5Tlock(hdf_en_colors);</pre>
-
- </dl>
-
- <h3>7.3. Integer Operations</h2>
-
- <p>Because an enumeration data type is derived from an integer
- data type, any operation which can be performed on integer data
- types can also be performed on enumeration data types. This
- includes:
-
- <p>
- <center>
- <table>
- <tr>
- <td><code>H5Topen()</code></td>
- <td><code>H5Tcreate()</code></td>
- <td><code>H5Tcopy()</code></td>
- <td><code>H5Tclose()</code></td>
- </tr><tr>
- <td><code>H5Tequal()</code></td>
- <td><code>H5Tlock()</code></td>
- <td><code>H5Tcommit()</code></td>
- <td><code>H5Tcommitted()</code></td>
- </tr><tr>
- <td><code>H5Tget_class()</code></td>
- <td><code>H5Tget_size()</code></td>
- <td><code>H5Tget_order()</code></td>
- <td><code>H5Tget_pad()</code></td>
- </tr><tr>
- <td><code>H5Tget_precision()</code></td>
- <td><code>H5Tget_offset()</code></td>
- <td><code>H5Tget_sign()</code></td>
- <td><code>H5Tset_size()</code></td>
- </tr><tr>
- <td><code>H5Tset_order()</code></td>
- <td><code>H5Tset_precision()</code></td>
- <td><code>H5Tset_offset()</code></td>
- <td><code>H5Tset_pad()</code></td>
- </tr><tr>
- <td><code>H5Tset_sign()</code></td>
- </tr>
- </table>
- </center>
-
- <p>In addition, the new function <code>H5Tget_super()</code> will
- be defined for all data types that are derived from existing
- types (currently just enumeration types).
-
- <dl>
- <dt><code>hid_t H5Tget_super(hid_t <em>type</em>)</code>
- <dd>Return the data type from which <em>type</em> is
- derived. When <em>type</em> is an enumeration data type then
- the returned value will be an integer data type but not
- necessarily a native type. One use of this function would be
- to create a new enumeration type based on the same underlying
- integer type and values but with possibly different symbols.
-
- <pre>
-hid_t itype = H5Tget_super(hdf_en_colors);
-hid_t hdf_fr_colors = H5Tenum_create(itype);
-H5Tclose(itype);
-
-short val;
-H5Tenum_insert(hdf_fr_colors, "ouge", (val=0,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "vert", (val=1,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "bleu", (val=2,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "blanc", (val=3,&amp;val));
-H5Tenum_insert(hdf_fr_colors, "noir", (val=4,&amp;val));
-H5Tlock(hdf_fr_colors);</pre>
- </dl>
-
- <h3>7.4. Type Functions</h2>
-
- <p>A small set of functions is available for querying properties
- of an enumeration type. These functions are likely to be used
- by browsers to display data type information.
-
- <dl>
- <dt><code>int H5Tget_nmembers(hid_t <em>etype</em>)</code>
- <dd>When given an enumeration data type <em>etype</em> this
- function returns the number of members defined for that
- type. This function is already implemented for compound data
- types.
-
- <br><br>
- <dt><code>char *H5Tget_member_name(hid_t <em>etype</em>, unsigned
- <em>membno</em>)</code>
- <dd>Given an enumeration data type <em>etype</em> this function
- returns the symbol name for the member indexed by
- <em>membno</em>. Members are numbered from zero to
- <em>N</em>-1 where <em>N</em> is the return value from
- <code>H5Tget_nmembers()</code>. The members are stored in no
- particular order. This function is already implemented for
- compound data types. If an error occurs then the null pointer
- is returned. The return value should be freed by calling
- <code>free()</code>.
-
- <br><br>
- <dt><code>herr_t H5Tget_member_value(hid_t <em>etype</em>, unsigned
- <em>membno</em>, void *<em>value</em>/*out*/)</code>
- <dd>Given an enumeration data type <em>etype</em> this function
- returns the value associated with the member indexed by
- <em>membno</em> (as described for
- <code>H5Tget_member_name()</code>). The value returned
- is in the domain of the underlying integer
- data type which is often a native integer type. The
- application should ensure that the memory pointed to by
- <em>value</em> is large enough to contain the result (the size
- can be obtained by calling <code>H5Tget_size()</code> on
- either the enumeration type or the underlying integer type
- when the type is not known by the C compiler.
-
- <pre>
-int n = H5Tget_nmembers(hdf_en_colors);
-unsigned u;
-for (u=0; u&lt;(unsigned)n; u++) {
- char *symbol = H5Tget_member_name(hdf_en_colors, u);
- short val;
- H5Tget_member_value(hdf_en_colors, u, &amp;val);
- printf("#%u %20s = %d\n", u, symbol, val);
- free(symbol);
-}</pre>
-
- <p>
- Output:
- <pre>
-#0 BLACK = 4
-#1 BLUE = 2
-#2 GREEN = 1
-#3 RED = 0
-#4 WHITE = 3</pre>
- </dl>
-
- <h3>7.5. Data Functions</h2>
-
- <p>In addition to querying about the enumeration type properties,
- an application may want to make queries about enumerated
- data. These functions perform efficient mappings between symbol
- names and values.
-
- <dl>
- <dt><code>herr_t H5Tenum_valueof(hid_t <em>etype</em>, const char
- *<em>symbol</em>, void *<em>value</em>/*out*/)</code>
- <dd>Given an enumeration data type <em>etype</em> this function
- returns through <em>value</em> the bit pattern associated with
- the symbol name <em>symbol</em>. The <em>value</em> argument
- should point to memory which is large enough to hold the result,
- which is returned as the underlying integer data type specified
- when the enumeration type was created, often a native integer
- type.
-
- <br><br>
- <dt><code>herr_t H5Tenum_nameof(hid_t <em>etype</em>, void
- *<em>value</em>, char *<em>symbol</em>, size_t
- <em>size</em>)</code>
- <dd>This function translates a bit pattern pointed to by
- <em>value</em> to a symbol name according to the mapping
- defined in the enumeration data type <em>etype</em> and stores
- at most <em>size</em> characters of that name (counting the
- null terminator) to the <em>symbol</em> buffer. If the name is
- longer than the result buffer then the result is not null
- terminated and the function returns failure. If <em>value</em>
- points to a bit pattern which is not in the domain of the
- enumeration type then the first byte of the <em>symbol</em>
- buffer is set to zero and the function fails.
-
- <pre>
-short data[1000] = {4, 2, 0, 0, 5, 1, ...};
-int i;
-char symbol[32];
-
-for (i=0; i<1000; i++) {
- if (H5Tenum_nameof(hdf_en_colors, data+i, symbol,
- sizeof symbol))&lt;0) {
- if (symbol[0]) {
- strcpy(symbol+sizeof(symbol)-4, "...");
- } else {
- strcpy(symbol, "UNKNOWN");
- }
- }
- printf("%d %s\n", data[i], symbol);
-}
-printf("}\n");</pre>
-
- <p>
- Output:
- <pre>
-
-4 BLACK
-2 BLUE
-0 RED
-0 RED
-5 UNKNOWN
-1 GREEN
-...</pre>
- </dl>
-
- <h3>7.6. Conversion</h2>
-
- <p>Enumerated data can be converted from one type to another
- provided the destination enumeration type contains all the
- symbols of the source enumeration type. The conversion operates
- by matching up the symbol names of the source and destination
- enumeration types to build a mapping from source value to
- destination value. For instance, if we are translating from an
- enumeration type that defines a sequence of integers as the
- values for the colors to a type that defines a different bit for
- each color then the mapping might look like this:
-
- <p><img src="EnumMap.gif" alt="Enumeration Mapping">
-
- <p>That is, a source value of <code>2</code> which corresponds to
- <code>BLUE</code> would be mapped to <code>0x0004</code>. The
- following code snippet builds the second data type, then
- converts a raw data array from one data type to another, and
- then prints the result.
-
- <pre>
-/* Create a new enumeration type */
-short val;
-hid_t bits = H5Tcreate(H5T_ENUM, sizeof val);
-H5Tenum_insert(bits, "RED", (val=0x0001,&amp;val));
-H5Tenum_insert(bits, "GREEN", (val=0x0002,&amp;val));
-H5Tenum_insert(bits, "BLUE", (val=0x0004,&amp;val));
-H5Tenum_insert(bits, "WHITE", (val=0x0008,&amp;val));
-H5Tenum_insert(bits, "BLACK", (val=0x0010,&amp;val));
-
-/* The data */
-short data[6] = {1, 4, 2, 0, 3, 5};
-
-/* Convert the data from one type to another */
-H5Tconvert(hdf_en_colors, bits, 5, data, NULL);
-
-/* Print the data */
-for (i=0; i&lt;6; i++) {
- printf("0x%04x\n", (unsigned)(data[i]));
-}</pre>
-
- <p>
- Output:
- <pre>
-
-0x0002
-0x0010
-0x0004
-0x0001
-0x0008
-0xffff</pre>
-
- <p>If the source data stream contains values which are not in the
- domain of the conversion map then an overflow exception is
- raised within the library, causing the application defined
- overflow handler to be invoked (see
- <code>H5Tset_overflow()</code>). If no overflow handler is
- defined then all bits of the destination value will be set.
-
- <p>The HDF library will not provide conversions between enumerated
- data and integers although the application is free to do so
- (this is a policy we apply to all classes of HDF data
- types). However, since enumeration types are derived from
- integer types it is permissible to treat enumerated data as
- integers and perform integer conversions in that context.
-
- <h3>7.7. Symbol Order</h2>
-
- <p>Symbol order is determined by the integer values associated
- with each symbol. When the integer data type is a native type,
- testing the relative order of two symbols is an easy process:
- simply compare the values of the symbols. If only the symbol
- names are available then the values must first be determined by
- calling <code>H5Tenum_valueof()</code>.
-
- <pre>
-short val1, val2;
-H5Tenum_valueof(hdf_en_colors, "WHITE", &amp;val1);
-H5Tenum_valueof(hdf_en_colors, "BLACK", &amp;val2);
-if (val1 &lt; val2) ...</pre>
-
- <p>When the underlying integer data type is not a native type then
- the easiest way to compare symbols is to first create a similar
- enumeration type that contains all the same symbols but has a
- native integer type (HDF type conversion features can be used to
- convert the non-native values to native values). Once we have a
- native type we can compare symbol order as just described. If
- <code>foreign</code> is some non-native enumeration type then a
- native type can be created as follows:
-
- <pre>
-int n = H5Tget_nmembers(foreign);
-hid_t itype = H5Tget_super(foreign);
-void *val = malloc(n * MAX(H5Tget_size(itype), sizeof(int)));
-char *name = malloc(n * sizeof(char*));
-unsigned u;
-
-/* Get foreign type information */
-for (u=0; u&lt;(unsigned)n; u++) {
- name[u] = H5Tget_member_name(foreign, u);
- H5Tget_member_value(foreign, u,
- (char*)val+u*H5Tget_size(foreign));
-}
-
-/* Convert integer values to new type */
-H5Tconvert(itype, H5T_NATIVE_INT, n, val, NULL);
-
-/* Build a native type */
-hid_t native = H5Tenum_create(H5T_NATIVE_INT);
-for (i=0; i&lt;n; i++) {
- H5Tenum_insert(native, name[i], ((int*)val)[i]);
- free(name[i]);
-}
-free(name);
-free(val);</pre>
-
- <p>It is also possible to convert enumerated data to a new type
- that has a different order defined for the symbols. For
- instance, we can define a new type, <code>reverse</code> that
- defines the same five colors but in the reverse order.
-
- <pre>
-short val;
-int i;
-char sym[8];
-short data[5] = {0, 1, 2, 3, 4};
-
-hid_t reverse = H5Tenum_create(H5T_NATIVE_SHORT);
-H5Tenum_insert(reverse, "BLACK", (val=0,&amp;val));
-H5Tenum_insert(reverse, "WHITE", (val=1,&amp;val));
-H5Tenum_insert(reverse, "BLUE", (val=2,&amp;val));
-H5Tenum_insert(reverse, "GREEN", (val=3,&amp;val));
-H5Tenum_insert(reverse, "RED", (val=4,&amp;val));
-
-/* Print data */
-for (i=0; i<5; i++) {
- H5Tenum_nameof(hdf_en_colors, data+i, sym, sizeof sym);
- printf ("%d %s\n", data[i], sym);
-}
-
-puts("Converting...");
-H5Tconvert(hdf_en_colors, reverse, 5, data, NULL);
-
-/* Print data */
-for (i=0; i<5; i++) {
- H5Tenum_nameof(reverse, data+i, sym, sizeof sym);
- printf ("%d %s\n", data[i], sym);
-}</pre>
-
- <p>
- Output:
- <pre>
-0 RED
-1 GREEN
-2 BLUE
-3 WHITE
-4 BLACK
-Converting...
-4 RED
-3 GREEN
-2 BLUE
-1 WHITE
-0 BLACK</pre>
-
- <h3>7.8. Equality</h2>
-
- <p>The order that members are inserted into an enumeration type is
- unimportant; the important part is the associations between the
- symbol names and the values. Thus, two enumeration data types
- will be considered equal if and only if both types have the same
- symbol/value associations and both have equal underlying integer
- data types. Type equality is tested with the
- <code>H5Tequal()</code> function.
-
- <h3>7.9. Interacting with C's <code>enum</code> Type</h2>
-
- <p>Although HDF enumeration data types are similar to C
- <code>enum</code> data types, there are some important
- differences:
-
- <p>
- <center>
- <table border width="80%">
- <tr>
- <th>Difference</th>
- <th>Motivation/Implications</th>
- </tr>
-
- <tr>
- <td valign=top>Symbols are unquoted in C but quoted in
- HDF.</td>
- <td valign=top>This allows the application to manipulate
- symbol names in ways that are not possible with C.</td>
- </tr>
-
- <tr>
- <td valign=top>The C compiler automatically replaces all
- symbols with their integer values but HDF requires
- explicit calls to do the same.</td>
- <td valign=top>C resolves symbols at compile time while
- HDF resolves symbols at run time.</td>
- </tr>
-
- <tr>
- <td valign=top>The mapping from symbols to integers is
- <em>N</em>:1 in C but 1:1 in HDF.</td>
- <td valign=top>HDF can translate from value to name
- uniquely and large <code>switch</code> statements are
- not necessary to print values in human-readable
- format.</td>
- </tr>
-
- <tr>
- <td valign=top>A symbol must appear in only one C
- <code>enum</code> type but may appear in multiple HDF
- enumeration types.</td>
- <td valign=top>The translation from symbol to value in HDF
- requires the data type to be specified while in C the
- data type is not necessary because it can be inferred
- from the symbol.</td>
- </tr>
-
- <tr>
- <td valign=top>The underlying integer value is always a
- native integer in C but can be a foreign integer type in
- HDF.</td>
- <td valign=top>This allows HDF to describe data that might
- reside on a foreign architecture, such as data stored in
- a file.</td>
- </tr>
-
- <tr>
- <td valign=top>The sign and size of the underlying integer
- data type is chosen automatically by the C compiler but
- must be fully specified with HDF.</td>
- <td valign=top>Since HDF doesn't require finalization of a
- data type, complete specification of the type must be
- supplied before the type is used. Requiring that
- information at the time of type creation was a design
- decision to simplify the library.</td>
- </tr>
- </table>
- </center>
-
- <p>The examples below use the following C data types:
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-/* English color names */
-typedef enum {
- RED,
- GREEN,
- BLUE,
- WHITE,
- BLACK
-} c_en_colors;
-
-/* Spanish color names, reverse order */
-typedef enum {
- NEGRO
- BLANCO,
- AZUL,
- VERDE,
- ROJO,
-} c_sp_colors;
-
-/* No enum definition for French names */
- </pre></code>
- </td>
- </tr>
- </table>
-
- <h4>Creating HDF Types from C Types</h3>
-
- <p>An HDF enumeration data type can be created from a C
- <code>enum</code> type simply by passing pointers to the C
- <code>enum</code> values to <code>H5Tenum_insert()</code>. For
- instance, to create HDF types for the <code>c_en_colors</code>
- type shown above:
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-
-c_en_colors val;
-hid_t hdf_en_colors = H5Tcreate(H5T_ENUM, sizeof(c_en_colors));
-H5Tenum_insert(hdf_en_colors, "RED", (val=RED, &amp;val));
-H5Tenum_insert(hdf_en_colors, "GREEN", (val=GREEN,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLUE", (val=BLUE, &amp;val));
-H5Tenum_insert(hdf_en_colors, "WHITE", (val=WHITE,&amp;val));
-H5Tenum_insert(hdf_en_colors, "BLACK", (val=BLACK,&amp;val));</pre></code>
- </td>
- </tr>
- </table>
-
- <h4>Name Changes between Applications</h3>
-
- <p>Occassionally two applicatons wish to exchange data but they
- use different names for the constants they exchange. For
- instance, an English and a Spanish program may want to
- communicate color names although they use different symbols in
- the C <code>enum</code> definitions. The communication is still
- possible although the applications must agree on common terms
- for the colors. The following example shows the Spanish code to
- read the values assuming that the applications have agreed that
- the color information will be exchanged using Enlish color
- names:
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-
-c_sp_colors val, data[1000];
-hid_t hdf_sp_colors = H5Tcreate(H5T_ENUM, sizeof(c_sp_colors));
-H5Tenum_insert(hdf_sp_colors, "RED", (val=ROJO, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "GREEN", (val=VERDE, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "BLUE", (val=AZUL, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "WHITE", (val=BLANCO, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "BLACK", (val=NEGRO, &amp;val));
-
-H5Dread(dataset, hdf_sp_colors, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);</pre></code>
- </td>
- </tr>
- </table>
-
-
- <h4>Symbol Ordering across Applications</h3>
-
- <p>Since symbol ordering is completely determined by the integer values
- assigned to each symbol in the <code>enum</code> definition,
- ordering of <code>enum</code> symbols cannot be preserved across
- files like with HDF enumeration types. HDF can convert from one
- application's integer values to the other's so a symbol in one
- application's C <code>enum</code> gets mapped to the same symbol
- in the other application's C <code>enum</code>, but the relative
- order of the symbols is not preserved.
-
- <p>For example, an application may be defined to use the
- definition of <code>c_en_colors</code> defined above where
- <code>WHITE</code> is less than <code>BLACK</code>, but some
- other application might define the colors in some other
- order. If each application defines an HDF enumeration type based
- on that application's C <code>enum</code> type then HDF will
- modify the integer values as data is communicated from one
- application to the other so that a <code>RED</code> value
- in the first application is also a <code>RED</code> value in the
- other application.
-
- <p>A case of this reordering of symbol names was also shown in the
- previous code snippet (as well as a change of language), where
- HDF changed the integer values so 0 (<code>RED</code>) in the
- input file became 4 (<code>ROJO</code>) in the <code>data</code>
- array. In the input file, <code>WHITE</code> was less than
- <code>BLACK</code>; in the application the opposite is true.
-
- <p>In fact, the ability to change the order of symbols is often
- convenient when the enumeration type is used only to group
- related symbols that don't have any well defined order
- relationship.
-
- <h4>Internationalization</h3>
-
- <p>The HDF enumeration type conversion features can also be used
- to provide internationalization of debugging output. A program
- written with the <code>c_en_colors</code> data type could define
- a separate HDF data type for languages such as English, Spanish,
- and French and cast the enumerated value to one of these HDF
- types to print the result.
-
- <p>
- <table width="90%" bgcolor="white">
- <tr>
- <td>
- <code><pre>
-
-c_en_colors val, *data=...;
-
-hid_t hdf_sp_colors = H5Tcreate(H5T_ENUM, sizeof val);
-H5Tenum_insert(hdf_sp_colors, "ROJO", (val=RED, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "VERDE", (val=GREEN, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "AZUL", (val=BLUE, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "BLANCO", (val=WHITE, &amp;val));
-H5Tenum_insert(hdf_sp_colors, "NEGRO", (val=BLACK, &amp;val));
-
-hid_t hdf_fr_colors = H5Tcreate(H5T_ENUM, sizeof val);
-H5Tenum_insert(hdf_fr_colors, "OUGE", (val=RED, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "VERT", (val=GREEN, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "BLEU", (val=BLUE, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "BLANC", (val=WHITE, &amp;val));
-H5Tenum_insert(hdf_fr_colors, "NOIR", (val=BLACK, &amp;val));
-
-void
-nameof(lang_t language, c_en_colors val, char *name, size_t size)
-{
- switch (language) {
- case ENGLISH:
- H5Tenum_nameof(hdf_en_colors, &amp;val, name, size);
- break;
- case SPANISH:
- H5Tenum_nameof(hdf_sp_colors, &amp;val, name, size);
- break;
- case FRENCH:
- H5Tenum_nameof(hdf_fr_colors, &amp;val, name, size);
- break;
- }
-}</pre></code>
- </td>
- </tr>
- </table>
-
- <h3>7.10. Goals That Have Been Met</h2>
-
- <p>The main goal of enumeration types is to provide communication
- of enumerated data using symbolic equivalence. That is, a
- symbol written to a dataset by one application should be read as
- the same symbol by some other application.
-
- <p>
- <table width="90%">
- <tr>
- <td valign=top><b>Architecture Independence</b></td>
- <td valign=top>Two applications shall be able to exchange
- enumerated data even when the underlying integer values
- have different storage formats. HDF accomplishes this for
- enumeration types by building them upon integer types.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Preservation of Order Relationship</b></td>
- <td valign=top>The relative order of symbols shall be
- preserved between two applications that use equivalent
- enumeration data types. Unlike numeric values that have
- an implicit ordering, enumerated data has an explicit
- order defined by the enumeration data type and HDF
- records this order in the file.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Order Independence</b></td>
- <td valign=top>An application shall be able to change the
- relative ordering of the symbols in an enumeration data
- type. This is accomplished by defining a new type with
- different integer values and converting data from one type
- to the other.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Subsets</b></td>
- <td valign=top>An application shall be able to read
- enumerated data from an archived dataset even after the
- application has defined additional members for the
- enumeration type. An application shall be able to write
- to a dataset when the dataset contains a superset of the
- members defined by the application. Similar rules apply
- for in-core conversions between enumerated data
- types.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Targetable</b></td>
- <td valign=top>An application shall be able to target a
- particular architecture or application when storing
- enumerated data. This is accomplished by allowing
- non-native underlying integer types and converting the
- native data to non-native data.</td>
- </tr>
-
- <tr>
- <td valign=top><b>Efficient Data Transfer</b></td>
- <td valign=top>An application that defines a file dataset
- that corresponds to some native C enumerated data array
- shall be able to read and write to that dataset directly
- using only Posix read and write functions. HDF already
- optimizes this case for integers, so the same optimization
- will apply to enumerated data.
- </tr>
-
- <tr>
- <td valign=top><b>Efficient Storage</b></td>
- <td valign=top>Enumerated data shall be stored in a manner
- which is space efficient. HDF stores the enumerated data
- as integers and allows the application to chose the size
- and format of those integers.</td>
- </tr>
- </table>
-
-
- <p align=right><font size=-1><i>
- (Return to <a href="Datatypes.html#Datatypes_Enum">Data Types Interface (H5T)</a>.)
- </font></i>
-
-<hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="index.html">Other HDF5 documents and links</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html">HDF5 User's Guide</a>:&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <br>
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- Data Types&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <a href="References.html">References</a>&nbsp;&nbsp;
- <br>
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <br>
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
- <a href="Ragged.html">Ragged Arrays</a>&nbsp;&nbsp;
-<!--
-<hr>
-And in this document, the
-<a href="H5.user.html">HDF5 User's Guide</a>:&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="Attributes.html">H5A</a>&nbsp;&nbsp;
- <a href="Datasets.html">H5D</a>&nbsp;&nbsp;
- <a href="Errors.html">H5E</a>&nbsp;&nbsp;
- <a href="Files.html">H5F</a>&nbsp;&nbsp;
- <a href="Groups.html">H5G</a>&nbsp;&nbsp;
- <a href="Properties.html">H5P</a>&nbsp;&nbsp;
- <a href="References.html">H5R & H5I</a>&nbsp;&nbsp;
- <a href="Ragged.html">H5RA</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">H5S</a>&nbsp;&nbsp;
- <a href="Datatypes.html">H5T</a>&nbsp;&nbsp;
- <a href="Filters.html">H5Z</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
--->
-</td></tr>
-</table>
-</center>
-
-
-<hr>
-<address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-</address>
-<!-- Created: Thu Dec 4 14:57:32 EST 1997 -->
-<!-- hhmts start -->
-Last modified: 30 April 1999
-Footer modified: 3 July 2002
-<!-- hhmts end -->
-
-<br>
-This file is longer used; the material has been integrated into Datatypes.html.
-
-
-</body>
-</html>
diff --git a/doc/html/Debugging.html b/doc/html/Debugging.html
deleted file mode 100644
index d04cf27..0000000
--- a/doc/html/Debugging.html
+++ /dev/null
@@ -1,516 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Debugging HDF5 Applications</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>Debugging HDF5 Applications</h1>
-
- <h2>Introduction</h2>
-
- <p>The HDF5 library contains a number of debugging features to
- make programmers' lives easier including the ability to print
- detailed error messages, check invariant conditions, display
- timings and other statistics, and trace API function calls and
- return values.
-
- <dl>
- <dt><b>Error Messages</b>
- <dd>Error messages are normally displayed automatically on the
- standard error stream and include a stack trace of the library
- including file names, line numbers, and function names. The
- application has complete control over how error messages are
- displayed and can disable the display on a permanent or
- temporary basis. Refer to the documentation for the H5E error
- handling package.
-
- <br><br>
- <dt><b>Invariant Conditions</b>
- <dd>Unless <code>NDEBUG</code> is defined during compiling, the
- library will include code to verify that invariant conditions
- have the expected values. When a problem is detected the
- library will display the file and line number within the
- library and the invariant condition that failed. A core dump
- may be generated for post mortem debugging. The code to
- perform these checks can be included on a per-package bases.
-
- <br><br>
- <dt><b>Timings and Statistics</b>
- <dd>The library can be configured to accumulate certain
- statistics about things like cache performance, datatype
- conversion, data space conversion, and data filters. The code
- is included on a per-package basis and enabled at runtime by
- an environment variable.
-
- <br><br>
- <dt><b>API Tracing</b>
- <dd>All API calls made by an application can be displayed and
- include formal argument names and actual values and the
- function return value. This code is also conditionally
- included at compile time and enabled at runtime.
- </dl>
-
- <p>The statistics and tracing can be displayed on any output
- stream (including streams opened by the shell) with output from
- different packages even going to different streams.
-
- <h2>Error Messages</h2>
-
- <p>By default any API function that fails will print an error
- stack to the standard error stream.
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>
- <p><code><pre>
-
-HDF5-DIAG: Error detected in thread 0. Back trace follows.
- #000: H5F.c line 1245 in H5Fopen(): unable to open file
- major(04): File interface
- minor(10): Unable to open file
- #001: H5F.c line 846 in H5F_open(): file does not exist
- major(04): File interface
- minor(10): Unable to open file
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
- <p>The error handling package (H5E) is described
- <a href="Errors.html">elsewhere</a>.
-
- <h2>Invariant Conditions</h2>
-
- <p>To include checks for invariant conditions the library should
- be configured with <code>--disable-production</code>, the
- default for versions before 1.2. The library designers have made
- every attempt to handle error conditions gracefully but an
- invariant condition assertion may fail in certain cases. The
- output from a failure usually looks something like this:
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>
- <p><code><pre>
-
-Assertion failed: H5.c:123: i&lt;NELMTS(H5_debug_g)
-IOT Trap, core dumped.
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
- <h2>Timings and Statistics</h2>
-
- <p>Code to accumulate statistics is included at compile time by
- using the <code>--enable-debug</code> configure switch. The
- switch can be followed by an equal sign and a comma-separated
- list of package names or else a default list is used.
-
- <p>
- <center>
- <table border align=center width="80%">
- <tr>
- <th>Name</th>
- <th>Default</th>
- <th>Description</th>
- </tr>
- <tr>
- <td align=center>a</td>
- <td align=center>No</td>
- <td>Attributes</td>
- </tr>
- <tr>
- <td align=center>ac</td>
- <td align=center>Yes</td>
- <td>Meta data cache</td>
- </tr>
- <tr>
- <td align=center>b</td>
- <td align=center>Yes</td>
- <td>B-Trees</td>
- </tr>
- <tr>
- <td align=center>d</td>
- <td align=center>Yes</td>
- <td>Datasets</td>
- </tr>
- <tr>
- <td align=center>e</td>
- <td align=center>Yes</td>
- <td>Error handling</td>
- </tr>
- <tr>
- <td align=center>f</td>
- <td align=center>Yes</td>
- <td>Files</td>
- </tr>
- <tr>
- <td align=center>g</td>
- <td align=center>Yes</td>
- <td>Groups</td>
- </tr>
- <tr>
- <td align=center>hg</td>
- <td align=center>Yes</td>
- <td>Global heap</td>
- </tr>
- <tr>
- <td align=center>hl</td>
- <td align=center>No</td>
- <td>Local heaps</td>
- </tr>
- <tr>
- <td align=center>i</td>
- <td align=center>Yes</td>
- <td>Interface abstraction</td>
- </tr>
- <tr>
- <td align=center>mf</td>
- <td align=center>No</td>
- <td>File memory management</td>
- </tr>
- <tr>
- <td align=center>mm</td>
- <td align=center>Yes</td>
- <td>Library memory managment</td>
- </tr>
- <tr>
- <td align=center>o</td>
- <td align=center>No</td>
- <td>Object headers and messages</td>
- </tr>
- <tr>
- <td align=center>p</td>
- <td align=center>Yes</td>
- <td>Property lists</td>
- </tr>
- <tr>
- <td align=center>s</td>
- <td align=center>Yes</td>
- <td>Data spaces</td>
- </tr>
- <tr>
- <td align=center>t</td>
- <td align=center>Yes</td>
- <td>Datatypes</td>
- </tr>
- <tr>
- <td align=center>v</td>
- <td align=center>Yes</td>
- <td>Vectors</td>
- </tr>
- <tr>
- <td align=center>z</td>
- <td align=center>Yes</td>
- <td>Raw data filters</td>
- </tr>
- </table>
- </center>
-
- <p>In addition to including the code at compile time the
- application must enable each package at runtime. This is done
- by listing the package names in the <code>HDF5_DEBUG</code>
- environment variable. That variable may also contain file
- descriptor numbers (the default is `2') which control the output
- for all following packages up to the next file number. The
- word <code>all</code> refers to all packages. Any word my be
- preceded by a minus sign to turn debugging off for the package.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=top><b>Sample debug specifications</b></caption>
- <tr valign=top>
- <td><code>all</code></td>
- <td>This causes debugging output from all packages to be
- sent to the standard error stream.</td>
- </tr>
- <tr valign=top>
- <td><code>all -t -s</code></td>
- <td>Debugging output for all packages except datatypes
- and data spaces will appear on the standard error
- stream.</td>
- </tr>
- <tr valign=top>
- <td><code>-all ac 255 t,s</code></td>
- <td>This disables all debugging even if the default was to
- debug something, then output from the meta data cache is
- send to the standard error stream and output from data
- types and spaces is sent to file descriptor 255 which
- should be redirected by the shell.</td>
- </tr>
- </table>
- </center>
-
- <p>The components of the <code>HDF5_DEBUG</code> value may be
- separated by any non-lowercase letter.
-
- <h2>API Tracing</h2>
-
- <p>The HDF5 library can trace API calls by printing the
- function name, the argument names and their values, and the
- return value. Some people like to see lots of output during
- program execution instead of using a good symbolic debugger, and
- this feature is intended for their consumption. For example,
- the output from <code>h5ls foo</code> after turning on tracing,
- includes:
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>
- <code><pre>
-
-H5Tcopy(type=184549388) = 184549419 (type);
-H5Tcopy(type=184549392) = 184549424 (type);
-H5Tlock(type=184549424) = SUCCEED;
-H5Tcopy(type=184549393) = 184549425 (type);
-H5Tlock(type=184549425) = SUCCEED;
-H5Fopen(filename="foo", flags=0, access=H5P_DEFAULT) = FAIL;
-HDF5-DIAG: Error detected in thread 0. Back trace follows.
- #000: H5F.c line 1245 in H5Fopen(): unable to open file
- major(04): File interface
- minor(10): Unable to open file
- #001: H5F.c line 846 in H5F_open(): file does not exist
- major(04): File interface
- minor(10): Unable to open file
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>The code that performs the tracing must be included in the
- library by specifying the <code>--enable-trace</code>
- configuration switch (the default for versions before 1.2). Then
- the word <code>trace</code> must appear in the value of the
- <code>HDF5_DEBUG</code> variable. The output will appear on the
- last file descriptor before the word <code>trace</code> or two
- (standard error) by default.
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>To display the trace on the standard error stream:
- <code><pre>
-$ env HDF5_DEBUG=trace a.out
- </pre></code>
- </td>
- </tr>
- <tr>
- <td>To send the trace to a file:
- <code><pre>
-$ env HDF5_DEBUG="55 trace" a.out 55>trace-output
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <h3>Performance</h3>
-
- <p>If the library was not configured for tracing then there is no
- unnecessary overhead since all tracing code is excluded.
- However, if tracing is enabled but not used there is a small
- penalty. First, code size is larger because of extra
- statically-declared character strings used to store argument
- types and names and extra auto variable pointer in each
- function. Also, execution is slower because each function sets
- and tests a local variable and each API function calls the
- <code>H5_trace()</code> function.
-
- <p>If tracing is enabled and turned on then the penalties from the
- previous paragraph apply plus the time required to format each
- line of tracing information. There is also an extra call to
- H5_trace() for each API function to print the return value.
-
- <h3>Safety</h3>
-
- <p>The tracing mechanism is invoked for each API function before
- arguments are checked for validity. If bad arguments are passed
- to an API function it could result in a segmentation fault.
- However, the tracing output is line-buffered so all previous
- output will appear.
-
- <h3>Completeness</h3>
-
- <p>There are two API functions that don't participate in
- tracing. They are <code>H5Eprint()</code> and
- <code>H5Eprint_cb()</code> because their participation would
- mess up output during automatic error reporting.
-
- <p>On the other hand, a number of API functions are called during
- library initialization and they print tracing information.
-
- <h3>Implementation</h3>
-
- <p>For those interested in the implementation here is a
- description. Each API function should have a call to one of the
- <code>H5TRACE()</code> macros immediately after the
- <code>FUNC_ENTER()</code> macro. The first argument is the
- return type encoded as a string. The second argument is the
- types of all the function arguments encoded as a string. The
- remaining arguments are the function arguments. This macro was
- designed to be as terse and unobtrousive as possible.
-
- <p>In order to keep the <code>H5TRACE()</code> calls synchronized
- with the source code we've written a perl script which gets
- called automatically just before Makefile dependencies are
- calculated for the file. However, this only works when one is
- using GNU make. To reinstrument the tracing explicitly, invoke
- the <code>trace</code> program from the hdf5 bin directory with
- the names of the source files that need to be updated. If any
- file needs to be modified then a backup is created by appending
- a tilde to the file name.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=top><b>Explicit Instrumentation</b></caption>
- <tr>
- <td>
- <code><pre>
-
-$ ../bin/trace *.c
-H5E.c: in function `H5Ewalk_cb':
-H5E.c:336: warning: trace info was not inserted
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>Note: The warning message is the result of a comment of the
- form <code>/*NO TRACE*/</code> somewhere in the function
- body. Tracing information will not be updated or inserted if
- such a comment exists.
-
- <p>Error messages have the same format as a compiler so that they
- can be parsed from program development environments like
- Emacs. Any function which generates an error will not be
- modified.</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Wed Jun 17 12:29:12 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: 13 December 1999
-<!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/EnumMap.gif b/doc/html/EnumMap.gif
deleted file mode 100644
index d06f06a..0000000
--- a/doc/html/EnumMap.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Environment.html b/doc/html/Environment.html
deleted file mode 100644
index a00998b..0000000
--- a/doc/html/Environment.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-
-<head>
-<title>Environment Variables and Configuration Parameters</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>HDF5 Library Environment Variables and Configuration Parameters</h1>
-
-<h2>1. Environment Variables</h2>
-
-The HDF5 library uses UNIX environment variables to control
-or adjust certain library features at runtime. The variables and
-their defined effects are as follows:
-
-<dir>
-<dl>
- <dt><tt>HDF5_DEBUG</tt>
- <dd>Defines a list of debugging switches documented in the
- <a href="Debugging.html">Debugging</a> section of the
- <cite>HDF5 User's Guide</cite>.
-
- <dt><tt>HDF5_NOCLEANUP</tt>
- <dd>When set to a non-empty value, the programs in the test
- directory do not remove temporary HDF5 data files.
- The default is for each test to remove the files before exit.
-
- <dt><tt>HDF5_DISABLE_VERSION_CHECK</tt>
- <dd>When set to <code>1</code>, HDF5 will not abort when the version
- of the HDF5 headers doesn't match the version of the HDF5 library.
-
- <dt><tt>HDF5_MPI_OPT_TYPES</tt>
- &nbsp;&nbsp;(for parallel beta version only)
- <dd>When set to <code>1</code>, PHDF5 will use the MPI optimized
- code to perform parallel read/write accesses to datasets.
- Currently, this optimization fails when accessing extendable
- datasets. The default is not to use the optimized code.
-
-</dl>
-</dir>
-
-<h2>2. Configuration Parameters</h2>
-
-The HDF5 configuration script accepts a list of parameters to control
-configuration features when creating the Makefiles for the library.
-The command
-<br>
-<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configure --help </code>
-<br>
-will display the current list of parameters and their effects.
-<br><br>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem -->
-
-Last modified: 13 December 1999
-
-</body>
-</html>
-
diff --git a/doc/html/Errors.html b/doc/html/Errors.html
deleted file mode 100644
index 29a00ba..0000000
--- a/doc/html/Errors.html
+++ /dev/null
@@ -1,386 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Error Handling Interface (H5E)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Error Handling Interface (H5E)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>When an error occurs deep within the HDF5 library a record is
- pushed onto an error stack and that function returns a failure
- indication. Its caller detects the failure, pushes another
- record onto the stack, and returns a failure indication. This
- continues until the application-called API function returns a
- failure indication (a negative integer or null pointer). The
- next API function which is called (with a few exceptions) resets
- the stack.
-
- <h2>2. Error Handling Operations</h2>
-
- <p>In normal circumstances, an error causes the stack to be
- printed on the standard error stream. The first item, number
- "#000" is produced by the API function itself and is usually
- sufficient to indicate to the application programmer what went
- wrong.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=top><h4>Example: An Error Message</h4></caption>
- <tr>
- <td>
- <p>If an application calls <code>H5Tclose</code> on a
- predefined datatype then the following message is
- printed on the standard error stream. This is a
- simple error that has only one component, the API
- function; other errors may have many components.
-
- <p><code><pre>
-HDF5-DIAG: Error detected in thread 0. Back trace follows.
- #000: H5T.c line 462 in H5Tclose(): predefined datatype
- major(01): Function argument
- minor(05): Bad value
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
- <p>The error stack can also be printed and manipulated by these
- functions, but if an application wishes make explicit calls to
- <code>H5Eprint()</code> then the automatic printing should be
- turned off to prevent error messages from being displayed twice
- (see <code>H5Eset_auto()</code> below).
-
- <dl>
- <dt><code>herr_t H5Eprint (FILE *<em>stream</em>)</code>
- <dd>The error stack is printed on the specified stream. Even if
- the error stack is empty a one-line message will be printed:
- <code>HDF5-DIAG: Error detected in thread 0.</code>
-
- <br><br>
- <dt><code>herr_t H5Eclear (void)</code>
- <dd>The error stack can be explicitly cleared by calling this
- function. The stack is also cleared whenever an API function
- is called, with certain exceptions (for instance,
- <code>H5Eprint()</code>).
- </dl>
-
- <p>Sometimes an application will call a function for the sake of
- its return value, fully expecting the function to fail. Under
- these conditions, it would be misleading if an error message
- were automatically printed. Automatic printing of messages is
- controlled by the <code>H5Eset_auto()</code> function:
-
- <dl>
- <dt><code>herr_t H5Eset_auto (herr_t(*<em>func</em>)(void*),
- void *<em>client_data</em>)</code>
- <dd>If <em>func</em> is not a null pointer, then the function to
- which it points will be called automatically when an API
- function is about to return an indication of failure. The
- function is called with a single argument, the
- <em>client_data</em> pointer. When the library is first
- initialized the auto printing function is set to
- <code>H5Eprint()</code> (cast appropriately) and
- <em>client_data</em> is the standard error stream pointer,
- <code>stderr</code>.
-
- <br><br>
- <dt><code>herr_t H5Eget_auto (herr_t(**<em>func</em>)(void*),
- void **<em>client_data</em>)</code>
- <dd>This function returns the current automatic error traversal
- settings through the <em>func</em> and <em>client_data</em>
- arguments. Either (or both) arguments may be null pointers in
- which case the corresponding information is not returned.
- </dl>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=top><h4>Example: Error Control</h4></caption>
- <tr>
- <td>
- <p>An application can temporarily turn off error
- messages while "probing" a function.
-
- <p><code><pre>
-/* Save old error handler */
-herr_t (*old_func)(void*);
-void *old_client_data;
-H5Eget_auto(&amp;old_func, &amp;old_client_data);
-
-/* Turn off error handling */
-H5Eset_auto(NULL, NULL);
-
-/* Probe. Likely to fail, but that's okay */
-status = H5Fopen (......);
-
-/* Restore previous error handler */
-H5Eset_auto(old_func, old_client_data);
- </code></pre>
-
- <p>Or automatic printing can be disabled altogether and
- error messages can be explicitly printed.
-
- <p><code><pre>
-/* Turn off error handling permanently */
-H5Eset_auto (NULL, NULL);
-
-/* If failure, print error message */
-if (H5Fopen (....)<0) {
- H5Eprint (stderr);
- exit (1);
-}
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
- <p>The application is allowed to define an automatic error
- traversal function other than the default
- <code>H5Eprint()</code>. For instance, one could define a
- function that prints a simple, one-line error message to the
- standard error stream and then exits.
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=top><h4>Example: Simple Messages</h4></caption>
- <tr>
- <td>
- <p>The application defines a function to print a simple
- error message to the standard error stream.
-
- <p><code><pre>
-herr_t
-my_hdf5_error_handler (void *unused)
-{
- fprintf (stderr, "An HDF5 error was detected. Bye.\n");
- exit (1);
-}
- </code></pre>
-
- <p>The function is installed as the error handler by
- saying
-
- <p><code><pre>
-H5Eset_auto (my_hdf5_error_handler, NULL);
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
- <p>The <code>H5Eprint()</code> function is actually just a wrapper
- around the more complex <code>H5Ewalk()</code> function which
- traverses an error stack and calls a user-defined function for
- each member of the stack.
-
- <dl>
- <dt><code>herr_t H5Ewalk (H5E_direction_t <em>direction</em>,
- H5E_walk_t <em>func</em>, void *<em>client_data</em>)</code>
- <dd>The error stack is traversed and <em>func</em> is called for
- each member of the stack. Its arguments are an integer
- sequence number beginning at zero (regardless of
- <em>direction</em>), a pointer to an error description record,
- and the <em>client_data</em> pointer. If <em>direction</em>
- is <code>H5E_WALK_UPWARD</code> then traversal begins at the
- inner-most function that detected the error and concludes with
- the API function. The opposite order is
- <code>H5E_WALK_DOWNWARD</code>.
-
- <br><br>
- <dt><code>typedef herr_t (*H5E_walk_t)(int <em>n</em>,
- H5E_error_t *<em>eptr</em>, void
- *<em>client_data</em>)</code>
- <dd>An error stack traversal callback function takes three
- arguments: <em>n</em> is a sequence number beginning at zero
- for each traversal, <em>eptr</em> is a pointer to an error
- stack member, and <em>client_data</em> is the same pointer
- passed to <code>H5Ewalk()</code>.
-
- <br><br>
- <dt><pre><code>typedef struct {
- H5E_major_t <em>maj_num</em>;
- H5E_minor_t <em>min_num</em>;
- const char *<em>func_name</em>;
- const char *<em>file_name</em>;
- unsigned <em>line</em>;
- const char *<em>desc</em>;
-} H5E_error_t;</code></pre>
- <dd>The <em>maj_num</em> and <em>min_num</em> are major
- and minor error numbers, <em>func_name</em> is the name of
- the function where the error was detected,
- <em>file_name</em> and <em>line</em> locate the error
- within the HDF5 library source code, and <em>desc</em>
- points to a description of the error.
-
- <br><br>
- <dt><code>const char *H5Eget_major (H5E_major_t <em>num</em>)</code>
- <dt><code>const char *H5Eget_minor (H5E_minor_t <em>num</em>)</code>
- <dd>These functions take a major or minor error number and
- return a constant string which describes the error. If
- <em>num</em> is out of range than a string like "Invalid major
- error number" is returned.
- </dl>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=top><h4>Example: H5Ewalk_cb</h4></caption>
- <tr>
- <td>
- <p>This is the implementation of the default error stack
- traversal callback.
-
- <p><code><pre>
-herr_t
-H5Ewalk_cb(int n, H5E_error_t *err_desc, void *client_data)
-{
- FILE *stream = (FILE *)client_data;
- const char *maj_str = NULL;
- const char *min_str = NULL;
- const int indent = 2;
-
- /* Check arguments */
- assert (err_desc);
- if (!client_data) client_data = stderr;
-
- /* Get descriptions for the major and minor error numbers */
- maj_str = H5Eget_major (err_desc-&gt;maj_num);
- min_str = H5Eget_minor (err_desc-&gt;min_num);
-
- /* Print error message */
- fprintf (stream, "%*s#%03d: %s line %u in %s(): %s\n",
- indent, "", n, err_desc-&gt;file_name, err_desc-&gt;line,
- err_desc-&gt;func_name, err_desc-&gt;desc);
- fprintf (stream, "%*smajor(%02d): %s\n",
- indent*2, "", err_desc-&gt;maj_num, maj_str);
- fprintf (stream, "%*sminor(%02d): %s\n",
- indent*2, "", err_desc-&gt;min_num, min_str);
-
- return 0;
-}
- </code></pre>
- </td>
- </tr>
- </table>
- </center>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Fri Feb 27 23:42:52 EST 1998 -->
-<!-- hhmts start -->
-Last modified: 13 December 1999
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/ExternalFiles.html b/doc/html/ExternalFiles.html
deleted file mode 100644
index 0213ea8..0000000
--- a/doc/html/ExternalFiles.html
+++ /dev/null
@@ -1,279 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>External Files in HDF5</title>
- </head>
-
- <body>
- <center><h1>External Files in HDF5</h1></center>
-
- <h3>Overview of Layers</h3>
-
- <p>This table shows some of the layers of HDF5. Each layer calls
- functions at the same or lower layers and never functions at
- higher layers. An object identifier (OID) takes various forms
- at the various layers: at layer 0 an OID is an absolute physical
- file address; at layers 1 and 2 it's an absolute virtual file
- address. At layers 3 through 6 it's a relative address, and at
- layers 7 and above it's an object handle.
-
- <p><center>
- <table border cellpadding=4 width="60%">
- <tr align=center>
- <td>Layer-7</td>
- <td>Groups</td>
- <td>Datasets</td>
- </tr>
- <tr align=center>
- <td>Layer-6</td>
- <td>Indirect Storage</td>
- <td>Symbol Tables</td>
- </tr>
- <tr align=center>
- <td>Layer-5</td>
- <td>B-trees</td>
- <td>Object Hdrs</td>
- <td>Heaps</td>
- </tr>
- <tr align=center>
- <td>Layer-4</td>
- <td>Caching</td>
- </tr>
- <tr align=center>
- <td>Layer-3</td>
- <td>H5F chunk I/O</td>
- </tr>
- <tr align=center>
- <td>Layer-2</td>
- <td>H5F low</td>
- </tr>
- <tr align=center>
- <td>Layer-1</td>
- <td>File Family</td>
- <td>Split Meta/Raw</td>
- </tr>
- <tr align=center>
- <td>Layer-0</td>
- <td>Section-2 I/O</td>
- <td>Standard I/O</td>
- <td>Malloc/Free</td>
- </tr>
- </table>
- </center>
-
- <h3>Single Address Space</h3>
-
- <p>The simplest form of hdf5 file is a single file containing only
- hdf5 data. The file begins with the super block, which is
- followed until the end of the file by hdf5 data. The next most
- complicated file allows non-hdf5 data (user defined data or
- internal wrappers) to appear before the super block and after the
- end of the hdf5 data. The hdf5 data is treated as a single
- linear address space in both cases.
-
- <p>The next level of complexity comes when non-hdf5 data is
- interspersed with the hdf5 data. We handle that by including
- the non-hdf5 interspersed data in the hdf5 address space and
- simply not referencing it (eventually we might add those
- addresses to a "do-not-disturb" list using the same mechanism as
- the hdf5 free list, but it's not absolutely necessary). This is
- implemented except for the "do-not-disturb" list.
-
- <p>The most complicated single address space hdf5 file is when we
- allow the address space to be split among multiple physical
- files. For instance, a >2GB file can be split into smaller
- chunks and transfered to a 32 bit machine, then accessed as a
- single logical hdf5 file. The library already supports >32 bit
- addresses, so at layer 1 we split a 64-bit address into a 32-bit
- file number and a 32-bit offset (the 64 and 32 are
- arbitrary). The rest of the library still operates with a linear
- address space.
-
- <p>Another variation might be a family of two files where all the
- meta data is stored in one file and all the raw data is stored
- in another file to allow the HDF5 wrapper to be easily replaced
- with some other wrapper.
-
- <p>The <code>H5Fcreate</code> and <code>H5Fopen</code> functions
- would need to be modified to pass file-type info down to layer 2
- so the correct drivers can be called and parameters passed to
- the drivers to initialize them.
-
- <h4>Implementation</h4>
-
- <p>I've implemented fixed-size family members. The entire hdf5
- file is partitioned into members where each member is the same
- size. The family scheme is used if one passes a name to
- <code>H5F_open</code> (which is called by <code>H5Fopen()</code>
- and <code>H5Fcreate</code>) that contains a
- <code>printf(3c)</code>-style integer format specifier.
- Currently, the default low-level file driver is used for all
- family members (H5F_LOW_DFLT, usually set to be Section 2 I/O or
- Section 3 stdio), but we'll probably eventually want to pass
- that as a parameter of the file access property list, which
- hasn't been implemented yet. When creating a family, a default
- family member size is used (defined at the top H5Ffamily.c,
- currently 64MB) but that also should be settable in the file
- access property list. When opening an existing family, the size
- of the first member is used to determine the member size
- (flushing/closing a family ensures that the first member is the
- correct size) but the other family members don't have to be that
- large (the local address space, however, is logically the same
- size for all members).
-
- <p>I haven't implemented a split meta/raw family yet but am rather
- curious to see how it would perform. I was planning to use the
- `.h5' extension for the meta data file and `.raw' for the raw
- data file. The high-order bit in the address would determine
- whether the address refers to meta data or raw data. If the user
- passes a name that ends with `.raw' to <code>H5F_open</code>
- then we'll chose the split family and use the default low level
- driver for each of the two family members. Eventually we'll
- want to pass these kinds of things through the file access
- property list instead of relying on naming convention.
-
- <h3>External Raw Data</h3>
-
- <p>We also need the ability to point to raw data that isn't in the
- HDF5 linear address space. For instance, a dataset might be
- striped across several raw data files.
-
- <p>Fortunately, the only two packages that need to be aware of
- this are the packages for reading/writing contiguous raw data
- and discontiguous raw data. Since contiguous raw data is a
- special case, I'll discuss how to implement external raw data in
- the discontiguous case.
-
- <p>Discontiguous data is stored as a B-tree whose keys are the
- chunk indices and whose leaf nodes point to the raw data by
- storing a file address. So what we need is some way to name the
- external files, and a way to efficiently store the external file
- name for each chunk.
-
- <p>I propose adding to the object header an <em>External File
- List</em> message that is a 1-origin array of file names.
- Then, in the B-tree, each key has an index into the External
- File List (or zero for the HDF5 file) for the file where the
- chunk can be found. The external file index is only used at
- the leaf nodes to get to the raw data (the entire B-tree is in
- the HDF5 file) but because of the way keys are copied among
- the B-tree nodes, it's much easier to store the index with
- every key.
-
- <h3>Multiple HDF5 Files</h3>
-
- <p>One might also want to combine two or more HDF5 files in a
- manner similar to mounting file systems in Unix. That is, the
- group structure and meta data from one file appear as though
- they exist in the first file. One opens File-A, and then
- <em>mounts</em> File-B at some point in File-A, the <em>mount
- point</em>, so that traversing into the mount point actually
- causes one to enter the root object of File-B. File-A and
- File-B are each complete HDF5 files and can be accessed
- individually without mounting them.
-
- <p>We need a couple additional pieces of machinery to make this
- work. First, an haddr_t type (a file address) doesn't contain
- any info about which HDF5 file's address space the address
- belongs to. But since haddr_t is an opaque type except at
- layers 2 and below, it should be quite easy to add a pointer to
- the HDF5 file. This would also remove the H5F_t argument from
- most of the low-level functions since it would be part of the
- OID.
-
- <p>The other thing we need is a table of mount points and some
- functions that understand them. We would add the following
- table to each H5F_t struct:
-
- <p><code><pre>
-struct H5F_mount_t {
- H5F_t *parent; /* Parent HDF5 file if any */
- struct {
- H5F_t *f; /* File which is mounted */
- haddr_t where; /* Address of mount point */
- } *mount; /* Array sorted by mount point */
- intn nmounts; /* Number of mounted files */
- intn alloc; /* Size of mount table */
-}
- </pre></code>
-
- <p>The <code>H5Fmount</code> function takes the ID of an open
- file or group, the name of a to-be-mounted file, the name of the mount
- point, and a file access property list (like <code>H5Fopen</code>).
- It opens the new file and adds a record to the parent's mount
- table. The <code>H5Funmount</code> function takes the parent
- file or group ID and the name of the mount point and disassociates
- the mounted file from the mount point. It does not close the
- mounted file. The <code>H5Fclose</code>
- function closes/unmounts files recursively.
-
- <p>The <code>H5G_iname</code> function which translates a name to
- a file address (<code>haddr_t</code>) looks at the mount table
- at each step in the translation and switches files where
- appropriate. All name-to-address translations occur through
- this function.
-
- <h3>How Long?</h3>
-
- <p>I'm expecting to be able to implement the two new flavors of
- single linear address space in about two days. It took two hours
- to implement the malloc/free file driver at level zero and I
- don't expect this to be much more work.
-
- <p>I'm expecting three days to implement the external raw data for
- discontiguous arrays. Adding the file index to the B-tree is
- quite trivial; adding the external file list message shouldn't
- be too hard since the object header message class from wich this
- message derives is fully implemented; and changing
- <code>H5F_istore_read</code> should be trivial. Most of the
- time will be spent designing a way to cache Unix file
- descriptors efficiently since the total number open files
- allowed per process could be much smaller than the total number
- of HDF5 files and external raw data files.
-
- <p>I'm expecting four days to implement being able to mount one
- HDF5 file on another. I was originally planning a lot more, but
- making <code>haddr_t</code> opaque turned out to be much easier
- than I planned (I did it last Fri). Most of the work will
- probably be removing the redundant H5F_t arguments for lots of
- functions.
-
- <h3>Conclusion</h3>
-
- <p>The external raw data could be implemented as a single linear
- address space, but doing so would require one to allocate large
- enough file addresses throughout the file (>32bits) before the
- file was created. It would make mixing an HDF5 file family with
- external raw data, or external HDF5 wrapper around an HDF4 file
- a more difficult process. So I consider the implementation of
- external raw data files as a single HDF5 linear address space a
- kludge.
-
- <p>The ability to mount one HDF5 file on another might not be a
- very important feature especially since each HDF5 file must be a
- complete file by itself. It's not possible to stripe an array
- over multiple HDF5 files because the B-tree wouldn't be complete
- in any one file, so the only choice is to stripe the array
- across multiple raw data files and store the B-tree in the HDF5
- file. On the other hand, it might be useful if one file
- contains some public data which can be mounted by other files
- (e.g., a mesh topology shared among collaborators and mounted by
- files that contain other fields defined on the mesh). Of course
- the applications can open the two files separately, but it might
- be more portable if we support it in the library.
-
- <p>So we're looking at about two weeks to implement all three
- versions. I didn't get a chance to do any of them in AIO
- although we had long-term plans for the first two with a
- possibility of the third. They'll be much easier to implement in
- HDF5 than AIO since I've been keeping these in mind from the
- start.
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Sat Nov 8 18:08:52 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Tue Sep 8 14:43:32 EDT 1998
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/FF-IH_FileGroup.gif b/doc/html/FF-IH_FileGroup.gif
deleted file mode 100644
index b0d76f5..0000000
--- a/doc/html/FF-IH_FileGroup.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/FF-IH_FileObject.gif b/doc/html/FF-IH_FileObject.gif
deleted file mode 100644
index 8eba623..0000000
--- a/doc/html/FF-IH_FileObject.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Files.html b/doc/html/Files.html
deleted file mode 100644
index d490436..0000000
--- a/doc/html/Files.html
+++ /dev/null
@@ -1,607 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>File Interface (H5F)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The File Interface (H5F)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>HDF5 files are composed of a <em>super block</em> describing information
- required to portably access files on multiple platforms, followed
- by information about the groups in a file and the datasets in the
- file. The super block contains information about the size of offsets
- and lengths of objects, the number of entries in symbol tables
- (used to store groups) and additional version information for the
- file.
-
- <h2>2. File access modes</h2>
-
- <p>The HDF5 library assumes that all files are implicitly opened for read
- access at all times. Passing the <code>H5F_ACC_RDWR</code>
- parameter to <code>H5Fopen()</code> allows write access to a
- file also. <code>H5Fcreate()</code> assumes write access as
- well as read access, passing <code>H5F_ACC_TRUNC</code> forces
- the truncation of an existing file, otherwise H5Fcreate will
- fail to overwrite an existing file.
-
- <h2>3. Creating, Opening, and Closing Files</h2>
-
- <p>Files are created with the <code>H5Fcreate()</code> function,
- and existing files can be accessed with <code>H5Fopen()</code>. Both
- functions return an object ID which should be eventually released by
- calling <code>H5Fclose()</code>.
-
- <dl>
- <dt><code>hid_t H5Fcreate (const char *<em>name</em>, uintn
- <em>flags</em>, hid_t <em>create_properties</em>, hid_t
- <em>access_properties</em>)</code>
- <dd>This function creates a new file with the specified name in
- the current directory. The file is opened with read and write
- permission, and if the <code>H5F_ACC_TRUNC</code> flag is set,
- any current file is truncated when the new file is created.
- If a file of the same name exists and the
- <code>H5F_ACC_TRUNC</code> flag is not set (or the
- <code>H5F_ACC_EXCL</code> bit is set), this function will
- fail. Passing <code>H5P_DEFAULT</code> for the creation
- and/or access property lists uses the library's default
- values for those properties. Creating and changing the
- values of a property list is documented further below. The
- return value is an ID for the open file and it should be
- closed by calling <code>H5Fclose()</code> when it's no longer
- needed. A negative value is returned for failure.
-
- <br><br>
- <dt><code>hid_t H5Fopen (const char *<em>name</em>, uintn
- <em>flags</em>, hid_t <em>access_properties</em>)</code>
- <dd>This function opens an existing file with read permission
- and write permission if the <code>H5F_ACC_RDWR</code> flag is
- set. The <em>access_properties</em> is a file access property
- list ID or <code>H5P_DEFAULT</code> for the default I/O access
- parameters. Creating and changing the parameters for access
- property lists is documented further below. Files which are opened
- more than once return a unique identifier for each
- <code>H5Fopen()</code> call and can be accessed through all
- file IDs. The return value is an ID for the open file and it
- should be closed by calling <code>H5Fclose()</code> when it's
- no longer needed. A negative value is returned for failure.
-
- <br><br>
- <dt><code>herr_t H5Fclose (hid_t <em>file_id</em>)</code>
- <dd>This function releases resources used by a file which was
- opened by <code>H5Fcreate()</code> or <code>H5Fopen()</code>. After
- closing a file the <em>file_id</em> should not be used again. This
- function returns zero for success or a negative value for failure.
-
- <br><br>
- <dt><code>herr_t H5Fflush (hid_t <em>object_id</em>,
- H5F_scope_t <em>scope</em>)</code>
- <dd>This function will cause all buffers associated with a file
- to be immediately flushed to the file. The <em>object_id</em>
- can be any object which is associated with a file, including
- the file itself. <em>scope</em> specifies whether the flushing
- action is to be global or local.
- </dl>
-
- <h2>4. File Property Lists</h2>
-
- <p>Additional parameters to <code>H5Fcreate()</code> or
- <code>H5Fopen()</code> are passed through property list
- objects, which are created with the <code>H5Pcreate()</code>
- function. These objects allow many parameters of a file's
- creation or access to be changed from the default values.
- Property lists are used as a portable and extensible method of
- modifying multiple parameter values with simple API functions.
- There are two kinds of file-related property lists,
- namely file creation properties and file access properties.
-
- <h3>4.1. File Creation Properties</h3>
-
- <P>File creation property lists apply to <code>H5Fcreate()</code> only
- and are used to control the file meta-data which is maintained
- in the super block of the file. The parameters which can be
- modified are:
-
- <dl>
- <dt>User-Block Size <dd>The <em>user-block</em> is a fixed length block of
- data located at the beginning of the file which is ignored by the
- HDF5 library and may be used to store any data information found
- to be useful to applications. This value may be set to any power
- of two equal to 512 or greater (i.e. 512, 1024, 2048, etc). This
- parameter is set and queried with the
- <code>H5Pset_userblock()</code> and
- <code>H5Pget_userblock()</code> calls.
-
- <br><br>
- <dt>Offset and Length Sizes
- <dd>The number of bytes used to store the offset and length of
- objects in the HDF5 file can be controlled with this
- parameter. Values of 2, 4 and 8 bytes are currently
- supported to allow 16-bit, 32-bit and 64-bit files to
- be addressed. These parameters are set and queried
- with the <code>H5Pset_sizes()</code> and
- <code>H5Pget_sizes()</code> calls.
-
- <br><br>
- <dt>Symbol Table Parameters
- <dd>The size of symbol table B-trees can be controlled by setting
- the 1/2 rank and 1/2 node size parameters of the B-tree. These
- parameters are set and queried with the
- <code>H5Pset_sym_k()</code> and <code>H5Pget_sym_k()</code> calls.
-
- <br><br>
- <dt>Indexed Storage Parameters
- <dd>The size of indexed storage B-trees can be controlled by
- setting the 1/2 rank and 1/2 node size parameters of the B-tree.
- These parameters are set and queried with the
- <code>H5Pset_istore_k()</code> and <code>H5Pget_istore_k()</code>
- calls.
- </dl>
-
- <h3>4.2. File Access Property Lists</h3>
-
- <p>File access property lists apply to <code>H5Fcreate()</code> or
- <code>H5Fopen()</code> and are used to control different methods of
- performing I/O on files.
-
- <dl>
- <dt>Unbuffered I/O
- <dd>Local permanent files can be accessed with the functions described
- in Section 2 of the Posix manual, namely <code>open()</code>,
- <code>lseek()</code>, <code>read()</code>, <code>write()</code>, and
- <code>close()</code>. The <code>lseek64()</code> function is used
- on operating systems that support it. This driver is enabled and
- configured with <code>H5Pset_fapl_sec2()</code>.
-
- <br><br>
- <dt>Buffered I/O
- <dd>Local permanent files can be accessed with the functions declared
- in the standard C header file <code>stdio.h</code>, namely
- <code>fopen()</code>, <code>fseek()</code>, <code>fread()</code>,
- <code>fwrite()</code>, and <code>fclose()</code>. The
- <code>fseek64()</code> function is used on operating systems that
- support it. This driver is enabled and configured with
- <code>H5Pset_fapl_stdio()</code>.
-
- <br><br>
- <dt>Memory I/O
- <dd>Local temporary files can be created and accessed directly from
- memory without ever creating permanent storage. The library uses
- <code>malloc()</code> and <code>free()</code> to create storage
- space for the file. The total size of the file must be small enough
- to fit in virtual memory. The name supplied to
- <code>H5Fcreate()</code> is irrelevant, and <code>H5Fopen()</code>
- will always fail.
-
- <br><br>
- <dt>Parallel Files using MPI I/O
- <dd>This driver allows parallel access to a file through the MPI I/O
- library. The parameters which can be modified are the MPI
- communicator, the info object, and the access mode.
- The communicator and info object are saved and then
- passed to <code>MPI_File_open()</code> during file creation or open.
- The access_mode controls the kind of parallel access the application
- intends. (Note that it is likely that the next API revision will
- remove the access_mode parameter and have access control specified
- via the raw data transfer property list of <code>H5Dread()</code>
- and <code>H5Dwrite()</code>.) These parameters are set and queried
- with the <code>H5Pset_fapl_mpi()</code> and
- <code>H5Pget_fapl_mpi()</code> calls.
-
- <br><br>
- <dt>Data Alignment
- <dd>Sometimes file access is faster if certain things are
- aligned on file blocks. This can be controlled by setting
- alignment properties of a file access property list with the
- <code>H5Pset_alignment()</code> function. Any allocation
- request at least as large as some threshold will be aligned on
- an address which is a multiple of some number.
- </dl> </ul>
-
- <h2>5. Examples of using file property lists</h2>
-
- <h3>5.1. Example of using file creation property lists</h3>
-
- <p>This following example shows how to create a file with 64-bit object
- offsets and lengths:<br>
- <pre>
- hid_t create_plist;
- hid_t file_id;
-
- create_plist = H5Pcreate(H5P_FILE_CREATE);
- H5Pset_sizes(create_plist, 8, 8);
-
- file_id = H5Fcreate("test.h5", H5F_ACC_TRUNC,
- create_plist, H5P_DEFAULT);
- .
- .
- .
- H5Fclose(file_id);
- </pre>
-
- <h3>5.2. Example of using file creation plist</h3>
-
- <p>This following example shows how to open an existing file for
- independent datasets access by MPI parallel I/O:<br>
- <pre>
- hid_t access_plist;
- hid_t file_id;
-
- access_plist = H5Pcreate(H5P_FILE_ACCESS);
- H5Pset_fapl_mpi(access_plist, MPI_COMM_WORLD, MPI_INFO_NULL);
-
- /* H5Fopen must be called collectively */
- file_id = H5Fopen("test.h5", H5F_ACC_RDWR, access_plist);
- .
- .
- .
- /* H5Fclose must be called collectively */
- H5Fclose(file_id);
- </pre>
-
-
- <h2>6. Low-level File Drivers</h2>
-
- <p>HDF5 is able to access its address space through various types of
- low-level <em>file drivers</em>. For instance, an address space might
- correspond to a single file on a Unix file system, multiple files on a
- Unix file system, multiple files on a parallel file system, or a block
- of memory within the application. Generally, an HDF5 address space is
- referred to as an <em>HDF5 file</em> regardless of how the space is organized
- at the storage level.
-
- <h3>6.1. Unbuffered Permanent Files</h3>
-
- <p>The <em>sec2</em> driver uses functions from section 2 of the
- Posix manual to access files stored on a local file system. These are
- the <code>open()</code>, <code>close()</code>, <code>read()</code>,
- <code>write()</code>, and <code>lseek()</code> functions. If the
- operating system supports <code>lseek64()</code> then it is used instead
- of <code>lseek()</code>. The library buffers meta data regardless of
- the low-level driver, but using this driver prevents data from being
- buffered again by the lowest layers of the HDF5 library.
-
- <dl>
- <dt><code>hid_t H5Pget_driver (hid_t <em>access_properties</em>)</code>
- <dd>This function returns the constant <code>H5FD_SEC2</code> if the
- <em>sec2</em> driver is defined as the low-level driver for the
- specified access property list.
-
- <br><br>
- <dt><code>herr_t H5Pset_fapl_sec2
- (hid_t <em>access_properties</em>)</code>
- <dd>The file access properties are set to use the <em>sec2</em>
- driver. Any previously defined driver properties are erased from the
- property list. Additional parameters may be added to this function in
- the future.
-
- </dl>
-
- <h3>6.2. Buffered Permanent Files</h3>
-
- <p>The <em>stdio</em> driver uses the functions declared in the
- <code>stdio.h</code> header file to access permanent files in a local
- file system. These are the <code>fopen()</code>, <code>fclose()</code>,
- <code>fread()</code>, <code>fwrite()</code>, and <code>fseek()</code>
- functions. If the operating system supports <code>fseek64()</code> then
- it is used instead of <code>fseek()</code>. Use of this driver
- introduces an additional layer of buffering beneath the HDF5 library.
-
- <dl>
- <dt><code>hid_t H5Pget_driver(hid_t <em>access_properties</em>)</code>
- <dd>This function returns the constant <code>H5FD_STDIO</code> if the
- <em>stdio</em> driver is defined as the low-level driver for the
- specified access property list.
-
- <br><br>
- <dt><code>herr_t H5Pset_fapl_stdio
- (hid_t <em>access_properties</em>)</code>
- <dd>The file access properties are set to use the <em>stdio</em>
- driver. Any previously defined driver properties are erased from the
- property list. Additional parameters may be added to this function in
- the future.
-
- </dl>
-
- <h3>6.3. Buffered Temporary Files</h3>
-
- <p>The <em>core</em> driver uses <code>malloc()</code> and
- <code>free()</code> to allocate space for a file in the heap. Reading
- and writing to a file of this type results in mem-to-mem copies instead
- of disk I/O and as a result is somewhat faster. However, the total file
- size must not exceed the amount of available virtual memory, and only
- one HDF5 file handle can access the file (because the name of such a
- file is insignificant and <code>H5Fopen()</code> always fails).
-
- <dl>
- <dt><code>hid_t H5Pget_driver (hid_t <em>access_properties</em>)</code>
- <dd>This function returns the constant <code>H5FD_CORE</code> if the
- <em>core</em> driver is defined as the low-level driver for the
- specified access property list.
-
- <br><br>
- <dt><code>herr_t H5Pset_fapl_core (hid_t <em>access_properties</em>,
- size_t <em>block_size</em>,
- hbool_t <em>backing_store</em>)</code>
- <dd>The file access properties are set to use the <em>core</em>
- driver and any previously defined driver properties are erased from
- the property list. Memory for the file will always be allocated in
- units of the specified <em>block_size</em>. Additional parameters may
- be added to this function in the future.
-
- <br><br>
- <dt><code>herr_t H5Pget_fapl_core (hid_t <em>access_properties</em>,
- size_t *<em>block_size</em>),
- hbool_t *<em>backing_store</em>)</code>
- <dd>If the file access property list is set to the <em>core</em> driver
- then this function returns zero and <em>block_size</em> is set to the
- block size used for the file; otherwise it returns a negative
- value. In the future, additional arguments may be added to this
- function to match those added to <code>H5Pset_fapl_core()</code>.
- </dl>
-
- <h3>6.4. Parallel Files</h3>
-
- <p>This driver uses MPI I/O to provide parallel access to a file.
-
- <dl>
- <dt><code>hid_t H5Pget_driver (hid_t <em>access_properties</em>)</code>
- <dd>This function returns the constant <code>H5FD_MPI</code> if the
- <em>mpi</em> driver is defined as the low-level driver for the
- specified access property list.
-
- <br><br>
- <dt><code>herr_t H5Pset_fapl_mpi (hid_t <em>access_properties</em>, MPI_Comm
- <em>comm</em>, MPI_info <em>info</em>)</code>
- <dd>The file access properties are set to use the <em>mpi</em>
- driver and any previously defined driver properties are erased from
- the property list. Additional parameters may be added to this
- function in the future.
-
- <br><br>
- <dt><code>herr_t H5Pget_fapl_mpi
- (hid_t <em>access_properties</em>,
- MPI_Comm *<em>comm</em>,
- MPI_info *<em>info</em>)</code>
- <dd>If the file access property list is set to the <em>mpi</em> driver
- then this function returns zero and <em>comm</em>, and <em>info</em>
- are set to the values stored in the property
- list; otherwise the function returns a negative value. In the future,
- additional arguments may be added to this function to match those
- added to <code>H5Pset_fapl_mpi()</code>.
- </dl>
-
- <a name="Files_Families">
- <h3>6.5. File Families</h3>
- </a>
-
- <p>A single HDF5 address space may be split into multiple files which,
- together, form a file family. Each member of the family must be the
- same logical size although the size and disk storage reported by
- <code>ls</code>(1) may be substantially smaller. The name passed to
- <code>H5Fcreate()</code> or <code>H5Fopen()</code> should include a
- <code>printf(3c)</code> style integer format specifier which will be
- replaced with the family member number (the first family member is
- zero).
-
- <p>Any HDF5 file can be split into a family of files by running
- the file through <code>split</code>(1) and numbering the output
- files. However, because HDF5 is lazy about extending the size
- of family members, a valid file cannot generally be created by
- concatenation of the family members. Additionally,
- <code>split</code> and <code>cat</code> don't attempt to
- generate files with holes. The <code>h5repart</code> program
- can be used to repartition an HDF5 file or family into another
- file or family and preserves holes in the files.
-
- <dl>
- <dt><code>h5repart</code> [<code>-v</code>] [<code>-b</code>
- <em>block_size</em>[<em>suffix</em>]] [<code>-m</code>
- <em>member_size</em>[<em>suffix</em>]] <em>source
- destination</em>
- <dd>This program repartitions an HDF5 file by copying the source
- file or family to the destination file or family preserving
- holes in the underlying Unix files. Families are used for the
- source and/or destination if the name includes a
- <code>printf</code>-style integer format such as "%d". The
- <code>-v</code> switch prints input and output file names on
- the standard error stream for progress monitoring,
- <code>-b</code> sets the I/O block size (the default is 1kB),
- and <code>-m</code> sets the output member size if the
- destination is a family name (the default is 1GB). The block
- and member sizes may be suffixed with the letters
- <code>g</code>, <code>m</code>, or <code>k</code> for GB, MB,
- or kB respectively.
-
- <br><br>
- <dt><code>hid_t H5Pget_driver (hid_t <em>access_properties</em>)</code>
- <dd>This function returns the constant <code>H5FD_FAMILY</code> if
- the <em>family</em> driver is defined as the low-level driver for the
- specified access property list.
-
- <br><br>
- <dt><code>herr_t H5Pset_fapl_family (hid_t <em>access_properties</em>,
- hsize_t <em>memb_size</em>, hid_t <em>member_properties</em>)</code>
- <dd>The file access properties are set to use the <em>family</em>
- driver and any previously defined driver properties are erased
- from the property list. Each member of the file family will
- use <em>member_properties</em> as its file access property
- list. The <em>memb_size</em> argument gives the logical size
- in bytes of each family member but the actual size could be
- smaller depending on whether the file contains holes. The
- member size is only used when creating a new file or
- truncating an existing file; otherwise the member size comes
- from the size of the first member of the family being
- opened. Note: if the size of the <code>off_t</code> type is
- four bytes then the maximum family member size is usually
- 2^31-1 because the byte at offset 2,147,483,647 is generally
- inaccessible. Additional parameters may be added to this
- function in the future.
-
- <br><br>
- <dt><code>herr_t H5Pget_fapl_family (hid_t <em>access_properties</em>,
- hsize_t *<em>memb_size</em>,
- hid_t *<em>member_properties</em>)</code>
- <dd>If the file access property list is set to the <em>family</em>
- driver then this function returns zero; otherwise the function
- returns a negative value. On successful return,
- <em>access_properties</em> will point to a copy of the member
- access property list which should be closed by calling
- <code>H5Pclose()</code> when the application is finished with
- it. If <em>memb_size</em> is non-null then it will contain
- the logical size in bytes of each family member. In the
- future, additional arguments may be added to this function to
- match those added to <code>H5Pset_fapl_family()</code>.
- </dl>
-
- <h3>6.6. Split Meta/Raw Files</h3>
-
- <p>On occasion, it might be useful to separate meta data from raw
- data. The <em>split</em> driver does this by creating two files: one for
- meta data and another for raw data. The application provides a base
- file name to <code>H5Fcreate()</code> or <code>H5Fopen()</code> and this
- driver appends a file extension which defaults to <code>.meta</code> for
- the meta data file and <code>.raw</code> for the raw data file.
- Each file can have its own
- file access property list which allows, for instance, a split file with
- meta data stored with the <em>core</em> driver and raw data stored with
- the <em>sec2</em> driver.
-
- <dl>
- <dt><code>hid_t H5Pget_driver (hid_t <em>access_properties</em>)</code>
- <dd>This function returns the constant <code>H5FD_SPLIT</code> if
- the <em>split</em> driver is defined as the low-level driver for the
- specified access property list.
-
- <br><br>
- <dt><code>herr_t H5Pset_fapl_split (hid_t <em>access_properties</em>,
- const char *<em>meta_extension</em>,
- hid_t <em>meta_properties</em>, const char *<em>raw_extension</em>,
- hid_t <em>raw_properties</em>)</code>
- <dd>The file access properties are set to use the <em>split</em>
- driver and any previously defined driver properties are erased from
- the property list. The meta file will have a name which is formed by
- adding <em>meta_extension</em> (or <code>.meta</code>) to the end of
- the base name and will be accessed according to the
- <em>meta_properties</em>. The raw file will have a name which is
- formed by appending <em>raw_extension</em> (or <code>.raw</code>) to the base
- name and will be accessed according to the <em>raw_properties</em>.
- Additional parameters may be added to this function in the future.
-
- </dl>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Tue Jan 27 09:11:27 EST 1998 -->
-<!-- hhmts start -->
-Last modified: 26 April 2001
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/Filters.html b/doc/html/Filters.html
deleted file mode 100644
index a253cfb..0000000
--- a/doc/html/Filters.html
+++ /dev/null
@@ -1,593 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Filters</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>Filters in HDF5</h1>
-
- <b>Note: Transient pipelines described in this document have not
- been implemented.</b>
-
- <h2>1. Introduction</h2>
-
- <p>HDF5 allows chunked data<sup><a href="#fn1">1</a></sup>
- to pass through user-defined filters
- on the way to or from disk. The filters operate on chunks of an
- <code>H5D_CHUNKED</code> dataset can be arranged in a pipeline
- so output of one filter becomes the input of the next filter.
-
- <p>Each filter has a two-byte identification number (type
- <code>H5Z_filter_t</code>) allocated by NCSA and can also be
- passed application-defined integer resources to control its
- behavior. Each filter also has an optional ASCII comment
- string.
-
- <p>
- <center>
- <table align=center width="80%">
- <caption alignment=top>
- <b>Values for <code>H5Z_filter_t</code></b>
- </caption>
-
- <tr>
- <th width="30%">Value</th>
- <th width="70%">Description</th>
- </tr>
-
- <tr valign=top>
- <td><code>0-255</code></td>
- <td>These values are reserved for filters predefined and
- registered by the HDF5 library and of use to the general
- public. They are described in a separate section
- below.</td>
- </tr>
-
- <tr valign=top>
- <td><code>256-511</code></td>
- <td>Filter numbers in this range are used for testing only
- and can be used temporarily by any organization. No
- attempt is made to resolve numbering conflicts since all
- definitions are by nature temporary.</td>
- </tr>
-
- <tr valign=top>
- <td><code>512-65535</code></td>
- <td>Reserved for future assignment. Please contact the
- <a href="mailto:hdf5dev@ncsa.uiuc.edu">HDF5 development
- team</a> to reserve a value or range of values for
- use by your filters.</td>
- </table>
- </center>
-
- <h2>2. Defining and Querying the Filter Pipeline</h2>
-
- <p>Two types of filters can be applied to raw data I/O: permanent
- filters and transient filters. The permanent filter pipeline is
- defned when the dataset is created while the transient pipeline
- is defined for each I/O operation. During an
- <code>H5Dwrite()</code> the transient filters are applied first
- in the order defined and then the permanent filters are applied
- in the order defined. For an <code>H5Dread()</code> the
- opposite order is used: permanent filters in reverse order, then
- transient filters in reverse order. An <code>H5Dread()</code>
- must result in the same amount of data for a chunk as the
- original <code>H5Dwrite()</code>.
-
- <p>The permanent filter pipeline is defined by calling
- <code>H5Pset_filter()</code> for a dataset creation property
- list while the transient filter pipeline is defined by calling
- that function for a dataset transfer property list.
-
- <dl>
- <dt><code>herr_t H5Pset_filter (hid_t <em>plist</em>,
- H5Z_filter_t <em>filter</em>, unsigned int <em>flags</em>,
- size_t <em>cd_nelmts</em>, const unsigned int
- <em>cd_values</em>[])</code>
- <dd>This function adds the specified <em>filter</em> and
- corresponding properties to the end of the transient or
- permanent output filter pipeline (depending on whether
- <em>plist</em> is a dataset creation or dataset transfer
- property list). The <em>flags</em> argument specifies certain
- general properties of the filter and is documented below. The
- <em>cd_values</em> is an array of <em>cd_nelmts</em> integers
- which are auxiliary data for the filter. The integer values
- will be stored in the dataset object header as part of the
- filter information.
-
- <br><br>
- <dt><code>int H5Pget_nfilters (hid_t <em>plist</em>)</code>
- <dd>This function returns the number of filters defined in the
- permanent or transient filter pipeline depending on whether
- <em>plist</em> is a dataset creation or dataset transfer
- property list. In each pipeline the filters are numbered from
- 0 through <em>N</em>-1 where <em>N</em> is the value returned
- by this function. During output to the file the filters of a
- pipeline are applied in increasing order (the inverse is true
- for input). Zero is returned if there are no filters in the
- pipeline and a negative value is returned for errors.
-
- <br><br>
- <dt><code>H5Z_filter_t H5Pget_filter (hid_t <em>plist</em>,
- int <em>filter_number</em>, unsigned int *<em>flags</em>,
- size_t *<em>cd_nelmts</em>, unsigned int
- *<em>cd_values</em>, size_t namelen, char name[])</code>
- <dd>This is the query counterpart of
- <code>H5Pset_filter()</code> and returns information about a
- particular filter number in a permanent or transient pipeline
- depending on whether <em>plist</em> is a dataset creation or
- dataset transfer property list. On input, <em>cd_nelmts</em>
- indicates the number of entries in the <em>cd_values</em>
- array allocated by the caller while on exit it contains the
- number of values defined by the filter. The
- <em>filter_number</em> should be a value between zero and
- <em>N</em>-1 as described for <code>H5Pget_nfilters()</code>
- and the function will return failure (a negative value) if the
- filter number is out of range. If <em>name</em> is a pointer
- to an array of at least <em>namelen</em> bytes then the filter
- name will be copied into that array. The name will be null
- terminated if the <em>namelen</em> is large enough. The
- filter name returned will be the name appearing in the file or
- else the name registered for the filter or else an empty string.
- </dl>
-
- <p>The flags argument to the functions above is a bit vector of
- the following fields:
-
- <p>
- <center>
- <table align=center width="80%">
- <caption align=top>
- <b>Values for the <em>flags</em> argument</b>
- </caption>
-
- <tr>
- <th width="30%">Value</th>
- <th width="70%">Description</th>
- </tr>
-
- <tr valign=top>
- <td><code>H5Z_FLAG_OPTIONAL</code></td>
- <td>If this bit is set then the filter is optional. If
- the filter fails (see below) during an
- <code>H5Dwrite()</code> operation then the filter is
- just excluded from the pipeline for the chunk for which
- it failed; the filter will not participate in the
- pipeline during an <code>H5Dread()</code> of the chunk.
- This is commonly used for compression filters: if the
- compression result would be larger than the input then
- the compression filter returns failure and the
- uncompressed data is stored in the file. If this bit is
- clear and a filter fails then the
- <code>H5Dwrite()</code> or <code>H5Dread()</code> also
- fails.</td>
- </tr>
- </table>
- </center>
-
- <h2>3. Defining Filters</h2>
-
- <p>Each filter is bidirectional, handling both input and output to
- the file, and a flag is passed to the filter to indicate the
- direction. In either case the filter reads a chunk of data from
- a buffer, usually performs some sort of transformation on the
- data, places the result in the same or new buffer, and returns
- the buffer pointer and size to the caller. If something goes
- wrong the filter should return zero to indicate a failure.
-
- <p>During output, a filter that fails or isn't defined and is
- marked as optional is silently excluded from the pipeline and
- will not be used when reading that chunk of data. A required
- filter that fails or isn't defined causes the entire output
- operation to fail. During input, any filter that has not been
- excluded from the pipeline during output and fails or is not
- defined will cause the entire input operation to fail.
-
- <p>Filters are defined in two phases. The first phase is to
- define a function to act as the filter and link the function
- into the application. The second phase is to register the
- function, associating the function with an
- <code>H5Z_filter_t</code> identification number and a comment.
-
- <dl>
- <dt><code>typedef size_t (*H5Z_func_t)(unsigned int
- <em>flags</em>, size_t <em>cd_nelmts</em>, const unsigned int
- <em>cd_values</em>[], size_t <em>nbytes</em>, size_t
- *<em>buf_size</em>, void **<em>buf</em>)</code>
- <dd>The <em>flags</em>, <em>cd_nelmts</em>, and
- <em>cd_values</em> are the same as for the
- <code>H5Pset_filter()</code> function with the additional flag
- <code>H5Z_FLAG_REVERSE</code> which is set when the filter is
- called as part of the input pipeline. The input buffer is
- pointed to by <em>*buf</em> and has a total size of
- <em>*buf_size</em> bytes but only <em>nbytes</em> are valid
- data. The filter should perform the transformation in place if
- possible and return the number of valid bytes or zero for
- failure. If the transformation cannot be done in place then
- the filter should allocate a new buffer with
- <code>malloc()</code> and assign it to <em>*buf</em>,
- assigning the allocated size of that buffer to
- <em>*buf_size</em>. The old buffer should be freed
- by calling <code>free()</code>.
-
- <br><br>
- <dt><code>herr_t H5Zregister (H5Z_filter_t <em>filter_id</em>,
- const char *<em>comment</em>, H5Z_func_t
- <em>filter</em>)</code>
- <dd>The <em>filter</em> function is associated with a filter
- number and a short ASCII comment which will be stored in the
- hdf5 file if the filter is used as part of a permanent
- pipeline during dataset creation.
- </dl>
-
-
- <h2>4. Predefined Filters</h2>
-
- <p>If <code>zlib</code> version 1.1.2 or later was found
- during configuration then the library will define a filter whose
- <code>H5Z_filter_t</code> number is
- <code>H5Z_FILTER_DEFLATE</code>. Since this compression method
- has the potential for generating compressed data which is larger
- than the original, the <code>H5Z_FLAG_OPTIONAL</code> flag
- should be turned on so such cases can be handled gracefully by
- storing the original data instead of the compressed data. The
- <em>cd_nvalues</em> should be one with <em>cd_value[0]</em>
- being a compression agression level between zero and nine,
- inclusive (zero is the fastest compression while nine results in
- the best compression ratio).
-
- <p>A convenience function for adding the
- <code>H5Z_FILTER_DEFLATE</code> filter to a pipeline is:
-
- <dl>
- <dt><code>herr_t H5Pset_deflate (hid_t <em>plist</em>, unsigned
- <em>aggression</em>)</code>
- <dd>The deflate compression method is added to the end of the
- permanent or transient filter pipeline depending on whether
- <em>plist</em> is a dataset creation or dataset transfer
- property list. The <em>aggression</em> is a number between
- zero and nine (inclusive) to indicate the tradeoff between
- speed and compression ratio (zero is fastest, nine is best
- ratio).
- </dl>
-
- <p>Even if the <code>zlib</code> isn't detected during
- configuration the application can define
- <code>H5Z_FILTER_DEFLATE</code> as a permanent filter. If the
- filter is marked as optional (as with
- <code>H5Pset_deflate()</code>) then it will always fail and be
- automatically removed from the pipeline. Applications that read
- data will fail only if the data is actually compressed; they
- won't fail if <code>H5Z_FILTER_DEFLATE</code> was part of the
- permanent output pipeline but was automatically excluded because
- it didn't exist when the data was written.
-
- <p><code>zlib</code> can be acquired from
- <code><a href="http://www.cdrom.com/pub/infozip/zlib/">http://www.cdrom.com/pub/infozip/zlib/</a></code>.
-
- <h2>5. Example</h2>
-
- <p>This example shows how to define and register a simple filter
- that adds a checksum capability to the data stream.
-
- <p>The function that acts as the filter always returns zero
- (failure) if the <code>md5()</code> function was not detected at
- configuration time (left as an excercise for the reader).
- Otherwise the function is broken down to an input and output
- half. The output half calculates a checksum, increases the size
- of the output buffer if necessary, and appends the checksum to
- the end of the buffer. The input half calculates the checksum
- on the first part of the buffer and compares it to the checksum
- already stored at the end of the buffer. If the two differ then
- zero (failure) is returned, otherwise the buffer size is reduced
- to exclude the checksum.
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>
- <p><code><pre>
-
-size_t
-md5_filter(unsigned int flags, size_t cd_nelmts,
- const unsigned int cd_values[], size_t nbytes,
- size_t *buf_size, void **buf)
-{
-#ifdef HAVE_MD5
- unsigned char cksum[16];
-
- if (flags & H5Z_REVERSE) {
- /* Input */
- assert(nbytes>=16);
- md5(nbytes-16, *buf, cksum);
-
- /* Compare */
- if (memcmp(cksum, (char*)(*buf)+nbytes-16, 16)) {
- return 0; /*fail*/
- }
-
- /* Strip off checksum */
- return nbytes-16;
-
- } else {
- /* Output */
- md5(nbytes, *buf, cksum);
-
- /* Increase buffer size if necessary */
- if (nbytes+16>*buf_size) {
- *buf_size = nbytes + 16;
- *buf = realloc(*buf, *buf_size);
- }
-
- /* Append checksum */
- memcpy((char*)(*buf)+nbytes, cksum, 16);
- return nbytes+16;
- }
-#else
- return 0; /*fail*/
-#endif
-}
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>Once the filter function is defined it must be registered so
- the HDF5 library knows about it. Since we're testing this
- filter we choose one of the <code>H5Z_filter_t</code> numbers
- from the reserved range. We'll randomly choose 305.
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>
- <p><code><pre>
-
-#define FILTER_MD5 305
-herr_t status = H5Zregister(FILTER_MD5, "md5 checksum", md5_filter);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <p>Now we can use the filter in a pipeline. We could have added
- the filter to the pipeline before defining or registering the
- filter as long as the filter was defined and registered by time
- we tried to use it (if the filter is marked as optional then we
- could have used it without defining it and the library would
- have automatically removed it from the pipeline for each chunk
- written before the filter was defined and registered).
-
- <p>
- <center>
- <table border align=center width="100%">
- <tr>
- <td>
- <p><code><pre>
-
-hid_t dcpl = H5Pcreate(H5P_DATASET_CREATE);
-hsize_t chunk_size[3] = {10,10,10};
-H5Pset_chunk(dcpl, 3, chunk_size);
-H5Pset_filter(dcpl, FILTER_MD5, 0, 0, NULL);
-hid_t dset = H5Dcreate(file, "dset", H5T_NATIVE_DOUBLE, space, dcpl);
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
- <h2>6. Filter Diagnostics</h2>
-
- <p>If the library is compiled with debugging turned on for the H5Z
- layer (usually as a result of <code>configure
- --enable-debug=z</code>) then filter statistics are printed when
- the application exits normally or the library is closed. The
- statistics are written to the standard error stream and include
- two lines for each filter that was used: one for input and one
- for output. The following fields are displayed:
-
- <p>
- <center>
- <table align=center width="80%">
- <tr>
- <th width="30%">Field Name</th>
- <th width="70%">Description</th>
- </tr>
-
- <tr valign=top>
- <td>Method</td>
- <td>This is the name of the method as defined with
- <code>H5Zregister()</code> with the charaters
- &quot;&lt; or &quot;&gt;&quot; prepended to indicate
- input or output.</td>
- </tr>
-
- <tr valign=top>
- <td>Total</td>
- <td>The total number of bytes processed by the filter
- including errors. This is the maximum of the
- <em>nbytes</em> argument or the return value.
- </tr>
-
- <tr valign=top>
- <td>Errors</td>
- <td>This field shows the number of bytes of the Total
- column which can be attributed to errors.</td>
- </tr>
-
- <tr valign=top>
- <td>User, System, Elapsed</td>
- <td>These are the amount of user time, system time, and
- elapsed time in seconds spent in the filter function.
- Elapsed time is sensitive to system load. These times
- may be zero on operating systems that don't support the
- required operations.</td>
- </tr>
-
- <tr valign=top>
- <td>Bandwidth</td>
- <td>This is the filter bandwidth which is the total
- number of bytes processed divided by elapsed time.
- Since elapsed time is subject to system load the
- bandwidth numbers cannot always be trusted.
- Furthermore, the bandwidth includes bytes attributed to
- errors which may significanly taint the value if the
- function is able to detect errors without much
- expense.</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center width="100%">
- <caption align=bottom>
- <b>Example: Filter Statistics</b>
- </caption>
- <tr>
- <td>
- <p><code><pre>
-H5Z: filter statistics accumulated over life of library:
- Method Total Errors User System Elapsed Bandwidth
- ------ ----- ------ ---- ------ ------- ---------
- >deflate 160000 40000 0.62 0.74 1.33 117.5 kBs
- &lt;deflate 120000 0 0.11 0.00 0.12 1.000 MBs
- </pre></code>
- </td>
- </tr>
- </table>
- </center>
-
-
-<hr>
-
-
- <p><a name="fn1">Footnote 1:</a> Dataset chunks can be compressed
- through the use of filters. Developers should be aware that
- reading and rewriting compressed chunked data can result in holes
- in an HDF5 file. In time, enough such holes can increase the
- file size enough to impair application or library performance
- when working with that file. See
- &ldquo;<a href="Performance.html#Freespace">Freespace Management</a>&rdquo;
- in the chapter
- &ldquo;<a href="Performance.html">Performance Analysis and Issues</a>.&rdquo;</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Fri Apr 17 13:39:35 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: 2 August 2001
-<!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/Glossary.html b/doc/html/Glossary.html
deleted file mode 100644
index fd32c97..0000000
--- a/doc/html/Glossary.html
+++ /dev/null
@@ -1,573 +0,0 @@
-<html><head><title>
-HDF5 Glossary
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Gen.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/GenElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><center>
-<h1>HDF5 Glossary</h1>
-</center>
-
-<center>
-<table width=90% border=0>
-<tr><td valign=top align=left width=33%>
-<dl>
- <dt><a href="#Glossary-AtomicDType">atomic datatype</a>
- <dt><a href="#Glossary-Attribute">attribute</a>
-<!--<dt><a href="#Glossary-BasicDType">basic datatype</a>-->
- <dt><a href="#Glossary-LayoutChunked">chunked layout</a>
- <dt><a href="#Glossary-Chunking">chunking</a>
-<!--<dt><a href="#Glossary-ComplexDType">complex datatype</a>-->
- <dt><a href="#Glossary-CompoundDType">compound datatype</a>
-<!--<dt>compound element-->
- <dt><a href="#Glossary-LayoutContig">contiguous layout</a>
-<!--<dt>conversion function-->
- <dt><a href="#Glossary-Dataset">dataset</a>
- <dt><a href="#Glossary-Dataspace">dataspace</a>
-<!--<dl>-->
-<!-- <dt>dimensions-->
-<!-- <dt>selection-->
-<!--</dl>-->
- <dt><a href="#Glossary-Datatype">datatype</a>
- <dl>
- <dt><a href="#Glossary-AtomicDType">atomic</a>
-<!-- <dt><a href="#Glossary-BasicDType">basic</a>-->
-<!-- <dt><a href="#Glossary-ComplexDType">complex</a>-->
- <dt><a href="#Glossary-CompoundDType">compound</a>
-<!-- <dt>conversion function-->
-<!-- <dt><a href="#Glossary-DiskIO">disk I/O</a>-->
- <dt><a href="#Glossary-DTypeEnum">enumeration</a>
- <dt><a href="#Glossary-DTypeNamed">named</a>
- <dt><a href="#Glossary-DTypeOpaque">opaque</a>
-<!-- <dt>transient-->
- <dt><a href="#Glossary-DTypeVLen">variable-length</a>
- </dl>
-<!--<dt>DDL-->
-<!--<dt>dimensions-->
-<!--<dt><a href="#Glossary-DiskIO">disk I/O datatype</a>-->
-<!--<dt>element-->
- <dt><a href="#Glossary-DTypeEnum">enumeration datatype</a>
- <dt><a href="#Glossary-File">file</a>
- <dl>
-<!-- <dt>compound element-->
-<!-- <dt>element-->
- <dt><a href="#Glossary-Group">group</a>
- <dt><a href="#Glossary-Path">path</a>
- <dt><a href="#Glossary-RootGroup">root group</a>
- <dt><a href="#Glossary-SuperBlock">super block</a>
- </dl>
-</dl>
-</td>
-<td valign=top align=left width=34%>
-<dl>
- <dt><a href="#Glossary-FileAccessMode">file access mode</a>
- <dt><a href="#Glossary-Group">group</a>
- <dl>
-<!-- <dt>element-->
- <dt><a href="#Glossary-GroupMember">member</a>
- <dt><a href="#Glossary-RootGroup">root group</a>
- </dl>
- <dt><a href="#Glossary-LinkHard">hard link</a>
-<!--<dt>HDF5-->
- <dt><a href="#Glossary-Hyperslab">hyperslab</a>
- <dt><a href="#Glossary-Identifier">identifier</a>
- <dt><a href="#Glossary-Link">link</a>
- <dl>
- <dt><a href="#Glossary-LinkHard">hard</a>
- <dt><a href="#Glossary-LinkSoft">soft</a>
-<!-- <dt><a href="#Glossary-LinkSoftName">soft link name</a>-->
-<!-- <dt>target-->
- </dl>
- <dt><a href="#Glossary-GroupMember">member</a>
- <dt><a href="#Glossary-Name">name</a>
- <dt><a href="#Glossary-DTypeNamed">named datatype</a>
- <dt><a href="#Glossary-DTypeOpaque">opaque datatype</a>
- <dt><a href="#Glossary-Path">path</a>
-<!--<dt>parallel I/O-->
- <dt><a href="#Glossary-PList">property list</a>
- <dl>
- <dt><a href="#Glossary-PListDataTransfer">data transfer</a>
- <dt><a href="#Glossary-PListDSetAccess">dataset access</a>
- <dt><a href="#Glossary-PListDSetCreate">dataset creation</a>
- <dt><a href="#Glossary-PListFileAccess">file access</a>
- <dt><a href="#Glossary-PListFileCreate">file creation</a>
- </dl>
-</dl>
-</td>
-<td valign=top align=left width=33%>
-<dl>
- <dt><a href="#Glossary-RootGroup">root group</a>
- <dt><a href="#Glossary-Selection">selection</a>
- <dl>
- <dt><a href="#Glossary-Hyperslab">hyperslab</a>
-<!-- <dt>point-->
- </dl>
- <dt><a href="#Glossary-Serialization">serialization</a>
- <dt><a href="#Glossary-LinkSoft">soft link</a>
-<!--<dt><a href="#Glossary-LinkSoftName">soft link name</a>-->
- <dt><a href="#Glossary-StorageLayout">storage layout</a>
- <dl>
- <dt><a href="#Glossary-LayoutChunked">chunked</a>
- <dt><a href="#Glossary-Chunking">chunking</a>
- <dt><a href="#Glossary-LayoutContig">contiguous</a>
- </dl>
- <dt><a href="#Glossary-SuperBlock">super block</a>
-<!--<dt>target-->
-<!--<dt>threadsafe-->
-<!--<dt>transient datatype-->
- <dt><a href="#Glossary-DTypeVLen">variable-length datatype</a>
-</dl>
-</td></tr>
-</table>
-</center>
-
-<hr>
-
-
-<DL>
-
-<dt><strong><a name="Glossary-AtomicDType">atomic datatype</a></strong>
- <dd>A datatype which cannot be decomposed into smaller units at the
- API level.
-<P>
-
-<DT><a name="Glossary-Attribute"><B>attribute</B></a>
-<DD>A small dataset that can be used to describe the nature and/or
- the intended usage of the object it is attached to.
-<P>
-
-<!--
-<dt><strong><a name="Glossary-Basic">basic datatypes</a></strong>
- <ul>
- <li>char - 8-bit character (only for ASCII information)
- <li>int8 - 8-bit signed integer
- <li>uint8 - 8-bit unsigned integer
- <li>int16 - 16-bit signed integer
- <li>uint16 - 16-bit unsigned integer
- <li>int32 - 32-bit signed integer
- <li>uint32 - 32-bit unsigned integer
- <li>intn - "native" signed integer
- <li>uintn - "native" unsigned integer
- <li>int64 - 64-bit signed integer (new)
- <li>uint64 - 64-bit unsigned integer (new)
- <li>float32 - 32-bit IEEE float
- <li>float64 - 64-bit IEEE float
- </ul>
-<P>
--->
-
-<dt><strong><a name="Glossary-LayoutChunked">chunked layout</a></strong>
-<dd>The storage layout of a chunked dataset.
-<P>
-
-<dt><strong><a name="Glossary-Chunking">chunking</a></strong>
-<dd>A storage layout where a dataset is partitioned into fixed-size
- multi-dimensional chunks. Chunking tends to improve performance
- and facilitates dataset extensibility.
-<P>
-
-<dt><strong><a name="Glossary-CompoundDType">compound datatype</a></strong>
-<dd>A collection of one or more atomic types or small arrays of such types.
- Similar to a struct in C or a common block in Fortran.
-<P>
-
-<!--
-<dt><strong><a name="Glossary-ComplexDType">complex datatype</a></strong>
-<dd>A collection of one or more atomic types or small arrays of such types.
- <ul>
- <li>hid_t - 32-bit unsigned integer used as ID for memory objects
- <li>hoid_t - 32-bit unsigned integer (currently) used as ID for
- disk-based objects
- <li>hbool_t - boolean to indicate true/false/error codes from functions
- <li>herr_t - 32-bit integer to indicate succeed/fail codes from
- functions
- </ul>
-<P>
--->
-
-<dt><strong><a name="Glossary-LayoutContig">contiguous layout</a></strong>
-<dd>The storage layout of a dataset that is not chunked, so that the entire
- data portion of the dataset is stored in a single contiguous block.
-<P>
-
-<DT><B><a name="Glossary-PListDataTransfer">data transfer property list</a></B>
-<DD>The data transfer property list is used to control various aspects
- of the I/O, such as caching hints or collective I/O information.
-<P>
-
-<DT><B><a name="Glossary-Dataset">dataset</a></B>
-<DD>A multi-dimensional array of data elements, together with
- supporting metadata.
-<P>
-
-<!-- NEW PAGE -->
-<DT><B><a name="Glossary-PListDSetAccess">dataset access property list</a></B>
-<DD>A property list containing information on how a dataset is to be accessed.
-<P>
-
-<DT><B><a name="Glossary-PListDSetCreate">dataset creation property list</a></B>
-<DD>A property list containing information on how
- raw data is organized on disk and how the raw data is compressed.
-<!--
- The dataset API partitions these terms by layout, compression,
- and external storage:
- <UL>
- <B> Layout:</B>
- <UL>
- <LI>H5D_COMPACT: Data is small and can be stored in object header (not
- implemented yet). This eliminates disk seek/read requests.
- <LI>H5D_CONTIGUOUS: (<B>default</B>) The data is large, non-extendible,
- non-compressible, non-sparse, and can be stored externally.
- <LI>H5D_CHUNKED: The data is large and can be extended in any dimension.
- It is partitioned into chunks so each chunk is the same logical size.
- </UL>
- <B>Compression:</B> (gzip compression)<BR>
- <B>External Storage Properties:</B> The data must be contiguous to be
- stored externally. It allows you to store
- the data in one or more non-HDF5 files.
- </UL>
--->
-<P>
-
-<DT><B><a name="Glossary-Dataspace">dataspace</a></B>
-<DD>An object that describes the dimensionality of the data array.
- A dataspace is either a regular N-dimensional array of data points,
- called a simple dataspace, or a more general collection of data points
- organized in another manner, called a complex dataspace.
-<P>
-
-<DT><B><a name="Glossary-Datatype">datatype</a></B>
-<DD>An object that describes the storage format of the individual data
- points of a data set.
- There are two categories of datatypes: atomic and compound datatypes.
- An atomic type is a type which cannot be decomposed into smaller
- units at the API level. A compound datatype is a collection of one or
- more atomic types or small arrays of such types.
-<P>
-
-<!--
-<DT><B>DDL</B>
-<DD>A detailed description of the HDF5 format and objects, written in a
- Data Description Language using Backus-Naur Form.
-<P>
--->
-
-<!--
-<dt><strong><a name="Glossary-DiskIO">disk I/O datatypes</a></strong>
-<ul>
- <li>hoff_t - (64-bit?) offset on disk in bytes
- <li>hlen_t - (64-bit?) length on disk in bytes
-</ul>
-<P>
--->
-
-<dt><strong><a name="Glossary-DTypeEnum">enumeration datatype</a></strong>
-<dd>A one-to-one mapping between a set of symbols and a set of
- integer values, and an order is imposed on the symbols by their
- integer values. The symbols are passed between the application
- and library as character strings and all the values for a
- particular enumeration datatype are of the same integer type,
- which is not necessarily a native type.
-<P>
-
-<DT><B><a name="Glossary-File">file</a></B>
-<DD>A container for storing grouped collections of
- multi-dimensional arrays containing scientific data.
-<P>
-
-<DT><B><a name="Glossary-FileAccessMode">file access mode</a></B>
-<DD>Determines whether an existing file will be overwritten,
- opened for read-only access, or opened for read/write access.
- All newly created files are opened for both reading and
- writing.
-<!--
- Possible values are:
- <PRE>
- H5F_ACC_RDWR: Allow read and write access to file.
- H5F_ACC_RDONLY: Allow read-only access to file.
- H5F_ACC_TRUNC: Truncate file, if it already exists, erasing all data
- previously stored in the file.
- H5F_ACC_EXCL: Fail if file already exists.
- H5F_ACC_DEBUG: Print debug information.
- H5P_DEFAULT: Apply default file access and creation properties.
- </PRE>
--->
-<P>
-
-<DT><B><a name="Glossary-PListFileAccess">file access property list</a></B>
-<DD>File access property lists are used to control different methods
- of performing I/O on files:
-<!--
- <UL>
- <B>Unbuffered I/O:</B> Local permanent files can be accessed with the
- functions described in Section 2 of the Posix manual, namely open(),
- lseek(), read(), write(), and close(). <BR>
- <B>Buffered I/O:</B> Local permanent files can be accessed with the
- functions declared in the stdio.h header file, namely fopen(),
- fseek(), fread(), fwrite(), and fclose().<BR>
- <B>Memory I/O:</B> Local temporary files can be created and accessed
- directly from memory without ever creating permanent storage.
- The library uses malloc() and free() to create storage space for the
- file<BR>
- <B>Parallel Files using MPI I/O:</B> This driver allows parallel access
- to a file through the MPI I/O library. The parameters which can be
- modified are the MPI communicator, the info object, and the access mode.
- The communicator and info object are saved and then passed to
- MPI_File_open() during file creation or open. The access_mode
- controls the kind of parallel access the application intends.<BR>
- <B>Data Alignment:</B> Sometimes file access is faster if certain things
- are aligned on file blocks. This can be controlled by setting alignment
- properties of a file access property list with the H5Pset_alignment()
- function.
- </UL>
--->
-<P>
-
-<DT><B><a name="Glossary-PListFileCreate">file creation property list</a></B>
-<DD>The property list used to control file metadata.
-<!--
- The parameters that can be modified are:
- <UL>
- <B>User-Block Size:</B> The "user-block" is a fixed length block
- of data located at the beginning of the file which is ignored
- by the HDF5 library and may be used to store any data information
- found to be useful to applications.
- <BR>
- <B>Offset and Length Sizes:</B> The number of bytes used to store the
- offset and length of objects in the HDF5 file can be controlled
- with this parameter.
- <BR>
- <b>Symbol Table Parameters:</b> The size of symbol table B-trees can
- be controlled by setting the 1/2 rank and 1/2 node size
- parameters of the B-tree.
- <BR>
- <B>Indexed Storage Parameters:</B> The size of indexed storage
- B-trees can be controlled by setting the 1/2 rank and 1/2 node
- size parameters of the B-tree.
- </UL>
--->
-<P>
-
-<DT><B><a name="Glossary-Group">group</a></B>
-<DD>A structure containing zero or more HDF5 objects,
- together with supporting metadata.
- The two primary HDF5 objects are datasets and groups.
-<P>
-
-<dt><strong><a name="Glossary-LinkHard">hard link</a></strong>
-<dd>A direct association between a name and the object where both exist
- in a single HDF5 address space.
-<P>
-
-<!--
-<DT><B>HDF5</B>
-<DD>HDF5 is an abbreviation for Hierarchical Data Format Version 5.
- This file format is intended to make it easy to write and read
- scientific data
- <P>
- <UL>
- <LI>by including the information needed to understand the data
- within the file
- <P>
- <LI>by providing a library of C, FORTRAN, and other language
- programs that reduce the work required to provide efficient
- writing and reading - even with parallel IO
- </UL>
-<P>
--->
-
-<DT><B><a name="Glossary-Hyperslab">hyperslab</a></B>
-<DD>A portion of a dataset. A hyperslab selection can be a
- logically contiguous collection of points in a dataspace or
- a regular pattern of points or blocks in a dataspace.
-<P>
-
-<dt><strong><a name="Glossary-Identifier">identifier</a></strong>
-<dd>A unique entity provided by the HDF5 library and used to access
- an HDF5 object, such as a file, goup, dataset, datatype, etc.
-<P>
-
-<dt><strong><a name="Glossary-Link">link</a></strong>
-<dd>An association between a name and the object in an HDF5 file group.
-<P>
-
-<dt><strong><a name="Glossary-GroupMember">member</a></strong>
-<dd>A group or dataset that is in another dataset, <i>dataset A</i>,
- is a member of <i>dataset A</i>.
-<P>
-
-<DT><B><a name="Glossary-Name">name</a></B>
-<DD>A slash-separated list of components that uniquely identifies an
- element of an HDF5 file. A name begins that begins with a slash
- is an absolute name which is accessed beginning with the root group
- of the file; all other names are relative names and the associated
- objects are accessed beginning with the current or specified group.
-<P>
-
-<dt><strong><a name="Glossary-DTypeNamed">named datatype</a></strong>
-<dd>A datatype that is named and stored in a file. Naming is permanent;
- a datatype cannot be changed after being named.
-<P>
-
-<dt><strong><a name="Glossary-DTypeOpaque">opaque datatype</a></strong>
-<dd>A mechanism for describing data which cannot be otherwise described
- by HDF5. The only properties associated with opaque types are a
- size in bytes and an ASCII tag.
-<P>
-
-<!--
-<DT><B>parallel I/O HDF5</B>
-<DD>The parallel I/O version of HDF5 supports parallel file access using
- MPI (Message Passing Interface).
-<P>
--->
-
-<dt><strong><a name="Glossary-Path">path</a></strong>
-<dd>The slash-separated list of components that forms the name
- uniquely identifying an element of an HDF5 file.
-<P>
-
-<dt><strong><a name="Glossary-PList">property list</a></strong>
-<dd>A collection of name/value pairs that can be passed to other
- HDF5 functions to control features that are typically unimportant
- or whose default values are usually used.
-<P>
-
-<dt><strong><a name="Glossary-RootGroup">root group</a></strong>
-<dd>The group that is the entry point to the group graph in an HDF5 file.
- Every HDF5 file has exactly one root group.
-<P>
-
-<dt><strong><a name="Glossary-Selection">selection</a></strong>
-<dd>(1) A subset of a dataset or a dataspace, up to the entire dataset or
- dataspace.
- (2) The elements of an array or dataset that are marked for I/O.
-<P>
-
-<dt><strong><a name="Glossary-Serialization">serialization</a></strong>
-<dd>The flattening of an <em>N</em>-dimensional data object into a
- 1-dimensional object so that, for example, the data object can be
- transmitted over the network as a 1-dimensional bitstream.
-<P>
-
-<dt><strong><a name="Glossary-LinkSoft">soft link</a></strong>
-<dd>An indirect association between a name and an object in an
- HDF5 file group.
-<P>
-
-<dt><strong><a name="Glossary-StorageLayout">storage layout</a></strong>
-<dd>The manner in which a dataset is stored, either contiguous or
- chunked, in the HDF5 file.
-<P>
-
-<DT><B><a name="Glossary-SuperBlock">super block</a></B>
-<DD>A block of data containing the information required to portably access
- HDF5 files on multiple platforms, followed by information about the groups
- and datasets in the file.
- The super block contains information about the size of offsets,
- lengths of objects, the number of entries in group tables,
- and additional version information for the file.
-<P>
-
-<!--
-<DT><B>threadsafe</B>
-<DD>A "thread-safe" version of HDF-5 (TSHDF5) is one that can be called
- from any thread of a multi-threaded program. Any calls to HDF
- can be made in any order, and each individual HDF call will perform
- correctly. A calling program does not have to explicitly lock the HDF
- library in order to do I/O. Applications programmers may assume that
- the TSHDF5 guarantees the following:
- <UL>
- <LI>the HDF-5 library does not create or destroy threads.
- <LI>the HDF-5 library uses modest amounts of per-thread
- private memory.
- <LI>the HDF-5 library only locks/unlocks it's own locks (no locks
- are passed in or returned from HDF), and the internal locking
- is guaranteed to be deadlock free.
- </UL>
- <P>
- These properties mean that the TSHDF5 library will not interfere
- with an application's use of threads. A TSHDF5 library is the same
- library as regular HDF-5 library, with additional code to synchronize
- access to the HDF-5 library's internal data structures.
-<P>
--->
-
-<dt><strong><a name="Glossary-DTypeVLen">variable-length datatype</a></strong>
-<dd>A sequence of an existing datatype (atomic, variable-length (VL),
- or compound) which are not fixed in length from one dataset location
- to another.
-<P>
-
-</DL>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 February 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/Graphics/C++.gif b/doc/html/Graphics/C++.gif
deleted file mode 100755
index 120b7cc..0000000
--- a/doc/html/Graphics/C++.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Graphics/FORTRAN.gif b/doc/html/Graphics/FORTRAN.gif
deleted file mode 100755
index d08a451..0000000
--- a/doc/html/Graphics/FORTRAN.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Graphics/Java.gif b/doc/html/Graphics/Java.gif
deleted file mode 100755
index a064d1d..0000000
--- a/doc/html/Graphics/Java.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Graphics/Makefile.am b/doc/html/Graphics/Makefile.am
deleted file mode 100644
index 3e65c67..0000000
--- a/doc/html/Graphics/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir=$(docdir)/hdf5/Graphics
-
-# Public doc files (to be installed)...
-localdoc_DATA=C++.gif FORTRAN.gif Java.gif OtherAPIs.gif
diff --git a/doc/html/Graphics/Makefile.in b/doc/html/Graphics/Makefile.in
deleted file mode 100644
index 50d0abf..0000000
--- a/doc/html/Graphics/Makefile.in
+++ /dev/null
@@ -1,485 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html/Graphics
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(localdocdir)"
-localdocDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(localdoc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdir)/hdf5/Graphics
-
-# Public doc files (to be installed)...
-localdoc_DATA = C++.gif FORTRAN.gif Java.gif OtherAPIs.gif
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Graphics/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/Graphics/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-localdocDATA: $(localdoc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(localdocdir)" || $(mkdir_p) "$(DESTDIR)$(localdocdir)"
- @list='$(localdoc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(localdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(localdocdir)/$$f'"; \
- $(localdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-uninstall-localdocDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(localdoc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(localdocdir)/$$f'"; \
- rm -f "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(localdocdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-localdocDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-localdocDATA
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-localdocDATA install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-info-am \
- uninstall-localdocDATA
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/Graphics/OtherAPIs.gif b/doc/html/Graphics/OtherAPIs.gif
deleted file mode 100755
index 8ae8902..0000000
--- a/doc/html/Graphics/OtherAPIs.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Groups.html b/doc/html/Groups.html
deleted file mode 100644
index 2941008..0000000
--- a/doc/html/Groups.html
+++ /dev/null
@@ -1,404 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Group Interface (H5G)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Group Interface (H5G)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>An object in HDF5 consists of an object header at a fixed file
- address that contains messages describing various properties of
- the object such as its storage location, layout, compression,
- etc. and some of these messages point to other data such as the
- raw data of a dataset. The address of the object header is also
- known as an <em>OID</em> and HDF5 has facilities for translating
- names to OIDs.
-
- <p>Every HDF5 object has at least one name and a set of names can
- be stored together in a group. Each group implements a name
- space where the names are any length and unique with respect to
- other names in the group.
-
- <p>Since a group is a type of HDF5 object it has an object header
- and a name which exists as a member of some other group. In this
- way, groups can be linked together to form a directed graph.
- One particular group is called the <em>Root Group</em> and is
- the group to which the HDF5 file super block points. Its name is
- "/" by convention. The <em>full name</em> of an object is
- created by joining component names with slashes much like Unix.
-
- <p>
- <center>
- <img alt="Group Graph Example" src="group_p1.gif">
- </center>
-
- <p>However, unlike Unix which arranges directories hierarchically,
- HDF5 arranges groups in a directed graph. Therefore, there is
- no ".." entry in a group since a group can have more than one
- parent. There is no "." entry either but the library understands
- it internally.
-
- <h2>2. Names</h2>
-
- <p>HDF5 places few restrictions on names: component names may be
- any length except zero and may contain any character except
- slash ("/") and the null terminator. A full name may be
- composed of any number of component names separated by slashes,
- with any of the component names being the special name ".". A
- name which begins with a slash is an <em>absolute</em> name
- which is looked up beginning at the root group of the file while
- all other <em>relative</em> names are looked up beginning at the
- specified group.
- Multiple consecutive slashes in a full name are treated as
- single slashes and trailing slashes are not significant. A
- special case is the name "/" (or equivalent) which refers to the
- root group.
-
- <p>Functions which operate on names generally take a location
- identifier which is either a file ID or a group ID and perform
- the lookup with respect to that location. Some possibilities
- are:
-
- <p>
- <center>
- <table border cellpadding=4>
- <tr>
- <th>Location Type</th>
- <th>Object Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>File ID</td>
- <td><code>/foo/bar</code></td>
- <td>The object <code>bar</code> in group <code>foo</code>
- in the root group.</td>
- </tr>
-
- <tr>
- <td>Group ID</td>
- <td><code>/foo/bar</code></td>
- <td>The object <code>bar</code> in group <code>foo</code>
- in the root group of the file containing the specified
- group. In other words, the group ID's only purpose is
- to supply a file.</td>
- </tr>
-
- <tr>
- <td>File ID</td>
- <td><code>/</code></td>
- <td>The root group of the specified file.</td>
- </tr>
-
- <tr>
- <td>Group ID</td>
- <td><code>/</code></td>
- <td>The root group of the file containing the specified
- group.</td>
- </tr>
-
- <tr>
- <td>File ID</td>
- <td><code>foo/bar</code></td>
- <td>The object <code>bar</code> in group <code>foo</code>
- in the specified group.</td>
- </tr>
-
- <tr>
- <td>Group ID</td>
- <td><code>foo/bar</code></td>
- <td>The object <code>bar</code> in group <code>foo</code>
- in the specified group.</td>
- </tr>
-
- <tr>
- <td>File ID</td>
- <td><code>.</code></td>
- <td>The root group of the file.</td>
- </tr>
-
- <tr>
- <td>Group ID</td>
- <td><code>.</code></td>
- <td>The specified group.</td>
- </tr>
-
- <tr>
- <td>Other ID</td>
- <td><code>.</code></td>
- <td>The specified object.</td>
- </tr>
-
- </table>
- </center>
-
- <p>Note, however, that object names within a group must be unique.
- For example, <code>H5Dcreate</code> returns an error if a
- dataset with the dataset name specified in the parameter list
- already exists at the location specified in the parameter list.
-
-
- <h2>3. Creating, Opening, and Closing Groups</h2>
-
- <p>Groups are created with the <code>H5Gcreate()</code> function,
- and existing groups can be access with
- <code>H5Gopen()</code>. Both functions return an object ID which
- should be eventually released by calling
- <code>H5Gclose()</code>.
-
- <dl>
- <dt><code>hid_t H5Gcreate (hid_t <em>location_id</em>, const char
- *<em>name</em>, size_t <em>size_hint</em>)</code>
- <dd>This function creates a new group with the specified
- name at the specified location which is either a file ID or a
- group ID. The name must not already be taken by some other
- object and all parent groups must already exist. The
- <em>size_hint</em> is a hint for the number of bytes to
- reserve to store the names which will be eventually added to
- the new group. Passing a value of zero for <em>size_hint</em>
- is usually adequate since the library is able to dynamically
- resize the name heap, but a correct hint may result in better
- performance. The return value is a handle for the open group
- and it should be closed by calling <code>H5Gclose()</code>
- when it's no longer needed. A negative value is returned for
- failure.
-
- <br><br>
- <dt><code>hid_t H5Gopen (hid_t <em>location_id</em>, const char
- *<em>name</em>)</code>
- <dd>This function opens an existing group with the specified
- name at the specified location which is either a file ID or a
- group ID and returns an object ID. The object ID should be
- released by calling <code>H5Gclose()</code> when it is no
- longer needed. A negative value is returned for failure.
-
- <br><br>
- <dt><code>herr_t H5Gclose (hid_t <em>group_id</em>)</code>
- <dd>This function releases resources used by an group which was
- opened by <code>H5Gcreate()</code> or
- <code>H5Gopen()</code>. After closing a group the
- <em>group_id</em> should not be used again. This function
- returns zero for success or a negative value for failure.
- </dl>
-
- <h2>4. Objects with Multiple Names</h2>
-
- <p>An object (including a group) can have more than one
- name. Creating the object gives it the first name, and then
- functions described here can be used to give it additional
- names. The association between a name and the object is called
- a <em>link</em> and HDF5 supports two types of links: a <em>hard
- link</em> is a direct association between the name and the
- object where both exist in a single HDF5 address space, and a
- <em>soft link</em> is an indirect association.
-
- <p>
- <center>
- <img alt="Hard Link Example" src="group_p2.gif">
- </center>
-
- <p>
- <center>
- <img alt="Soft Link Example" src="group_p3.gif">
- </center>
-
- <dl>
- <dt>Object Creation</dt>
- <dd>The creation of an object creates a hard link which is
- indistinguishable from other hard links that might be added
- later.
-
- <br><br>
- <dt><code>herr_t H5Glink (hid_t <em>file_id</em>, H5G_link_t
- <em>link_type</em>, const char *<em>current_name</em>,
- const char *<em>new_name</em>)</code>
- <dd>Creates a new name for an object that has some current name
- (possibly one of many names it currently has). If the
- <em>link_type</em> is <code>H5G_LINK_HARD</code> then a new
- hard link is created. Otherwise if <em>link_type</em> is
- <code>H5T_LINK_SOFT</code> a soft link is created which is an
- alias for the <em>current_name</em>. When creating a soft
- link the object need not exist. This function returns zero
- for success or negative for failure.
-
- <br><br>
- <dt><code>herr_t H5Gunlink (hid_t <em>file_id</em>, const char
- *<em>name</em>)</code>
- <dd>This function removes an association between a name and an
- object. Object headers keep track of how many hard links refer
- to the object and when the hard link count reaches zero the
- object can be removed from the file (but objects which are
- open are not removed until all handles to the object are
- closed).
- </dl>
-
- <h2>5. Comments</h2>
-
- <p>Objects can have a comment associated with them. The comment
- is set and queried with these two functions:
-
- <dl>
- <dt><code>herr_t H5Gset_comment (hid_t <em>loc_id</em>, const
- char *<em>name</em>, const char *<em>comment</em>)</code>
- <dd>The previous comment (if any) for the specified object is
- replace with a new comment. If the <em>comment</em> argument
- is the empty string or a null pointer then the comment message
- is removed from the object. Comments should be relatively
- short, null-terminated, ASCII strings.
-
- <br><br>
- <dt><code>herr_t H5Gget_comment (hid_t <em>loc_id</em>, const
- char *<em>name</em>, size_t <em>bufsize</em>, char
- *<em>comment</em>)</code>
- <dd>The comment string for an object is returned through the
- <em>comment</em> buffer. At most <em>bufsize</em> characters
- including a null terminator are copied, and the result is
- not null terminated if the comment is longer than the supplied
- buffer. If an object doesn't have a comment then the empty
- string is returned.
- </dl>
-
- <a name="H5GUnlinkToCorrupt">
- <h2>6. Unlinking Datasets with H5Gmove and H5Gunlink</h2>
- </a>
-
- <p>Exercise caution in the use of <code>H5Gmove</code> and
- <code>H5Gunlink</code>.
-
- <p>Note that <code>H5Gmove</code> and <code>H5Gunlink</code>
- each include a step that unlinks pointers to a set or group.
- If the link that is removed is on the only path leading
- to a dataset or group, that dataset or group will become
- inaccessible in the file.
-
- <p>Consider the following example. Assume that the group
- <code>group2</code> can only be accessed via the following path,
- where <code>top_group</code> is a member of the file's root group:
- <pre>
- <code>/top_group/group1/group2/</code> </pre>
- Using <code>H5Gmove</code>, <code>top_group</code> is renamed
- to be a member of <code>group2</code>. At this point, since
- <code>top_group</code> was the only route from the root group
- to <code>group1</code>, there is no longer a path by which
- one can access <code>group1</code>, <code>group2</code>, or
- any member datasets.
- <code>top_group</code> and any member datasets have also
- become inaccessible.</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Tue Jan 27 09:11:27 EST 1998 -->
-<!-- hhmts start -->
-Last modified: 1 November 2000
-<!-- hhmts end -->
-
-
-</body>
-</html>
diff --git a/doc/html/H5.api_map.html b/doc/html/H5.api_map.html
deleted file mode 100644
index c35102a..0000000
--- a/doc/html/H5.api_map.html
+++ /dev/null
@@ -1,849 +0,0 @@
-<html><head><title>
-HDF5 Legacy API Equivalence
-</title></head><body>
-
-<center>
-<h1>HDF5: API Mapping to legacy APIs</h1>
-</center>
-
-<table border=1 cellpadding=2 cellspacing=0>
-<tr>
-<th>Functionality</th>
-<th>netCDF</th>
-<th>SD</th>
-<th>AIO</th>
-<th>HDF5</th>
-<th>Comments</th>
-</tr>
-
-<tr align=center>
-<td>Open existing file for read/write</td>
-<td>ncopen</td>
-<td>SDstart</td>
-<td>AIO_open</td>
-<td>H5Fopen</td>
-</tr>
-
-<tr align=center>
-<td>Creates new file for read/write.</td>
-<td>nccreate</td>
-<td><hr></td>
-<td><hr></td>
-<td>H5Fcreate</td>
-<td>SD API handles this with SDopen</td>
-</tr>
-
-<tr align=center>
-<td>Close file</td>
-<td>ncclose</td>
-<td>SDend</td>
-<td>AIO_close</td>
-<td>H5Fclose</td>
-</tr>
-
-<tr align=center>
-<td>Redefine parameters</td>
-<td>ncredef</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>Unneccessary under SD & HDF5 data-models</td>
-</tr>
-
-<tr align=center>
-<td>End "define" mode</td>
-<td>ncendef</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>Unneccessary under SD & HDF5 data-models</td>
-</tr>
-
-<tr align=center>
-<td>Query the number of datasets, dimensions and attributes in a file</td>
-<td>ncinquire</td>
-<td>SDfileinfo</td>
-<td><hr></td>
-<td>H5Dget_info<br>H5Rget_num_relations<br>H5Gget_num_contents</td>
-<td>HDF5 interface is more granular and flexible</td>
-</tr>
-
-<tr align=center>
-<td>Update a writeable file with current changes</td>
-<td>ncsync</td>
-<td><hr></td>
-<td>AIO_flush</td>
-<td>H5Mflush</td>
-<td>HDF5 interface is more flexible because it can be applied to parts of the
-file hierarchy instead of the whole file at once. The SD interface does not
-have this feature, although most of the lower HDF library supports it.</td>
-</tr>
-
-<tr align=center>
-<td>Close file access without applying recent changes</td>
-<td>ncabort</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>How useful is this feature?</td>
-</tr>
-
-<tr align=center>
-<td>Create new dimension</td>
-<td>ncdimdef</td>
-<td>SDsetdimname</td>
-<td><hr></td>
-<td>H5Mcreate</td>
-<td>SD interface actually creates dimensions with datasets, this just allows
-naming them</td>
-</tr>
-
-<tr align=center>
-<td>Get ID of existing dimension</td>
-<td>ncdimid</td>
-<td>SDgetdimid</td>
-<td><hr></td>
-<td>H5Maccess</td>
-<td>SD interface looks up dimensions by index and the netCDF interface uses
-names, but they are close enough. The HDF5 interface does not current allow
-access to particular dimensions, only the dataspace as a whole.</td>
-</tr>
-
-<tr align=center>
-<td>Get size & name of dimension</td>
-<td>ncdiminq</td>
-<td>SDdiminfo</td>
-<td><hr></td>
-<td>H5Mget_name<br>H5Sget_lrank</td>
-<td>Only a rough match</td>
-</tr>
-
-<tr align=center>
-<td>Rename dimension</td>
-<td>ncdimrename</td>
-<td>SDsetdimname</td>
-<td><hr></td>
-<td>H5Mset_name</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Create a new dataset</td>
-<td>ncvardef</td>
-<td>SDcreate</td>
-<td>AIO_mkarray</td>
-<td>H5Mcreate</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Attach to an existing dataset</td>
-<td>ncvarid</td>
-<td>SDselect</td>
-<td>AIO_arr_load</td>
-<td>H5Maccess</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Get basic information about a dataset</td>
-<td>ncvarinq</td>
-<td>SDgetinfo</td>
-<td>AIO_arr_get_btype<br>AIO_arr_get_nelmts<br>AIO_arr_get_nbdims<br>AIO_arr_get_bdims<br>AIO_arr_get_slab</td>
-<td>H5Dget_info</td>
-<td>All interfaces have different levels of information that they return, some
-use of auxilliary functions is required to get equivalent amount of information</td>
-</tr>
-
-<tr align=center>
-<td>Write a single value to a dataset</td>
-<td>ncvarput1</td>
-<td>SDwritedata</td>
-<td>AIO_write</td>
-<td>H5Dwrite</td>
-<td>What is this useful for?</td>
-</tr>
-
-<tr align=center>
-<td>Read a single value from a dataset</td>
-<td>ncvarget1</td>
-<td>SDreaddata</td>
-<td>AIO_read</td>
-<td>H5Dread</td>
-<td>What is this useful for?</td>
-</tr>
-
-<tr align=center>
-<td>Write a solid hyperslab of data (i.e. subset) to a dataset</td>
-<td>ncvarput</td>
-<td>SDwritedata</td>
-<td>AIO_write</td>
-<td>H5Dwrite</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Read a solid hyperslab of data (i.e. subset) from a dataset</td>
-<td>ncvarget</td>
-<td>SDreaddata</td>
-<td>AIO_read</td>
-<td>H5Dread</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Write a general hyperslab of data (i.e. possibly subsampled) to a dataset</td>
-<td>ncvarputg</td>
-<td>SDwritedata</td>
-<td>AIO_write</td>
-<td>H5Dwrite</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Read a general hyperslab of data (i.e. possibly subsampled) from a dataset</td>
-<td>ncvargetg</td>
-<td>SDreaddata</td>
-<td>AIO_read</td>
-<td>H5Dread</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Rename a dataset variable</td>
-<td>ncvarrename</td>
-<td><hr></td>
-<td><hr></td>
-<td>H5Mset_name</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Add an attribute to a dataset</td>
-<td>ncattput</td>
-<td>SDsetattr</td>
-<td><hr></td>
-<td>H5Rattach_oid</td>
-<td>HDF5 requires creating a seperate object to attach to a dataset, but it also
-allows objects to be attributes of any other object, even nested.</td>
-</tr>
-
-<tr align=center>
-<td>Get attribute information</td>
-<td>ncattinq</td>
-<td>SDattrinfo</td>
-<td><hr></td>
-<td>H5Dget_info</td>
-<td>HDF5 has no specific function for attributes, they are treated as all other
-objects in the file.</td>
-</tr>
-
-<tr align=center>
-<td>Retrieve attribute for a dataset</td>
-<td>ncattget</td>
-<td>SDreadattr</td>
-<td><hr></td>
-<td>H5Dread</td>
-<td>HDF5 uses general dataset I/O for attributes.</td>
-</tr>
-
-<tr align=center>
-<td>Copy attribute from one dataset to another</td>
-<td>ncattcopy</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>What is this used for?</td>
-</tr>
-
-<tr align=center>
-<td>Get name of attribute</td>
-<td>ncattname</td>
-<td>SDattrinfo</td>
-<td><hr></td>
-<td>H5Mget_name</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Rename attribute</td>
-<td>ncattrename</td>
-<td><hr></td>
-<td><hr></td>
-<td>H5Mset_name</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Delete attribute</td>
-<td>ncattdel</td>
-<td><hr></td>
-<td><hr></td>
-<td>H5Mdelete</td>
-<td>This can be faked in current HDF interface with lower-level calls</td>
-</tr>
-
-<tr align=center>
-<td>Compute # of bytes to store a number-type</td>
-<td>nctypelen</td>
-<td>DFKNTsize</td>
-<td><hr></td>
-<td><hr></td>
-<td>Hmm, the HDF5 Datatype interface needs this functionality.</td>
-</tr>
-
-<tr align=center>
-<td>Indicate that fill-values are to be written to dataset</td>
-<td>ncsetfill</td>
-<td>SDsetfillmode</td>
-<td><hr></td>
-<td><hr></td>
-<td>HDF5 Datatype interface should work on this functionality</td>
-</tr>
-
-<tr align=center>
-<td>Get information about "record" variables (Those datasets which share the
-same unlimited dimension</td>
-<td>ncrecinq</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>This should probably be wrapped in a higher layer interface, if it's
-needed for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Get a record from each dataset sharing the unlimited dimension</td>
-<td>ncrecget</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>This is somewhat equivalent to reading a vdata with non-interlaced
-fields, only in a dataset oriented way. This should also be wrapped in a
-higher layer interface if it's necessary for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Put a record from each dataset sharing the unlimited dimension</td>
-<td>ncrecput</td>
-<td><hr></td>
-<td><hr></td>
-<td><hr></td>
-<td>This is somewhat equivalent to writing a vdata with non-interlaced
-fields, only in a dataset oriented way. This should also be wrapped in a
-higher layer interface if it's necessary for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Map a dataset's name to an index to reference it with</td>
-<td><hr></td>
-<td>SDnametoindex</td>
-<td><hr></td>
-<td>H5Mfind_name</td>
-<td>Equivalent functionality except HDF5 call returns an OID instead of an
-index.</td>
-</tr>
-
-<tr align=center>
-<td>Get the valid range of values for data in a dataset</td>
-<td><hr></td>
-<td>SDgetrange</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Release access to a dataset</td>
-<td><hr></td>
-<td>SDendaccess</td>
-<td>AIO_arr_destroy</td>
-<td>H5Mrelease</td>
-<td>Odd that the netCDF API doesn't have this...</td>
-</tr>
-
-<tr align=center>
-<td>Set the valid range of data in a dataset</td>
-<td><hr></td>
-<td>SDsetrange</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set the label, units, format, etc. of the data values in a dataset</td>
-<td><hr></td>
-<td>SDsetdatastrs</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Get the label, units, format, etc. of the data values in a dataset</td>
-<td><hr></td>
-<td>SDgetdatastrs</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set the label, units, format, etc. of the dimensions in a dataset</td>
-<td><hr></td>
-<td>SDsetdimstrs</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Get the label, units, format, etc. of the dimensions in a dataset</td>
-<td><hr></td>
-<td>SDgetdimstrs</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set the scale of the dimensions in a dataset</td>
-<td><hr></td>
-<td>SDsetdimscale</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Get the scale of the dimensions in a dataset</td>
-<td><hr></td>
-<td>SDgetdimscale</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set the calibration parameters of the data values in a dataset</td>
-<td><hr></td>
-<td>SDsetcal</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Get the calibration parameters of the data values in a dataset</td>
-<td><hr></td>
-<td>SDgetcal</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented with attributes at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set the fill value for the data values in a dataset</td>
-<td><hr></td>
-<td>SDsetfillvalue</td>
-<td><hr></td>
-<td><hr></td>
-<td>HDF5 needs something like this, I'm not certain where to put it.</td>
-</tr>
-
-<tr align=center>
-<td>Get the fill value for the data values in a dataset</td>
-<td><hr></td>
-<td>SDgetfillvalue</td>
-<td><hr></td>
-<td><hr></td>
-<td>HDF5 needs something like this, I'm not certain where to put it.</td>
-</tr>
-
-<tr align=center>
-<td>Move/Set the dataset to be in an 'external' file</td>
-<td><hr></td>
-<td>SDsetexternalfile</td>
-<td><hr></td>
-<td>H5Dset_storage</td>
-<td>HDF5 has simple functions for this, but needs an API for setting up the
-storage flow.</td>
-</tr>
-
-<tr align=center>
-<td>Move/Set the dataset to be stored using only certain bits from the dataset</td>
-<td><hr></td>
-<td>SDsetnbitdataset</td>
-<td><hr></td>
-<td>H5Dset_storage</td>
-<td>HDF5 has simple functions for this, but needs an API for setting up the
-storage flow.</td>
-</tr>
-
-<tr align=center>
-<td>Move/Set the dataset to be stored in compressed form</td>
-<td><hr></td>
-<td>SDsetcompress</td>
-<td><hr></td>
-<td>H5Dset_storage</td>
-<td>HDF5 has simple functions for this, but needs an API for setting up the
-storage flow.</td>
-</tr>
-
-<tr align=center>
-<td>Search for an dataset attribute with particular name</td>
-<td><hr></td>
-<td>SDfindattr</td>
-<td><hr></td>
-<td>H5Mfind_name<br>H5Mwild_search</td>
-<td>HDF5 can handle wildcard searchs for this feature.</td>
-</tr>
-
-<tr align=center>
-<td>Map a run-time dataset handle to a persistant disk reference</td>
-<td><hr></td>
-<td>SDidtoref</td>
-<td><hr></td>
-<td><hr></td>
-<td>I'm not certain this is needed for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Map a persistant disk reference for a dataset to an index in a group</td>
-<td><hr></td>
-<td>SDreftoindex</td>
-<td><hr></td>
-<td><hr></td>
-<td>I'm not certain this is needed for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Determine if a dataset is a 'record' variable (i.e. it has an unlimited dimension)</td>
-<td><hr></td>
-<td>SDisrecord</td>
-<td><hr></td>
-<td><hr></td>
-<td>Easily implemented by querying the dimensionality at a higher level for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Determine if a dataset is a 'coordinate' variable (i.e. it is used as a dimension)</td>
-<td><hr></td>
-<td>SDiscoord</td>
-<td><hr></td>
-<td><hr></td>
-<td>I'm not certain this is needed for HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set the access type (i.e. parallel or serial) for dataset I/O</td>
-<td><hr></td>
-<td>SDsetaccesstype</td>
-<td><hr></td>
-<td><hr></td>
-<td>HDF5 has functions for reading the information about this, but needs a better
-API for setting up the storage flow.</td>
-</tr>
-
-<tr align=center>
-<td>Set the size of blocks used to store a dataset with unlimited dimensions</td>
-<td><hr></td>
-<td>SDsetblocksize</td>
-<td><hr></td>
-<td><hr></td>
-<td>HDF5 has functions for reading the information about this, but needs a better
-API for setting up the storage flow.</td>
-</tr>
-
-<tr align=center>
-<td>Sets backward compatibility of dimensions created.</td>
-<td><hr></td>
-<td>SDsetdimval_comp</td>
-<td><hr></td>
-<td><hr></td>
-<td>Unneccessary in HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Checks backward compatibility of dimensions created.</td>
-<td><hr></td>
-<td>SDisdimval_comp</td>
-<td><hr></td>
-<td><hr></td>
-<td>Unneccessary in HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Move/Set the dataset to be stored in chunked form</td>
-<td><hr></td>
-<td>SDsetchunk</td>
-<td><hr></td>
-<td>H5Dset_storage</td>
-<td>HDF5 has simple functions for this, but needs an API for setting up the
-storage flow.</td>
-</tr>
-
-<tr align=center>
-<td>Get the chunking information for a dataset stored in chunked form</td>
-<td><hr></td>
-<td>SDgetchunkinfo</td>
-<td><hr></td>
-<td>H5Dstorage_detail</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Read/Write chunks of a dataset using a chunk index</td>
-<td><hr></td>
-<td>SDreadchunk<br>SDwritechunk</td>
-<td><hr></td>
-<td><hr></td>
-<td>I'm not certain that HDF5 needs something like this.</td>
-</tr>
-
-<tr align=center>
-<td>Tune chunk caching parameters for chunked datasets</td>
-<td><hr></td>
-<td>SDsetchunkcache</td>
-<td><hr></td>
-<td><hr></td>
-<td>HDF5 needs something like this.</td>
-</tr>
-
-<tr align=center>
-<td>Change some default behavior of the library</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_defaults</td>
-<td><hr></td>
-<td>Something like this would be useful in HDF5, to tune I/O pipelines, etc.</td>
-</tr>
-
-<tr align=center>
-<td>Flush and close all open files</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_exit</td>
-<td><hr></td>
-<td>Something like this might be useful in HDF5, although it could be
- encapsulated with a higher-level function.</td>
-</tr>
-
-<tr align=center>
-<td>Target an architecture for data-type storage</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_target</td>
-<td><hr></td>
-<td>There are some rough parallels with using the data-type in HDF5 to create
- data-type objects which can be used to write out future datasets.</td>
-</tr>
-
-<tr align=center>
-<td>Map a filename to a file ID</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_filename</td>
-<td>H5Mget_name</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Get the active directory (where new datasets are created)</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_getcwd</td>
-<td><hr></td>
-<td>HDF5 allows multiple directories (groups) to be attached to, any of which
- can have new datasets created within it.</td>
-</tr>
-
-<tr align=center>
-<td>Change active directory</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_chdir</td>
-<td><hr></td>
-<td>Since HDF5 has a slightly different access method for directories (groups),
- this functionality can be wrapped around calls to H5Gget_oid_by_name.</td>
-</tr>
-
-<tr align=center>
-<td>Create directory</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_mkdir</td>
-<td>H5Mcreate</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Return detailed information about an object</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_stat</td>
-<td>H5Dget_info<br>H5Dstorage_detail</td>
-<td>Perhaps more information should be provided through another function in
- HDF5?</td>
-</tr>
-
-<tr align=center>
-<td>Get "flag" information</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_getflags</td>
-<td><hr></td>
-<td>Not required in HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Set "flag" information</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_setflags</td>
-<td><hr></td>
-<td>Not required in HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Get detailed information about all objects in a directory</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_ls</td>
-<td>H5Gget_content_info_mult<br>H5Dget_info<br>H5Dstorage_detail</td>
-<td>Only roughly equivalent functionality in HDF5, perhaps more should be
- added?</td>
-</tr>
-
-<tr align=center>
-<td>Get base type of object</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_BASIC</td>
-<td>H5Gget_content_info</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Set base type of dataset</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_arr_set_btype</td>
-<td>H5Mcreate(DATATYPE)</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Set dimensionality of dataset</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_arr_set_bdims</td>
-<td>H5Mcreate(DATASPACE)</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Set slab of dataset to write</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_arr_set_slab</td>
-<td><hr></td>
-<td>This is similar to the process of creating a dataspace for use when
- performing I/O on an HDF5 dataset</td>
-</tr>
-
-<tr align=center>
-<td>Describe chunking of dataset to write</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_arr_set_chunk</td>
-<td>H5Dset_storage</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Describe array index permutation of dataset to write</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_arr_set_perm</td>
-<td>H5Dset_storage</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Create a new dataset with dataspace and datatype information from an
- existing dataset.</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_arr_copy</td>
-<td><hr></td>
-<td>This can be mimicked in HDF5 by attaching to the datatype and dataspace of
-an existing dataset and using the IDs to create new datasets.</td>
-</tr>
-
-<tr align=center>
-<td>Create a new directory to group objects within</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_mkgroup</td>
-<td>H5Mcreate(GROUP)</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Read name of objects in directory</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_read_group</td>
-<td>H5Gget_content_info_mult</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Add objects to directory</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_write_group</td>
-<td>H5Ginsert_item_mult</td>
-<td></td>
-</tr>
-
-<tr align=center>
-<td>Combine an architecture and numeric type to derive the format's datatype</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_COMBINE</td>
-<td><hr></td>
-<td>This is a nice feature to add to HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Derive an architecture from the format's datatype</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_ARCH</td>
-<td><hr></td>
-<td>This is a nice feature to add to HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Derive a numeric type from the format's datatype</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_PNT</td>
-<td><hr></td>
-<td>This is a nice feature to add to HDF5.</td>
-</tr>
-
-<tr align=center>
-<td>Register error handling function for library to call when errors occur</td>
-<td><hr></td>
-<td><hr></td>
-<td>AIO_error_handler</td>
-<td><hr></td>
-<td>This should be added to HDF5.</td>
-</tr>
-
-</table>
-
diff --git a/doc/html/H5.format.html b/doc/html/H5.format.html
deleted file mode 100644
index 8d2ba87..0000000
--- a/doc/html/H5.format.html
+++ /dev/null
@@ -1,5956 +0,0 @@
-<html>
- <head>
- <title>
- HDF5 File Format Specification
- </title>
-
-<STYLE TYPE="text/css">
-
-P { text-indent: 2em}
-P.item { margin-left: 2em; text-indent: -2em}
-P.item2 { margin-left: 2em; text-indent: 2em}
-
-TABLE.format { border:solid; border-collapse:collapse; caption-side:top; text-align:center; width:80%;}
-TABLE.format TH { border:ridge; padding:4px; width:25%;}
-TABLE.format TD { border:ridge; padding:4px; }
-TABLE.format CAPTION { font-weight:bold; font-size:larger;}
-
-TABLE.note {border:none; text-align:right; width:80%;}
-
-TABLE.desc { border:solid; border-collapse:collapse; caption-size:top; text-align:left; width:80%;}
-TABLE.desc TR { vertical-align:top;}
-TABLE.desc TH { border-style:ridge; font-size:larger; padding:4px; text-decoration:underline;}
-TABLE.desc TD { border-style:ridge; padding:4px; }
-TABLE.desc CAPTION { font-weight:bold; font-size:larger;}
-
-TABLE.list { border:none; }
-TABLE.list TR { vertical-align:top;}
-TABLE.list TH { border:none; text-decoration:underline;}
-TABLE.list TD { border:none; }
-
-</STYLE>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Format.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/FormatElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><center><h1>HDF5 File Format Specification</h1></center>
-
- <center>
- <table border=0 width=90%>
- <tr>
- <td valign=top>
- <ol type=I>
- <li><a href="#Intro">Introduction</a>
- <li><a href="#FileMetaData">Disk Format Level 0 - File Metadata</a>
- <font size=-2>
- <ol type=A>
- <li><a href="#SuperBlock">Disk Format Level 0A - File Signature and Super Block</a>
- <li><a href="#DriverInfo">Disk Format Level 0B - File Driver Info</a>
- </ol>
- </font>
- <li><a href="#FileInfra">Disk Format Level 1 - File Infrastructure</a>
- <font size=-2>
- <ol type=A>
- <li><a href="#Btrees">Disk Format Level 1A - B-link Trees and B-tree Nodes</a>
- <li><a href="#SymbolTable">Disk Format Level 1B - Group</a>
- <li><a href="#SymbolTableEntry">Disk Format Level 1C - Group Entry</a>
- <li><a href="#LocalHeap">Disk Format Level 1D - Local Heaps</a>
- <li><a href="#GlobalHeap">Disk Format Level 1E - Global Heap</a>
- <li><a href="#FreeSpaceIndex">Disk Format Level 1F - Free-space Index</a>
- </ol>
- </font>
- <li><a href="#DataObject">Disk Format Level 2 - Data Objects</a>
- <font size=-2>
- <ol type=A>
- <li><a href="#ObjectHeader">Disk Format Level 2a - Data Object Headers</a>
- <ol type=1>
- <li><a href="#NILMessage">Name: NIL</a> <!-- 0x0000 -->
- <li><a href="#SimpleDataSpace">Name: Simple Dataspace</a> <!-- 0x0001 -->
-<!-- <li><a href="#DataSpaceMessage">Name: Complex Dataspace</a> --> <!-- 0x0002 -->
- <li><a href="#ReservedMessage_0002">Name: Reserved - not assigned yet</a> <!-- 0x0002 -->
- <li><a href="#DataTypeMessage">Name: Datatype</a> <!-- 0x0003 -->
- <li><a href="#OldFillValueMessage">Name: Data Storage - Fill Value (Old)</a> <!-- 0x0004 -->
- <li><a href="#FillValueMessage">Name: Data Storage - Fill Value</a> <!-- 0x0005 -->
- </ol>
- </ol>
- </font>
- </ol>
- </td><td>&nbsp;&nbsp;</td><td valign=top>
- <ol type=I start=4>
-
- <li><a href="#DataObject">Disk Format Level 2 - Data Objects</a>
- <font size=-2><i>(Continued)</i>
- <ol type=A>
- <li><a href="#ObjectHeader">Disk Format Level 2a - Data Object Headers</a><i>(Continued)</i>
- <ol type=1 start=6>
-<!-- <li><a href="#CompactDataStorageMessage">Name: Data Storage - Compact</a> --> <!-- 0x0006 -->
- <li><a href="#ReservedMessage_0006">Name: Reserved - not assigned yet</a> <!-- 0x0006 -->
- <li><a href="#ExternalFileListMessage">Name: Data Storage - External Data Files</a> <!-- 0x0007 -->
- <li><a href="#LayoutMessage">Name: Data Storage - Layout</a> <!-- 0x0008 -->
- <li><a href="#ReservedMessage_0009">Name: Reserved - not assigned yet</a> <!-- 0x0009 -->
- <li><a href="#ReservedMessage_000A">Name: Reserved - not assigned yet</a> <!-- 0x000a -->
- <li><a href="#FilterMessage">Name: Data Storage - Filter Pipeline</a> <!-- 0x000b -->
- <li><a href="#AttributeMessage">Name: Attribute</a> <!-- 0x000c -->
- <li><a href="#CommentMessage">Name: Object Comment</a> <!-- 0x000d -->
- <li><a href="#OldModifiedMessage">Name: Object Modification Date and Time (Old)</a> <!-- 0x000e -->
- <li><a href="#SharedMessage">Name: Shared Object Message</a> <!-- 0x000f -->
- <li><a href="#ContinuationMessage">Name: Object Header Continuation</a> <!-- 0x0010 -->
- <li><a href="#SymbolTableMessage">Name: Group Message</a> <!-- 0x0011 -->
- <li><a href="#ModifiedMessage">Name: Object Modification Date and Time</a> <!-- 0x0012 -->
- </ol>
- <li><a href="#SharedObjectHeader">Disk Format: Level 2b - Shared Data Object Headers</a>
- <li><a href="#DataStorage">Disk Format: Level 2c - Data Object Data Storage</a>
- </ol>
- </font>
- <LI><A href="#Appendix">Appendix</A>
- </ol>
-</td></tr>
-</table>
-</center>
-
- <BR>
- <HR>
-
-
- <h2>Introduction</h2>
-
- <table align=right width=100>
- <tr><td>&nbsp;</td><td align=center>
- <hr>
- <img src="FF-IH_FileGroup.gif" alt="HDF5 Groups" hspace=15 vspace=15>
- </td><td>&nbsp;</td></tr>
- <tr><td>&nbsp;</td><td align=center>
- <strong>Figure 1:</strong> Relationships among the HDF5 root group, other groups, and objects
- <hr>
- </td><td>&nbsp;</td></tr>
-
- <tr><td>&nbsp;</td><td align=center>
- <img src="FF-IH_FileObject.gif" alt="HDF5 Objects" hspace=15 vspace=15>
- </td><td>&nbsp;</td></tr>
- <tr><td>&nbsp;</td><td align=center>
- <strong>Figure 2:</strong> HDF5 objects -- datasets, datatypes, or dataspaces
- <hr>
- </td><td>&nbsp;</td></tr>
- </table>
-
-
- <P>The format of an HDF5 file on disk encompasses several
- key ideas of the HDF4 and AIO file formats as well as
- addressing some shortcomings therein. The new format is
- more self-describing than the HDF4 format and is more
- uniformly applied to data objects in the file.
-
- <P>An HDF5 file appears to the user as a directed graph.
- The nodes of this graph are the higher-level HDF5 objects
- that are exposed by the HDF5 APIs:
-
- <ul>
- <li>Groups
- <li>Datasets
- <li>Named datatypes
- </ul>
-
- <P>At the lowest level, as information is actually written to the disk,
- an HDF5 file is made up of the following objects:
- <ul>
- <li>A super block
- <li>B-tree nodes (containing either symbol nodes or raw data chunks)
- <li>Object headers
- <li>A global heap
- <li>Local heaps
- <li>Free space
- </ul>
-
- <P>The HDF5 library uses these low-level objects to represent the
- higher-level objects that are then presented to the user or
- to applications through the APIs.
- For instance, a group is an object header that contains a message that
- points to a local heap and to a B-tree which points to symbol nodes.
- A dataset is an object header that contains messages that describe
- datatype, space, layout, filters, external files, fill value, etc
- with the layout message pointing to either a raw data chunk or to a
- B-tree that points to raw data chunks.
-
-
- <h3>This Document</h3>
-
- <p>This document describes the lower-level data objects;
- the higher-level objects and their properties are described
- in the <a href="H5.user.html"><cite>HDF5 User's Guide</cite></a>.
-
- <P>Three levels of information comprise the file format.
- Level 0 contains basic information for identifying and
- defining information about the file. Level 1 information contains
- the information about the pieces of a file shared by many objects
- in the file (such as a B-trees and heaps). Level 2 is the rest
- of the file and contains all of the data objects, with each object
- partitioned into header information, also known as
- <em>metadata</em>, and data.
-
- <p>The sizes of various fields in the following layout tables are
- determined by looking at the number of columns the field spans
- in the table. There are three exceptions: (1) The size may be
- overridden by specifying a size in parentheses, (2) the size of
- addresses is determined by the <em>Size of Offsets</em> field
- in the super block and is indicated in this document with a
- superscripted 'O', and (3) the size of length fields is determined
- by the <em>Size of Lengths</em> field in the super block and is
- indicated in this document with a superscripted 'L'.
-
- <P>Values for all fields in this document should be treated as unsigned
- integers, unless otherwise noted in the description of a field.
- Additionally, all metadata fields are stored in little-endian byte
- order.
- </P>
-
- <BR>
- <HR>
-
- <h2><a name="FileMetaData">
- Disk Format: Level 0 - File Metadata</a></h2>
-
- <H3><A name="SuperBlock">
- Disk Format: Level 0A - File Signature and Super Block</A></H3>
-
- <P>The super block may begin at certain predefined offsets within
- the HDF5 file, allowing a block of unspecified content for
- users to place additional information at the beginning (and
- end) of the HDF5 file without limiting the HDF5 library's
- ability to manage the objects within the file itself. This
- feature was designed to accommodate wrapping an HDF5 file in
- another file format or adding descriptive information to the
- file without requiring the modification of the actual file's
- information. The super block is located by searching for the
- HDF5 file signature at byte offset 0, byte offset 512 and at
- successive locations in the file, each a multiple of two of
- the previous location, i.e. 0, 512, 1024, 2048, etc.
-
- <P>The super block is composed of a file signature, followed by
- super block and group version numbers, information
- about the sizes of offset and length values used to describe
- items within the file, the size of each group page,
- and a group entry for the root object in the file.
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- HDF5 Super Block Layout
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td colspan=4><br>HDF5 File Signature (8 bytes)<br><br></td>
- </tr>
-
- <tr>
- <td>Version # of Super Block</td>
- <td>Version # of Global Free-space Storage</td>
- <td>Version # of Root Group Symbol Table Entry</td>
- <td>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td>Version # of Shared Header Message Format</td>
- <td>Size of Offsets</td>
- <td>Size of Lengths</td>
- <td>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=2>Group Leaf Node K</td>
- <td colspan=2>Group Internal Node K</td>
- </tr>
-
- <tr>
- <td colspan=4>File Consistency Flags</td>
- </tr>
-
- <tr>
- <td colspan=2 style="border:dotted;">Indexed Storage Internal Node K<sup>1</sup></td>
- <td colspan=2 style="border:dotted;">Reserved (zero)<sup>1</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Base Address<sup>O</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Address of Global Free-space Heap<sup>O</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>End of File Address<sup>O</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Driver Information Block Address<sup>O</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Root Group Symbol Table Entry</td>
- </tr>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'O' the above table are
- <br>
- of the size specified in "Size of Offsets.")
- </td></tr>
- <tr><td>
- (Items marked with an '1' the above table are
- <br>
- new in version 1 of the superblock)
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>HDF5 File Signature</td>
- <td>
- <P>This field contains a constant value and can be used to
- quickly identify a file as being an HDF5 file. The
- constant value is designed to allow easy identification of
- an HDF5 file and to allow certain types of data corruption
- to be detected. The file signature of an HDF5 file always
- contains the following values:
- </P>
-
- <center>
- <table border align=center cellpadding=4>
- <tr align=center>
- <td align=right>Decimal:</td>
- <td width="8%">137</td>
- <td width="8%">72</td>
- <td width="8%">68</td>
- <td width="8%">70</td>
- <td width="8%">13</td>
- <td width="8%">10</td>
- <td width="8%">26</td>
- <td width="8%">10</td>
- </tr>
-
- <tr align=center>
- <td align=right>Hexadecimal:</td>
- <td>89</td>
- <td>48</td>
- <td>44</td>
- <td>46</td>
- <td>0d</td>
- <td>0a</td>
- <td>1a</td>
- <td>0a</td>
- </tr>
-
- <tr align=center>
- <td align=right>ASCII C Notation:</td>
- <td>\211</td>
- <td>H</td>
- <td>D</td>
- <td>F</td>
- <td>\r</td>
- <td>\n</td>
- <td>\032</td>
- <td>\n</td>
- </tr>
- </table>
- </center>
- <br>
-
- <P>This signature both identifies the file as an HDF5 file
- and provides for immediate detection of common
- file-transfer problems. The first two bytes distinguish
- HDF5 files on systems that expect the first two bytes to
- identify the file type uniquely. The first byte is
- chosen as a non-ASCII value to reduce the probability
- that a text file may be misrecognized as an HDF5 file;
- also, it catches bad file transfers that clear bit
- 7. Bytes two through four name the format. The CR-LF
- sequence catches bad file transfers that alter newline
- sequences. The control-Z character stops file display
- under MS-DOS. The final line feed checks for the inverse
- of the CR-LF translation problem. (This is a direct
- descendent of the <A href="http://www.libpng.org/pub/png/spec/PNG-Rationale.html#R.PNG-file-signature">PNG</A> file
- signature.)
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version Number of the Super Block</td>
- <td>
- <P>This value is used to determine the format of the
- information in the super block. When the format of the
- information in the super block is changed, the version number
- is incremented to the next integer and can be used to
- determine how the information in the super block is
- formatted.
- </P>
-
- <P>Values of 0 and 1 are defined for this field.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version Number of the File Free-space Information</td>
- <td>
- <P>This value is used to determine the format of the
- information in the File Free-space Information.
- </P>
- <P>The only value currently valid in this field is '0', which
- indicates that the free space index is formatted as described
- <A href="#FreeSpaceIndex">below</A>.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version Number of the Root Group Symbol Table Entry</td>
- <td>
- <P>This value is used to determine the format of the
- information in the Root Group Symbol Table Entry. When the
- format of the information in that field is changed, the
- version number is incremented to the next integer and can be
- used to determine how the information in the field
- is formatted.
- </P>
- <P>The only value currently valid in this field is '0', which
- indicates that the root group symbol table entry is formatted as
- described <A href="#SymbolTableEntry">below</A>.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version Number of the Shared Header Message Format</td>
- <td>
- <P>This value is used to determine the format of the
- information in a shared object header message, which is
- stored in the global small-data heap. Since the format
- of the shared header messages differs from the private
- header messages, a version number is used to identify changes
- in the format.
- </P>
- <P>The only value currently valid in this field is '0', which
- indicates that shared header messages are formatted as
- described <A href="#SharedObjectHeader">below</A>.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Size of Offsets</td>
- <td>
- <P>This value contains the number of bytes used to store
- addresses in the file. The values for the addresses of
- objects in the file are offsets relative to a base address,
- usually the address of the super block signature. This
- allows a wrapper to be added after the file is created
- without invalidating the internal offset locations.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Size of Lengths</td>
- <td>
- <P>This value contains the number of bytes used to store
- the size of an object.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Group Leaf Node K</td>
- <td>
- <P>Each leaf node of a group B-tree will have at
- least this many entries but not more than twice this
- many. If a group has a single leaf node then it
- may have fewer entries.
- </P>
- <P>This value must be greater than zero.
- </P>
- <P>See the <A href="#Btrees">description</A> of B-trees below.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Group Internal Node K</td>
- <td>
- <P>Each internal node of a group B-tree will have at
- least this many entries but not more than twice this
- many. If the group has only one internal
- node then it might have fewer entries.
- </P>
- <P>This value must be greater than zero.
- </P>
- <P>See the <A href="#Btrees">description</A> of B-trees below.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>File Consistency Flags</td>
- <td>
- <P>This value contains flags to indicate information
- about the consistency of the information contained
- within the file. Currently, the following bit flags are
- defined:
- <ul>
- <li>Bit 0 set indicates that the file is opened for
- write-access.
- <li>Bit 1 set indicates that the file has
- been verified for consistency and is guaranteed to be
- consistent with the format defined in this document.
- <li>Bits 2-31 are reserved for future use.
- </ul>
- Bit 0 should be
- set as the first action when a file is opened for write
- access and should be cleared only as the final action
- when closing a file. Bit 1 should be cleared during
- normal access to a file and only set after the file's
- consistency is guaranteed by the library or a
- consistency utility.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Indexed Storage Internal Node K</td>
- <td>
- <P>Each internal node of a indexed storage B-tree will have at
- least this many entries but not more than twice this
- many. If the group has only one internal
- node then it might have fewer entries.
- </P>
- <P>This value must be greater than zero.
- </P>
- <P>See the <A href="#Btrees">description</A> of B-trees below.
- </P>
-
- <P><EM>This field is present in version 1+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Base Address</td>
- <td>
- <P>This is the absolute file address of the first byte of
- the HDF5 data within the file. The library currently
- constrains this value to be the absolute file address
- of the super block itself when creating new files;
- future versions of the library may provide greater
- flexibility. When opening an existing file and this address does
- not match the offset of the superblock, the library assumes
- that the entire contents of the HDF5 file have been adjusted in
- the file and adjusts the base address and end of file address to
- reflect their new positions in the file. Unless otherwise noted,
- all other file addresses are relative to this base
- address.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Address of Global Free-space Index</td>
- <td>
- <P>Free-space management is not yet defined in the HDF5
- file format and is not handled by the library.
- Currently this field always contains the
- <A href="#UndefinedAddress">undefined address</A>.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>End of File Address</td>
- <td>
- <P>This is the absolute file address of the first byte past
- the end of all HDF5 data. It is used to determine whether a
- file has been accidently truncated and as an address where
- file data allocation can occur if space from the free list is
- not used.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Driver Information Block Address</td>
- <td>
- <P>This is the relative file address of the file driver
- information block which contains driver-specific
- information needed to reopen the file. If there is no
- driver information block then this entry should be the
- <A href="#UndefinedAddress">undefined address</A>.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Root Group Symbol Table Entry</td>
- <td>
- <P>This is the <A href="#SymbolTableEntry">symbol table entry</A>
- of the root group, which serves as the entry point into
- the group graph for the file.
- </P>
-
- <P><EM>This field is present in version 0+ of the superblock.</EM>
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <H3><A name="DriverInfo">
- Disk Format: Level 0B - File Driver Info</A></H3>
-
- <p>The <em>file driver information block</em> is an optional region of the
- file which contains information needed by the file driver in
- order to reopen a file. The format of the file driver information
- block is:
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Driver Information Block
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td colspan=3>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=4>Driver Information Size (4 bytes)</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Driver Identification (8 bytes)<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br><br>Driver Information (<em>n</em> bytes)<br><br><br></td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>
- <P>The version number of the driver information block. The
- file format documented here is version zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Driver Information Size</td>
- <td>
- <P>The size in bytes of the Driver Information part of this
- structure.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Driver Identification</td>
- <td>
- <P>This is an eight-byte ASCII string without null
- termination which identifies the driver and version number
- of the Driver Information block. The predefined drivers
- supplied with the HDF5 library are identified by the
- letters <code>NCSA</code> followed by the first four characters of
- the driver name. If the Driver Information block is not
- the original version then the last letter(s) of the
- identification will be replaced by a version number in
- ASCII.
- </P>
- <P>
- For example, the various versions of the <em>family driver</em>
- will be identified by <code>NCSAfami</code>, <code>NCSAfam0</code>,
- <code>NCSAfam1</code>, etc.
- (<code>NCSAfami</code> is simply <code>NCSAfamily</code> truncated
- to eight characters. Subsequent identifiers will be created by
- substituting sequential numerical values for the final character,
- starting with zero.)
- </P>
- <P>
- Identification for user-defined drivers
- is arbitrary but should be unique and avoid the four character
- prefix "NCSA".
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Driver Information</td>
- <td>Driver information is stored in a format defined by the
- file driver and encoded/decoded by the driver callbacks
- invoked from the <code>H5FD_sb_encode</code> and
- <code>H5FD_sb_decode</code> functions.</td>
- </tr>
- </table>
- </div>
-
- <BR>
- <HR>
-
- <h2><a name="FileInfra">
- Disk Format: Level 1 - File Infrastructure</a></h2>
- <h3><a name="Btrees">Disk Format: Level 1A - B-link Trees and B-tree Nodes</a></h3>
-
- <p>B-link trees allow flexible storage for objects which tend to grow
- in ways that cause the object to be stored discontiguously. B-trees
- are described in various algorithms books including "Introduction to
- Algorithms" by Thomas H. Cormen, Charles E. Leiserson, and Ronald
- L. Rivest. The B-link tree, in which the sibling nodes at a
- particular level in the tree are stored in a doubly-linked list,
- is described in the "Efficient Locking for Concurrent Operations
- on B-trees" paper by Phillip Lehman and S. Bing Yao as published
- in the <cite>ACM Transactions on Database Systems</cite>, Vol. 6,
- No. 4, December 1981.
-
- <p>The B-link trees implemented by the file format contain one more
- key than the number of children. In other words, each child
- pointer out of a B-tree node has a left key and a right key.
- The pointers out of internal nodes point to sub-trees while
- the pointers out of leaf nodes point to symbol nodes and
- raw data chunks.
- Aside from that difference, internal nodes and leaf nodes
- are identical.
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- B-tree Nodes
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
-
- <tr>
- <td colspan=4>Signature</td>
-
- <tr>
- <td>Node Type</td>
- <td>Node Level</td>
- <td colspan=2>Entries Used</td>
-
- <tr>
- <td colspan=4>Address of Left Sibling<sup>O</sup></td>
-
- <tr>
- <td colspan=4>Address of Right Sibling<sup>O</sup></td>
-
- <tr>
- <td colspan=4>Key 0 (variable size)</td>
-
- <tr>
- <td colspan=4>Address of Child 0<sup>O</sup></td>
-
- <tr>
- <td colspan=4>Key 1 (variable size)</td>
-
- <tr>
- <td colspan=4>Address of Child 1<sup>O</sup></td>
-
- <tr>
- <td colspan=4>...</td>
-
- <tr>
- <td colspan=4>Key 2<em>K</em> (variable size)</td>
-
- <tr>
- <td colspan=4>Address of Child 2<em>K</em><sup>O</sup></td>
-
- <tr>
- <td colspan=4>Key 2<em>K</em>+1 (variable size)</td>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'O' the above table are
- <br>
- of the size specified in "Size of Offsets.")
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Signature</td>
- <td>
- <P>The ASCII character string "<code>TREE</code>" is
- used to indicate the
- beginning of a B-link tree node. This gives file
- consistency checking utilities a better chance of
- reconstructing a damaged file.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Node Type</td>
- <td>
- <P>Each B-link tree points to a particular type of data.
- This field indicates the type of data as well as
- implying the maximum degree <em>K</em> of the tree and
- the size of each Key field.
- </P>
-
- <table class=list>
- <tr>
- <th width="30%">Node Type</th>
- <th align=left>Description</th>
- </tr>
- <tr>
- <td align=center>0</td>
- <td>This tree points to group nodes.</td>
- </tr>
- <tr>
- <td align=center>1</td>
- <td>This tree points to raw data chunk nodes.</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>Node Level</td>
- <td>
- <P>The node level indicates the level at which this node
- appears in the tree (leaf nodes are at level zero). Not
- only does the level indicate whether child pointers
- point to sub-trees or to data, but it can also be used
- to help file consistency checking utilities reconstruct
- damanged trees.
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Entries Used</td>
- <td>
- <P>This determines the number of children to which this
- node points. All nodes of a particular type of tree
- have the same maximum degree, but most nodes will point
- to less than that number of children. The valid child
- pointers and keys appear at the beginning of the node
- and the unused pointers and keys appear at the end of
- the node. The unused pointers and keys have undefined
- values.
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Address of Left Sibling</td>
- <td>
- <P>This is the relative file address of the left sibling of
- the current node. If the current
- node is the left-most node at this level then this field
- is the <A href="#UndefinedAddress">undefined address</A>.
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Address of Right Sibling</td>
- <td>
- <P>This is the relative file address of the right sibling of
- the current node. If the current
- node is the right-most node at this level then this
- field is the <A href="#UndefinedAddress">undefined address</A>.
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Keys and Child Pointers</td>
- <td>
- <P>Each tree has 2<em>K</em>+1 keys with 2<em>K</em>
- child pointers interleaved between the keys. The number
- of keys and child pointers actually containing valid
- values is determined by the node's <em>Entries Used</em> field.
- If that field is <em>N</em> then the B-link tree contains
- <em>N</em> child pointers and <em>N</em>+1 keys.
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Key</td>
- <td>
- <P>The format and size of the key values is determined by
- the type of data to which this tree points. The keys are
- ordered and are boundaries for the contents of the child
- pointer; that is, the key values represented by child
- <em>N</em> fall between Key <em>N</em> and Key
- <em>N</em>+1. Whether the interval is open or closed on
- each end is determined by the type of data to which the
- tree points.
- </P>
-
- <P>
- The format of the key depends on the node type.
- For nodes of node type 0 (group nodes), the key is formatted as
- follows:
- <center>
- <table class=list>
- <tr>
- <td width=30%>A single field of <i>Size of Lengths</i>
- bytes:</td>
- <td>Indicates the byte offset into the local heap
- for the first object name in the subtree which
- that key describes.
- </td>
- </tr>
- </table>
- </center>
- </P>
-
- <P>
- For nodes of node type 1 (chunked raw data nodes), the key is
- formatted as follows:
- <center>
- <table class=list>
- <tr>
- <td width=30%>Bytes 1-4:</td>
- <td>Size of chunk in bytes.</td>
- </tr>
- <tr>
- <td>Bytes 4-8:</td>
- <td>Filter mask, a 32-bit bitfield indicating which
- filters have been skipped for this chunk. Each filter
- has an index number in the pipeline (starting at 0, with
- the first filter to apply) and if that filter is skipped,
- the bit corresponding to it's index is set.</td>
- </tr>
- <tr>
- <td><em>N</em> 64-bit fields:</td>
- <td>A 64-bit index indicating the offset of the
- chunk within the dataset where <i>N</i> is the number
- of dimensions of the dataset. For example, if
- a chunk in a 3-dimensional dataset begins at the
- position <code>[5,5,5]</code>, there will be three
- such 64-bit indices, each with the value of
- <code>5</code>.</td>
- </tr>
- </table>
- </center>
- </P>
- </td>
- </tr>
-
- <tr valign=top>
- <td>Child Pointer</td>
- <td>
- <P>The tree node contains file addresses of subtrees or
- data depending on the node level. Nodes at Level 0 point
- to data addresses, either raw data chunk or group nodes.
- Nodes at non-zero levels point to other nodes of the
- same B-tree.
- </P>
- <P>For raw data chunk nodes, the child pointer is the address
- of a single raw data chunk. For group nodes, the child pointer
- points to a <A href="#SymbolTable">symbol table</A>, which contains
- information for multiple symbol table entries.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <p>
- Conceptually, each B-tree node looks like this:
- <center>
- <table>
- <tr valign=top align=center>
- <td>key[0]</td><td>&nbsp;</td>
- <td>child[0]</td><td>&nbsp;</td>
- <td>key[1]</td><td>&nbsp;</td>
- <td>child[1]</td><td>&nbsp;</td>
- <td>key[2]</td><td>&nbsp;</td>
- <td>...</td><td>&nbsp;</td>
- <td>...</td><td>&nbsp;</td>
- <td>key[<i>N</i>-1]</td><td>&nbsp;</td>
- <td>child[<i>N</i>-1]</td><td>&nbsp;</td>
- <td>key[<i>N</i>]</td>
- </tr>
- </table>
- </center>
- <br>
-
- where child[<i>i</i>] is a pointer to a sub-tree (at a level
- above Level 0) or to data (at Level 0).
- Each key[<i>i</i>] describes an <i>item</i> stored by the B-tree
- (a chunk or an object of a group node). The range of values
- represented by child[<i>i</i>] is indicated by key[<i>i</i>]
- and key[<i>i</i>+1].
-
-
- <p>The following question must next be answered:
- "Is the value described by key[<i>i</i>] contained in
- child[<i>i</i>-1] or in child[<i>i</i>]?"
- The answer depends on the type of tree.
- In trees for groups (node type 0) the object described by
- key[<i>i</i>] is the greatest object contained in
- child[<i>i</i>-1] while in chunk trees (node type 1) the
- chunk described by key[<i>i</i>] is the least chunk in
- child[<i>i</i>].
-
- <p>That means that key[0] for group trees is sometimes unused;
- it points to offset zero in the heap, which is always the
- empty string and compares as "less-than" any valid object name.
-
- <p>And key[<i>N</i>] for chunk trees is sometimes unused;
- it contains a chunk offset which compares as "greater-than"
- any other chunk offset and has a chunk byte size of zero
- to indicate that it is not actually allocated.
-
-
- <h3><a name="SymbolTable">Disk Format: Level 1B - Group and Symbol Nodes</a></h3>
-
- <p>A group is an object internal to the file that allows
- arbitrary nesting of objects within the file (including other groups).
- A group maps a set of names in the group to a set of relative
- file addresses where objects with those names are located in
- the file. Certain metadata for an object to which the group points
- can be cached in the group's symbol table in addition to the
- object's header.
-
- <p>An HDF5 object name space can be stored hierarchically by
- partitioning the name into components and storing each
- component in a group. The group entry for a
- non-ultimate component points to the group containing
- the next component. The group entry for the last
- component points to the object being named.
-
- <p>A group is a collection of group nodes pointed
- to by a B-link tree. Each group node contains entries
- for one or more symbols. If an attempt is made to add a
- symbol to an already full group node containing
- 2<em>K</em> entries, then the node is split and one node
- contains <em>K</em> symbols and the other contains
- <em>K</em>+1 symbols.
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Group Node (A Leaf of a B-tree)
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
-
- <tr>
- <td colspan=4>Signature</td>
-
- <tr>
- <td>Version Number</td>
- <td>Reserved (0)</td>
- <td colspan=2>Number of Symbols</td>
-
- <tr>
- <td colspan=4><br><br>Group Entries<br><br><br></td>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Signature</td>
- <td>
- <P>The ASCII character string "<code>SNOD</code>" is
- used to indicate the
- beginning of a group node. This gives file
- consistency checking utilities a better chance of
- reconstructing a damaged file.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version Number</td>
- <td>
- <P>The version number for the group node. This
- document describes version 1. (There is no version '0'
- of the group node)
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Number of Symbols</td>
- <td>
- <P>Although all group nodes have the same length,
- most contain fewer than the maximum possible number of
- symbol entries. This field indicates how many entries
- contain valid data. The valid entries are packed at the
- beginning of the group node while the remaining
- entries contain undefined values.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Group Entries</td>
- <td>
- <P>Each symbol has an entry in the group node.
- The format of the entry is described below.
- There are 2<EM>K</EM> entries in each group node, where
- <EM>K</EM> is the "Group Leaf Node K" value from the
- <A href="#SuperBlock">super block</A>.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <h3><a name="SymbolTableEntry">
- Disk Format: Level 1C - Group Entry </a></h3>
-
- <p>Each group entry in a group node is designed
- to allow for very fast browsing of stored objects.
- Toward that design goal, the group entries
- include space for caching certain constant metadata from the
- object header.
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Group Entry
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td colspan=4>Name Offset<sup>O</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Object Header Address<sup>O</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Cache Type</td>
- </tr>
-
- <tr>
- <td colspan=4>Reserved</td>
- </tr>
-
- <tr>
- <td colspan=4><br><br>Scratch-pad Space (16 bytes)<br><br><br></td>
- </tr>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'O' the above table are
- <br>
- of the size specified in "Size of Offsets.")
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Name Offset</td>
- <td>
- <P>This is the byte offset into the group local
- heap for the name of the object. The name is null
- terminated.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Object Header Address</td>
- <td>
- <P>Every object has an object header which serves as a
- permanent location for the object's metadata. In addition
- to appearing in the object header, some metadata can be
- cached in the scratch-pad space.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Cache Type</td>
- <td>
- <P>The cache type is determined from the object header.
- It also determines the format for the scratch-pad space:
- <br>
- <table class=list>
- <tr align=left>
- <th>Type:</th>
- <th>Description:</th>
- </tr>
- <tr>
- <td width="10%" align=center>0</td>
- <td>No data is cached by the group entry. This
- is guaranteed to be the case when an object header
- has a link count greater than one.
- </td>
- </tr>
- <tr>
- <td align=center>1</td>
- <td>Object header metadata is cached in the group
- entry. This implies that the group
- entry refers to another group.
- </td>
- </tr>
- <tr>
- <td align=center>2</td>
- <td>The entry is a symbolic link. The first four bytes
- of the scratch-pad space are the offset into the local
- heap for the link value. The object header address
- will be undefined.
- </td>
- </tr>
- <tr>
- <td align=center><em>N</em></td>
- <td>Other cache values can be defined later and
- libraries that do not understand the new values will
- still work properly.
- </td>
- </tr>
- </table>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Reserved</td>
- <td>
- <P>These four bytes are present so that the scratch-pad
- space is aligned on an eight-byte boundary. They are
- always set to zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Scratch-pad Space</td>
- <td>
- <P>This space is used for different purposes, depending
- on the value of the Cache Type field. Any metadata
- about a dataset object represented in the scratch-pad
- space is duplicated in the object header for that
- dataset. This metadata can include the datatype
- and the size of the dataspace for a dataset whose datatype
- is atomic and whose dataspace is fixed and less than
- four dimensions.
- </P>
- <P>
- Furthermore, no data is cached in the group
- entry scratch-pad space if the object header for
- the group entry has a link count greater than
- one.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <h4>Format of the Scratch-pad Space</h4>
-
- <p>The group entry scratch-pad space is formatted
- according to the value in the Cache Type field.
-
- <p>If the Cache Type field contains the value zero
- <code>(0)</code> then no information is
- stored in the scratch-pad space.
-
- <p>If the Cache Type field contains the value one
- <code>(1)</code>, then the scratch-pad space
- contains cached metadata for another object header
- in the following format:
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Object Header Scratch-pad Format
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
-
- <tr>
- <td colspan=4>Address of B-tree<sup>O</sup></td>
-
- <tr>
- <td colspan=4>Address of Name Heap<sup>O</sup></td>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'O' the above table are
- <br>
- of the size specified in "Size of Offsets.")
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Address of B-tree</td>
- <td>
- <P>This is the file address for the root of the
- group's B-tree.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Address of Name Heap</td>
- <td>
- <P>This is the file address for the group's local
- heap, in which are stored the group's symbol names.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
-
- <P>If the Cache Type field contains the value two
- <code>(2)</code>, then the scratch-pad space
- contains cached metadata for another symbolic link
- in the following format:
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Symbolic Link Scratch-pad Format
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td colspan=4>Offset to Link Value</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Offset to Link Value</td>
- <td>
- <P>The value of a symbolic link (that is, the name of the
- thing to which it points) is stored in the local heap.
- This field is the 4-byte offset into the local heap for
- the start of the link value, which is null terminated.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <h3><a name="LocalHeap">Disk Format: Level 1D - Local Heaps</a></h3>
-
- <P>A heap is a collection of small heap objects. Objects can be
- inserted and removed from the heap at any time.
- The address of a heap does not change once the heap is created.
- References to objects are stored in the group table;
- the names of those objects are stored in the local heap.
- </P>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Local Heap
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td colspan=4>Signature</td>
- </tr>
-
- <tr>
- <td>Version</td>
- <td colspan=3>Reserved (zero)</td>
- </td>
-
- <tr>
- <td colspan=4>Data Segment Size<sup>L</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Offset to Head of Free-list<sup>L</sup></td>
- </tr>
-
- <tr>
- <td colspan=4>Address of Data Segment<sup>O</sup></td>
- </tr>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'L' the above table are
- <br>
- of the size specified in "Size of Lengths.")
- </td></tr>
- <tr><td>
- (Items marked with an 'O' the above table are
- <br>
- of the size specified in "Size of Offsets.")
- </td></tr>
- </table>
- </div>
-
- <p>
- <center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Signature</td>
- <td>
- <P>The ASCII character string "<code>HEAP</code>"
- is used to indicate the
- beginning of a heap. This gives file consistency
- checking utilities a better chance of reconstructing a
- damaged file.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>
- <P>Each local heap has its own version number so that new
- heaps can be added to old files. This document
- describes version zero (0) of the local heap.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Data Segment Size</td>
- <td>
- <P>The total amount of disk memory allocated for the heap
- data. This may be larger than the amount of space
- required by the objects stored in the heap. The extra
- unused space in the heap holds a linked list of free blocks.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Offset to Head of Free-list</td>
- <td>
- <P>This is the offset within the heap data segment of the
- first free block (or the
- <A href="#UndefinedAddress">undefined address</A> if there is no
- free block). The free block contains "Size of Lengths" bytes that
- are the offset of the next free block (or the
- value '1' if this is the
- last free block) followed by "Size of Lengths" bytes that store
- the size of this free block. The size of the free block includes
- the space used to store the offset of the next free block and
- the of the current block, making the minimum size of a free block
- 2 * "Size of Lengths".
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Address of Data Segment</td>
- <td>
- <P>The data segment originally starts immediately after
- the heap header, but if the data segment must grow as a
- result of adding more objects, then the data segment may
- be relocated, in its entirety, to another part of the
- file.
- </P>
- </td>
- </tr>
- </table>
- </center>
-
- <p>Objects within the heap should be aligned on an 8-byte boundary.
-
- <h3><a name="GlobalHeap">Disk Format: Level 1E - Global Heap</a></h3>
-
- <P>Each HDF5 file has a global heap which stores various types of
- information which is typically shared between datasets. The
- global heap was designed to satisfy these goals:
-
- <ol type="A">
- <li>Repeated access to a heap object must be efficient without
- resulting in repeated file I/O requests. Since global heap
- objects will typically be shared among several datasets, it is
- probable that the object will be accessed repeatedly.
- <li>Collections of related global heap objects should result in
- fewer and larger I/O requests. For instance, a dataset of
- object references will have a global heap object for each
- reference. Reading the entire set of object references
- should result in a few large I/O requests instead of one small
- I/O request for each reference.
- <li>It should be possible to remove objects from the global heap
- and the resulting file hole should be eligible to be reclaimed
- for other uses.
- </ol>
- </P>
-
- <P>The implementation of the heap makes use of the memory
- management already available at the file level and combines that
- with a new top-level object called a <em>collection</em> to
- achieve Goal B. The global heap is the set of all collections.
- Each global heap object belongs to exactly one collection and
- each collection contains one or more global heap objects. For
- the purposes of disk I/O and caching, a collection is treated as
- an atomic object.
- </P>
-
- <P>The HDF5 library creates global heap collections as needed, so there may
- be multiple collections throughout the file. The set of all of them is
- abstractly called the "global heap", although they don't actually link
- to each other, and there is no global place in the file where you can
- discover all of the collections. The collections are found simply by
- finding a reference to one through another object in the file (eg.
- variable-length datatype elements, etc).
- </P>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- A Global Heap Collection
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td colspan=4>Signature</td>
- </tr>
-
- <tr>
- <td>Version</td>
- <td colspan=3>Reserved (zero)</td>
- </td>
-
- <tr>
- <td colspan=4>Collection Size<sup>L</sup></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Global Heap Object 1<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Global Heap Object 2<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br>...<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Global Heap Object <em>N</em><br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Global Heap Object 0 (free space)<br><br></td>
- </tr>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'L' the above table are
- <br>
- of the size specified in "Size of Lengths.")
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Signature</td>
- <td>
- <P>The ASCII character string "<code>GCOL</code>"
- is used to indicate the
- beginning of a collection. This gives file consistency
- checking utilities a better chance of reconstructing a
- damaged file.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>
- <P>Each collection has its own version number so that new
- collections can be added to old files. This document
- describes version one (1) of the collections (there is no
- version zero (0)).
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Collection Size</td>
- <td>
- <P>This is the size in bytes of the entire collection
- including this field. The default (and minimum)
- collection size is 4096 bytes which is a typical file
- system block size. This allows for 127 16-byte heap
- objects plus their overhead (the collection header of 16 bytes
- and the 16 bytes of information about each heap object).
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Global Heap Object 1 through <em>N</em></td>
- <td>
- <P>The objects are stored in any order with no
- intervening unused space.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Global Heap Object 0</td>
- <td>
- <P>Global Heap Object 0 (zero), when present, represents the free
- space in the collection. Free space always appears at the end of
- the collection. If the free space is too small to store the header
- for Object 0 (described below) then the header is implied and the
- collection contains no free space.
- </P>
- </td>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Global Heap Object
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td colspan=2>Heap Object ID</td>
- <td colspan=2>Reference Count</td>
- </tr>
-
- <tr>
- <td colspan=4>Reserved</td>
- </tr>
-
- <tr>
- <td colspan=4>Object Size<sup>L</sup></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Object Data<br><br></td>
- </tr>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'L' the above table are
- <br>
- of the size specified in "Size of Lengths.")
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Heap Object ID</td>
- <td>
- <P>Each object has a unique identification number within a
- collection. The identification numbers are chosen so that
- new objects have the smallest value possible with the
- exception that the identifier <code>0</code> always refers to the
- object which represents all free space within the
- collection.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Reference Count</td>
- <td>
- <P>All heap objects have a reference count field. An
- object which is referenced from some other part of the
- file will have a positive reference count. The reference
- count for Object 0 is always zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Reserved</td>
- <td>
- <P>Zero padding to align next field on an 8-byte boundary.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Object Size</td>
- <td>
- <P>This is the size of the object data stored for the object.
- The actual storage space allocated for the object data is rounded
- up to a multiple of eight.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Object Data</td>
- <td>
- <P>The object data is treated as a one-dimensional array
- of bytes to be interpreted by the caller.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <h3><a name="FreeSpaceIndex">Disk Format: Level 1F - Free-space Index</a></h3>
-
- <p>The free-space index is a collection of blocks of data,
- dispersed throughout the file, which are currently not used by
- any file objects.
-
- <p>The super block contains a pointer to root of the free-space description;
- that pointer is currently required to be the
- <A href="#UndefinedAddress">undefined address</A>.
-
- <p>The format of the free-space index is not defined at this time.
-
-<!--
- <p>The Free-space Index is a collection of blocks of data,
- dispersed throughout the file, which are currently not used by
- any file objects. The blocks of data are indexed by a B-tree of
- their length within the file.
-
-
- <p>Each B-tree page is composed of the following entries and
- B-tree management information, organized as follows:
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Free-space Heap Page</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=4>Signature</td>
- <tr align=center>
- <td colspan=4>B-tree Left-link Offset</td>
- <tr align=center>
- <td colspan=4><br>Length of Free-block #1<br> <br></td>
- <tr align=center>
- <td colspan=4><br>Offset of Free-block #1<br> <br></td>
- <tr align=center>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr align=center>
- <td colspan=4><br>Length of Free-block #n<br> <br></td>
- <tr align=center>
- <td colspan=4><br>Offset of Free-block #n<br> <br></td>
- <tr align=center>
- <td colspan=4>"High" Offset</td>
- <tr align=center>
- <td colspan=4>Right-link Offset</td>
- </table>
- </center>
-
- <p>
- <dl>
- <dt> The elements of the free-space heap page are described below:
- <dd>
- <dl>
- <dt>Signature: (4 bytes)
- <dd>The ASCII character string <code>FREE</code>
- is used to indicate the
- beginning of a free-space heap B-tree page. This gives
- file consistency checking utilities a better chance of
- reconstructing a damaged file.
-
- <dt>B-tree Left-link Offset: (&lt;offset&gt; bytes)
- <dd>This value is used to indicate the offset of all offsets
- in the B-link-tree which are smaller than the value of the
- offset in entry #1. This value is also used to indicate a
- leaf node in the B-link-tree by being set to all ones.
-
- <dt>Length of Free-block #n: (&lt;length&gt; bytes)
- <dd>This value indicates the length of an unused block in
- the file.
-
- <dt>Offset of Free-block #n: (&lt;offset&gt; bytes)
- <dd>This value indicates the offset in the file of an
- unused block in the file.
-
- <dt>"High" Offset: (4-bytes)
- <dd>This offset is used as the upper bound on offsets
- contained within a page when the page has been split.
-
- <dt>Right-link Offset: (&lt;offset&gt; bytes)
- <dd>This value is used to indicate the offset of the next
- child to the right of the parent of this group
- page. When there is no node to the right, this value is
- all zeros.
- </dl>
- </dl>
-
- <p>The algorithms for searching and inserting objects in the
- B-tree pages are described fully in the Lehman and Yao paper,
- which should be read to provide a full description of the
- B-tree's usage.
--->
-
- <BR>
- <HR>
-
- <h2><a name="DataObject">Disk Format: Level 2 - Data Objects </a></h2>
-
- <P>Data objects contain the real information in the file. These
- objects compose the scientific data and other information which
- are generally thought of as "data" by the end-user. All the
- other information in the file is provided as a framework for
- these data objects.
- </P>
-
- <P>A data object is composed of header information and data
- information. The header information contains the information
- needed to interpret the data information for the data object as
- well as additional "metadata" or pointers to additional
- "metadata" used to describe or annotate each data object.
- </P>
-
- <h3><a name="ObjectHeader">
- Disk Format: Level 2A - Data Object Headers</a></h3>
-
- <P>The header information of an object is designed to encompass
- all the information about an object, except for the data itself.
- This information includes
- the dataspace, datatype, information about how the data
- is stored on disk (in external files, compressed, broken up in
- blocks, etc.), as well as other information used by the library
- to speed up access to the data objects or maintain a file's
- integrity. Information stored by user applications as attributes
- is also stored in the object's header. The header of each object is
- not necessarily located immediately prior to the object's data in the
- file and in fact may be located in any position in the file. The order
- of the messages in an object header is not significant.
- </P>
-
- <P>Header messages are aligned on 8-byte boundaries.
- </P>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Object Headers
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>Reserved (zero)</td>
- <td colspan=2>Number of Header Messages</td>
- </tr>
-
- <tr>
- <td colspan=4>Object Reference Count</td>
- </tr>
-
- <tr>
- <td colspan=4>Object Header Size</td>
- </tr>
-
- <tr>
- <td colspan=2>Header Message Type #1</td>
- <td colspan=2>Size of Header Message Data #1</td>
- </tr>
-
- <tr>
- <td>Header Message #1 Flags</td>
- <td colspan=3>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Header Message Data #1<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4>.<br>.<br>.<br></td>
- </tr>
-
- <tr>
- <td colspan=2>Header Message Type #n</td>
- <td colspan=2>Size of Header Message Data #n</td>
- </tr>
-
- <tr>
- <td>Header Message #n Flags</td>
- <td colspan=3>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Header Message Data #n<br><br></td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>
- <P>This value is used to determine the format of the
- information in the object header. When the format of the
- information in the object header is changed, the version number
- is incremented and can be used to determine how the
- information in the object header is formatted. This
- document describes version one (1) (there was no version
- zero (0)).
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Number of Header Messages</td>
- <td>
- <P>This value determines the number of messages listed in
- object headers for this object. This value includes the messages
- in continuation messages for this object.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Object Reference Count</td>
- <td>
- <P>This value specifies the number of "hard links" to this object
- within the current file. References to the object from external
- files, "soft links" in this file and object references in this
- file are not tracked.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Object Header Size</td>
- <td>
- <P>This value specifies the number of bytes of header message data
- following this length field that contain object header messages
- for this object header. This value does not include the size of
- object header continuation blocks for this object elsewhere in the
- file.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Header Message Type</td>
- <td>
- <P>This value specifies the type of information included in the
- following header message data. The header message types for the
- pre-defined header messages are included in sections below.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Size of Header Message Data</td>
- <td>
- <P>This value specifies the number of bytes of header
- message data following the header message type and length
- information for the current message. The size includes
- padding bytes to make the message a multiple of eight
- bytes.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Header Message Flags</td>
- <td>
- <P>This is a bit field with the following definition:
- <table class=list>
- <tr>
- <th width="30%">Bit</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>If set, the message data is constant. This is used
- for messages like the datatype message of a dataset.
- </td>
- </tr>
- <tr>
- <td align=center><code>1</code></td>
- <td>If set, the message is stored in the global heap.
- The Header Message Data field contains a Shared Object
- message and the Size of Header Message Data field
- contains the size of that Shared Object message.
- </td>
- </tr>
- <tr>
- <td align=center><code>2-7</code></td>
- <td>Reserved</td>
- </tr>
- </table>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Header Message Data</td>
- <td>
- <P>The format and length of this field is determined by the
- header message type and size respectively. Some header
- message types do not require any data and this information
- can be eliminated by setting the length of the message to
- zero. The data is padded with enough zeros to make the
- size a multiple of eight.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- <P>The header message types and the message data associated with
- them compose the critical "metadata" about each object. Some
- header messages are required for each object while others are
- optional. Some optional header messages may also be repeated
- several times in the header itself, the requirements and number
- of times allowed in the header will be noted in each header
- message description below.
- </P>
-
- <P>The following is a list of currently defined header messages:
- </P>
-
- <hr>
- <h4><a name="NILMessage">Name: NIL</a></h4>
-
- <P class=item><B>Header Message Type: </B>0x0000
- </P>
- <P class=item><B>Length:</B> varies
- </P>
- <P class=item><B>Status:</B> Optional, may be repeated.
- </P>
- <P class=item><B>Purpose and Description:</B> The NIL message is used to indicate a
- message which is to be ignored when reading the header messages for a
- data object. [Possibly one which has been deleted for some reason.]
- </P>
- <P class=item><B>Format of Data:</B> Unspecified.
- </P>
-
- <hr>
- <h4><a name="SimpleDataSpace">Name: Simple Dataspace</a></h4>
-
- <P class=item><B>Header Message Type: </B>0x0001
- </P>
- <P class=item><B>Length:</B> Varies according to the number of dimensions,
- as described in the following table.
- </P>
- <P class=item><B>Status:</B> Required for dataset objects, may not be
- repeated.
- </P>
- <P class=item><B>Description:</B> The simple dataspace message describes the
- number of dimensions (i.e. "rank") and size of each dimension that the
- data object has. This message is only used for datasets which have a
- simple, rectilinear grid layout; datasets requiring a more complex
- layout (irregularly structured or unstructured grids, etc.) must use
- the <em>Complex Dataspace</em> message for expressing the space the
- dataset inhabits. <i>(Note: The <em>Complex Dataspace</em>
- functionality is not yet implemented and it is not described in this
- document.)</i>
- </P>
-
- <P class=item><B>Format of Data:</B>
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Simple Dataspace Message
- </caption>
-
- <tr>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- <th>byte</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>Dimensionality</td>
- <td>Flags</td>
- <td>Reserved</td>
- </tr>
-
- <tr>
- <td colspan=4>Reserved</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension #1 Size<sup>L</sup></td>
- <tr>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr>
- <td colspan=4>Dimension #n Size<sup>L</sup></td>
- <tr>
- <td colspan=4>Dimension #1 Maximum Size<sup>L</sup></td>
- <tr>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr>
- <td colspan=4>Dimension #n Maximum Size<sup>L</sup></td>
- <tr>
- <td colspan=4>Permutation Index #1<sup>L</sup></td>
- <tr>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr>
- <td colspan=4>Permutation Index #n<sup>L</sup></td>
- </table>
-
- <table class=note>
- <tr><td>
- (Items marked with an 'L' the above table are
- <br>
- of the size specified in "Size of Lengths.")
- </td></tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>
- <P>This value is used to determine the format of the
- Simple Dataspace Message. When the format of the
- information in the message is changed, the version number
- is incremented and can be used to determine how the
- information in the object header is formatted. This
- document describes version one (1) (there was no version
- zero (0)).
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimensionality</td>
- <td>
- <P>This value is the number of dimensions that the data
- object has.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Flags</td>
- <td>
- <P>This field is used to store flags to indicate the
- presence of parts of this message. Bit 0 (the least
- significant bit) is used to indicate that maximum
- dimensions are present. Bit 1 is used to indicate that
- permutation indices are present.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimension #n Size</td>
- <td>
- <P>This value is the current size of the dimension of the
- data as stored in the file. The first dimension stored in
- the list of dimensions is the slowest changing dimension
- and the last dimension stored is the fastest changing
- dimension.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimension #n Maximum Size</td>
- <td>
- <P>This value is the maximum size of the dimension of the
- data as stored in the file. This value may be the special
- "<A href="#UnlimitedDim">unlimited</A>" size which indicates
- that the data may expand along this dimension indefinitely.
- If these values are not stored, the maximum size of each
- dimension is assumed to be the dimension's current size.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Permutation Index #n</td>
- <td>
- <P>This value is the index permutation used to map
- each dimension from the canonical representation to an
- alternate axis for each dimension. If these values are
- not stored, the first dimension stored in the list of
- dimensions is the slowest changing dimension and the last
- dimension stored is the fastest changing dimension.
- </P>
- </td>
- </tr>
- </table>
- </div>
-
- </P>
-
-<!--
- <hr>
- <h4><a name="DataSpaceMessage">Name: Complex Dataspace (Fiber Bundle?)</a></h4>
- <b>Header Message Type: </b>0x0002<br>
- <b>Length:</b> varies<br>
-
- <b>Status:</b> One of the <em>Simple Dataspace</em> or
- <em>Complex Dataspace</em> messages is required (but not both) and may
- not be repeated.<br> <b>Purpose and Description:</b> The
- <em>Dataspace</em> message describes space that the dataset is
- mapped onto in a more comprehensive way than the <em>Simple
- Dimensionality</em> message is capable of handling. The
- dataspace of a dataset encompasses the type of coordinate system
- used to locate the dataset's elements as well as the structure and
- regularity of the coordinate system. The dataspace also
- describes the number of dimensions which the dataset inhabits as
- well as a possible higher dimensional space in which the dataset
- is located within.
-
- <br>
- <b>Format of Data:</b>
-
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Dataspace Message Layout</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=4>Mesh Type</td>
- <tr align=center>
- <td colspan=4>Logical Dimensionality</td>
- </table>
- </center>
-
- <p>
- <dl>
- <dt>The elements of the dimensionality message are described below:
- <dd>
- <dl>
- <dt>Mesh Type: (unsigned 32-bit integer)
- <dd>This value indicates whether the grid is
- polar/spherical/cartesion,
- structured/unstructured and regular/irregular. <br>
- The mesh type value is broken up as follows: <br>
-
- <P>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Mesh-type Layout</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=1>Mesh Embedding</td>
- <td colspan=1>Coordinate System</td>
- <td colspan=1>Structure</td>
- <td colspan=1>Regularity</td>
- </table>
- </center>
- The following are the definitions of mesh-type bytes:
- <dl>
- <dt>Mesh Embedding
- <dd>This value indicates whether the dataset dataspace
- is located within
- another dataspace or not:
- <dl> <dl>
- <dt>&lt;STANDALONE&gt;
- <dd>The dataset mesh is self-contained and is not
- embedded in another mesh.
- <dt>&lt;EMBEDDED&gt;
- <dd>The dataset's dataspace is located within
- another dataspace, as
- described in information below.
- </dl> </dl>
- <dt>Coordinate System
- <dd>This value defines the type of coordinate system
- used for the mesh:
- <dl> <dl>
- <dt>&lt;POLAR&gt;
- <dd>The last two dimensions are in polar
- coordinates, higher dimensions are
- cartesian.
- <dt>&lt;SPHERICAL&gt;
- <dd>The last three dimensions are in spherical
- coordinates, higher dimensions
- are cartesian.
- <dt>&lt;CARTESIAN&gt;
- <dd>All dimensions are in cartesian coordinates.
- </dl> </dl>
- <dt>Structure
- <dd>This value defines the locations of the grid-points
- on the axes:
- <dl> <dl>
- <dt>&lt;STRUCTURED&gt;
- <dd>All grid-points are on integral, sequential
- locations, starting from 0.
- <dt>&lt;UNSTRUCTURED&gt;
- <dd>Grid-points locations in each dimension are
- explicitly defined and
- may be of any numeric datatype.
- </dl> </dl>
- <dt>Regularity
- <dd>This value defines the locations of the dataset
- points on the grid:
- <dl> <dl>
- <dt>&lt;REGULAR&gt;
- <dd>All dataset elements are located at the
- grid-points defined.
- <dt>&lt;IRREGULAR&gt;
- <dd>Each dataset element has a particular
- grid-location defined.
- </dl> </dl>
- </dl>
- <p>The following grid combinations are currently allowed:
- <dl> <dl>
- <dt>&lt;POLAR-STRUCTURED-REGULAR&gt;
- <dt>&lt;SPHERICAL-STRUCTURED-REGULAR&gt;
- <dt>&lt;CARTESIAN-STRUCTURED-REGULAR&gt;
- <dt>&lt;POLAR-UNSTRUCTURED-REGULAR&gt;
- <dt>&lt;SPHERICAL-UNSTRUCTURED-REGULAR&gt;
- <dt>&lt;CARTESIAN-UNSTRUCTURED-REGULAR&gt;
- <dt>&lt;CARTESIAN-UNSTRUCTURED-IRREGULAR&gt;
- </dl> </dl>
- All of the above grid types can be embedded within another
- dataspace.
- <br> <br>
- <dt>Logical Dimensionality: (unsigned 32-bit integer)
- <dd>This value is the number of dimensions that the dataset occupies.
-
- <P>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Dataspace Embedded Dimensionality Information</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=4>Embedded Dimensionality</td>
- <tr align=center>
- <td colspan=4>Embedded Dimension Size #1</td>
- <tr align=center>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr align=center>
- <td colspan=4>Embedded Dimension Size #n</td>
- <tr align=center>
- <td colspan=4>Embedded Origin Location #1</td>
- <tr align=center>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr align=center>
- <td colspan=4>Embedded Origin Location #n</td>
- </table>
- </center>
-
- <dt>Embedded Dimensionality: (unsigned 32-bit integer)
- <dd>This value is the number of dimensions of the space the
- dataset is located
- within. i.e. a planar dataset located within a 3-D space,
- or a 3-D dataset
- which is a subset of another 3-D space, etc.
- <dt>Embedded Dimension Size: (unsigned 32-bit integer)
- <dd>These values are the sizes of the dimensions of the
- embedded dataspace
- that the dataset is located within.
- <dt>Embedded Origin Location: (unsigned 32-bit integer)
- <dd>These values comprise the location of the dataset's
- origin within the embedded dataspace.
- </dl>
- </dl>
- [Comment: need some way to handle different orientations of the
- dataset dataspace
- within the embedded dataspace]<br>
-
- <P>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Dataspace Structured/Regular Grid Information</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=4>Logical Dimension Size #1</td>
- <tr align=center>
- <td colspan=4>Logical Dimension Maximum #1</td>
- <tr align=center>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr align=center>
- <td colspan=4>Logical Dimension Size #n</td>
- <tr align=center>
- <td colspan=4>Logical Dimension Maximum #n</td>
- </table>
- </center>
-
- <p>
- <dl>
- <dt>The elements of the dimensionality message are described below:
- <dd>
- <dl>
- <dt>Logical Dimension Size #n: (unsigned 32-bit integer)
- <dd>This value is the current size of the dimension of the
- data as stored in
- the file. The first dimension stored in the list of
- dimensions is the slowest
- changing dimension and the last dimension stored is the
- fastest changing
- dimension.
- <dt>Logical Dimension Maximum #n: (unsigned 32-bit integer)
- <dd>This value is the maximum size of the dimension of the
- data as stored in
- the file. This value may be the special value
- &lt;UNLIMITED&gt; which
- indicates that the data may expand along this dimension
- indefinitely.
- </dl>
- </dl>
- <P>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Dataspace Structured/Irregular Grid Information</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=4># of Grid Points in Dimension #1</td>
- <tr align=center>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr align=center>
- <td colspan=4># of Grid Points in Dimension #n</td>
- <tr align=center>
- <td colspan=4>Datatype of Grid Point Locations</td>
- <tr align=center>
- <td colspan=4>Location of Grid Points in Dimension #1</td>
- <tr align=center>
- <td colspan=4>.<br>.<br>.<br></td>
- <tr align=center>
- <td colspan=4>Location of Grid Points in Dimension #n</td>
- </table>
- </center>
-
- <P>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=bottom>
- <B>HDF5 Dataspace Unstructured Grid Information</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <td colspan=4># of Grid Points</td>
- <tr align=center>
- <td colspan=4>Datatype of Grid Point Locations</td>
- <tr align=center>
- <td colspan=4>Grid Point Locations<br>.<br>.<br></td>
- </table>
- </center>
--->
-
- <hr>
- <h4><a name="ReservedMessage_0002">Name: Reserved - Not Assigned Yet</a></h4>
- <b>Header Message Type:</b> 0x0002<BR>
- <b>Length:</b> N/A<BR>
- <b>Status:</b> N/A<BR>
- <b>Format of Data:</b> N/A<BR>
-
- <p><b>Purpose and Description:</b> This message type was skipped during
- the initial specification of the file format and may be used in a
- future expansion to the format.
-
-
- <hr>
- <h4><a name="DataTypeMessage">Name: Datatype</a></h4>
-
- <P class=item><B>Header Message Type:</B> 0x0003
- </P>
- <P class=item><B>Length:</B> variable
- </P>
- <P class=item><B>Status:</B> Required for dataset or named datatype objects,
- may not be repeated.
- </P>
-
- <P class=item><B>Description:</B> The datatype message defines the datatype
- for each element of a dataset. A datatype can describe an atomic type
- like a fixed- or floating-point type or a compound type like a C
- struct.
- Datatypes messages are stored
- as a list of datatype classes and
- their associated properties.
- </P>
-
- <P class=item2>Datatype messages that are part of a dataset object,
- do not describe how elements are related to one another, the dataspace
- message is used for that purpose. Datatype messages that are part of
- a named datatype message describe an "abstract" datatype that can be
- used by other objects in the file.
- </P>
-
- <P class=item><B>Format of Data:</B>
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Datatype Message
- </caption>
-
- <tr>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr>
- <td>Class and Version</td>
- <td>Class Bit Field, Bits 0-7</td>
- <td>Class Bit Field, Bits 8-15</td>
- <td>Class Bit Field, Bits 16-23</td>
- </tr>
-
- <tr>
- <td colspan=4>Size</td>
- </tr>
-
- <tr>
- <td colspan=4><br><br>Properties<br><br><br></td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Class and Version</td>
- <td>
- <P>The version of the datatype message and the datatype's class
- information are packed together in this field. The version
- number is packed in the top 4 bits of the field and the class
- is contained in the bottom 4 bits.
- </P>
- <P>The version number information is used for changes in the
- format of the datatype message and is described here:
- <table class=list>
- <tr>
- <th width="30%">Version</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Never used
- </td>
- </tr>
- <tr>
- <td align=center><code>1</code></td>
- <td>Used by early versions of the library to encode
- compound datatypes with explicit array fields.
- See the compound datatype description below for
- further details.
- </td>
- </tr>
- <tr>
- <td align=center><code>2</code></td>
- <td>The current version used by the library.
- </td>
- </tr>
- </table>
- </P>
- <P>The class of the datatype determines the format for the class
- bit field and properties portion of the datatype message, which
- are described below. The
- following classes are currently defined:
- <table width=100% class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Fixed-Point</td>
- </tr>
-
- <tr>
- <td align=center><code>1</code></td>
- <td>Floating-Point</td>
- </tr>
-
- <tr>
- <td align=center><code>2</code></td>
- <td>Time</td>
- </tr>
-
- <tr>
- <td align=center><code>3</code></td>
- <td>String</td>
- </tr>
-
- <tr>
- <td align=center><code>4</code></td>
- <td>Bitfield</td>
- </tr>
-
- <tr>
- <td align=center><code>5</code></td>
- <td>Opaque</td>
- </tr>
-
- <tr>
- <td align=center><code>6</code></td>
- <td>Compound</td>
- </tr>
-
- <tr>
- <td align=center><code>7</code></td>
- <td>Reference</td>
- </tr>
-
- <tr>
- <td align=center><code>8</code></td>
- <td>Enumerated</td>
- </tr>
-
- <tr>
- <td align=center><code>9</code></td>
- <td>Variable-Length</td>
- </tr>
-
- <tr>
- <td align=center><code>10</code></td>
- <td>Array</td>
- </tr>
- </table>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Class Bit Fields</td>
- <td>
- <P>The information in these bit fields is specific to each datatype
- class and is described below. All bits not defined for a
- datatype class are set to zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Size</td>
- <td>
- <P>The size of the datatype in bytes.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Properties</td>
- <td>
- <P>This variable-sized field encodes information specific to each
- datatype class and is described below. If there is no
- property information specified for a datatype class, the size
- of this field is zero.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
- <P>Class specific information for Fixed-Point Numbers (Class 0):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0</td>
- <td><b>Byte Order.</b> If zero, byte order is little-endian;
- otherwise, byte order is big endian.</td>
- </tr>
-
- <tr>
- <td>1, 2</td>
- <td><b>Padding type.</b> Bit 1 is the lo_pad type and bit 2
- is the hi_pad type. If a datum has unused bits at either
- end, then the lo_pad or hi_pad bit is copied to those
- locations.</td>
- </tr>
-
- <tr>
- <td>3</td>
- <td><b>Signed.</b> If this bit is set then the fixed-point
- number is in 2's complement form.</td>
- </tr>
-
- <tr>
- <td>4-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Descriptions
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=2>Bit Offset</td>
- <td colspan=2>Bit Precision</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Bit Offset</td>
- <td>
- <P>The bit offset of the first significant bit of the fixed-point
- value within the datatype. The bit offset specifies the number
- of bits "to the right of" the value.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Bit Precision</td>
- <td>
- <P>The number of bits of precision of the fixed-point value
- within the datatype.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
- <P>Class specific information for Floating-Point Numbers (Class 1):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0</td>
- <td><b>Byte Order.</b> If zero, byte order is little-endian;
- otherwise, byte order is big endian.</td>
- </tr>
-
- <tr>
- <td>1, 2, 3</td>
- <td><b>Padding type.</b> Bit 1 is the low bits pad type, bit 2
- is the high bits pad type, and bit 3 is the internal bits
- pad type. If a datum has unused bits at either end or between
- the sign bit, exponent, or mantissa, then the value of bit
- 1, 2, or 3 is copied to those locations.</td>
- </tr>
-
- <tr>
- <td>4-5</td>
- <td><b>Normalization.</b> The value can be 0 if there is no
- normalization, 1 if the most significant bit of the
- mantissa is always set (except for 0.0), and 2 if the most
- signficant bit of the mantissa is not stored but is
- implied to be set. The value 3 is reserved and will not
- appear in this field.</td>
- </tr>
-
- <tr>
- <td>6-7</td>
- <td>Reserved (zero).</td>
- </tr>
-
- <tr>
- <td>8-15</td>
- <td><b>Sign Location.</b> This is the bit position of the sign
- bit. Bits are numbered with the least significant bit zero.</td>
- </tr>
-
- <tr>
- <td>16-23</td>
- <td>Reserved (zero).</td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Descriptions
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=2>Bit Offset</td>
- <td colspan=2>Bit Precision</td>
- </tr>
-
- <tr>
- <td>Exponent Location</td>
- <td>Exponent Size</td>
- <td>Mantissa Location</td>
- <td>Mantissa Size</td>
- </tr>
-
- <tr>
- <td colspan=4>Exponent Bias</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Bit Offset</td>
- <td>
- <P>The bit offset of the first significant bit of the floating-point
- value within the datatype. The bit offset specifies the number
- of bits "to the right of" the value.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Bit Precision</td>
- <td>
- <P>The number of bits of precision of the floating-point value
- within the datatype.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Exponent Location</td>
- <td>
- <P>The bit position of the exponent field. Bits are numbered with
- the least significant bit number zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Exponent Size</td>
- <td>
- <P>The size of the exponent field in bits.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Mantissa Location</td>
- <td>
- <P>The bit position of the mantissa field. Bits are numbered with
- the least significant bit number zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Mantissa Size</td>
- <td>
- <P>The size of the mantissa field in bits.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Exponent Bias</td>
- <td>
- <P>The bias of the exponent field.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
- <P>Class specific information for Time (Class 2):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0</td>
- <td><b>Byte Order.</b> If zero, byte order is little-endian;
- otherwise, byte order is big endian.</td>
- </tr>
-
- <tr>
- <td>1-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Descriptions
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=2>Bit Precision</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Bit Precision</td>
- <td>
- <P>The number of bits of precision of the time value.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
- <P>Class specific information for Strings (Class 3):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0-3</td>
- <td><b>Padding type.</b> This four-bit value determines the
- type of padding to use for the string. The values are:
-
- <table width=100% class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Null Terminate: A zero byte marks the end of the
- string and is guaranteed to be present after
- converting a long string to a short string. When
- converting a short string to a long string the value is
- padded with additional null characters as necessary.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>1</code></td>
- <td>Null Pad: Null characters are added to the end of
- the value during conversions from short values to long
- values but conversion in the opposite direction simply
- truncates the value.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>2</code></td>
- <td>Space Pad: Space characters are added to the end of
- the value during conversions from short values to long
- values but conversion in the opposite direction simply
- truncates the value. This is the Fortran
- representation of the string.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>3-15</code></td>
- <td>Reserved
- </td>
- </tr>
- </table>
- </tr>
-
- <tr>
- <td>4-7</td>
- <td><b>Character Set.</b> The character set to use for
- encoding the string. The only character set supported is
- the 8-bit ASCII (zero) so no translations have been defined
- yet.</td>
- </tr>
-
- <tr>
- <td>8-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <P>There are no properties defined for the string class.
- </P>
- </P>
-
- <P>Class specific information for Bitfields (Class 4):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0</td>
- <td><b>Byte Order.</b> If zero, byte order is little-endian;
- otherwise, byte order is big endian.</td>
- </tr>
-
- <tr>
- <td>1, 2</td>
- <td><b>Padding type.</b> Bit 1 is the lo_pad type and bit 2
- is the hi_pad type. If a datum has unused bits at either
- end, then the lo_pad or hi_pad bit is copied to those
- locations.</td>
- </tr>
-
- <tr>
- <td>3-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Description
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=2>Bit Offset</td>
- <td colspan=2>Bit Precision</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Bit Offset</td>
- <td>
- <P>The bit offset of the first significant bit of the bitfield
- within the datatype. The bit offset specifies the number
- of bits "to the right of" the value.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Bit Precision</td>
- <td>
- <P>The number of bits of precision of the bitfield
- within the datatype.
- </P>
- </td>
- </tr>
- </table>
- </div>
- </P>
-
- <P>Class specific information for Opaque (Class 5):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0-7</td>
- <td>Length of ASCII tag in bytes.</td>
- </tr>
-
- <tr>
- <td>8-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Description
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=4><br>ASCII Tag<br>
- <br></td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>ASCII Tag</td>
- <td>
- <P>This NUL-terminated string provides a description for the
- opaque type. It is NUL-padded to a multiple of 8 bytes.
- </P>
- </td>
- </tr>
- </table>
- </div>
- </P>
-
- <P>Class specific information for Compound (Class 6):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0-15</td>
- <td><b>Number of Members.</b> This field contains the number
- of members defined for the compound datatype. The member
- definitions are listed in the Properties field of the data
- type message.
- </tr>
-
- <tr>
- <td>15-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
- </P>
-
- <P>The Properties field of a compound datatype is a list of the
- member definitions of the compound datatype. The member
- definitions appear one after another with no intervening bytes.
- The member types are described with a recursive datatype
- message.
-
- <P>Note that the property descriptions are different for different
- versions of the datatype version. Additionally note that the version
- 0 properties are deprecated and have been replaced with the version
- 1 properties in versions of the HDF5 library from the 1.4 release
- onward.
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Properties Description for Datatype Version 1
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=4><br>Name<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4>Byte Offset of Member</td>
- </tr>
-
- <tr>
- <td>Dimensionality</td>
- <td colspan=3>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension Permutation</td>
- </tr>
-
- <tr>
- <td colspan=4>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension #1 Size (required)</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension #2 Size (required)</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension #3 Size (required)</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension #4 Size (required)</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Member Type Message<br><br></td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Name</td>
- <td>
- <P>This NUL-terminated string provides a description for the
- opaque type. It is NUL-padded to a multiple of 8 bytes.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Byte Offset of Member</td>
- <td>
- <P>This is the byte offset of the member within the datatype.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimensionality</td>
- <td>
- <P>If set to zero, this field indicates a scalar member. If set
- to a value greater than zero, this field indicates that the
- member is an array of values. For array members, the size of
- the array is indicated by the 'Size of Dimension n' field in
- this message.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimension Permutation</td>
- <td>
- <P>This field was intended to allow an array field to have
- it's dimensions permuted, but this was never implemented.
- This field should always be set to zero.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimension #n Size</td>
- <td>
- <P>This field is the size of a dimension of the array field as
- stored in the file. The first dimension stored in the list of
- dimensions is the slowest changing dimension and the last
- dimension stored is the fastest changing dimension.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Member Type Message</td>
- <td>
- <P>This field is a datatype message describing the datatype of
- the member.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Properties Description for Datatype Version 2
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=4><br>Name<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4>Byte Offset of Member</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Member Type Message<br><br></td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Name</td>
- <td>
- <P>This NUL-terminated string provides a description for the
- opaque type. It is NUL-padded to a multiple of 8 bytes.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Byte Offset of Member</td>
- <td>
- <P>This is the byte offset of the member within the datatype.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Member Type Message</td>
- <td>
- <P>This field is a datatype message describing the datatype of
- the member.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
- <P>Class specific information for Reference (Class 7):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0-3</td>
- <td><b>Type.</b> This four-bit value contains the type of reference
- described. The values defined are:
-
- <table width=100% class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Object Reference: A reference to another object in this
- HDF5 file.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>1</code></td>
- <td>Dataset Region Reference: A reference to a region within
- a dataset in this HDF5 file.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>2</code></td>
- <td>Internal Reference: A reference to a region within the
- current dataset. (Not currently implemented)
- </td>
- </tr>
-
- <tr>
- <td align=center><code>3-15</code></td>
- <td>Reserved
- </td>
- </tr>
- </table>
-
- </td>
- </tr>
-
- <tr>
- <td>15-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <P>There are no properties defined for the reference class.
- </P>
- </P>
-
- <P>Class specific information for Enumeration (Class 8):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0-15</td>
- <td><b>Number of Members.</b> The number of name/value
- pairs defined for the enumeration type.</td>
- </tr>
-
- <tr>
- <td>16-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Description
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=4><br>Base Type<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Names<br><br></td>
- </tr>
-
- <tr>
- <td colspan=4><br>Values<br><br></td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Base Type</td>
- <td>
- <P>Each enumeration type is based on some parent type, usually an
- integer. The information for that parent type is described
- recursively by this field.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Names</td>
- <td>
- <P>The name for each name/value pair. Each name is stored as a null
- terminated ASCII string in a multiple of eight bytes. The names
- are in no particular order.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Values</td>
- <td>
- <P>The list of values in the same order as the names. The values
- are packed (no inter-value padding) and the size of each value
- is determined by the parent type.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
-
- <P>Class specific information for Variable-Length (Class 9):
-
- <br>
- <div align=center>
- <table class=desc>
- <caption>
- Bit Field Description
- </caption>
-
- <tr>
- <th width="10%">Bits</th>
- <th>Meaning</th>
- </tr>
-
- <tr>
- <td>0-3</td>
- <td><b>Type.</b> This four-bit value contains the type of
- variable-length datatype described. The values defined are:
-
- <table width=100% class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Sequence: A variable-length sequence of any sequence of
- data. Variable-length sequences do not have padding or
- character set information.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>1</code></td>
- <td>String: A variable-length sequence of characters.
- Variable-length strings have padding and character set
- information.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>2-15</code></td>
- <td>Reserved
- </td>
- </tr>
- </table>
-
- </td>
- </tr>
-
- <tr>
- <td>4-7</td>
- <td><b>Padding type.</b> (variable-length string only)
- This four-bit value determines the type of padding
- used for variable-length strings. The values are the same
- as for the string padding type, as follows:
- <table width=100% class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Null terminate: A zero byte marks the end of a string
- and is guaranteed to be present after converting a long
- string to a short string. When converting a short string
- to a long string, the value is padded with additional null
- characters as necessary.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>1</code></td>
- <td>Null pad: Null characters are added to the end of the
- value during conversion from a short string to a longer
- string. Conversion from a long string to a shorter string
- simply truncates the value.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>2</code></td>
- <td>Space pad: Space characters are added to the end of the
- value during conversion from a short string to a longer
- string. Conversion from a long string to a shorter string
- simply truncates the value. This is the Fortran
- representation of the string.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>3-15</code></td>
- <td>Reserved
- </td>
- </tr>
- </table>
-
- This value is set to zero for variable-length sequences.
-
- </td>
- </tr>
-
- <tr>
- <td>8-11</td>
- <td><b>Character Set.</b> (variable-length string only)
- This four-bit value specifies the character set
- to be used for encoding the string:
- <table width=100% class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>ASCII: As of this writing (July 2003, Release 1.6.0),
- 8-bit ASCII is the only character set supported. Therefore,
- no translations have been defined.
- </td>
- </tr>
-
- <tr>
- <td align=center><code>1-15</code></td>
- <td>Reserved
- </td>
- </tr>
- </table>
-
- This value is set to zero for variable-length sequences.
-
- </td>
- </tr>
-
- <tr>
- <td>12-23</td>
- <td>Reserved (zero).</td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Description
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td colspan=4><br>Base Type<br><br></td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Base Type</td>
- <td>
- <P>Each variable-length type is based on some parent type. The
- information for that parent type is described recursively by
- this field.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
- </P>
-
- <P>Class specific information for Array (Class 10):
-
- <P>There are no bit fields defined for the array class.
- </P>
-
- <P>Note that the dimension information defined in the property for this
- datatype class is independent of dataspace information for a dataset.
- The dimension information here describes the dimensionality of the
- information within a data element (or a component of an element, if the
- array datatype is nested within another datatype) and the dataspace for a
- dataset describes the location of the elements in a dataset.
- </P>
-
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Property Description
- </caption>
-
- <tr>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- <th width="25%">Byte</th>
- </tr>
-
- <tr>
- <td>Dimensionality</td>
- <td colspan=3>Reserved (zero)</td>
- </tr>
-
- <tr>
- <td colspan=4>Dimension #1 Size</td>
- </tr>
- <tr>
- <td colspan=4>.<br>.<br>.<br></td>
- </tr>
- <tr>
- <td colspan=4>Dimension #n Size</td>
- </tr>
-
- <tr>
- <td colspan=4>Permutation Index #1</td>
- </tr>
- <tr>
- <td colspan=4>.<br>.<br>.<br></td>
- </tr>
- <tr>
- <td colspan=4>Permutation Index #n</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Base Type<br><br></td>
- </tr>
-
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Dimensionality</td>
- <td>
- <P>This value is the number of dimensions that the array has.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Dimension #n Size</td>
- <td>
- <P>This value is the size of the dimension of the array
- as stored in the file. The first dimension stored in
- the list of dimensions is the slowest changing dimension
- and the last dimension stored is the fastest changing
- dimension.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Permutation Index #n</td>
- <td>
- <P>This value is the index permutation used to map
- each dimension from the canonical representation to an
- alternate axis for each dimension. Currently, dimension
- permutations are not supported and these indices should be set
- to the index position minus one (i.e. the first dimension should
- be set to 0, the second dimension should be set to 1, etc.)
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Base Type</td>
- <td>
- <P>Each array type is based on some parent type. The
- information for that parent type is described recursively by
- this field.
- </P>
- </td>
- </tr>
-
- </table>
- </div>
-
- </P>
-
- <hr>
- <h4><a name="OldFillValueMessage">Name: Data Storage - Fill Value (Old)</a></h4>
-
- <P class=item><B>Header Message Type:</B> 0x0004
- </P>
- <P class=item><B>Length:</B> varies
- </P>
- <P class=item><B>Status:</B> Optional, may not be repeated.
- </P>
-
- <P class=item><B>Description:</B> The fill value message stores a single
- data value which is returned to the application when an uninitialized
- data element is read from a dataset. The fill value is interpreted
- with the same datatype as the dataset. If no fill value message is
- present then a fill value of all zero bytes is assumed.
- </P>
-
- <P class=item2>This fill value message is deprecated in favor of the "new"
- fill value message (Message Type 0x0005) and is only written to the
- file for forward compatibility with versions of the HDF5 library before
- the 1.6.0 version. Additionally, it only appears for datasets with a
- user defined fill value (as opposed to the library default fill value
- or an explicitly set "undefined" fill value).
- </P>
-
- <P class=item><B>Format of Data:</B>
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Fill Value Message (Old)
- </caption>
-
- <tr>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr>
- <td colspan=4>Size</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Fill Value<br><br></td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Size</td>
- <td>
- <P>This is the size of the Fill Value field in bytes.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Fill Value</td>
- <td>
- <P>The fill value. The bytes of the fill value are interpreted
- using the same datatype as for the dataset.
- </P>
- </td>
- </tr>
- </table>
- </div>
- </P>
-
- <hr>
- <h4><a name="FillValueMessage">Name: Data Storage - Fill Value </a></h4>
-
- <P class=item><B>Header Message Type:</B> 0x0005
- </P>
- <P class=item><B>Length:</B> varies
- </P>
- <P class=item><B>Status:</B> Required for dataset objects, may not be repeated.
- </P>
-
- <P class=item><B>Description:</B> The fill value message stores a single
- data value which is returned to the application when an uninitialized
- data element is read from a dataset. The fill value is interpreted
- with the same datatype as the dataset.
- </P>
-
- <P class=item><B>Format of Data:</B>
- <br>
- <div align=center>
- <table class=format>
- <caption>
- Fill Value Message
- </caption>
-
- <tr>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>Space Allocation Time</td>
- <td>Fill Value Write Time</td>
- <td>Fill Value Defined</td>
- </tr>
-
- <tr>
- <td colspan=4>Size</td>
- </tr>
-
- <tr>
- <td colspan=4><br>Fill Value<br><br></td>
- </tr>
- </table>
- </div>
-
- <br>
- <div align=center>
- <table class=desc>
- <tr>
- <th width="30%">Field Name</th>
- <th>Description</th>
- </tr>
-
- <tr>
- <td>Version</td>
- <td>
- <P>The version number information is used for changes in the
- format of the fill value message and is described here:
- <table class=list>
- <tr>
- <th width="30%">Version</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>Never used
- </td>
- </tr>
- <tr>
- <td align=center><code>1</code></td>
- <td>Used by version 1.6.x of the library to encode
- fill values. In this version, the Size field is
- always present.
- </td>
- </tr>
- <tr>
- <td align=center><code>2</code></td>
- <td>The current version used by the library (version
- 1.7.3 or later). In this version, the Size and
- Fill Value fields are
- only present if the Fill Value Defined field is set
- to 1.
- </td>
- </tr>
- </table>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Space Allocation Time</td>
- <td>
- <P>When the storage space for the dataset's raw data will be
- allocated. The allowed values are:
- <table class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>1</code></td>
- <td>Early allocation. Storage space for the entire dataset
- should be allocated in the file when the dataset is
- created.
- </td>
- </tr>
- <tr>
- <td align=center><code>2</code></td>
- <td>Late allocation. Storage space for the entire dataset
- should not be allocated until the dataset is written
- to.
- </td>
- </tr>
- <tr>
- <td align=center><code>3</code></td>
- <td>Incremental allocation. Storage space for the
- dataset should not be allocated until the portion
- of the dataset is written to. This is currently
- used in conjunction with chunked data storage for
- datasets.
- </td>
- </tr>
- </table>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Fill Value Write Time</td>
- <td>
- <P>At the time that storage space for the dataset's raw data is
- allocated, this value indicates whether the fill value should
- be written to the raw data storage elements. The allowed values
- are:
- <table class=list>
- <tr>
- <th width="30%">Value</th>
- <th align=left>Description</th>
- </tr>
-
- <tr>
- <td align=center><code>0</code></td>
- <td>On allocation. The fill value is always written to
- the raw data storage when the storage space is allocated.
- </td>
- </tr>
- <tr>
- <td align=center><code>1</code></td>
- <td>Never. The fill value should never be written to
- the raw data storage.
- </td>
- </tr>
- <tr>
- <td align=center><code>2</code></td>
- <td>Fill value written if set by user. The fill value
- will be written to the raw data storage when the storage
- space is allocated only if the user explicitly set
- the fill value. If the fill value is the library
- default or is undefined, it will not be written to
- the raw data storage.
- </td>
- </tr>
- </table>
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Fill Value Defined</td>
- <td>
- <P>This value indicates if a fill value is defined for this
- dataset. If this value is 0, the fill value is undefined.
- If this value is 1, a fill value is defined for this dataset.
- For version 2 or later of the fill value message, this value
- controls the presence of the Size field.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Size</td>
- <td>
- <P>This is the size of the Fill Value field in bytes. This field
- is not present if the Version field is >1 and the Fill Value
- Defined field is set to 0.
- </P>
- </td>
- </tr>
-
- <tr>
- <td>Fill Value</td>
- <td>
- <P>The fill value. The bytes of the fill value are interpreted
- using the same datatype as for the dataset. This field is
- not present if the Version field is >1 and the Fill Value
- Defined field is set to 0.
- </P>
- </td>
- </tr>
- </table>
- </div>
- </P>
-
-<!--
- <hr>
- <h4><a name="CompactDataStorageMessage">Name: Data Storage - Compact</a></h4>
-
- <b>Header Message Type:</b> 0x0006<br>
- <b>Length:</b> varies<br>
- <b>Status:</b> Optional, may not be repeated.<br>
-
- <p>This message indicates that the data for the data object is
- stored within the current HDF file by including the actual
- data as the header data for this message. The data is
- stored internally in
- the <em>normal format</em>, i.e. in one chunk, uncompressed, etc.
-
- <P>Note that one and only one of the <em>Data Storage</em> headers can be
- stored for each data object.
-
- <P><b>Format of Data:</b> The message data is actually composed
- of dataset data, so the format will be determined by the dataset
- format.
--->
-
- <hr>
- <h4><a name="ReservedMessage_0006">Name: Reserved - Not Assigned Yet</a></h4>
- <b>Header Message Type:</b> 0x0006<BR>
- <b>Length:</b> N/A<BR>
- <b>Status:</b> N/A<BR>
- <b>Format of Data:</b> N/A<BR>
-
- <p><b>Purpose and Description:</b> This message type was skipped during
- the initial specification of the file format and may be used in a
- future expansion to the format.
-
- <hr>
- <h4><a name="ExternalFileListMessage">Name: Data Storage -
- External Data Files</a></h4>
- <b>Header Message Type:</b> 0x0007<BR>
- <b>Length:</b> varies<BR>
- <b>Status:</b> Optional, may not be repeated.<BR>
-
- <p><b>Purpose and Description:</b> The external object message
- indicates that the data for an object is stored outside the HDF5
- file. The filename of the object is stored as a Universal
- Resource Location (URL) of the actual filename containing the
- data. An external file list record also contains the byte offset
- of the start of the data within the file and the amount of space
- reserved in the file for that data.
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <b>External File List Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td>Version</td>
- <td colspan=3>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=2>Allocated Slots</td>
- <td colspan=2>Used Slots</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Heap Address<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Slot Definitions...<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version </td>
- <td>This value is used to determine the format of the
- External File List Message. When the format of the
- information in the message is changed, the version number
- is incremented and can be used to determine how the
- information in the object header is formatted.</td>
- </tr>
-
- <tr valign=top>
- <td>Reserved</td>
- <td>This field is reserved for future use.</td>
- </tr>
-
- <tr valign=top>
- <td>Allocated Slots</td>
- <td>The total number of slots allocated in the message. Its
- value must be at least as large as the value contained in
- the Used Slots field.</td>
- </tr>
-
- <tr valign=top>
- <td>Used Slots</td>
- <td>The number of initial slots which contain valid
- information. The remaining slots are zero filled.</td>
- </tr>
-
- <tr valign=top>
- <td>Heap Address</td>
- <td>This is the address of a local name heap which contains
- the names for the external files. The name at offset zero
- in the heap is always the empty string.</td>
- </tr>
-
- <tr valign=top>
- <td>Slot Definitions</td>
- <td>The slot definitions are stored in order according to
- the array addresses they represent. If more slots have
- been allocated than what has been used then the defined
- slots are all at the beginning of the list.</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <b>External File List Slot</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Name Offset (&lt;size&gt; bytes)<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>File Offset (&lt;size&gt; bytes)<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Size<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Name Offset (&lt;size&gt; bytes)</td>
- <td>The byte offset within the local name heap for the name
- of the file. File names are stored as a URL which has a
- protocol name, a host name, a port number, and a file
- name:
- <code><em>protocol</em>:<em>port</em>//<em>host</em>/<em>file</em></code>.
- If the protocol is omitted then "file:" is assumed. If
- the port number is omitted then a default port for that
- protocol is used. If both the protocol and the port
- number are omitted then the colon can also be omitted. If
- the double slash and host name are omitted then
- "localhost" is assumed. The file name is the only
- mandatory part, and if the leading slash is missing then
- it is relative to the application's current working
- directory (the use of relative names is not
- recommended).</td>
- </tr>
-
- <tr valign=top>
- <td>File Offset (&lt;size&gt; bytes)</td>
- <td>This is the byte offset to the start of the data in the
- specified file. For files that contain data for a single
- dataset this will usually be zero.</td>
- </tr>
-
- <tr valign=top>
- <td>Size</td>
- <td>This is the total number of bytes reserved in the
- specified file for raw data storage. For a file that
- contains exactly one complete dataset which is not
- extendable, the size will usually be the exact size of the
- dataset. However, by making the size larger one allows
- HDF5 to extend the dataset. The size can be set to a value
- larger than the entire file since HDF5 will read zeros
- past the end of the file without failing.</td>
- </tr>
- </table>
- </center>
-
-
- <hr>
- <h4><a name="LayoutMessage">Name: Data Storage - Layout</a></h4>
-
- <b>Header Message Type:</b> 0x0008<BR>
- <b>Length:</b> varies<BR>
- <b>Status:</b> Required for datasets, may not be repeated.
-
- <p><b>Purpose and Description:</b> Data layout describes how the
- elements of a multi-dimensional array are arranged in the linear
- address space of the file. Three types of data layout are
- supported:
-
- <ol>
- <li>The array can be stored in one contiguous area of the file.
- The layout requires that the size of the array be constant and
- does not permit chunking, compression, checksums, encryption,
- etc. The message stores the total size of the array and the
- offset of an element from the beginning of the storage area is
- computed as in C.
-
- <li>The array domain can be regularly decomposed into chunks and
- each chunk is allocated separately. This layout supports
- arbitrary element traversals, compression, encryption, and
- checksums, and the chunks can be distributed across external
- raw data files (these features are described in other
- messages). The message stores the size of a chunk instead of
- the size of the entire array; the size of the entire array can
- be calculated by traversing the B-tree that stores the chunk
- addresses.
-
- <li>The array can be stored in one contiguous block, as part of
- this object header message (this is called "compact" storage below).
- </ol>
-
- <P>Version 3 of this message re-structured the format into specific
- properties that are required for each layout class.
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <B>Data Layout Message, Versions 1 and 2</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td>Version</td>
- <td>Dimensionality</td>
- <td>Layout Class</td>
- <td>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Address<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Dimension 0 (4-bytes)</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Dimension 1 (4-bytes)</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Compact Data Size (4-bytes)</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Compact Data</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version</td>
- <td>A version number for the layout message. This value can be
- either 1 or 2.</td>
- </tr>
-
- <tr valign=top>
- <td>Dimensionality</td>
- <td>An array has a fixed dimensionality. This field
- specifies the number of dimension size fields later in the
- message.</td>
- </tr>
-
- <tr valign=top>
- <td>Layout Class</td>
- <td>The layout class specifies how the other fields of the
- layout message are to be interpreted. A value of one
- indicates contiguous storage, a value of two
- indicates chunked storage,
- while a value of zero
- indicates compact storage. Other values will be defined
- in the future.</td>
- </tr>
-
- <tr valign=top>
- <td>Address</td>
- <td>For contiguous storage, this is the address of the first
- byte of storage. For chunked storage this is the address
- of the B-tree that is used to look up the addresses of the
- chunks. This field is not present for compact storage.
- If the version for this message is set to 2, the address
- may have the "undefined address" value, to indicate that
- storage has not yet been allocated for this array.</td>
- </tr>
-
- <tr valign=top>
- <td>Dimensions</td>
- <td>For contiguous storage the dimensions define the entire
- size of the array while for chunked storage they define
- the size of a single chunk.</td>
- </tr>
-
- <tr valign=top>
- <td>Compact Data Size</td>
- <td>This field is only present for compact data storage.
- It contains the size of the raw data for the dataset array.</td>
-
- <tr valign=top>
- <td>Compact Data</td>
- <td>This field is only present for compact data storage.
- It contains the raw data for the dataset array.</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <B>Data Layout Message, Version 3</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td>Version</td>
- <td>Layout Class</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Properties</td>
- </tr>
-
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version</td>
- <td>A version number for the layout message. This value can be
- either 1, 2 or 3.</td>
- </tr>
-
- <tr valign=top>
- <td>Layout Class</td>
- <td>The layout class specifies how the other fields of the
- layout message are to be interpreted. A value of one
- indicates contiguous storage, a value of two
- indicates chunked storage,
- while a value of three
- indicates compact storage.</td>
- </tr>
-
- <tr valign=top>
- <td>Properties</td>
- <td>This variable-sized field encodes information specific to each
- layout class and is described below. If there is no property
- information specified for a layout class, the size of this field
- is zero bytes.</td>
- </tr>
-
- </table>
- </center>
-
- <P>Class-specific information for contiguous layout (Class 0):
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <B>Property Descriptions</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Address<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Size<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Address</td>
- <td>This is the address of the first byte of raw data storage.
- The address may have the "undefined address" value, to indicate
- that storage has not yet been allocated for this array.</td>
- </tr>
-
- <tr valign=top>
- <td>Size</td>
- <td>This field contains the size allocated to store the raw data.</td>
- </table>
- </center>
-
- <P>Class-specific information for chunked layout (Class 1):
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <B>Property Descriptions</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td>Dimensionality</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Address<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Dimension 0 (4-bytes)</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Dimension 1 (4-bytes)</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Dimensionality</td>
- <td>A chunk has a fixed dimensionality. This field
- specifies the number of dimension size fields later in the
- message.</td>
- </tr>
-
- <tr valign=top>
- <td>Address</td>
- <td>This is the address
- of the B-tree that is used to look up the addresses of the
- chunks.
- The address
- may have the "undefined address" value, to indicate that
- storage has not yet been allocated for this array.</td>
- </tr>
-
- <tr valign=top>
- <td>Dimensions</td>
- <td>The dimension sizes define the size of a single chunk.</td>
- </tr>
- </table>
- </center>
-
- <P>Class-specific information for compact layout (Class 2):
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <B>Property Descriptions</B>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=2>Size</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Raw Data</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Size</td>
- <td>This field contains the size of the raw data for the dataset array.</td>
-
- <tr valign=top>
- <td>Raw Data</td>
- <td>This field contains the raw data for the dataset array.</td>
- </tr>
- </table>
- </center>
-
-
- <hr>
- <h4><a name="ReservedMessage_0009">Name: Reserved - Not Assigned Yet</a></h4>
- <b>Header Message Type:</b> 0x0009<BR>
- <b>Length:</b> N/A<BR>
- <b>Status:</b> N/A<BR>
- <b>Format of Data:</b> N/A<BR>
-
- <p><b>Purpose and Description:</b> This message type was skipped during
- the initial specification of the file format and may be used in a
- future expansion to the format.
-
- <hr>
- <h4><a name="ReservedMessage_000A">Name: Reserved - Not Assigned Yet</a></h4>
- <b>Header Message Type:</b> 0x000A<BR>
- <b>Length:</b> N/A<BR>
- <b>Status:</b> N/A<BR>
- <b>Format of Data:</b> N/A<BR>
-
- <p><b>Purpose and Description:</b> This message type was skipped during
- the initial specification of the file format and may be used in a
- future expansion to the format.
-
- <hr>
- <h4><a name="FilterMessage">Name: Data Storage - Filter Pipeline</a></h4>
- <b>Header Message Type:</b> 0x000B<BR>
- <b>Length:</b> varies<BR>
- <b>Status:</b> Optional, may not be repeated.
-
- <p><b>Purpose and Description:</b> This message describes the
- filter pipeline which should be applied to the data stream by
- providing filter identification numbers, flags, a name, an
- client data.
-
- <p>
- <center>
- <table border align=center cellpadding=4 width="80%">
- <caption align=top>
- <b>Filter Pipeline Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td>Version</td>
- <td>Number of Filters</td>
- <td colspan=2>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Filter List<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version</td>
- <td>The version number for this message. This document
- describes version one.</td>
- </tr>
-
- <tr valign=top>
- <td>Number of Filters</td>
- <td>The total number of filters described by this
- message. The maximum possible number of filters in a
- message is 32.</td>
- </tr>
-
- <tr valign=top>
- <td>Filter List</td>
- <td>A description of each filter. A filter description
- appears in the next table.</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table border align=center cellpadding=4 width="80%">
- <caption align=top>
- <b>Filter Pipeline Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=2>Filter Identification</td>
- <td colspan=2>Name Length</td>
- </tr>
-
- <tr align=center>
- <td colspan=2>Flags</td>
- <td colspan=2>Client Data Number of Values</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Name<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Client Data<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Padding</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Filter Identification</td>
- <td>This is a unique (except in the case of testing)
- identifier for the filter. Values from zero through 255
- are reserved for filters defined by the NCSA HDF5
- library. Values 256 through 511 have been set aside for
- use when developing/testing new filters. The remaining
- values are allocated to specific filters by contacting the
- <a href="mailto:hdf5dev@ncsa.uiuc.edu">HDF5 Development
- Team</a>.</td>
- </tr>
-
- <tr valign=top>
- <td>Name Length</td>
- <td>Each filter has an optional null-terminated ASCII name
- and this field holds the length of the name including the
- null termination padded with nulls to be a multiple of
- eight. If the filter has no name then a value of zero is
- stored in this field.</td>
- </tr>
-
- <tr valign=top>
- <td>Flags</td>
- <td>The flags indicate certain properties for a filter. The
- bit values defined so far are:
-
- <dl>
- <dt><code>bit 1</code>
- <dd>If set then the filter is an optional filter.
- During output, if an optional filter fails it will be
- silently removed from the pipeline.
- </dl>
- </tr>
-
- <tr valign=top>
- <td>Client Data Number of Values</td>
- <td>Each filter can store a few integer values to control
- how the filter operates. The number of entries in the
- Client Data array is stored in this field.</td>
- </tr>
-
- <tr valign=top>
- <td>Name</td>
- <td>If the Name Length field is non-zero then it will
- contain the size of this field, a multiple of eight. This
- field contains a null-terminated, ASCII character
- string to serve as a comment/name for the filter.</td>
- </tr>
-
- <tr valign=top>
- <td>Client Data</td>
- <td>This is an array of four-byte integers which will be
- passed to the filter function. The Client Data Number of
- Values determines the number of elements in the
- array.</td>
- </tr>
-
- <tr valign=top>
- <td>Padding</td>
- <td>Four bytes of zeros are added to the message at this
- point if the Client Data Number of Values field contains
- an odd number.</td>
- </tr>
- </table>
- </center>
-
- <hr>
- <h4><a name="AttributeMessage">Name: Attribute</a></h4>
- <b>Header Message Type:</b> 0x000C<BR>
- <b>Length:</b> varies<BR>
- <b>Status:</b> Optional, may be repeated.<BR>
-
- <p><b>Purpose and Description:</b> The <em>Attribute</em>
- message is used to list objects in the HDF file which are used
- as attributes, or "metadata" about the current object. An
- attribute is a small dataset; it has a name, a datatype, a data
- space, and raw data. Since attributes are stored in the object
- header they must be relatively small (<64KB) and can be
- associated with any type of object which has an object header
- (groups, datasets, named types and spaces, etc.).
-
- <p>Note: Attributes on an object must have unique names. (The HDF5 library
- currently enforces this by causing the creation of an attribute with
- a duplicate name to fail)
- Attributes on different objects may have the same name, however.
-
- <p>
- <center>
- <table border align=center cellpadding=4 width="80%">
- <caption align=top>
- <b>Attribute Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td>Version</td>
- <td>Reserved</td>
- <td colspan=2>Name Size</td>
- </tr>
-
- <tr align=center>
- <td colspan=2>Type Size</td>
- <td colspan=2>Space Size</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Name<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Type<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Space<br><br></td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Data<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version</td>
- <td>Version number for the message. This document describes
- version 1 of attribute messages.</td>
- </tr>
-
- <tr valign=top>
- <td>Reserved</td>
- <td>This field is reserved for later use and is set to
- zero.</td>
- </tr>
-
- <tr valign=top>
- <td>Name Size</td>
- <td>The length of the attribute name in bytes including the
- null terminator. Note that the Name field below may
- contain additional padding not represented by this
- field.</td>
- </tr>
-
- <tr valign=top>
- <td>Type Size</td>
- <td>The length of the datatype description in the Type
- field below. Note that the Type field may contain
- additional padding not represented by this field.</td>
- </tr>
-
- <tr valign=top>
- <td>Space Size</td>
- <td>The length of the dataspace description in the Space
- field below. Note that the Space field may contain
- additional padding not represented by this field.</td>
- </tr>
-
- <tr valign=top>
- <td>Name</td>
- <td>The null-terminated attribute name. This field is
- padded with additional null characters to make it a
- multiple of eight bytes.</td>
- </tr>
-
- <tr valign=top>
- <td>Type</td>
- <td>The datatype description follows the same format as
- described for the datatype object header message. This
- field is padded with additional zero bytes to make it a
- multiple of eight bytes.</td>
- </tr>
-
- <tr valign=top>
- <td>Space</td>
- <td>The dataspace description follows the same format as
- described for the dataspace object header message. This
- field is padded with additional zero bytes to make it a
- multiple of eight bytes.</td>
- </tr>
-
- <tr valign=top>
- <td>Data</td>
- <td>The raw data for the attribute. The size is determined
- from the datatype and dataspace descriptions. This
- field is <em>not</em> padded with additional zero
- bytes.</td>
- </tr>
- </table>
- </center>
-
- <hr>
- <h4><a name="CommentMessage">Name: Object Comment</a></h4>
-
- <p><b>Header Message Type:</b> 0x000D<br>
- <b>Length:</b> varies<br>
- <b>Status:</b> Optional, may not be repeated.
-
- <p><b>Purpose and Description:</b> The object comment is
- designed to be a short description of an object. An object comment
- is a sequence of non-zero (<code>\0</code>) ASCII characters with no other
- formatting included by the library.
-
- <p>
- <center>
- <table border align=center cellpadding=4 width="80%">
- <caption align=top>
- <b>Name Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Comment<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Name</td>
- <td>A null terminated ASCII character string.</td>
- </tr>
- </table>
- </center>
-
- <hr>
- <h4><a name="OldModifiedMessage">Name: Object Modification Date &amp; Time (Old)</a></h4>
-
- <p><b>Header Message Type:</b> 0x000E<br>
- <b>Length:</b> fixed<br>
- <b>Status:</b> Optional, may not be repeated.
-
- <p><b>Purpose and Description:</b> The object modification date
- and time is a timestamp which indicates (using ISO-8601 date and
- time format) the last modification of an object. The time is
- updated when any object header message changes according to the
- system clock where the change was posted.
-
- <p>This modification time message is deprecated in favor of the "new"
- modification time message (Message Type 0x0012) and is no longer written
- to the file in versions of the HDF5 library after the 1.6.0 version.
- </p>
-
-
- <p>
- <center>
- <table border align=center cellpadding=4 width="80%">
- <caption align=top>
- <b>Modification Time Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4>Year</td>
- </tr>
-
- <tr align=center>
- <td colspan=2>Month</td>
- <td colspan=2>Day of Month</td>
- </tr>
-
- <tr align=center>
- <td colspan=2>Hour</td>
- <td colspan=2>Minute</td>
- </tr>
-
- <tr align=center>
- <td colspan=2>Second</td>
- <td colspan=2>Reserved</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Year</td>
- <td>The four-digit year as an ASCII string. For example,
- <code>1998</code>. All fields of this message should be interpreted
- as coordinated universal time (UTC)</td>
- </tr>
-
- <tr valign=top>
- <td>Month</td>
- <td>The month number as a two digit ASCII string where
- January is <code>01</code> and December is <code>12</code>.</td>
- </tr>
-
- <tr valign=top>
- <td>Day of Month</td>
- <td>The day number within the month as a two digit ASCII
- string. The first day of the month is <code>01</code>.</td>
- </tr>
-
- <tr valign=top>
- <td>Hour</td>
- <td>The hour of the day as a two digit ASCII string where
- midnight is <code>00</code> and 11:00pm is <code>23</code>.</td>
- </tr>
-
- <tr valign=top>
- <td>Minute</td>
- <td>The minute of the hour as a two digit ASCII string where
- the first minute of the hour is <code>00</code> and
- the last is <code>59</code>.</td>
- </tr>
-
- <tr valign=top>
- <td>Second</td>
- <td>The second of the minute as a two digit ASCII string
- where the first second of the minute is <code>00</code>
- and the last is <code>59</code>.</td>
- </tr>
-
- <tr valign=top>
- <td>Reserved</td>
- <td>This field is reserved and should always be zero.</td>
- </tr>
- </table>
- </center>
-
- <hr>
- <h4><a name="SharedMessage">Name: Shared Object Message</a></h4>
- <b>Header Message Type:</b> 0x000F<br>
- <b>Length:</b> 4 Bytes<br>
- <b>Status:</b> Optional, may be repeated.
-
- <p>A constant message can be shared among several object headers
- by writing that message in the global heap and having the object
- headers all point to it. The pointing is accomplished with a
- Shared Object message which is understood directly by the object
- header layer of the library. It is also possible to have a
- message of one object header point to a message in some other
- object header, but care must be exercised to prevent cycles.
-
- <p>If a message is shared, then the message appears in the global
- heap and its message ID appears in the Header Message Type
- field of the object header. Also, the Flags field in the object
- header for that message will have bit two set (the
- <code>H5O_FLAG_SHARED</code> bit). The message body in the
- object header will be that of a Shared Object message defined
- here and not that of the pointed-to message.
-
- <p>
- <center>
- <table border cellpadding=4 width="80%">
- <caption align=top>
- <b>Shared Message Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</td>
- <th width="25%">byte</td>
- <th width="25%">byte</td>
- <th width="25%">byte</td>
- </tr>
-
- <tr align=center>
- <td>Version</td>
- <td>Flags</td>
- <td colspan=2>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Pointer<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version</td>
- <td>The version number for the message. This document
- describes version one of shared messages.</td>
- </tr>
-
- <tr valign=top>
- <td>Flags</td>
- <td>The Shared Message message points to a message which is
- shared among multiple object headers. The Flags field
- describes the type of sharing:
-
- <dl>
- <dt><code>Bit 0</code>
- <dd>If this bit is clear then the actual message is the
- first message in some other object header; otherwise
- the actual message is stored in the global heap.
-
- <dt><code>Bits 2-7</code>
- <dd>Reserved (always zero)
- </dl>
- </tr>
-
- <tr valign=top>
- <td>Pointer</td>
- <td>This field points to the actual message. The format of
- the pointer depends on the value of the Flags field. If
- the actual message is in the global heap then the pointer
- is the file address of the global heap collection that
- holds the message, and a four-byte index into that
- collection. Otherwise the pointer is a group entry
- that points to some other object header.</td>
- </tr>
- </table>
- </center>
-
-
-<hr>
-<h4><a name="ContinuationMessage">Name: Object Header Continuation</a></h4>
-<b>Header Message Type:</b> 0x0010<BR>
-<b>Length:</b> fixed<BR>
-<b>Status:</b> Optional, may be repeated.<BR>
-<b>Purpose and Description:</b> The object header continuation is the location
-in the file of more header messages for the current data object. This can be
-used when header blocks are large, or likely to change over time.<BR>
-<b>Format of Data:</b><p>
- The object header continuation is formatted as follows (assuming a 4-byte
-length &amp; offset are being used in the current file):
-
-<P>
-<center>
-<table border cellpadding=4 width=60%>
-<caption align=bottom>
-<B>HDF5 Object Header Continuation Message Layout</B>
-</caption>
-
-<tr align=center>
-<th width=25%>byte</th>
-<th width=25%>byte</th>
-<th width=25%>byte</th>
-<th width=25%>byte</th>
-
-<tr align=center>
-<td colspan=4>Header Continuation Offset</td>
-<tr align=center>
-<td colspan=4>Header Continuation Length</td>
-</table>
-</center>
-
-<P>
-<dl>
-<dt>The elements of the Header Continuation Message are described below:
-<dd>
-<dl>
-<dt>Header Continuation Offset: (&lt;offset&gt; bytes)
-<dd>This value is the offset in bytes from the beginning of the file where the
-header continuation information is located.
-<dt>Header Continuation Length: (&lt;length&gt; bytes)
-<dd>This value is the length in bytes of the header continuation information in
-the file.
-</dl>
-</dl>
-
-<hr>
-<h4><a name="SymbolTableMessage">Name: Group Message</a></h4>
-<b>Header Message Type:</b> 0x0011<BR>
-<b>Length:</b> fixed<BR>
-<b>Status:</b> Required for groups, may not be repeated.<BR>
-<b>Purpose and Description:</b> Each group has a B-tree and a
-name heap which are pointed to by this message.<BR>
-<b>Format of data:</b>
-<p>The group message is formatted as follows:
-
-<p>
-<center>
-<table border cellpadding=4 width="80%">
-<caption align=bottom>
-<b>HDF5 Object Header Group Message Layout</b>
-</caption>
-
-<tr align=center>
-<th width="25%">byte</th>
-<th width="25%">byte</th>
-<th width="25%">byte</th>
-<th width="25%">byte</th>
-
-<tr align=center>
-<td colspan=4>B-tree Address</td>
-
-<tr align=center>
-<td colspan=4>Heap Address</td>
-</table>
-</center>
-
-<P>
-<dl>
-<dt>The elements of the Group Message are described below:
-<dd>
-<dl>
-<dt>B-tree Address (&lt;offset&gt; bytes)
-<dd>This value is the offset in bytes from the beginning of the file
-where the B-tree is located.
-<dt>Heap Address (&lt;offset&gt; bytes)
-<dd>This value is the offset in bytes from the beginning of the file
-where the group name heap is located.
-</dl>
-</dl>
-
- <hr>
- <h4><a name="ModifiedMessage">Name: Object Modification Date &amp; Time</a></h4>
-
- <P class=item><B>Header Message Type:</B> 0x0012
- </P>
- <P class=item><B>Length:</B> Fixed
- </P>
- <P class=item><B>Status:</B> Optional, may not be repeated.
- </P>
-
- <P class=item><B>Description:</B> The object modification date
- and time is a timestamp which indicates
- the last modification of an object. The time is
- updated when any object header message changes according to the
- system clock where the change was posted.
- </P>
-
- <p>
- <center>
- <table border align=center cellpadding=4 width="80%">
- <caption align=top>
- <b>Modification Time Message</b>
- </caption>
-
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=1>Version</td>
- <td colspan=3>Reserved</td>
- </tr>
-
- <tr align=center>
- <td colspan=4>Seconds After Epoch</td>
- </tr>
- </table>
- </center>
-
- <p>
- <center>
- <table align=center width="80%">
- <tr align=left>
- <th width="30%"><U><font size=+1>Field Name</font></U></th>
- <th><U><font size=+1>Description</font></U></th>
- </tr>
-
- <tr valign=top>
- <td>Version</td>
- <td>The version number for the message. This document
- describes version one of the new modification time message.</td>
- </tr>
-
- <tr valign=top>
- <td>Reserved</td>
- <td>This field is reserved and should always be zero.</td>
- </tr>
-
- <tr valign=top>
- <td>Seconds After Epoch</td>
- <td>The number of seconds since 0 hours, 0
- minutes, 0 seconds, January 1, 1970, Coordinated Universal Time.
- </tr>
- </table>
- </center>
-
-<h3><a name="SharedObjectHeader">Disk Format: Level 2b - Shared Data Object Headers</a></h3>
-<P>In order to share header messages between several dataset objects, object
-header messages may be placed into the global heap. Since these
-messages require additional information beyond the basic object header message
-information, the format of the shared message is detailed below.
-
-<BR> <BR>
-<center>
-<table border cellpadding=4 width=60%>
-<caption align=bottom>
-<B>HDF5 Shared Object Header Message</B>
-</caption>
-
-<tr align=center>
-<th width=25%>byte</th>
-<th width=25%>byte</th>
-<th width=25%>byte</th>
-<th width=25%>byte</th>
-
-<tr align=center>
-<td colspan=4>Reference Count of Shared Header Message</td>
-<tr align=center>
-<td colspan=4><br> Shared Object Header Message<br> <br></td>
-</table>
-</center>
-
-<p>
-<dl>
-<dt> The elements of the shared object header message are described below:
-<dd>
-<dl>
-<dt>Reference Count of Shared Header Message: (32-bit unsigned integer)
-<dd>This value is used to keep a count of the number of dataset objects which
-refer to this message from their dataset headers. When this count reaches zero,
-the shared message header may be removed from the global heap.
-<dt>Shared Object Header Message: (various lengths)
-<dd>The data stored for the shared object header message is formatted in the
-same way as the private object header messages described in the object header
-description earlier in this document and begins with the header message Type.
-</dl>
-</dl>
-
-
-<h3><a name="DataStorage">Disk Format: Level 2c - Data Object Data Storage</a></h3>
-<P>The data for an object is stored separately from the header
-information in the file and may not actually be located in the HDF5 file
-itself if the header indicates that the data is stored externally. The
-information for each record in the object is stored according to the
-dimensionality of the object (indicated in the dimensionality header message).
-Multi-dimensional data is stored in C order [same as current scheme], i.e. the
-"last" dimension changes fastest.
-<P>Data whose elements are composed of simple number-types are stored in
-native-endian IEEE format, unless they are specifically defined as being stored
-in a different machine format with the architecture-type information from the
-number-type header message. This means that each architecture will need to
-[potentially] byte-swap data values into the internal representation for that
-particular machine.
-<P> Data with a variable-length datatype is stored in the global heap
-of the HDF5 file. Global heap identifiers are stored in the
-data object storage.
-<P>Data whose elements are composed of pointer number-types are stored in several
-different ways depending on the particular pointer type involved. Simple
-pointers are just stored as the dataset offset of the object being pointed to with the
-size of the pointer being the same number of bytes as offsets in the file.
-Dataset region references are stored as a heap-ID which points to the following
-information within the file-heap: an offset of the object pointed to, number-type
-information (same format as header message), dimensionality information (same
-format as header message), sub-set start and end information (i.e. a coordinate
-location for each), and field start and end names (i.e. a [pointer to the]
-string indicating the first field included and a [pointer to the] string name
-for the last field).
-
-<P>Data of a compound datatype is stored as a contiguous stream of the items
-in the structure, with each item formatted according to its datatype.</p>
-
-<h3><a name="Appendix">Appendix</a></h3>
-<P>Definitions of various terms used in this document.
-</P>
-<P>The <A name="UndefinedAddress">"undefined address"</A> for a file is a
-file address with all bits set, i.e. <code>0xffff...ff</code>.
-<P>The <A name="UnlimitedDim">"unlimited size"</A> for a size is a
-value with all bits set, i.e. <code>0xffff...ff</code>.
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!--
-<address><a href="mailto:koziol@ncsa.uiuc.edu">Quincey Koziol</a></address>
-<address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
--->
-
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><!-- hhmts start -->
-Last modified: 12 July 2004
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/H5.intro.html b/doc/html/H5.intro.html
deleted file mode 100644
index 8984153..0000000
--- a/doc/html/H5.intro.html
+++ /dev/null
@@ -1,3161 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>Introduction to HDF5</TITLE>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Intro.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/IntroElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></HEAD>
-<BODY bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_Intro.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
-<a href="index.html">Other HDF5 documents and links</a>&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><a name="Intro-Intro">
-<h1 ALIGN="CENTER">Introduction to HDF5</h1></a>
-
-</FONT><FONT FACE="Times"><P>This is an introduction to the HDF5 data model and programming model. Being a <I>Getting Started</I> or <I>QuickStart</I> document, this </FONT><I>Introduction to HDF5</I> <FONT FACE="Times">is intended to provide enough information for you to develop a basic understanding of how HDF5 works and is meant to be used. Knowledge of the current version of HDF will make it easier to follow the text, but it is not required. More complete information of the sort you will need to actually use HDF5 is available in <A HREF="index.html">the HDF5 documentation</FONT></a><FONT FACE="Times">. Available documents include the following:
-
-<UL>
-</FONT><LI><A HREF="H5.user.html"><I>HDF5 User&#146s Guide</I></A>. Where appropriate, this <I>Introduction</I> will refer to specific sections of the <I>User&#146s Guide</I>.
-<LI><I><A HREF="RM_H5Front.html">HDF5 Reference Manual</I></A>.</UL>
-
-<FONT FACE="Times"><P>Code examples are available in the source code tree when you install HDF5.
-
-<UL>
-</FONT><LI>The directories <code>hdf5/examples</code>,
-<code>hdf5/doc/html/examples/</code>, and
-<code>hdf5/doc/html/Tutor/examples/</code> contain the examples
-used in this document.
-<LI>The directory<FONT FACE="Courier" SIZE=2> hdf5/test</FONT> contains the development tests used by the HDF5 developers. Since these codes are intended to fully exercise the system, they provide more diverse and sophisticated examples of what HDF5 can do.</UL>
-
-<a name="Intro-TOC">
-<hr>
-<center>
-<table border=0 width=90%>
-<tr><th colspan=3>Table of Contents</th></tr></a>
-<tr><td valign=top align=left width=42%>
-
- <a href="#Intro-Intro">Introduction to HDF5</a><p>
- <a href="#Intro-WhatIs">1. What Is HDF5?</a><br>
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-Why">Why HDF5?</a><br>
- <!--
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-Limits">Limitations of the
- Current Release</a><br>
- -->
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-Changes">Changes in the
- Current Release</a><p>
- </font>
- <a href="#Intro-FileOrg">2. HDF5 File Organization and</a></br>
- <font size=-1>&nbsp;&nbsp&nbsp;&nbsp;</font><a href="#Intro-FileOrg">Data Model</a><br>
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-OGroups">HDF5 Groups</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-ODatasets">HDF5 Datasets</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-OAttributes">HDF5 Attributes</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-FileTech">The File as Written to Media</a><p>
- </font>
- <a href="#Intro-APIs">3. The HDF5 API</a><br>
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-NameConv">Naming
- Conventions</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-Include">Include Files</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-ProgModels">Programming
- Models</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMCreateFile">Creating an HDF5 file</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMDiscard">Discarding objects</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMWriteNew">Writing a dataset to a
- new file</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMGetInfo">Getting information about
- a dataset</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMRdWrPortion">Reading/writing a portion of
- a dataset</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMSelectHyper">Selecting hyperslabs</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMSelectPoints">Selecting of independent
- points</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMCreateVariableLength">Creating
- variable-length datatypes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMCreateArray">Creating array datatypes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMCreateCompound">Creating compound
- datatypes</A>
-
-</td><td width=6%>&nbsp;&nbsp;</td><td valign=top align=left width=42%>
-
- <a href="#Intro-APIs">3. The HDF5 API</a> <i>(continued)</i><br>
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;<a href="#Intro-ProgModels">Programming
- Models</a> <i>(continued)</i><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMCreateExtendible">Creating/writing extendible
- and</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMCreateExtendible">chunked datasets</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMWorkGroups">Working with groups</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMWorkAttributes">Working with attributes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMWorkRefObjects">Working with references to
- objects</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMWorkRefRegions">Working with references to
- dataset</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Intro-PMWorkRefRegions">regions</A><p>
- </font>
- <a href="Intro/IntroExamples.html"
- target="ExampleWin">Introduction to HDF5 -- Example Codes</a><br>
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#CreateExample"
- target="ExampleWin">1: Creating and writing a dataset</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#CheckAndReadExample"
- target="ExampleWin">2. Reading a hyperslab</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#WriteSelected"
- target="ExampleWin">3. Writing selected data</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#VariableLength"
- target="ExampleWin">4. Working with variable-length</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#VariableLength"
- target="ExampleWin">datatypes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#Array"
- target="ExampleWin">5. Working with array datatypes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#Compound"
- target="ExampleWin">6. Working with compound datatypes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#CreateExtendWrite"
- target="ExampleWin">7. Creating and writing an
- extendible</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#CreateExtendWrite"
- target="ExampleWin">dataset</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#ReadExtended"
- target="ExampleWin">8. Reading data</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#CreateGroups"
- target="ExampleWin">9. Creating groups</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="Intro/IntroExamples.html#ReadWriteAttributes"
- target="ExampleWin">10. Writing and reading
- attributes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#CreateWriteRefObj"
- target="ExampleWin">11. Creating and writing references</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#CreateWriteRefObj"
- target="ExampleWin">to objects</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#ReadRefObj"
- target="ExampleWin">12. Reading references to objects</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#CreateWriteRefReg"
- target="ExampleWin">13. Creating and writing references</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#CreateWriteRefReg"
- target="ExampleWin">to dataset regions</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#ReadRefReg"
- target="ExampleWin">14. Reading references to dataset</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="Intro/IntroExamples.html#ReadRefReg"
- target="ExampleWin">regions</a>
- </font>
-</td></tr>
-</table>
-</center>
-<p>
-
-<hr>
-<H2><A NAME="Intro-WhatIs">1. What Is HDF5?</A></H2>
-<FONT FACE="Times"><P>HDF5 is a completely new Hierarchical Data Format
-product consisting of a data format specification and a
-supporting library implementation. HDF5 is designed to address some
-of the limitations of the older HDF product and to address current and
-anticipated requirements of modern systems and applications.
-<sup><a href="#H4H5footnote">1</a></sup>
-<P>We urge you to look at HDF5, the format and the library, and give us
-feedback on what you like or do not like about it, and what features
-you would like to see added to it.
-<a name="Intro-Why">
-<P><B>Why HDF5?</B></a>
-The development of HDF5 is motivated by a number of limitations in the
-older HDF format and library. Some of these limitations are:
-
-<UL>
-</FONT><LI>A single file cannot store more than 20,000 complex objects, and a single file cannot be larger than 2 gigabytes.
-<LI>The data models are less consistent than they should be, there are more object types than necessary, and datatypes are too restricted.
-<LI>The library source is old and overly complex, does not support parallel I/O effectively, and is difficult to use in threaded applications.</UL>
-
-<FONT FACE="Times"><P>HDF5 includes the following improvements.
-
-<UL>
-</FONT><LI>A new file format designed to address some of the deficiencies of HDF4.x, particularly the need to store larger files and more objects per file.
-<LI>A simpler, more comprehensive data model that includes only two basic structures: a multidimensional array of record structures, and a grouping structure.
-<LI>A simpler, better-engineered library and API, with improved support for parallel I/O, threads, and other requirements imposed by modern systems and applications.</UL>
-
-<font size=-1>
-<a name="H4H5footnote">1.</a>
-Note that HDF and HDF5 are two different products.
-HDF is a data format first developed in the 1980s and currently
-in Release 4.<i>x</i> (HDF Release 4.<i>x</i>).
-HDF5 is a new data format first released in <i>Beta</i> in 1998 and
-designed to better meet the ever-increasing demands of scientific computing
-and to take better advantage of the ever-increasing capabilities of
-computing systems.
-HDF5 is currently in Release 1.<i>x</i> (HDF5 Release 1.<i>x</i>).
-</font>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<H3><A NAME="Intro-Changes">Changes in the Current Release</A></H3>
-<P>A detailed list of changes in HDF5 between the current release and
-the preceding major release can be found in the file
-<a href="ADGuide/RELEASE.txt" target="ExtWin"><code>RELEASE.txt</code></a>,
-with a highlights summary in the document
-"<a href="ADGuide/Changes.html">HDF5 Software Changes from Release to Release</a>"
-in the
-<a href="ADGuide.html"><cite>HDF5 Application Developer's Guide</cite></a>.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-<hr>
-
-
-<H2><A NAME="Intro-FileOrg">2. HDF5 File Organization and Data Model</A></H2>
-<FONT FACE="Times"><P>HDF5 files are organized in a hierarchical structure, with two primary structures: <I>groups</I> and <I>datasets</I>.
-
-<UL>
-</FONT><I><LI>HDF5 group: </I>a grouping structure containing instances of zero or more groups or datasets, together with supporting metadata.
-<I><LI>HDF5 dataset:</I> a multidimensional array of data elements, together with supporting metadata. </UL>
-
-<FONT FACE="Times"><P>Working with groups and group members is similar in many ways to working with directories and files in UNIX. As with UNIX directories and files, objects in an HDF5 file are often described by giving their full (or absolute) path names.
-</FONT><CODE><DL>
-<DD>/</CODE> signifies the root group. </DD>
-<CODE><DD>/foo</CODE> signifies a member of the root group called <CODE>foo</CODE>.</DD>
-<CODE><DD>/foo/zoo</CODE> signifies a member of the group <CODE>foo</CODE>, which in turn is a member of the root group.</DD>
-</DL>
-<FONT FACE="Times"><P>Any HDF5 group or dataset may have an associated <I>attribute list.</I> An HDF5 <I>attribute</I> is a user-defined HDF5 structure that provides extra information about an HDF5 object. Attributes are described in more detail below.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-</FONT><H3><A NAME="Intro-OGroups">HDF5 Groups</A></H3>
-<FONT FACE="Times"><P>An<I> HDF5 group</I> is a structure containing zero or more HDF5 objects. A group has two parts:
-
-<UL>
-</FONT><LI>A <I>group header</I>, which contains a group name and a list of group attributes.
-<LI>A group symbol table, which is a list of the HDF5 objects that belong to the group.</UL>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<H3><A NAME="Intro-ODatasets">HDF5 Datasets</A></H3>
-<FONT FACE="Times"><P>A dataset is stored in a file in two parts: a header and a data array.
-<P>The header contains information that is needed to interpret the array portion of the dataset, as well as metadata (or pointers to metadata) that describes or annotates the dataset. Header information includes the name of the object, its dimensionality, its number-type, information about how the data itself is stored on disk, and other information used by the library to speed up access to the dataset or maintain the file's integrity.
-<P>There are four essential classes of information in any header: <I>name</I>, <I>datatype</I>, <I>dataspace</I>, and <I>storage layout</I>:
-</FONT><B><DFN><P>Name.</B></DFN><FONT FACE="Times"> A dataset <I>name</I> is a sequence of alphanumeric ASCII characters.
-</FONT><B><DFN><P>Datatype.</B></DFN><FONT FACE="Times"> HDF5 allows one to define many different kinds of datatypes. There are two categories of datatypes: <I>atomic</I> datatypes and <I>compound</I> datatypes.
-Atomic datatypes can also be system-specific, or <I><CODE>NATIVE</CODE></I>, and all datatypes can be <I>named</I>:
-<ul>
-<li><em>Atomic</em> datatypes are those that are not decomposed at the datatype interface level, such as integers and floats.
-<li><I><CODE>NATIVE</CODE></I> datatypes are system-specific instances of atomic datatypes.
-<li>Compound datatypes are made up of atomic datatypes.
-<li><em>Named</em> datatypes are either atomic or compound datatypes that have been specifically designated to be shared across datasets.
-</ul>
-<I><P>Atomic datatypes</I> include integers and floating-point numbers. Each atomic type belongs to a particular class and has several properties: size, order, precision, and offset. In this introduction, we consider only a few of these properties.
-<P>Atomic classes include integer, float, date and time, string, bit field, and opaque. <I>(Note: Only integer, float and string classes are available in the current implementation.)
-</I><P>Properties of integer types include size, order (endian-ness), and signed-ness (signed/unsigned).
-<P>Properties of float types include the size and location of the exponent and mantissa, and the location of the sign bit.
-<P>The datatypes that are supported in the current implementation are:
-
-<UL>
-</FONT><LI>Integer datatypes: 8-bit, 16-bit, 32-bit, and 64-bit integers in both little and big-endian format
-<LI>Floating-point numbers: IEEE 32-bit and 64-bit floating-point numbers in both little and big-endian format
-<li>References
-<LI>Strings</UL>
-
-<p>
-<em><code>NATIVE</code> datatypes.</em> Although it is possible to describe nearly any kind of atomic datatype, most applications will use predefined datatypes that are supported by their compiler. In HDF5 these are called <i>native</i> datatypes. <CODE>NATIVE</CODE> datatypes are C-like datatypes that are generally supported by the hardware of the machine on which the library was compiled. In order to be portable, applications should almost always use the <CODE>NATIVE </CODE>designation to describe data values in memory.
-<P>The <CODE>NATIVE</CODE> architecture has base names which do not follow the same rules as the others. Instead, native type names are similar to the C type names. The following figure shows several examples.
-<p>
-
-<center>
-<b>Examples of Native Datatypes and Corresponding C Types</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=462>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<B><P ALIGN="CENTER">Example</B></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<B><P ALIGN="CENTER">Corresponding C Type</B></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_CHAR</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>signed char</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_UCHAR</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>unsigned char</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_SHORT</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>short</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_USHORT</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>unsigned short</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_INT</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>int</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_UINT</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>unsigned</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_LONG</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>long</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_ULONG</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>unsigned long</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_LLONG</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>long long</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_ULLONG</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>unsigned long long</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_FLOAT</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>float</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_DOUBLE</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>double</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<code>H5T_NATIVE_LDOUBLE</code></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<code>long double</code></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<CODE>H5T_NATIVE_HSIZE</CODE></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<CODE>hsize_t</CODE></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<CODE>H5T_NATIVE_HSSIZE</CODE></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<CODE>hssize_t</CODE></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<CODE>H5T_NATIVE_HERR</CODE></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<CODE>herr_t</CODE></TD>
-</TR>
-<TR><TD WIDTH="49%" VALIGN="TOP">
-<CODE>H5T_NATIVE_HBOOL</CODE></TD>
-<TD WIDTH="51%" VALIGN="TOP">
-<CODE>hbool_t</CODE></TD>
-</TR>
-</TABLE>
-</CENTER>
-
-<FONT FACE="Times"><P>See <A HREF="Datatypes.html"><I>Datatypes</I></A> in the<I> HDF User&#146s Guide</I> for further information.</font>
-
-
-<FONT FACE="Times"><P>A <I>compound datatype</I> is one in which a
-collection of several datatypes are represented as a single unit,
-a compound datatype, similar to a <I>struct</I> in C.
-The parts of a compound datatype are called <I>members.</I>
-The members of a compound datatype may be of any datatype,
-including another compound datatype. It is possible to read members
-from a compound type without reading the whole type.
-<p>
-<ta/FONT><I><P>Named datatypes.</I> Normally each dataset has its own datatype, but sometimes we may want to share a datatype among several datasets. This can be done using a <I>named </I>datatype. A named datatype is stored in the file independently of any dataset, and referenced by all datasets that have that datatype. Named datatypes may have an associated attributes list.
-See <A HREF="Datatypes.html"><I>Datatypes</I></A></font><FONT FACE="Times"> in the<I> HDF User&#146s Guide</I> for further information.
-<B><DFN><P>Dataspace.</B> </DFN>A dataset <I>dataspace </I>describes the dimensionality of the dataset. The dimensions of a dataset can be fixed (unchanging), or they may be <I>unlimited</I>, which means that they are extendible (i.e. they can grow larger).
-<P>Properties of a dataspace consist of the <I>rank </I>(number of dimensions) of the data array, the <I>actual sizes of the dimensions</I> of the array, and the <I>maximum sizes of the dimensions </I>of the array. For a fixed-dimension dataset, the actual size is the same as the maximum size of a dimension. When a dimension is unlimited, the maximum size is set to the </FONT>value <CODE>H5P_UNLIMITED</CODE>.<FONT FACE="Times"> (An example below shows how to create extendible datasets.)
-<P>A dataspace can also describe portions of a dataset, making it possible to do partial I/O operations on <I>selections</I>. <I>Selection</I> is supported by the dataspace interface (H5S). Given an n-dimensional dataset, there are currently four ways to do partial selection:
-<OL>
-
-</FONT><LI>Select a logically contiguous n-dimensional hyperslab.
-<LI>Select a non-contiguous hyperslab consisting of elements or blocks of elements (hyperslabs) that are equally spaced.
-<li>Select a union of hyperslabs.
-<LI>Select a list of independent points. </OL>
-
-<FONT FACE="Times"><P>Since I/O operations have two end-points, the raw data transfer functions require two dataspace arguments: one describes the application memory dataspace or subset thereof, and the other describes the file dataspace or subset thereof.
-<P>See <A HREF="Dataspaces.html"><I>Dataspaces</I></A></font><FONT FACE="Times"> in the<I> HDF User&#146s Guide</I> for further information.
-</FONT><B><DFN><P>Storage layout.</B></DFN><FONT FACE="Times"> The HDF5 format makes it possible to store data in a variety of ways. The default storage layout format is <I>contiguous</I>, meaning that data is stored in the same linear way that it is organized in memory. Two other storage layout formats are currently defined for HDF5: <I>compact, </I>and<I> chunked. </I>In the future, other storage layouts may be added.<I>
-<P>Compact</I> storage is used when the amount of data is small and can be stored directly in the object header. <I>(Note: Compact storage is not supported in this release.)</I>
-<I><P>Chunked</I> storage involves dividing the dataset into equal-sized "chunks" that are stored separately. Chunking has three important benefits.
-<OL>
-
-<LI>It makes it possible to achieve good performance when accessing subsets of the datasets, even when the subset to be chosen is orthogonal to the normal storage order of the dataset.
-<LI>It makes it possible to compress large datasets and still achieve good performance when accessing subsets of the dataset.
-<LI>It makes it possible efficiently to extend the dimensions of a dataset in any direction.</OL>
-
-<P>
-See <A HREF="Datasets.html"><I>Datasets</I></A> and <A HREF="Chunking.html"><I>Dataset Chunking Issues</I></A></font><FONT FACE="Times"> in the<I> HDF User&#146s Guide</I> for further information.
-We particularly encourage you to read <A HREF="Chunking.html"><I>Dataset Chunking Issues</I></A> since the issue is complex and beyond the scope of this document.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-</FONT><H3><A NAME="Intro-OAttributes">HDF5 Attributes</A></H3>
-<I>Attributes </I>are small named datasets that are attached to primary datasets, groups, or named datatypes. Attributes can be used to describe the nature and/or the intended usage of a dataset or group. An attribute has two parts: (1) a <I>name</I> and (2) a <I>value</I>. The value part contains one or more data entries of the same datatype.
-<FONT FACE="Times"><P>The Attribute API (H5A) is used to read or write attribute information. When accessing attributes, they can be identified by name or by an <I>index value</I>. The use of an index value makes it possible to iterate through all of the attributes associated with a given object.
-<P>The HDF5 format and I/O library are designed with the assumption that attributes are small datasets. They are always stored in the object header of the object they are attached to. Because of this, large datasets should not be stored as attributes. How large is "large" is not defined by the library and is up to the user's interpretation. (Large datasets with metadata can be stored as supplemental datasets in a group with the primary dataset.)
-<P>See <A HREF="Attributes.html"><I>Attributes</I></A></font><FONT FACE="Times"> in the<I> HDF User&#146s Guide</I> for further information.
-</FONT>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<H3><A NAME="Intro-FileTech">The File as Written to Media</A></H3>
-
- <p>For those who are interested, this section takes a look at
- the low-level elements of the file as the file is written to disk
- (or other storage media) and the relation of those low-level
- elements to the higher level elements with which users typically
- are more familiar. The HDF5 API generally exposes only the
- high-level elements to the user; the low-level elements are
- often hidden.
- The rest of this <cite>Introduction</cite> does not assume
- an understanding of this material.
-
- <P>The format of an HDF5 file on disk encompasses several
- key ideas of the HDF4 and AIO file formats as well as
- addressing some shortcomings therein. The new format is
- more self-describing than the HDF4 format and is more
- uniformly applied to data objects in the file.
-
- <table align=left width=100>
- <tr><td align=center>
- <hr>
- <img src="FF-IH_FileGroup.gif" alt="HDF5 Groups" hspace=15 vspace=15>
- </td><td>&nbsp;</td></tr><tr><td align=center>
- <strong>Figure 1:</strong> Relationships among the
- HDF5 root group, other groups, and objects
- <hr>
- </td><td>&nbsp;</td></tr>
- </table>
-
-
- <P>An HDF5 file appears to the user as a directed graph.
- The nodes of this graph are the higher-level HDF5 objects
- that are exposed by the HDF5 APIs:
-
- <ul>
- <li>Groups
- <li>Datasets
- <li>Datatypes
- <li>Dataspaces
- </ul>
-
- <P>At the lowest level, as information is actually written to the disk,
- an HDF5 file is made up of the following objects:
- <ul>
- <li>A super block
- <li>B-tree nodes (containing either symbol nodes or raw data chunks)
- <li>Object headers
-
- <table align=right width=95>
- <tr><td>&nbsp;</td><td align=center>
- <hr>
- <img src="FF-IH_FileObject.gif" alt="HDF5 Objects" hspace=15 vspace=15>
- </td></tr><tr><td>&nbsp;</td><td align=center>
- <strong>Figure 2:</strong> HDF5 objects -- datasets, datatypes, or dataspaces
- <hr>
- </td></tr>
- </table>
-
- <li>Collections
- <li>Local heaps
- <li>Free space
- </ul>
-
- The HDF5 library uses these lower-level objects to represent the
- higher-level objects that are then presented to the user or
- to applications through the APIs.
- For instance, a group is an object header that contains a message that
- points to a local heap and to a B-tree which points to symbol nodes.
- A dataset is an object header that contains messages that describe
- datatype, space, layout, filters, external files, fill value, etc
- with the layout message pointing to either a raw data chunk or to a
- B-tree that points to raw data chunks.
-
- <P>See the <A HREF="H5.format.html"><cite>HDF5 File Format
- Specification</cite></A><FONT FACE="Times"> for further information.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-<hr>
-
-
-</FONT><H2><A NAME="Intro-APIs">3. The HDF5 Applications Programming Interface (API)</A></H2>
-<FONT FACE="Times"><P>The current HDF5 API is implemented only in C. The API provides routines for creating HDF5 files, creating and writing groups, datasets, and their attributes to HDF5 files, and reading groups, datasets and their attributes from HDF5 files.
-</FONT><H3><A NAME="Intro-NameConv">Naming conventions</A></H3>
-<FONT FACE="Times"><P>All C routines in the HDF 5 library begin with a prefix of the form <B>H5*</B>, where <B>*</B> is a single letter indicating the object on which the operation is to be performed:
-
-<UL>
-</FONT><B><LI>H5F</B>: <B>F</B>ile-level access routines. <BR>
-Example: <CODE>H5Fopen</CODE>, which opens an HDF5 file.
-<B><LI>H5G</B>: <B>G</B>roup functions, for creating and operating on groups of objects. <BR>
-Example: <CODE>H5Gset</CODE><FONT FACE="Courier">,</FONT>which sets the working group to the specified group.
-<B><LI>H5T: </B>Data<B>T</B>ype functions, for creating and operating on simple and compound datatypes to be used as the elements in data arrays.<B><BR>
-</B>Example: <CODE>H5Tcopy</CODE><FONT FACE="Courier">,</FONT>which creates a copy of an existing datatype.
-<B><LI>H5S: </B>Data<B>S</B>pace functions, which create and manipulate the dataspace in which the elements of a data array are stored.<BR>
-Example: <CODE>H5Screate_simple</CODE>, which creates simple dataspaces.
-<B><LI>H5D: D</B>ataset functions, which manipulate the data within datasets and determine how the data is to be stored in the file. <BR>
-Example: <CODE>H5Dread</CODE>, which reads all or part of a dataset into a buffer in memory.
-<B><LI>H5P</B>: <B>P</B>roperty list functions, for manipulating object creation and access properties. <BR>
-Example: <CODE>H5Pset_chunk</CODE>, which sets the number of dimensions and the size of a chunk.
-<B><LI>H5A</B>: <B>A</B>ttribute access and manipulating routines. <BR>
-Example: <CODE>H5Aget_name</CODE>, which retrieves name of an attribute.
-<B><LI>H5Z</B>: <B>C</B>ompression registration routine. <BR>
-Example: <CODE>H5Zregister</CODE>, which registers new compression and uncompression functions for use with the HDF5 library.
-<B><LI>H5E</B>: <B>E</B>rror handling routines. <BR>
-Example: <CODE>H5Eprint</CODE>, which prints the current error stack.
-<B><LI>H5R</B>: <B>R</B>eference routines. <BR>
-Example: <CODE>H5Rcreate</CODE>, which creates a reference.
-<B><LI>H5I</B>: <B>I</B>dentifier routine. <BR>
-Example: <CODE>H5Iget_type</CODE>, which retrieves the type of an object.</UL>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<H3><A NAME="Intro-Include">Include Files</A> </H3>
-<FONT FACE="Times"><P>There are a number definitions and declarations that should be included with any HDF5 program. These definitions and declarations are contained in several <I>include</I> files. The main include </FONT>file is <CODE>hdf5.h</CODE>. This file<FONT FACE="Times"> includes all of the other files that your program is likely to need. <I>Be sure to include </i><code>hdf5.h</code><i> in any program that uses the HDF5 library.</I></FONT>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<H3><A NAME="Intro-ProgModels">Programming Models</A></H3>
-<FONT FACE="Times"><P>In this section we describe how to program some basic operations on files, including how to
-
-<UL>
-</FONT><LI>Create a file.
-<LI>Create and initialize a dataset.
-<LI>Discard objects when they are no longer needed.
-<LI>Write a dataset to a new file.
-<LI>Obtain information about a dataset.
-<LI>Read a portion of a dataset.
-<LI>Create and write compound datatypes.
-<LI>Create and write extendible datasets.
-<LI>Create and populate groups.
-<LI>Work with attributes. </UL>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMCreateFile">How to create an HDF5 file</A></h3>
-<P>This programming model shows how to create a file and also how to close the file.
-<OL>
-
-<LI>Create the file.
-<LI>Close the file.
-</ol>
-
-<P>The following code fragment implements the specified model. If there is a possibility that the file already exists, the user must add the flag <CODE>H5ACC_TRUNC</CODE> to the access mode to overwrite the previous file's information.
-</font>
-<CODE><PRE>hid_t file; /* identifier */
-/*
-* Create a new file using H5ACC_TRUNC access,
-* default file creation properties, and default file
-* access properties.
-* Then close the file.
-*/
-file = H5Fcreate(FILE, H5ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-status = H5Fclose(file); </PRE>
-</CODE><DL>
-<DT>&nbsp;</DT>
-</DL>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMComponents">How to create and initialize the essential components of a dataset for writing to a file</A></h3>
-<P>Recall that datatypes and dimensionality (dataspace) are independent objects, which are created separately from any dataset that they might be attached to. Because of this the creation of a dataset requires, at a minimum, separate definitions of datatype, dimensionality, and dataset. Hence, to create a dataset the following steps need to be taken:
-<ol>
-<FONT FACE="Times"><LI VALUE=1>Create and initialize a dataspace for the dataset to be written.
-<LI>Define the datatype for the dataset to be written.
-<LI>Create and initialize the dataset itself.</OL>
-
-</FONT><FONT FACE="Times"><P>The following code illustrates the creation of these three components of a dataset object.
-</FONT><CODE><PRE>hid_t dataset, datatype, dataspace; /* declare identifiers */
-
-/*
- * Create dataspace: Describe the size of the array and
- * create the data space for fixed size dataset.
- */
-dimsf[0] = NX;
-dimsf[1] = NY;
-dataspace = H5Screate_simple(RANK, dimsf, NULL);
-/*
- * Define datatype for the data in the file.
- * We will store little endian integer numbers.
- */
-datatype = H5Tcopy(H5T_NATIVE_INT);
-status = H5Tset_order(datatype, H5T_ORDER_LE);
-/*
- * Create a new dataset within the file using defined
- * dataspace and datatype and default dataset creation
- * properties.
- * NOTE: H5T_NATIVE_INT can be used as datatype if conversion
- * to little endian is not needed.
- */
-dataset = H5Dcreate(file, DATASETNAME, datatype, dataspace, H5P_DEFAULT);</PRE>
-</CODE>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMDiscard">How to discard objects when they are no longer needed</A></h3>
-<FONT FACE="Times"><P>The datatype, dataspace and dataset objects should be released once they are no longer needed by a program. Since each is an independent object, the must be released (or <I>closed</I>) separately. The following lines of code close the datatype, dataspace, and datasets that were created in the preceding section.
-</FONT><CODE><P>H5Tclose(datatype);
-<P>H5Dclose(dataset);
-<P>H5Sclose(dataspace);
-</CODE>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMWriteNew">How to write a dataset to a new file</A></h3>
-<FONT FACE="Times"><P>Having defined the datatype, dataset, and dataspace parameters, you write out the data with a call to </FONT><CODE>H5Dwrite</CODE><FONT FACE="Courier">.
-</FONT><CODE><PRE>/*
-* Write the data to the dataset using default transfer
-* properties.
-*/
-status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, data);</PRE>
-</CODE><FONT FACE="Times"><P>The third and fourth parameters of </FONT><CODE>H5Dwrite</CODE><FONT FACE="Times"> in the example describe the dataspaces in memory and in the file, respectively. They are set to the value </FONT><CODE>H5S_ALL</CODE><FONT FACE="Times"> to indicate that an entire dataset is to be written. In a later section we look at how we would access a portion of a dataset.
-</FONT><P><A HREF="Intro/IntroExamples.html#CreateExample" target="ExampleWin"><FONT FACE="Times">Example 1</FONT></A><FONT FACE="Times"> contains a program that creates a file and a dataset, and writes the dataset to the file.
-<P>Reading is analogous to writing. If, in the previous example, we wish to read an entire dataset, we would use the same basic calls with the same parameters. Of course, the routine </FONT><CODE>H5Dread</CODE><FONT FACE="Times"> would replace </FONT><CODE>H5Dwrite</CODE><FONT FACE="Courier">.</FONT><FONT FACE="Times">
-</FONT>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMGetInfo">Getting information about a dataset</A></h3>
-<FONT FACE="Times"><P>Although reading is analogous to writing, it is often necessary to query a file to obtain information about a dataset. For instance, we often need to know about the datatype associated with a dataset, as well dataspace information (e.g. rank and dimensions). There are several "get" routines for obtaining this information. The following code segment illustrates how we would get this kind of information:
-</FONT><CODE><PRE>/*
-* Get datatype and dataspace identifiers and then query
-* dataset class, order, size, rank and dimensions.
-*/
-
-datatype = H5Dget_type(dataset); /* datatype identifier */
-class = H5Tget_class(datatype);
-if (class == H5T_INTEGER) printf("Data set has INTEGER type \n");
-order = H5Tget_order(datatype);
-if (order == H5T_ORDER_LE) printf("Little endian order \n");
-
-size = H5Tget_size(datatype);
-printf(" Data size is %d \n", size);
-
-dataspace = H5Dget_space(dataset); /* dataspace identifier */
-rank = H5Sget_simple_extent_ndims(dataspace);
-status_n = H5Sget_simple_extent_dims(dataspace, dims_out);
-printf("rank %d, dimensions %d x %d \n", rank, dims_out[0], dims_out[1]);</PRE>
-</CODE>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMRdWrPortion">Reading and writing a portion of a dataset</A></h3>
-<P>In the previous discussion, we describe how to access an entire dataset with one write (or read) operation. HDF5 also supports access to portions (or selections) of a dataset in one read/write operation. Currently selections are limited to hyperslabs, their unions, and the lists of independent points. Both types of selection will be discussed in the following sections. Several sample cases of selection reading/writing are shown on the following figure.
-<center>
-<table bgcolor="#FFFFFF" border=1>
-<tr><td align=center>
-<img src="IH_mapHead.gif">
-</tr></td><tr><td align=center>
-a&nbsp;<img src="IH_map1.gif">
-</tr></td><tr><td align=center>
-b&nbsp;<img src="IH_map2.gif">
-</tr></td><tr><td align=center>
-c&nbsp;<img src="IH_map3.gif">
-</tr></td><tr><td align=center>
-d&nbsp;<img src="IH_map4.gif">
-</tr></td><tr><td align=center>
-<img src="IH_mapFoot.gif">
-</tr></td>
-</table>
-</center>
-</B><P>In example (a) a single hyperslab is read from the midst of a two-dimensional array in a file and stored in the corner of a smaller two-dimensional array in memory. In (b) a regular series of blocks is read from a two-dimensional array in the file and stored as a contiguous sequence of values at a certain offset in a one-dimensional array in memory. In (c) a sequence of points with no regular pattern is read from a two-dimensional array in a file and stored as a sequence of points with no regular pattern in a three-dimensional array in memory.
-In (d) a union of hyperslabs in the file dataspace is read and
-the data is stored in another union of hyperslabs in the memory dataspace.
-<P>As these examples illustrate, whenever we perform partial read/write operations on the data, the following information must be provided: file dataspace, file dataspace selection, memory dataspace and memory dataspace selection. After the required information is specified, actual read/write operation on the portion of data is done in a single call to the HDF5 read/write functions H5Dread(write).
-
-
-<H5><A NAME="Intro-PMSelectHyper">Selecting hyperslabs</A></H5>
-<FONT FACE="Times"><P>Hyperslabs are portions of datasets. A hyperslab selection can be a logically contiguous collection of points in a dataspace, or it can be regular pattern of points or blocks in a dataspace. The following picture illustrates a selection of regularly spaced 3x2 blocks in an 8x12 dataspace.</FONT>
-<p>
-
-<center>
-<b>Hyperslab selection</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=345>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-</TABLE>
-</center>
-
-<FONT FACE="Times"><P>Four parameters are required to describe a completely general hyperslab. Each parameter is an array whose rank is the same as that of the dataspace:
-
-<UL>
-</FONT><CODE><LI>start</CODE>: a starting location for the hyperslab. In the example <CODE>start</CODE> is (0,1).
-<CODE><LI>stride</CODE>: the number of elements to separate each element or block to be selected. In the example <CODE>stride</CODE><I> </I> is (4,3). If the stride parameter is set to NULL, the stride size defaults to 1 in each dimension.
-<CODE><LI>count</CODE>: the number of elements or blocks to select along each dimension. In the example, <CODE>count</CODE> is (2,4).
-<CODE><LI>block</CODE>: the size of the block selected from the dataspace. In the example, <CODE>block</CODE> is (3,2). If the block parameter is set to NULL, the block size defaults to a single element in each dimension, as if the block array was set to all 1s.</UL>
-
-<B><P>In what order is data copied? </B>When actual I/O is performed data values are copied by default from one dataspace to another in so-called row-major, or C order. That is, it is assumed that the first dimension varies slowest, the second next slowest, and so forth.
-<p><B>Example without strides or blocks.</B> Suppose we want to read a 3x4 hyperslab from a dataset in a file beginning at the element <CODE>&lt;1,2&gt;</CODE><FONT FACE="Times"> in the dataset. In order to do this, we must create a dataspace that describes the overall rank and dimensions of the dataset in the file, as well as the position and size of the hyperslab that we are extracting from that dataset. The following code illustrates the selection of the hyperslab in the file dataspace.
-</FONT><CODE><PRE>
-/*
-* Define file dataspace.
-*/
-dataspace = H5Dget_space(dataset); /* dataspace identifier */
-rank = H5Sget_simple_extent_ndims(dataspace);
-status_n = H5Sget_simple_extent_dims(dataspace, dims_out, NULL);
-
-/*
-* Define hyperslab in the dataset.
-*/
-offset[0] = 1;
-offset[1] = 2;
-count[0] = 3;
-count[1] = 4;
-status = H5Sselect_hyperslab(dataspace, H5S_SELECT_SET, offset, NULL,
- count, NULL);</PRE>
-</CODE><FONT FACE="Times"><P>This describes the dataspace from which we wish to read. We need to define the dataspace in memory analogously. Suppose, for instance, that we have in memory a 3 dimensional 7x7x3 array into which we wish to read the 3x4 hyperslab described above beginning at the element </FONT><CODE>&lt;3,0,0&gt;</CODE><FONT FACE="Times">. Since the in-memory dataspace has three dimensions, we have to describe the hyperslab as an array with three dimensions, with the last dimension being 1: </FONT><CODE>&lt;3,4,1&gt;</CODE><FONT FACE="Times">.
-<P>Notice that we must describe two things: the dimensions of the in-memory array, and the size and position of the hyperslab that we wish to read in. The following code illustrates how this would be done.
-</FONT><CODE><PRE>/*
-* Define memory dataspace.
-*/
-dimsm[0] = 7;
-dimsm[1] = 7;
-dimsm[2] = 3;
-memspace = H5Screate_simple(RANK_OUT,dimsm,NULL);
-
-/*
-* Define memory hyperslab.
-*/
-offset_out[0] = 3;
-offset_out[1] = 0;
-offset_out[2] = 0;
-count_out[0] = 3;
-count_out[1] = 4;
-count_out[2] = 1;
-status = H5Sselect_hyperslab(memspace, H5S_SELECT_SET, offset_out, NULL,
- count_out, NULL);
-
-/*</PRE>
-</CODE><P><A HREF="Intro/IntroExamples.html#CheckAndReadExample" target="ExampleWin"><FONT FACE="Times">Example 2</FONT></A><FONT FACE="Times"> contains a complete program that performs these operations.
-<B><P>Example with strides and blocks</B>. Consider the 8x12 dataspace described above, in which we selected eight 3x2 blocks. Suppose we wish to fill these eight blocks. </FONT>
-<p>
-
-<center>
-<b>Hyperslab selection</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=345>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>X</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-</TABLE>
-</center>
-
-<P>This hyperslab has the following parameters:<FONT FACE="Times"> </FONT><CODE>start=(0,1), stride=(4,3), count=(2,4), block=(3,2).
-</CODE><FONT FACE="Times"><P>Suppose that the source dataspace in memory is this 50-element one dimensional array called </FONT><CODE>vector</CODE><FONT FACE="Times">:</FONT>
-<p>
-
-<center>
-<b>A 50-element one dimensional array</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=457>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>-1</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>1</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>2</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>3</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>4</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>5</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>6</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>7</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<FONT FACE="Courier"><CODE><P>... </FONT></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>47</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>48</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>-1</CODE></TD>
-</TR>
-</TABLE>
-</center>
-
-<FONT FACE="Times"><P>The following code will write 48 elements from </FONT><CODE>vector</code> to our file dataset, starting with the second element in <code>vector</code>.
-<pre>
-/* Select hyperslab for the dataset in the file, using 3x2 blocks, (4,3) stride
- * (2,4) count starting at the position (0,1).
- */
-start[0] = 0; start[1] = 1;
-stride[0] = 4; stride[1] = 3;
-count[0] = 2; count[1] = 4;
-block[0] = 3; block[1] = 2;
-ret = H5Sselect_hyperslab(fid, H5S_SELECT_SET, start, stride, count, block);
-
-/*
- * Create dataspace for the first dataset.
- */
-mid1 = H5Screate_simple(MSPACE1_RANK, dim1, NULL);
-
-/*
- * Select hyperslab.
- * We will use 48 elements of the vector buffer starting at the second element.
- * Selected elements are 1 2 3 . . . 48
- */
-start[0] = 1;
-stride[0] = 1;
-count[0] = 48;
-block[0] = 1;
-ret = H5Sselect_hyperslab(mid1, H5S_SELECT_SET, start, stride, count, block);
-
-/*
- * Write selection from the vector buffer to the dataset in the file.
- *
-ret = H5Dwrite(dataset, H5T_NATIVE_INT, midd1, fid, H5P_DEFAULT, vector)
-</pre><CODE><P>&nbsp;
-</CODE><P>After these operations, the file dataspace will have the following values.
-<p>
-
-<center>
-<b>Hyperslab selection with assigned values</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=460>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>1</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>2</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>3</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>4</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>5</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>6</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>7</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>8</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>9</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>10</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>11</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>12</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>13</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>14</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>15</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>16</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>17</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>18</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>19</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>20</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>21</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>22</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>23</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>24</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>25</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>26</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>27</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>28</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>29</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>30</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>31</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>32</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>33</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>34</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>35</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>36</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>37</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>38</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>39</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>40</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>41</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>42</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>43</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>44</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>45</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>46</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>47</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>48</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-</TABLE>
-</center>
-
-<P>Notice that the values are inserted in the file dataset in row-major order.
-<P><a href="Intro/IntroExamples.html#WriteSelected" target="ExampleWin">Example 3</a> includes this code and other example code illustrating the use of hyperslab selection.
-
-
-<H5><A NAME="Intro-PMSelectPoints">Selecting a list of independent points</A></H5>
-A hyperslab specifies a regular pattern of elements in a dataset. It is also possible to specify a list of independent elements to read or write using the function <CODE>H5Sselect_elements</CODE>. Suppose, for example, that we wish to write the values 53, 59, 61, 67 to the following elements of the 8x12 array used in the previous example: (0,0), (3,3), (3,5), and (5,6). The following code selects the points and writes them to the dataset:
-<pre>
-#define FSPACE_RANK 2 /* Dataset rank as it is stored in the file */
-#define NPOINTS 4 /* Number of points that will be selected
- and overwritten */
-#define MSPACE2_RANK 1 /* Rank of the second dataset in memory */
-#define MSPACE2_DIM 4 /* Dataset size in memory */
-
-&nbsp;
-hsize_t dim2[] = {MSPACE2_DIM}; /* Dimension size of the second
- dataset (in memory) */
-int values[] = {53, 59, 61, 67}; /* New values to be written */
-hsize_t coord[NPOINTS][FSPACE_RANK]; /* Array to store selected points
- from the file dataspace */
-
-/*
- * Create dataspace for the second dataset.
- */
-mid2 = H5Screate_simple(MSPACE2_RANK, dim2, NULL);
-
-/*
- * Select sequence of NPOINTS points in the file dataspace.
- */
-coord[0][0] = 0; coord[0][1] = 0;
-coord[1][0] = 3; coord[1][1] = 3;
-coord[2][0] = 3; coord[2][1] = 5;
-coord[3][0] = 5; coord[3][1] = 6;
-
-ret = H5Sselect_elements(fid, H5S_SELECT_SET, NPOINTS,
- (const hsize_t **)coord);
-
-/*
- * Write new selection of points to the dataset.
- */
-ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid2, fid, H5P_DEFAULT, values);
-</pre>
-
-<P>&nbsp;
-</FONT><P>After these operations, the file dataspace will have the following values:
-<p>
-
-<center>
-<b>Hyperslab selection with an overlay of independent points</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=460>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<B><CODE><P>53</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>1</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>2</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>3</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>4</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>5</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>6</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>7</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>8</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>9</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>10</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>11</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>12</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>13</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>14</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>15</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>16</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>17</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>18</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>19</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>20</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>21</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>22</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>23</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>24</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<B><CODE><P>59</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<B><CODE><P>61</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>25</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>26</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>27</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>28</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>29</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>30</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>31</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>32</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>33</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>34</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>35</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>36</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<B><CODE><P>67</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>37</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>38</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>39</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>40</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>41</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>42</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>43</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>44</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>45</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>46</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>47</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>48</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-</TABLE>
-</center>
-
-<P><A HREF="Intro/IntroExamples.html#WriteSelected" target="ExampleWin"><FONT FACE="Times">Example 3</FONT></A><FONT FACE="Times"> contains a complete program that performs these subsetting operations.
-
-
-<H5><A NAME="_SelectUnion">Selecting a union of hyperslabs</A></H5>
-
-</font>
-The HDF5 Library allows the user to select a union of hyperslabs and
-write or read the selection into another selection. The shapes of
-the two selections may differ, but the number of elements must be equal.
-<p>
-Suppose that we want to read two overlapping hyperslabs from the dataset
-written in the previous example into a union of hyperslabs in the memory
-dataset. This exercise is illustrated in the two figures immediately below.
-Note that the memory dataset has a different shape from the previously
-written dataset. Similarly, the selection in the memory dataset
-could have a different shape than the selected union of hyperslabs in
-the original file; for simplicity, we will preserve the selection's shape
-in this example.
-<p>
-
-<center>
-<b>Selection of a union of hyperslabs in a file dataset</b><br>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=460>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<B><CODE><P>53</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>1</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>2</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>3</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>4</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>5</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>6</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>7</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>8</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>9</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>10</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>11</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>12</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>13</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>14</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>15</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>16</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>17</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>18</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">
-<CODE><P>19</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">
-<CODE><P>20</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>21</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44" border=1>
-<CODE><P>22</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>23</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>24</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<B><CODE><P>59</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">
-<B><CODE><P>61</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>25</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>26</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>27</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>28</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>29</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>30</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>31</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>32</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>33</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>34</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>35</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>36</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<B><CODE><P>67</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>37</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>38</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>39</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>40</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>41</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>42</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>43</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>44</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>45</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>46</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>47</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>
-<CODE><P>48</CODE></TD>
-</TR>
-<TR><TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-</TABLE>
-<font size=-1><i>(Note: The above table highlights hyperslab selections
-with green, blue, and yellow<br> shading. This shading may not
-appear properly in black-and-white printed copies.)</i></font>
-</center>
-
-
-<p>
-
-<center>
-<b>Selection of a union of hyperslabs in a memory dataset</b><br>
-<font size=-1>Blank cells in this figure actually contain values written
-when the dataset was initialized.</font>
-<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=345>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>10</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>11</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>12</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<CODE><P>18</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">
-<CODE><P>19</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">
-<CODE><P>20</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>21</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44" border=1>
-<CODE><P>22</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#44FFFF">
-<B><CODE><P>59</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#88FF88">
-<B><CODE><P>61</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>27</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>28</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>29</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>30</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>35</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>36</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<B><CODE><P>67</B></CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>37</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>38</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>43</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>44</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>45</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1 bgcolor="#FFFF44">
-<CODE><P>46</CODE></TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-<TD WIDTH="8%" VALIGN="TOP" HEIGHT=1>&nbsp;</TD>
-</TR>
-</TABLE>
-<font size=-1><i>(Note: The above table highlights hyperslab selections
-with green, blue, and yellow<br> shading. This shading may not
-appear properly in black-and-white printed copies.)</i></font>
-</center>
-
-
-<p>
-The following lines of code show the required steps.
-<p>
-First obtain the dataspace identifier for the dataset in the file.
-
-<pre>
- /*
- * Get dataspace of the open dataset.
- */
- fid = H5Dget_space(dataset);
-</pre>
-
-Then select the hyperslab with the size 3x4 and
-the left upper corner at the position (1,2):
-
-<pre>
- /*
- * Select first hyperslab for the dataset in the file. The following
- * elements are selected:
- * 10 0 11 12
- * 18 0 19 20
- * 0 59 0 61
- *
- */
- start[0] = 1; start[1] = 2;
- block[0] = 1; block[1] = 1;
- stride[0] = 1; stride[1] = 1;
- count[0] = 3; count[1] = 4;
- ret = H5Sselect_hyperslab(fid, H5S_SELECT_SET, start, stride, count, block);
-</pre>
-
-Now select the second hyperslab with the size 6x5 at the position (2,4),
-and create the union with the first hyperslab.
-
-<pre>
- /*
- * Add second selected hyperslab to the selection.
- * The following elements are selected:
- * 19 20 0 21 22
- * 0 61 0 0 0
- * 27 28 0 29 30
- * 35 36 67 37 38
- * 43 44 0 45 46
- * 0 0 0 0 0
- * Note that two hyperslabs overlap. Common elements are:
- * 19 20
- * 0 61
- */
- start[0] = 2; start[1] = 4;
- block[0] = 1; block[1] = 1;
- stride[0] = 1; stride[1] = 1;
- count[0] = 6; count[1] = 5;
- ret = H5Sselect_hyperslab(fid, H5S_SELECT_OR, start, stride, count, block);
-</pre>
-
-Note that when we add the selected hyperslab to the union, the
-second argument to the <code>H5Sselect_hyperslab</code> function
-has to be <code>H5S_SELECT_OR</code> instead of <code>H5S_SELECT_SET</code>.
-Using <code>H5S_SELECT_SET</code> would reset the selection to
-the second hyperslab.
-<p>
-Now define the memory dataspace and select the union of the hyperslabs
-in the memory dataset.
-
-<pre>
- /*
- * Create memory dataspace.
- */
- mid = H5Screate_simple(MSPACE_RANK, mdim, NULL);
-
- /*
- * Select two hyperslabs in memory. Hyperslabs has the same
- * size and shape as the selected hyperslabs for the file dataspace.
- */
- start[0] = 0; start[1] = 0;
- block[0] = 1; block[1] = 1;
- stride[0] = 1; stride[1] = 1;
- count[0] = 3; count[1] = 4;
- ret = H5Sselect_hyperslab(mid, H5S_SELECT_SET, start, stride, count, block);
- start[0] = 1; start[1] = 2;
- block[0] = 1; block[1] = 1;
- stride[0] = 1; stride[1] = 1;
- count[0] = 6; count[1] = 5;
- ret = H5Sselect_hyperslab(mid, H5S_SELECT_OR, start, stride, count, block);
-</pre>
-
-Finally we can read the selected data from the file dataspace to the selection
-in memory with one call to the <code>H5Dread</code> function.
-
-<pre> ret = H5Dread(dataset, H5T_NATIVE_INT, mid, fid, H5P_DEFAULT, matrix_out);
-</pre>
-
-<P>
-<A HREF="Intro/IntroExamples.html#WriteSelected" target="ExampleWin">Example 3</a>
-includes this code along with the previous selection example.
-
-
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-</FONT><h3><A NAME="Intro-PMCreateVariableLength">Creating variable-length datatypes</A></h3>
-
-Variable-length (VL) datatypes are sequences of an existing datatype
-(atomic, VL, or compound) which are not fixed in length from one dataset location
-to another. In essence, they are similar to C character strings -- a sequence of
-a type which is pointed to by a particular type of <em>pointer</em> -- although
-they are implemented more closely to FORTRAN strings by including an explicit
-length in the pointer instead of using a particular value to terminate the
-sequence.
-
-<p>
-VL datatypes are useful to the scientific community in many different ways,
-some of which are listed below:
-<ul>
- <li>Ragged arrays: Multi-dimensional ragged arrays can be implemented with
- the last (fastest changing) dimension being ragged by using a
- VL datatype as the type of the element stored. (Or as a field in a
- compound datatype.)
- <li>Fractal arrays: If a compound datatype has a VL field of another compound
- type with VL fields (a <em>nested</em> VL datatype), this can be used to
- implement ragged arrays of ragged arrays, to whatever nesting depth is
- required for the user.
- <li>Polygon lists: A common storage requirement is to efficiently store arrays
- of polygons with different numbers of vertices. VL datatypes can be
- used to efficiently and succinctly describe an array of polygons with
- different numbers of vertices.
- <li>Character strings: Perhaps the most common use of VL datatypes will be to
- store C-like VL character strings in dataset elements or as attributes
- of objects.
- <li>Indices: An array of VL object references could be used as an index to
- all the objects in a file which contain a particular sequence of
- dataset values. Perhaps an array something like the following:
- <pre>
- Value1: Object1, Object3, Object9
- Value2: Object0, Object12, Object14, Object21, Object22
- Value3: Object2
- Value4: &lt;none&gt;
- Value5: Object1, Object10, Object12
- .
- .
- </pre>
- <li>Object Tracking: An array of VL dataset region references can be used as
- a method of tracking objects or features appearing in a sequence of
- datasets. Perhaps an array of them would look like:
- <pre>
- Feature1: Dataset1:Region, Dataset3:Region, Dataset9:Region
- Feature2: Dataset0:Region, Dataset12:Region, Dataset14:Region,
- Dataset21:Region, Dataset22:Region
- Feature3: Dataset2:Region
- Feature4: &lt;none&gt;
- Feature5: Dataset1:Region, Dataset10:Region, Dataset12:Region
- .
- .
- </pre>
-</ul>
-
-
-<h4>Variable-length datatype memory management</h4>
-
-With each element possibly being of different sequence lengths for a
-dataset with a VL datatype, the memory for the VL datatype must be dynamically
-allocated. Currently there are two methods of managing the memory for
-VL datatypes: the standard C malloc/free memory allocation routines or a method
-of calling user-defined memory management routines to allocate or free memory.
-Since the memory allocated when reading (or writing) may be complicated to
-release, an HDF5 routine is provided to traverse a memory buffer and free the
-VL datatype information without leaking memory.
-
-
-<h5>Variable-length datatypes cannot be divided</h5>
-
-VL datatypes are designed so that they cannot be subdivided by the library
-with selections, etc. This design was chosen due to the complexities in
-specifying selections on each VL element of a dataset through a selection API
-that is easy to understand. Also, the selection APIs work on dataspaces, not
-on datatypes. At some point in time, we may want to create a way for
-dataspaces to have VL components to them and we would need to allow selections
-of those VL regions, but that is beyond the scope of this document.
-
-
-<h5>What happens if the library runs out of memory while reading?</h5>
-
-It is possible for a call to <code>H5Dread</code> to fail while reading in
-VL datatype information if the memory required exceeds that which is available.
-In this case, the <code>H5Dread</code> call will fail gracefully and any
-VL data which has been allocated prior to the memory shortage will be returned
-to the system via the memory management routines detailed below.
-It may be possible to design a <em>partial read</em> API function at a
-later date, if demand for such a function warrants.
-
-
-<h5>Strings as variable-length datatypes</h5>
-
-Since character strings are a special case of VL data that is implemented
-in many different ways on different machines and in different programming
-languages, they are handled somewhat differently from other VL datatypes in HDF5.
-
-<p>
-HDF5 has native VL strings for each language API, which are stored the
-same way on disk, but are exported through each language API in a natural way
-for that language. When retrieving VL strings from a dataset, users may choose
-to have them stored in memory as a native VL string or in HDF5's <code>hvl_t</code>
-struct for VL datatypes.
-
-<p>
-VL strings may be created in one of two ways: by creating a VL datatype with
-a base type of <code>H5T_NATIVE_ASCII</code>, <code>H5T_NATIVE_UNICODE</code>,
-etc., or by creating a string datatype and setting its length to
-<code>H5T_VARIABLE</code>. The second method is used to access
-native VL strings in memory. The library will convert between the two types,
-but they are stored on disk using different datatypes and have different
-memory representations.
-
-<p>
-Multi-byte character representations, such as UNICODE or <em>wide</em>
-characters in C/C++, will need the appropriate character and string datatypes
-created so that they can be described properly through the datatype API.
-Additional conversions between these types and the current ASCII characters
-will also be required.
-
-<p>
-Variable-width character strings (which might be compressed data or some
-other encoding) are not currently handled by this design. We will evaluate
-how to implement them based on user feedback.
-
-
-<h4>Variable-length datatype APIs</h4>
-
-<h5>Creation</h5>
-
-VL datatypes are created with the <code>H5Tvlen_create()</code> function
-as follows:
-<dl>
- <dd><em>type_id</em> = <code>H5Tvlen_create</code>(<em>hid_t</em> <code>base_type_id</code>);
-</dl>
-
-<p>
-The base datatype will be the datatype that the sequence is composed of,
-characters for character strings, vertex coordinates for polygon lists, etc.
-The base datatype specified for the VL datatype can be of any HDF5 datatype,
-including another VL datatype, a compound datatype, or an atomic datatype.
-
-
-<h5>Querying base datatype of VL datatype</h5>
-
-It may be necessary to know the base datatype of a VL datatype before
-memory is allocated, etc. The base datatype is queried with the
-<code>H5Tget_super()</code> function, described in the H5T documentation.
-
-
-<h5>Querying minimum memory required for VL information</h5>
-
-It order to predict the memory usage that <code>H5Dread</code> may need
-to allocate to store VL data while reading the data, the
-<code>H5Dget_vlen_size()</code> function is provided:
-<dl>
- <dd><em>herr_t</em>
- <code>H5Dvlen_get_buf_size</code>(<em>hid_t</em> <code>dataset_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hsize_t</em> *<code>size</code>)
-</dl>
-
-<p>
-This routine checks the number of bytes required to store the VL data from
-the dataset, using the <code>space_id</code> for the selection in the dataset
-on disk and the <code>type_id</code> for the memory representation of the
-VL data in memory. The *<code>size</code> value is modified according to
-how many bytes are required to store the VL data in memory.
-
-
-<h5>Specifying how to manage memory for the VL datatype</h5>
-
-The memory management method is determined by dataset transfer properties
-passed into the <code>H5Dread</code> and <code>H5Dwrite</code> functions
-with the dataset transfer property list.
-
-<p>
-Default memory management is set by using <code>H5P_DEFAULT</code>
-for the dataset transfer property list identifier.
-If <code>H5P_DEFAULT</code> is used with <code>H5Dread</code>,
-the system <code>malloc</code> and <code>free</code> calls
-will be used for allocating and freeing memory.
-In such a case, <code>H5P_DEFAULT</code> should also be passed
-as the property list identifier to <code>H5Dvlen_reclaim</code>.
-
-<p>
-The rest of this subsection is relevant only to those who choose
-<i>not</i> to use default memory management.
-
-<p>
-The user can choose whether to use the
-system <code>malloc</code> and <code>free</code> calls or
-user-defined, or custom, memory management functions.
-If user-defined memory management functions are to be used,
-the memory allocation and free routines must be defined via
-<code>H5Pset_vlen_mem_manager()</code>, as follows:
-<dl>
- <dd><em>herr_t</em>
- <code>H5Pset_vlen_mem_manager</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5MM_allocate_t</em> <code>alloc</code>,
- <em>void</em> *<code>alloc_info</code>,
- <em>H5MM_free_t</em> <code>free</code>,
- <em>void</em> *<code>free_info</code>)
-</dl>
-
-
-<p>
-The <code>alloc</code> and <code>free</code> parameters
-identify the memory management routines to be used.
-If the user has defined custom memory management routines,
-<code>alloc</code> and/or <code>free</code> should be set to make
-those routine calls (i.e., the name of the routine is used as
-the value of the parameter);
-if the user prefers to use the system's <code> malloc</code>
-and/or <code>free</code>, the <code>alloc</code> and
-<code>free</code> parameters, respectively, should be set to
-<code> NULL</code>
-<p>
-The prototypes for the user-defined functions would appear as follows:
-<dl>
- <dd><code>typedef</code> <em>void</em>
- *(*<code>H5MM_allocate_t</code>)(<em>size_t</em> <code>size</code>,
- <em>void</em> *<code>info</code>) ;
- <dd><code>typedef</code> <em>void</em>
- (*<code>H5MM_free_t</code>)(<em>void</em> *<code>mem</code>,
- <em>void</em> *<code>free_info</code>) ;
-</dl>
-
-<p>
-The <code>alloc_info</code> and <code>free_info</code> parameters can be
-used to pass along any required information to the user's memory management
-routines.
-
-<p>
-In summary, if the user has defined custom memory management
-routines, the name(s) of the routines are passed in the
-<code>alloc</code> and <code>free</code> parameters and the
-custom routines' parameters are passed in the
-<code>alloc_info</code> and <code>free_info</code> parameters.
-If the user wishes to use the system <code> malloc</code> and
-<code>free</code> functions, the <code>alloc</code> and/or
-<code>free</code> parameters are set to <code> NULL</code>
-and the <code>alloc_info</code> and <code>free_info</code>
-parameters are ignored.
-
-<h5>Recovering memory from VL buffers read in</h5>
-
-The complex memory buffers created for a VL datatype may be reclaimed with
-the <code>H5Dvlen_reclaim()</code> function call, as follows:
-<dl>
- <dd><em>herr_t</em>
- <code>H5Dvlen_reclaim</code>(<em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hid_t</em> <code>plist_id</code>,
- <em>void</em> *<code>buf</code>);
-</dl>
-
-<p>
-The <code>type_id</code> must be the datatype stored in the buffer,
-<code>space_id</code> describes the selection for the memory buffer
-to free the VL datatypes within,
-<code>plist_id</code> is the dataset transfer property list which
-was used for the I/O transfer to create the buffer, and
-<code>buf</code> is the pointer to the buffer to free the VL memory within.
-The VL structures (<code>hvl_t</code>) in the user's buffer are
-modified to zero out the VL information after it has been freed.
-
-<p>
-If nested VL datatypes were used to create the buffer,
-this routine frees them from the bottom up,
-releasing all the memory without creating memory leaks.
-
-<P>
-<A HREF="Intro/IntroExamples.html#VariableLength" target="ExampleWin">Example 4</a>
-creates a dataset with the variable-length datatype using user-defined
-functions for memory management.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMCreateArray">Creating array datatypes</A></h3>
-
-The array class of datatypes, <code>H5T_ARRAY</code>, allows the
-construction of true, homogeneous, multi-dimensional arrays.
-Since these are homogeneous arrays, each element of the array will be
-of the same datatype, designated at the time the array is created.
-
-<p>
-Arrays can be nested.
-Not only is an array datatype used as an element of an HDF5 dataset,
-but the elements of an array datatype may be of any datatype,
-including another array datatype.
-
-<p>
-Array datatypes cannot be subdivided for I/O; the entire array must
-be transferred from one dataset to another.
-
-<p>
-Within certain limitations, outlined in the next paragraph, array datatypes
-may be <em>N</em>-dimensional and of any dimension size.
-Unlimited dimensions, however, are not supported.
-Functionality similar to unlimited dimension arrays is available through
-the use of variable-length datatypes.
-
-<p>
-The maximum number of dimensions, i.e., the maximum rank, of an array
-datatype is specified by the HDF5 library constant <code>H5S_MAX_RANK</code>.
-The minimum rank is 1 (one).
-All dimension sizes must be greater than 0 (zero).
-
-<p>
-One array dataype may only be converted to another array datatype
-if the number of dimensions and the sizes of the dimensions are equal
-and the datatype of the first array's elements can be converted
-to the datatype of the second array's elements.
-
-<h4>Array datatype APIs</h4>
-
-There are three functions that are specific to array datatypes:
-one, <code>H5Tarray_create</code>, for creating an array datatype,
-and two, <code>H5Tget_array_ndims</code> and <code>H5Tget_array_dims</code>,
-for working with existing array datatypes.
-
-<h5>Creating</h5>
-
-The function <code>H5Tarray_create</code> creates a new array datatype object.
-Parameters specify
- <ul>
- <li>the base datatype of each element of the array,
- <li>the rank of the array, i.e., the number of dimensions,
- <li>the size of each dimension, and
- <li>the dimension permutation of the array, i.e., whether the
- elements of the array are listed in C or FORTRAN order.
- (<b>Note:</b> The permutation feature is not implemented in Release 1.4.)
- </ul>
-
-<dir>
- <em>hid_t</em> <code>H5Tarray_create</code>(
- <em>hid_t</em> <code>base</code>,
- <em>int</em> <code>rank</code>,
- <em>const hsize_t</em> <code>dims[/*rank*/]</code>,
- <em>const int</em> <code>perm[/*rank*/]</code>
- )
-</dir>
-
-<h5>Working with existing array datatypes</h5>
-
-When working with existing arrays, one must first determine the
-the rank, or number of dimensions, of the array.
-
-<p>
-The function <code>H5Tget_array_ndims</code> returns the rank of a
-specified array datatype.
-
-<dir>
- <em>int</em> <code>H5Tget_array_ndims</code>(
- <em>hid_t</em> <code>adtype_id</code>
- )
-</dir>
-
-In many instances, one needs further information.
-The function <code>H5Tget_array_dims</code> retrieves the
-permutation of the array and the size of each dimension.
-(<b>Note:</b> The permutation feature is not implemented in Release 1.4.)
-
-<dir>
- <em>int</em> <code>H5Tget_array_dims</code>(
- <em>hid_t</em> <code>adtype_id</code>,
- <em>hsize_t *</em><code>dims[]</code>,
- <em>int *</em><code>perm[]</code>
- )
-</dir>
-
-
-<p>
-<A HREF="Intro/IntroExamples.html#Array" target="ExampleWin">Example 5</a>
-creates an array datatype and a dataset containing elements of the
-array datatype in an HDF5 file. It then writes the dataset to the file.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-</FONT><h3><A NAME="Intro-PMCreateCompound">Creating compound datatypes</A></h3>
-<B><P>Properties of compound datatypes. </B>A compound datatype is similar to a struct in C or a common block in Fortran. It is a collection of one or more atomic types or small arrays of such types. To create and use of a compound datatype you need to refer to various <i>properties</i> of the data compound datatype:
-
-<UL>
-<LI>It is of class <i>compound</i><I>.</I>
-<LI>It has a fixed total <i>size</i>, in bytes.
-<LI>It consists of zero or more <i>members</i> (defined in any order) with unique names and which occupy non-overlapping regions within the datum.
-<LI>Each member has its own <i>datatype</i>.
-<LI>Each member is referenced by an <i>index number</i> between zero and N-1, where N is the number of members in the compound datatype.
-<LI>Each member has a <i>name</i> which is unique among its siblings in a compound datatype.
-<LI>Each member has a fixed <i>byte offset</i>, which is the first byte (smallest byte address) of that member in a compound datatype.
-<LI>Each member can be a small array of up to four dimensions.</UL>
-
-<FONT FACE="Times"><P>Properties of members of a compound datatype are defined when the member is added to the compound type and cannot be subsequently modified.
-<B><P>Defining compound datatypes. </B>Compound datatypes must be built out of other datatypes. First, one creates an empty compound datatype and specifies its total size. Then members are added to the compound datatype in any order.
-<I><P>Member names. </I>Each member must have a descriptive name, which is the key used to uniquely identify the member within the compound datatype. A member name in an HDF5 datatype does not necessarily have to be the same as the name of the corresponding member in the C struct in memory, although this is often the case. Nor does one need to define all members of the C struct in the HDF5 compound datatype (or vice versa).
-<I><P>Offsets. </I>Usually a C struct will be defined to hold a data point in memory, and the offsets of the members in memory will be the offsets of the struct members from the beginning of an instance of the struct. The library defines the macro to compute the offset of a member within a struct:
-</FONT><CODE><br>&nbsp;&nbsp;HOFFSET(s,m)<FONT SIZE=5> </FONT></CODE>
-<br><FONT FACE="Times">This macro computes the offset of member </FONT><FONT FACE="Courier"><EM>m</EM> </FONT><FONT FACE="Times">within a struct variable <EM>s</EM>.
-<P>Here is an example in which a compound datatype is created to describe complex numbers whose type is defined by the </FONT><CODE>complex_t</CODE><FONT FACE="Times" SIZE=2> </FONT><FONT FACE="Times">struct.
-</FONT><CODE><PRE>typedef struct {
- double re; /*real part */
- double im; /*imaginary part */
-} complex_t;
-
-complex_t tmp; /*used only to compute offsets */
-hid_t complex_id = H5Tcreate (H5T_COMPOUND, sizeof tmp);
-H5Tinsert (complex_id, "real", HOFFSET(tmp,re),
- H5T_NATIVE_DOUBLE);
-H5Tinsert (complex_id, "imaginary", HOFFSET(tmp,im),
- H5T_NATIVE_DOUBLE);</PRE>
-</CODE><P><A HREF="Intro/IntroExamples.html#Compound" target="ExampleWin">Example 6</A><FONT FACE="Times"> shows how to create a compound datatype, write an array that has the compound datatype to the file, and read back subsets of the members.
-</FONT>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMCreateExtendible">Creating and writing extendible and chunked datasets</A></h3>
-<FONT FACE="Times"><P>An <I>extendible</I> dataset is one whose dimensions can grow. In HDF5, it is possible to define a dataset to have certain initial dimensions, then later to increase the size of any of the initial dimensions.
-<P>For example, you can create and store the following 3x3 HDF5 dataset:
-</FONT><PRE> 1 1 1
- 1 1 1
- 1 1 1 </PRE>
-<FONT FACE="Times"><P>then later to extend this into a 10x3 dataset by adding 7 rows, such as this:
-</FONT><PRE> 1 1 1
- 1 1 1
- 1 1 1
- 2 2 2
- 2 2 2
- 2 2 2
- 2 2 2
- 2 2 2
- 2 2 2
- 2 2 2</PRE>
-<FONT FACE="Times"><P>then further extend it to a 10x5 dataset by adding two columns, such as this:
-</FONT><PRE> 1 1 1 3 3
- 1 1 1 3 3
- 1 1 1 3 3
- 2 2 2 3 3
- 2 2 2 3 3
- 2 2 2 3 3
- 2 2 2 3 3
- 2 2 2 3 3
- 2 2 2 3 3
- 2 2 2 3 3</PRE>
-<FONT FACE="Times"><P>HDF 5 requires you to use <I>chunking</I> in order to define extendible datasets. Chunking makes it possible to extend datasets efficiently, without having to reorganize storage excessively.
-<P>The following operations are required in order to write an extendible dataset:
-<OL>
-
-<LI>Declare the dataspace of the dataset to have <I>unlimited dimensions</I> for all dimensions that might eventually be extended.
-<LI>Set dataset creation properties to enable chunking and create a dataset.
-<LI>Extend the size of the dataset.</OL>
-
-<P>For example, suppose we wish to create a dataset similar to the one shown above. We want to start with a 3x3 dataset, then later extend it in both directions.
-<B><P>Declaring unlimited dimensions. </B>We could declare the dataspace to have unlimited dimensions with the following code, which uses the predefined constant </FONT><CODE>H5S_UNLIMITED</CODE><FONT FACE="Times"> to specify unlimited dimensions.
-</FONT><PRE>hsize_t dims[2] = { 3, 3}; /* dataset dimensions
-at the creation time */
-hsize_t maxdims[2] = {H5S_UNLIMITED, H5S_UNLIMITED};
-/*
- * Create the data space with unlimited dimensions.
- */
-dataspace = H5Screate_simple(RANK, dims, maxdims); </PRE>
-<B><P>Enabling chunking. </B>We can then set the dataset storage layout properties to enable chunking. We do this using the routine <CODE>H5Pset_chunk</CODE><FONT SIZE=4>:
-</FONT><PRE>hid_t cparms;
-hsize_t chunk_dims[2] ={2, 5};
-/*
- * Modify dataset creation properties to enable chunking.
- */
-cparms = H5Pcreate (H5P_DATASET_CREATE);
-status = H5Pset_chunk( cparms, RANK, chunk_dims);
-</PRE>
-
-Then create a dataset.
-<pre>
-/*
- * Create a new dataset within the file using cparms
- * creation properties.
- */
-dataset = H5Dcreate(file, DATASETNAME, H5T_NATIVE_INT, dataspace,
- cparms);
-</pre>
-
-<B><P>Extending dataset size. </B>Finally, when we want to extend the size of the dataset, we invoke <CODE>H5Dextend </CODE>to extend the size of the dataset. In the following example, we extend the dataset along the first dimension, by seven rows, so that the new dimensions are <CODE>&lt;10,3&gt;</CODE>:
-<PRE>/*
- * Extend the dataset. Dataset becomes 10 x 3.
- */
-dims[0] = dims[0] + 7;
-size[0] = dims[0];
-size[1] = dims[1];
-status = H5Dextend (dataset, size);</PRE>
-<FONT FACE="Courier" SIZE=2><P>&nbsp;
-</FONT><P><A HREF="Intro/IntroExamples.html#CreateExtendWrite" target="ExampleWin">Example 7</A> shows how to create a 3x3 extendible dataset, write the dataset, extend the dataset to 10x3, write the dataset again, extend it again to 10x5, write the dataset again.
-<P><A HREF="Intro/IntroExamples.html#ReadExtended" target="ExampleWin">Example 8</A> shows how to read the data written by Example 7.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMWorkGroups">Working with groups in a file</A></h3>
-<P>Groups provide a mechanism for organizing meaningful and extendible sets of datasets within an HDF5 file. The H5G API contains routines for working with groups.
-<B><P>Creating a group. </B>To create a group, use
-<CODE>H5Gcreate</CODE>. For example, the following code
-creates a group called <code>Data</code> in the root group.
-<pre>
- /*
- * Create a group in the file.
- */
- grp = H5Gcreate(file, "/Data", 0);
-</pre>
-A group may be created in another group by providing the
-absolute name of the group to the <code>H5Gcreate</code>
-function or by specifying its location. For example,
-to create the group <code>Data_new</code> in the
-<code>Data</code> group, one can use the following sequence
-of calls:
-<pre>
- /*
- * Create group "Data_new" in the group "Data" by specifying
- * absolute name of the group.
- */
- grp_new = H5Gcreate(file, "/Data/Data_new", 0);
-</pre>
-or
-<pre>
- /*
- * Create group "Data_new" in the "Data" group.
- */
- grp_new = H5Gcreate(grp, "Data_new", 0);
-</pre>
-Note that the group identifier <code>grp</code> is used
-as the first parameter in the <code>H5Gcreate</code> function
-when the relative name is provided.
-<p>
-The third parameter in <code>H5Gcreate</code> optionally
-specifies how much file space to reserve to store the names
-that will appear in this group. If a non-positive
-value is supplied, then a default size is chosen.
-<p>
-<code>H5Gclose</code> closes the group and releases the
-group identifier.
-<p>
-
-<b>Creating a dataset in a particular group.</b>
-As with groups, a dataset can be created in a particular
-group by specifying its absolute name as illustrated in
-the following example:
-
-<pre>
- /*
- * Create the dataset "Compressed_Data" in the group using the
- * absolute name. The dataset creation property list is modified
- * to use GZIP compression with the compression effort set to 6.
- * Note that compression can be used only when the dataset is
- * chunked.
- */
- dims[0] = 1000;
- dims[1] = 20;
- cdims[0] = 20;
- cdims[1] = 20;
- dataspace = H5Screate_simple(RANK, dims, NULL);
- plist = H5Pcreate(H5P_DATASET_CREATE);
- H5Pset_chunk(plist, 2, cdims);
- H5Pset_deflate( plist, 6);
- dataset = H5Dcreate(file, "/Data/Compressed_Data", H5T_NATIVE_INT,
- dataspace, plist);
-</pre>
-A relative dataset name may also be used when a dataset is
-created. First obtain the identifier of the group in which
-the dataset is to be created. Then create the dataset
-with <code>H5Dcreate</code> as illustrated in the following
-example:
-<pre>
- /*
- * Open the group.
- */
- grp = H5Gopen(file, "Data");
-
- /*
- * Create the dataset "Compressed_Data" in the "Data" group
- * by providing a group identifier and a relative dataset
- * name as parameters to the H5Dcreate function.
- */
- dataset = H5Dcreate(grp, "Compressed_Data", H5T_NATIVE_INT,
- dataspace, plist);
-</pre>
-<p>
-
-<b>Accessing an object in a group.</b>
-Any object in a group can be accessed by its absolute or
-relative name. The following lines of code show how to use
-the absolute name to access the dataset
-<code>Compressed_Data</code> in the group <code>Data</code>
-created in the examples above:
-<pre>
- /*
- * Open the dataset "Compressed_Data" in the "Data" group.
- */
- dataset = H5Dopen(file, "/Data/Compressed_Data");
-</pre>
-The same dataset can be accessed in another manner. First
-access the group to which the dataset belongs, then open
-the dataset.
-<pre>
- /*
- * Open the group "data" in the file.
- */
- grp = H5Gopen(file, "Data");
-
- /*
- * Access the "Compressed_Data" dataset in the group.
- */
- dataset = H5Dopen(grp, "Compressed_Data");
-</pre>
-
-<p>
-<A HREF="Intro/IntroExamples.html#CreateGroups" target="ExampleWin">Example 9</A>
-shows how to create a group in a file and a
-dataset in a group. It uses the iterator function
-<code>H5Giterate</code> to find the names of the objects
-in the root group, and <code>H5Glink</code> and <code>H5Gunlink</code>
-to create a new group name and delete the original name.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMWorkAttributes">Working with attributes</A></h3>
-<P>Think of an attribute as a small datasets that is attached to a normal dataset or group. The H5A API contains routines for working with attributes. Since attributes share many of the characteristics of datasets, the programming model for working with attributes is analogous in many ways to the model for working with datasets. The primary differences are that an attribute must be attached to a dataset or a group, and subsetting operations cannot be performed on attributes.
-<B><P>To create an attribute </B>belonging to a particular dataset or group<B>, </B>first create a dataspace for the attribute with the call to <CODE>H5Screate</CODE>, then create the attribute using <CODE>H5Acreate</CODE>. For example, the following code creates an attribute called <CODE> Integer_attribute </CODE>that is a member of a dataset whose identifier is <CODE>dataset</CODE>. The attribute identifier is <CODE>attr2</CODE>.<CODE> H5Awrite</CODE> then sets the value of the attribute of that of the integer variable <CODE>point</code>. <code>H5Aclose</code> <FONT FACE="Times">then releases the attribute identifier.
-</CODE>
-</FONT>
-<pre>
-int point = 1; /* Value of the scalar attribute */
-
-/*
- * Create scalar attribute.
- */
-aid2 = H5Screate(H5S_SCALAR);
-attr2 = H5Acreate(dataset, "Integer attribute", H5T_NATIVE_INT, aid2,
- H5P_DEFAULT);
-
-/*
- * Write scalar attribute.
- */
-ret = H5Awrite(attr2, H5T_NATIVE_INT, &amp;point);
-
-/*
- * Close attribute dataspace.
- */
-ret = H5Sclose(aid2);
-
-/*
- * Close attribute.
- */
-ret = H5Aclose(attr2);
-</pre>
-<CODE><P>&nbsp;
-</CODE><B><P>To read a scalar attribute whose name and datatype are known</B>, first open the attribute using <CODE>H5Aopen_name</CODE>, then use H5Aread to get its value. For example the following reads a scalar attribute called <CODE>Integer_attribute</CODE> whose datatype is a native integer, and whose parent dataset has the identifier <CODE>dataset</CODE>.
-<pre>
-/*
- * Attach to the scalar attribute using attribute name, then read and
- * display its value.
- */
-attr = H5Aopen_name(dataset,"Integer attribute");
-ret = H5Aread(attr, H5T_NATIVE_INT, &amp;point_out);
-printf("The value of the attribute \"Integer attribute\" is %d \n", point_out);
-ret = H5Aclose(attr);
-</pre>
-</FONT><B><P>Reading an attribute whose characteristics are not known. </B>It may be necessary to query a<FONT FACE="Times"> file to obtain information about an attribute, namely its name, datatype, rank and dimensions. The following code opens an attribute by its index value using </FONT><CODE>H5Aopen_index</CODE><FONT FACE="Times">, then reads in information about its datatype.
-</FONT>
-<pre>
-/*
- * Attach to the string attribute using its index, then read and display the value.
- */
-attr = H5Aopen_idx(dataset, 2);
-atype = H5Tcopy(H5T_C_S1);
- H5Tset_size(atype, 4);
-ret = H5Aread(attr, atype, string_out);
-printf("The value of the attribute with the index 2 is %s \n", string_out);
-</pre>
-<code>
-</CODE><P>In practice, if the characteristics of attributes are not known,
-the code involved in accessing and processing the attribute can be quite
-complex. For this reason, HDF5 includes a function called
-<CODE>H5Aiterate</CODE>, which applies a user-supplied function to each
-of a set of attributes. The user-supplied function can contain the code
-that interprets, accesses and processes each attribute.
-<p>
-<a href="Intro/IntroExamples.html#ReadWriteAttributes" target="ExampleWin">Example 10</a> <A NAME="_Toc429885323">illustrates the use of the <code>H5Aiterate</code> function, as well as the other attribute examples described above.</A>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMWorkRefObjects">Working with references to objects</A></h3>
-
-In HDF5, objects (i.e. groups, datasets, and named datatypes) are usually
-accessed by name. This access method was discussed in previous sections.
-There is another way to access stored objects -- by reference.
-<P>
-An object reference is based on the relative file address of the object header
-in the file and is constant for the life of the object. Once a reference to
-an object is created and stored in a dataset in the file, it can be used
-to dereference the object it points to. References are handy for creating
-a file index or for grouping related objects by storing references to them in
-one dataset.
-<P>
-
-<h4>Creating and storing references to objects</h4>
-The following steps are involved in creating and storing file references
-to objects:
-<OL>
-<LI> Create the objects or open them if they already exist in the file.
-<LI> Create a dataset to store the objects' references.
-<LI> Create and store references to the objects in a buffer.
-<LI> Write a buffer with the references to the dataset.
-</OL>
-
-
-<h5>Programming example</h5>
-<a href="Intro/IntroExamples.html#CreateWriteRefObj" target="ExampleWin">Example 11</a>
-creates a group and two datasets and a named datatype in the group.
-References to these four objects are stored in the dataset in the
-root group.
-
-<p>
-<b>Notes:</b>
-Note the following elements of this example:
-<UL>
-<LI> The following code,
-<PRE>
- dataset = H5Dcreate ( fid1,"Dataset3",H5T_STD_REF_OBJ,sid1,H5P_DEFAULT );
-</PRE>
- creates a dataset to store references. Notice that the
- <code>H5T_SDT_REF_OBJ</code> datatype is used to specify that
- references to objects will be stored.
- The datatype <code>H5T_STD_REF_DSETREG</code> is used to store the
- dataset region references and is be discussed later.
-<LI>The next few calls to the <code>H5Rcreate</code> function create
- references to the objects and store them in the buffer <I>wbuf</I>.
- The signature of the <code>H5Rcreate</code> function is:
-<PRE>
- herr_t H5Rcreate ( void* buf, hid_t loc_id, const char *name,
- H5R_type_t ref_type, hid_t space_id )
-</PRE>
-<UL>
- <LI> The first argument specifies the buffer to store the reference.
- <LI> The second and third arguments specify the name of the referenced
- object. In the example, the file identifier <I>fid1</I> and
- absolute name of the dataset <code>/Group1/Dataset1</code>
- identify the dataset. One could also use the group identifier
- of group <code>Group1</code> and the relative name of the dataset
- <code>Dataset1</code> to create the same reference.
- <LI> The fourth argument specifies the type of the reference.
- The example uses references to the objects (<code>H5R_OBJECT</code>).
- Another type of reference, reference to the dataset region
- (<code>H5R_DATASET_REGION</code>), is discussed later.
- <LI> The fifth argument specifies the space identifier. When references
- to the objects are created, it should be set to <code>-1</code>.
-</UL>
-<LI>The <code>H5Dwrite</code> function writes a dataset with the
- references to the file. Notice that the <code>H5T_SDT_REF_OBJ</code>
- datatype is used to describe the dataset's memory datatype.
-</UL>
-
-<b>Output file contents:</b>
-The contents of the <code>trefer1.h5</code> file created by this example
-are as follows:
-<PRE>
-
-HDF5 "trefer1.h5" {
-GROUP "/" {
- DATASET "Dataset3" {
- DATATYPE { H5T_REFERENCE }
- DATASPACE { SIMPLE ( 4 ) / ( 4 ) }
- DATA {
- DATASET 0:1696, DATASET 0:2152, GROUP 0:1320, DATATYPE 0:2268
- }
- }
- GROUP "Group1" {
- DATASET "Dataset1" {
- DATATYPE { H5T_STD_U32LE }
- DATASPACE { SIMPLE ( 4 ) / ( 4 ) }
- DATA {
- 0, 3, 6, 9
- }
- }
- DATASET "Dataset2" {
- DATATYPE { H5T_STD_U8LE }
- DATASPACE { SIMPLE ( 4 ) / ( 4 ) }
- DATA {
- 0, 0, 0, 0
- }
- }
- DATATYPE "Datatype1" {
- H5T_STD_I32BE "a";
- H5T_STD_I32BE "b";
- H5T_IEEE_F32BE "c";
- }
- }
-}
-}
-
-</PRE>
-Notice how the data in dataset <code>Dataset3</code> is described.
-The two numbers with the colon in between represent a unique identifier
-of the object. These numbers are constant for the life of the object.
-
-
-<h4>Reading references and accessing objects using references</h4>
-
-The following steps are involved:
-<OL>
-<LI> Open the dataset with the references and read them.
- The <code>H5T_STD_REF_OBJ</code> datatype must be used to
- describe the memory datatype.
-<LI> Use the read reference to obtain the identifier of the object the
- reference points to.
-<LI> Open the dereferenced object and perform the desired operations.
-<LI> Close all objects when the task is complete.
-</OL>
-
-<h5>Programming example</h5>
-
-<a href="Intro/IntroExamples.html#ReadRefObj" target="ExampleWin">Example 12</a>
-opens and reads dataset <code>Dataset3</code> from the file created created
-in Example 11. Then the program dereferences the references
-to dataset <code>Dataset1</code>, the group and the named datatype,
-and opens those objects.
-The program reads and displays the dataset's data, the group's comment, and
-the number of members of the compound datatype.
-
-<p>
-<b>Output file contents:</b>
-The output of this program is as follows:
-
-<PRE>
-
-Dataset data :
- 0 3 6 9
-
-Group comment is Foo!
-
-Number of compound datatype members is 3
-</PRE>
-
-
-<p>
-<b>Notes:</b>
-Note the following elements of this example:
-
-<UL>
-<LI> The <code>H5Dread</code> function was used to read dataset
- <code>Dataset3</code> containing the references to the objects.
- The <code>H5T_STD_REF_OBJ</code> memory datatype was
- used to read references to memory.
-<LI> <code>H5Rdereference</code> obtains the object's identifier.
- The signature of this function is:
-<PRE>
- hid_t H5Rdereference (hid_t datatset, H5R_type_t ref_type, void *ref)
-</PRE>
- <UL>
- <LI> The first argument is an identifier of the dataset with the
- references.
- <LI> The second argument specifies the reference type.
- <code>H5R_OBJECT</code> was used to specify a reference to an
- object. Another type, used to specifiy a reference to a dataset
- region and discussed later, is <code>H5R_DATASET_REGION</code>.
- <LI> The third argument is a buffer to store the reference to be read.
- <LI> The function returns an identifier of the object the reference
- points to. In this simplified situation, the type that was
- stored in the dataset is known. When the type of the object is
- unknown, <code>H5Rget_object_type</code> should be used to
- identify the type of object the reference points to.
- </UL>
-</UL>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<h3><A NAME="Intro-PMWorkRefRegions">Working with references to dataset regions</A></h3>
-
-A dataset region reference points to the dataset selection by storing the
-relative file address of the dataset header and the global heap offset of
-the referenced selection. The selection referenced is located by retrieving
-the coordinates of the areas in the selection from the global heap. This
-internal mechanism of storing and retrieving dataset selections is transparent
-to the user. A reference to the dataset selection (region) is constant for
-the life of the dataset.
-
-<h4>Creating and storing references to dataset regions</h4>
-The following steps are involved in creating and storing references to
-the dataset regions:
-<OL>
-
-<LI> Create a dataset to store the dataset regions (selections).
-<P>
-<LI> Create selections in the dataset(s). Dataset(s) should already exist
- in the file.
-<P>
-<LI> Create references to the selections and store them in a buffer.
-<P>
-<LI> Write references to the dataset regions in the file.
-<P>
-<LI> Close all objects.
-</OL>
-
-<h5>Programming example</H5>
-
-<a href="Intro/IntroExamples.html#CreateWriteRefReg" target="ExampleWin">Example 13</a>
-creates a dataset in the file. Then it creates a dataset to store
-references to the dataset regions (selections).
-The first selection is a 6 x 6 hyperslab.
-The second selection is a point selection in the same dataset.
-References to both selections are created and stored in the buffer,
-and then written to the dataset in the file.
-
-<p>
-<b>Notes:</b>
-Note the following elements of this example:
-<UL>
-<LI> The code,
-<PRE>
- dset1=H5Dcreate(fid1,"Dataset1",H5T_STD_REF_DSETREG,sid1,H5P_DEFAULT);
-</PRE>
- creates a dataset to store references to the dataset(s) regions (selections).
- Notice that the <code>H5T_STD_REF_DSETREG</code> datatype is used.
-
-<LI> This program uses hyperslab and point selections. The dataspace
- handle <I>sid2</I> is used for the calls to <code>H5Sselect_hyperslab</code>
- and <code>H5Sselect_elements</code>. The handle was created when dataset
- <code><b>Dataset2</b></code> was created and it describes the dataset's
- dataspace. It was not closed when the dataset was closed to decrease
- the number of function calls used in the example.
- In a real application program, one should open the dataset and determine
- its dataspace using the <code>H5Dget_space</code> function.
-<LI> <code>H5Rcreate</code> is used to create a dataset region reference
- and store it in a buffer. The signature of the function is:
-<PRE>
- herr_t H5Rcreate(void *buf, hid_t loc_id, const char *name,
- H5R_type_t ref_type, hid_t space_id)
-</PRE>
-<UL>
- <LI> The first argument specifies the buffer to store the reference.
- <LI> The second and third arguments specify the name of the referenced
- dataset. In the example, the file identifier <I>fid1</I> and the
- absolute name of the dataset <code><b>/Dataset2</b></code> were
- used to identify the dataset. The reference to the region of this
- dataset is stored in the buffer <I>buf</I>.
-
- <LI> The fourth argument specifies the type of the reference. Since
- the example creates references to the dataset regions, the
- <code>H5R_DATASET_REGION</code> datatype is used.
- <LI> The fifth argument is a dataspace identifier of the referenced
- dataset.
-</UL>
-</UL>
-
-<b>Output file contents:</b>
-The contents of the file <code>trefer2.h5</code> created by this program
-are as follows:
-
-<PRE>
-HDF5 "trefer2.h5" {
-GROUP "/" {
- DATASET "Dataset1" {
- DATATYPE { H5T_REFERENCE }
- DATASPACE { SIMPLE ( 4 ) / ( 4 ) }
- DATA {
- DATASET 0:744 {(2,2)-(7,7)}, DATASET 0:744 {(6,9), (2,2), (8,4), (1,6),
- (2,8), (3,2), (0,4), (9,0), (7,1), (3,3)}, NULL, NULL
- }
- }
- DATASET "Dataset2" {
- DATATYPE { H5T_STD_U8LE }
- DATASPACE { SIMPLE ( 10, 10 ) / ( 10, 10 ) }
- DATA {
- 0, 3, 6, 9, 12, 15, 18, 21, 24, 27,
- 30, 33, 36, 39, 42, 45, 48, 51, 54, 57,
- 60, 63, 66, 69, 72, 75, 78, 81, 84, 87,
- 90, 93, 96, 99, 102, 105, 108, 111, 114, 117,
- 120, 123, 126, 129, 132, 135, 138, 141, 144, 147,
- 150, 153, 156, 159, 162, 165, 168, 171, 174, 177,
- 180, 183, 186, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231, 234, 237,
- 240, 243, 246, 249, 252, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
- }
- }
-}
-}
-</PRE>
-Notice how raw data of the dataset with the dataset regions is displayed.
-Each element of the raw data consists of a reference to the dataset
-(<code>DATASET number1:number2</code>) and its selected region.
-If the selection is a hyperslab, the corner coordinates of the hyperslab
-are displayed.
-For the point selection, the coordinates of each point are displayed.
-Since only two selections were stored, the third and fourth elements of the
-dataset <code>Dataset1</code> are set to <code>NULL</code>.
-This was done by the buffer inizialization in the program.
-
-<h4>Reading references to dataset regions</h4>
-
-The following steps are involved in reading references to dataset
-regions and referenced dataset regions (selections).
-<OL>
-<LI> Open and read the dataset containing references to the dataset regions.
- The datatype <code>H5T_STD_REF_DSETREG</code> must be used during
- read operation.
-<LI>Use <code>H5Rdereference</code> to obtain the dataset identifier
- from the read dataset region reference.
- <PRE> <B>OR</B>
- </PRE>
- Use <code>H5Rget_region</code> to obtain the dataspace identifier for
- the dataset containing the selection from the read dataset region reference.
-<LI> With the dataspace identifier, the H5S interface functions,
- <code>H5Sget_select_</code>*, can be used to obtain information
- about the selection.
-<LI> Close all objects when they are no longer needed.
-</OL>
-
-<H5>Programming example</H5>
-
-<a href="Intro/IntroExamples.html#ReadRefReg" target="ExampleWin">Example 14</a>
-reads a dataset containing dataset region references.
-It reads data from the dereferenced dataset and displays the number of
-elements and raw data. Then it reads two selections:
-a hyperslab selection and a point selection. The program queries a
-number of points in the hyperslab and the coordinates and displays them.
-Then it queries a number of selected points and their coordinates and
-displays the information.
-
-
-<p>
-<b>Output:</b>
-The output of this program is :
-<PRE>
-
- Number of elements in the dataset is : 100
- 0 3 6 9 12 15 18 21 24 27
- 30 33 36 39 42 45 48 51 54 57
- 60 63 66 69 72 75 78 81 84 87
- 90 93 96 99 102 105 108 111 114 117
- 120 123 126 129 132 135 138 141 144 147
- 150 153 156 159 162 165 168 171 174 177
- 180 183 186 189 192 195 198 201 204 207
- 210 213 216 219 222 225 228 231 234 237
- 240 243 246 249 252 255 255 255 255 255
- 255 255 255 255 255 255 255 255 255 255
- Number of elements in the hyperslab is : 36
- Hyperslab coordinates are :
- ( 2 , 2 ) ( 7 , 7 )
- Number of selected elements is : 10
- Coordinates of selected elements are :
- ( 6 , 9 )
- ( 2 , 2 )
- ( 8 , 4 )
- ( 1 , 6 )
- ( 2 , 8 )
- ( 3 , 2 )
- ( 0 , 4 )
- ( 9 , 0 )
- ( 7 , 1 )
- ( 3 , 3 )
-
-</PRE>
-
-<b>Notes:</b>
-Note the following elements of this example:
-<UL>
-<LI> The dataset with the region references was read by <code>H5Dread</code>
- with the <code>H5T_STD_REF_DSETREG</code> datatype specified.
-<LI> The read reference can be used to obtain the dataset identifier
- with the following call:
-<PRE>
- dset2 = H5Rdereference (dset1,H5R_DATASET_REGION,&rbuf[0]);
-</PRE>
- or to obtain spacial information (dataspace and selection) with the call
- to <code>H5Rget_region</code>:
-<PRE>
- sid2=H5Rget_region(dset1,H5R_DATASET_REGION,&rbuf[0]);
-</PRE>
- The reference to the dataset region has information for both the dataset
- itself and its selection. In both functions:
-<UL>
- <LI> The first parameter is an identifier of the dataset with the
- region references.
- <LI> The second parameter specifies the type of reference stored.
- In this example, a reference to the dataset region is stored.
- <LI> The third parameter is a buffer containing the reference of the
- specified type.
-</UL>
-<LI> This example introduces several <code>H5Sget_select</code>*
- functions used to obtain information about selections:
-
-<UL>
- <code>H5Sget_select_npoints:</code> returns the number of elements in
- the hyperslab<BR>
- <code>H5Sget_select_hyper_nblocks:</code> returns the number of blocks
- in the hyperslab<BR>
- <code>H5Sget_select_blocklist:</code> returns the "lower left" and
- "upper right" coordinates of the blocks in the hyperslab selection<BR>
- <code>H5Sget_select_bounds:</code> returns the coordinates of the
- "minimal" block containing a hyperslab selection<BR>
- <code>H5Sget_select_elem_npoints:</code> returns the number of points
- in the element selection<BR>
- <code>H5Sget_select_elem_points:</code> returns the coordinates of
- the element selection
-</UL>
-</UL>
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-<hr>
-
-
-<H2>4. Example Codes</H2>
-For the example codes, see
-<a href="Intro/IntroExamples.html" target="ExampleWin" target="ExampleWin"><cite>Introduction to HDF5 -- Example Codes</cite></a>.
-
-
-<p align=right><font size=-1><a href="#Intro-TOC">(Return to TOC)</a></font>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_Intro.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
-<a href="index.html">Other HDF5 documents and links</a>&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><address>
-<table width=100% border=0>
-<tr><td align=left valign=top>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem -->
-
-Last modified: 1 July 2004
-
-</td><td align=right valign=top>
-<a href="Copyright.html">Copyright</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-
-
-</BODY>
-</HTML>
diff --git a/doc/html/H5.sample_code.html b/doc/html/H5.sample_code.html
deleted file mode 100644
index 3c46205..0000000
--- a/doc/html/H5.sample_code.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<html><head><title>
-HDF5 Draft API Example Code
-</title></head><body>
-
-<center>
-<h1>HDF5: API Example Code</h1>
-</center>
-
-<P>Example programs/sections of code below:
-<dl COMPACT>
- <dt><a href="#Example1">#1</a>
- <dd>A simple example showing how to create a file.
- <dt><a href="#Example2">#2</a>
- <dd>A example showing how to create a homogenous multi-dimensional dataset.
- <dt><a href="#Example3">#3</a>
- <dd>A example showing how to read a generic dataset.
-</dl>
-
-<hr>
-<h2><a name="Example1">Simple Example showing how to create a file.</a></h2>
-
-<P>Notes:<br>
-This example creates a new HDF5 file and allows write access.
-If the file exists already, the H5F_ACC_TRUNC flag would also be necessary to
-overwrite the previous file's information.
-
-<P>Code:
-
-<code> <pre>
- hid_t file_id;
-
- file_id=<A HREF="H5.apiv2.html#File-Create">H5Fcreate</a>("example1.h5",H5F_ACC_EXCL,H5P_DEFAULT,H5P_DEFAULT);
-
- <A HREF="H5.apiv2.html#File-Close">H5Fclose</a>(file_id);
-
-</pre> </code>
-
-<hr>
-<h2><a name="Example2">Example showing how create a homogenous multi-dimensional dataset.</a></h2>
-
-<P>Notes:<br>
-This example creates a 4-dimensional dataset of 32-bit floating-point
-numbers, corresponding to the current Scientific Dataset functionality.
-
-<P>Code:
-
-<code> <pre>
- 1 hid_t file_id; /* new file's ID */
- 2 hid_t dim_id; /* new dimensionality's ID */
- 3 int rank=4; /* the number of dimensions */
- 4 hsize_t dims[4]={6,5,4,3}; /* the size of each dimension */
- 5 hid_t dataset_id; /* new dataset's ID */
- 6 float buf[6][5][4][3]; /* storage for the dataset's data */
- 7 herr_t status; /* function return status */
- 8
- 9 file_id = H5Fcreate ("example3.h5", H5F_ACC_TRUNC, H5P_DEFAULT,
-10 H5P_DEFAULT);
-11 assert (file_id &gt;= 0);
-12
-13 /* Create & initialize a dimensionality object */
-14 dim_id = H5Screate_simple (rank, dims);
-15 assert (dim_id &gt;= 0);
-16
-17 /* Create & initialize the dataset object */
-18 dataset_id = H5Dcreate (file_id, "Simple Object", H5T_NATIVE_FLOAT,
-19 dim_id, H5P_DEFAULT);
-20 assert (dataset_id &gt;= 0);
-21
-22 &lt;initialize data array&gt;
-23
-24 /* Write the entire dataset out */
-25 status = H5Dwrite (dataset_id, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL,
-26 H5P_DEFAULT, buf);
-27 assert (status &gt;= 0);
-28
-29 /* Release the IDs we've created */
-30 H5Sclose (dim_id);
-31 H5Dclose (dataset_id);
-32 H5Fclose (file_id);
-</pre> </code>
-
-<hr>
-<h2><a name="Example3">Example showing how read a generic dataset.</a></h2>
-
-<P>Notes:<br>
-This example shows how to get the information for and display a generic
-dataset.
-
-<P>Code:
-
-<code> <pre>
- 1 hid_t file_id; /* file's ID */
- 2 hid_t dataset_id; /* dataset's ID in memory */
- 3 hid_t space_id; /* dataspace's ID in memory */
- 4 uintn nelems; /* number of elements in array */
- 5 double *buf; /* pointer to the dataset's data */
- 6 herr_t status; /* function return value */
- 7
- 8 file_id = H5Fopen ("example6.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
- 9 assert (file_id &gt;= 0);
-10
-11 /* Attach to a datatype object */
-12 dataset_id = H5Dopen (file_id, "dataset1");
-13 assert (dataset_id &gt;= 0);
-14
-15 /* Get the OID for the dataspace */
-16 space_id = H5Dget_space (dataset_id);
-17 assert (space_id &gt;= 0);
-18
-19 /* Allocate space for the data */
-20 nelems = H5Sget_npoints (space_id);
-21 buf = malloc (nelems * sizeof(double));
-22
-23 /* Read in the dataset */
-24 status = H5Dread (dataset_id, H5T_NATIVE_DOUBLE, H5S_ALL,, H5S_ALL,
-25 H5P_DEFAULT, buf);
-26 assert (status &gt;= 0);
-27
-28 /* Release the IDs we've accessed */
-29 H5Sclose (space_id);
-30 H5Dclose (dataset_id);
-31 H5Fclose (file_id);
-</pre> </code>
diff --git a/doc/html/H5.user.PrintGen.html b/doc/html/H5.user.PrintGen.html
deleted file mode 100644
index b73f093..0000000
--- a/doc/html/H5.user.PrintGen.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<html>
- <head>
- <title>
- HDF5 User's Guide -- Single Print
- </title>
- </head>
-
- <body bgcolor="#FFFFFF">
-
-
-<hr>
-
-
- <center><h1>A User's Guide for HDF5</h1></center>
-
-This page provides a means of printing the <cite>HDF5 User's Guide</cite>
-with a single print command as follows:
-<ol><li>Open this page in Internet Explorer, version 4.0 or or later.
- (Sorry, but as of this writing, Netscape does not offer the required
- print feature.)
- <li>On the <strong>File</strong> menu, select <strong>Print</strong>.
- <li>In the <strong>Print</strong> dialogue box, select
- <strong>Print all linked documents</strong>.
- <li>Select <strong>OK</strong>. Depending on the print settings of your
- browser, this will produce a 100- to 200-page set of documents,
- one chapter or section at a time.
- <li>Once the print job is complete, discard the first page printed (this page).
- The rest of the printout should form a complete copy of the
- <cite>HDF5 User's Guide</cite>.
-</ol>
-
-
-<br><br>
-<center>
-<table border=0 width=85%>
-
- <tr><td valign=top><a href="H5.user.PrintTpg.html" target="PrintWin">Title Page</a>
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign=top>Title page.
- </td></tr>
- <tr><td valign=top><a href="Copyright.html" target="PrintWin">Copyright</a>
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign=top>The HDF5 copyright notice, contact information,
- and other <i>back-of-the-title-page</i> material.
- </td></tr>
- <tr><td valign=top><a href="H5.user.html" target="PrintWin">TOC</a>
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign=top>Table of contents.
- </td></tr>
- <tr><td valign=top><a href="Files.html" target="PrintWin">HDF5 Files</a>
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign=top>A guide to the <strong>H5F</strong> interface.
- </td></tr>
- <tr><td valign=top><a href="Datasets.html" target="PrintWin">Datasets</a>
- </td><td></td><td valign=top>A guide to the <strong>H5D</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Datatypes.html" target="PrintWin">Datatypes</a>
- </td><td></td><td valign=top>A guide to the <strong>H5T</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Dataspaces.html" target="PrintWin">Dataspaces</a>
- </td><td></td><td valign=top>A guide to the <strong>H5S</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Groups.html" target="PrintWin">Groups</a>
- </td><td></td><td valign=top>A guide to the <strong>H5G</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="References.html" target="PrintWin">References and
- Identifiers</a>
- </td><td></td><td valign=top>A guide to the <strong>H5R</strong>
- and <strong>H5I</strong> interfaces.
- </td></tr>
- <tr><td valign=top><a href="Attributes.html" target="PrintWin">Attributes</a>
- </td><td></td><td valign=top>A guide to the <strong>H5A</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Properties.html" target="PrintWin">Property Lists</a>
- </td><td></td><td valign=top>A guide to the <strong>H5P</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Errors.html" target="PrintWin">Error Handling</a>
- </td><td></td><td valign=top>A guide to the <strong>H5E</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Filters.html" target="PrintWin">Filters</a>
- </td><td></td><td valign=top>A guide to the <strong>H5Z</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Caching.html" target="PrintWin">Caching</a>
- </td><td></td><td valign=top>A guide for meta and raw data caching.
- </td></tr>
- <tr><td valign=top><a href="Chunking.html" target="PrintWin">Dataset Chunking</a>
- </td><td></td><td valign=top>A guide to the issues and pitfalls
- of dataset chunking.
- </td></tr>
- <tr><td valign=top><a href="MountingFiles.html" target="PrintWin">Mounting Files</a>
- </td><td></td><td valign=top>A guide to mounting files containing
- external HDF5 datasets.
- </td></tr>
- <tr><td valign=top><a href="Debugging.html" target="PrintWin">Debugging</a>
- </td><td></td><td valign=top>A guide to debugging HDF5 API calls.
- </td></tr>
- <tr><td valign=top><a href="Environment.html" target="PrintWin">Environment Variables
- and Configuration Parameters</a>
- </td><td></td><td valign=top>A list of HDF5 environment variables
- and <br>&nbsp;&nbsp;&nbsp;configuration parameters.
- </td></tr>
- <tr><td valign=top><a href="ddl.html" target="PrintWin">DDL for HDF5</a>
- </td><td></td><td valign=top>A DDL in BNF for HDF5.
- </td></tr>
-</table>
-</center>
-
-
-<br><br>
-
-<hr>
-
-
-<address>
-<table width=100% border=0>
-<tr><td align=left valign=top>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Last modified: 22 July 1999
-
-</table>
-
- </body>
-</html>
diff --git a/doc/html/H5.user.PrintTpg.html b/doc/html/H5.user.PrintTpg.html
deleted file mode 100644
index c8b9536..0000000
--- a/doc/html/H5.user.PrintTpg.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<html>
- <head>
- <title>
- HDF5 User's Guide
- </title>
- </head>
-
- <body bgcolor="#FFFFFF">
-
-
-<hr>
-<br>
-<br><br>
-
-<center>
-
-<font size=7>
-HDF5 User's Guide
-</font>
-
-<br><br><br>
-<hr>
-<hr>
-<br><br><br>
-
-<font size=6>
-Release 1.2
-<br>
-October 1999
-</font>
-
-<br><br><br><br>
-
-<font size=3>
-Hierarchical Data Format (HDF) Group
-<br>
-National Center for Supercomputing Applications (NCSA)
-<br>
-University of Illinois at Urbana-Champaign (UIUC)
-</font>
-
-</center>
-
-<br><br><br>
-<hr>
-<hr>
-<br><br><br>
-<br><br><br>
-
-<blockquote>
-<strong>A Note to the Reader:</strong>
-The primary HDF5 user documents are the online HTML documents
-distributed with the HDF5 code and binaries and found on the HDF5 website.
-These PDF and PostScript versions are generated from the HTML to provide
-the following capabilites:
-<ul>
-<li>To provide a version that can be reasonably printed in a
- single print operation.
-<li>To provide an easily searchable version.
-</ul>
-In this package, you will find four PDF and PostScript documents:
-<ul>
-<li><cite>Introduction to HDF5</cite>
-<li><cite>A User's Guide for HDF5</cite>
-<li><cite>HDF5 Reference Manual</cite>
-<li>All three of the above documents concatenated into a single file
-</ul>
-Note that these versions were created in response to user feedback;
-the HDF Group is eager to hear from you so as to improve the delivered
-product.
-</blockquote>
-
-<br><br>
-<hr>
-
-
-
-</body>
-</html>
diff --git a/doc/html/H5.user.html b/doc/html/H5.user.html
deleted file mode 100644
index 6233d8f..0000000
--- a/doc/html/H5.user.html
+++ /dev/null
@@ -1,243 +0,0 @@
-<html>
- <head>
- <title>
- HDF5 User's Guide
- </title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><center><h1>A User's Guide for HDF5<br>Release 1.4.5</h1></center>
-
- <p>This document is the <cite>HDF5 User's Guide</cite> from
- HDF5 Release 1.4.5.
- Since a
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">new
- HDF5 User's Guide</a> is under development,
- this version has not been updated for Release 1.6.0.
- <p>The following documents form a loosely organized user's guide
- to the HDF5 library.
- <p>
-
-<center>
-<table border=0>
-
-<tr><td valign=top><a href="Files.html">HDF5 Files</a>
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign=top>A guide to the <strong>H5F</strong> interface.
- </td></tr>
- <tr><td valign=top><a href="Datasets.html">Datasets</a>
- </td><td></td><td valign=top>A guide to the <strong>H5D</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Datatypes.html">Datatypes</a>
- </td><td></td><td valign=top>A guide to the <strong>H5T</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Dataspaces.html">Dataspaces</a>
- </td><td></td><td valign=top>A guide to the <strong>H5S</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Groups.html">Groups</a>
- </td><td></td><td valign=top>A guide to the <strong>H5G</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="References.html">References and
- Identifiers</a>
- </td><td></td><td valign=top>A guide to the <strong>H5R</strong>
- and <strong>H5I</strong> interfaces.
- </td></tr>
- <tr><td valign=top><a href="Attributes.html">Attributes</a>
- </td><td></td><td valign=top>A guide to the <strong>H5A</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Properties.html">Property Lists</a>
- </td><td></td><td valign=top>A guide to the <strong>H5P</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Errors.html">Error Handling</a>
- </td><td></td><td valign=top>A guide to the <strong>H5E</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Filters.html">Filters</a>
- </td><td></td><td valign=top>A guide to the <strong>H5Z</strong>
- interface.
- </td></tr>
- <tr><td valign=top><a href="Caching.html">Caching</a>
- </td><td></td><td valign=top>A guide for meta and raw data caching.
- </td></tr>
- <tr><td valign=top><a href="Chunking.html">Dataset Chunking</a>
- </td><td></td><td valign=top>A guide to the issues and pitfalls
- of dataset chunking.
- </td></tr>
- <tr><td valign=top><a href="MountingFiles.html">Mounting Files</a>
- </td><td></td><td valign=top>A guide to mounting files containing
- external HDF5 datasets.
- </td></tr>
- <tr><td valign=top><a href="Performance.html">Performance</a>
- </td><td></td><td valign=top>A guide to performance issues and
- analysis tools.
- </td></tr>
- <tr><td valign=top><a href="Debugging.html">Debugging</a>
- </td><td></td><td valign=top>A guide to debugging HDF5 API calls.
- </td></tr>
- <tr><td valign=top><a href="Environment.html">Environment Variables
- and</a>
- <br>&nbsp;&nbsp;&nbsp;<a href="Environment.html">Configuration
- Parameters</a>
- </td><td></td><td valign=top>A list of HDF5 environment variables
- and configuration <br>&nbsp;&nbsp;&nbsp;parameters.
- </td></tr>
- <tr><td valign=top><a href="ddl.html">DDL for HDF5</a>
- </td><td></td><td valign=top>A DDL in BNF for HDF5.
- </td></tr>
-</table>
-</center>
-<br>
-<!--
- <p>The following documents form a loosely organized developer's guide to
- aspects of the HDF5 library. (Some of the following documents
- may be rather out of date as they were working papers for design
- goals.)
-
- <ul>
- <li><a href="Version.html">Version Numbers</a> -
- A description of HDF5 version numbers.
- <li><a href="IOPipe.html">I/O Pipeline</a> -
- A description of the raw data I/O pipeline.
- <li><a href="ExternalFiles.html">Working with External Files</a> -
- A guide to the use of multiple files with HDF5.
- <li><a href="Big.html">Large Datasets</a> -
- A guide to accessing large datasets on small computers.
- <li><a href="MemoryManagement.html">Memory Management</a> -
- A white paper about memory management issues in HDF5.
- <li><a href="Coding.html">Coding Style</a> -
- A white paper about coding style in the HDF5 library code.
- <li><a href="compat.html">HDF4/HDF5 Compatibility</a> -
- A white paper about compatibility issues between HDF4 and HDF5.
- <li><a href="study.html">Chunking Performance Study</a> -
- A white paper describing the HDF5 chunking performance.
- </ul>
--->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><address>
-<table width=100% border=0>
-<tr><td align=left valign=top>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem -->
-
-Last modified: 3 July 2003
-
-
-</td><td align=right valign=top>
-<a href="Copyright.html">Copyright</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-
- </body>
-</html>
diff --git a/doc/html/IH_map1.gif b/doc/html/IH_map1.gif
deleted file mode 100644
index 7b0c95b..0000000
--- a/doc/html/IH_map1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/IH_map2.gif b/doc/html/IH_map2.gif
deleted file mode 100644
index ea3db34..0000000
--- a/doc/html/IH_map2.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/IH_map3.gif b/doc/html/IH_map3.gif
deleted file mode 100644
index b045687..0000000
--- a/doc/html/IH_map3.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/IH_map4.gif b/doc/html/IH_map4.gif
deleted file mode 100644
index dd2f5e3..0000000
--- a/doc/html/IH_map4.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/IH_mapFoot.gif b/doc/html/IH_mapFoot.gif
deleted file mode 100644
index 01ce06f..0000000
--- a/doc/html/IH_mapFoot.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/IH_mapHead.gif b/doc/html/IH_mapHead.gif
deleted file mode 100644
index b655bd4..0000000
--- a/doc/html/IH_mapHead.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/IOPipe.html b/doc/html/IOPipe.html
deleted file mode 100644
index 7c24e2c..0000000
--- a/doc/html/IOPipe.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>The Raw Data I/O Pipeline</title>
- </head>
-
- <body>
- <h1>The Raw Data I/O Pipeline</h1>
-
- <p>The HDF5 raw data pipeline is a complicated beast that handles
- all aspects of raw data storage and transfer of that data
- between the file and the application. Data can be stored
- contiguously (internal or external), in variable size external
- segments, or regularly chunked; it can be sparse, extendible,
- and/or compressible. Data transfers must be able to convert from
- one data space to another, convert from one number type to
- another, and perform partial I/O operations. Furthermore,
- applications will expect their common usage of the pipeline to
- perform well.
-
- <p>To accomplish these goals, the pipeline has been designed in a
- modular way so no single subroutine is overly complicated and so
- functionality can be inserted easily at the appropriate
- locations in the pipeline. A general pipeline was developed and
- then certain paths through the pipeline were optimized for
- performance.
-
- <p>We describe only the file-to-memory side of the pipeline since
- the memory-to-file side is a mirror image. We also assume that a
- proper hyperslab of a simple data space is being read from the
- file into a proper hyperslab of a simple data space in memory,
- and that the data type is a compound type which may require
- various number conversions on its members.
-
- <img alt="Figure 1" src="pipe1.gif">
-
- <p>The diagrams should be read from the top down. The Line A
- in the figure above shows that <code>H5Dread()</code> copies
- data from a hyperslab of a file dataset to a hyperslab of an
- application buffer by calling <code>H5D_read()</code>. And
- <code>H5D_read()</code> calls, in a loop,
- <code>H5S_simp_fgath()</code>, <code>H5T_conv_struct()</code>,
- and <code>H5S_simp_mscat()</code>. A temporary buffer, TCONV, is
- loaded with data points from the file, then data type conversion
- is performed on the temporary buffer, and finally data points
- are scattered out to application memory. Thus, data type
- conversion is an in-place operation and data space conversion
- consists of two steps. An additional temporary buffer, BKG, is
- large enough to hold <em>N</em> instances of the destination
- data type where <em>N</em> is the same number of data points
- that can be held by the TCONV buffer (which is large enough to
- hold either source or destination data points).
-
- <p>The application sets an upper limit for the size of the TCONV
- buffer and optionally supplies a buffer. If no buffer is
- supplied then one will be created by calling
- <code>malloc()</code> when the pipeline is executed (when
- necessary) and freed when the pipeline exits. The size of the
- BKG buffer depends on the size of the TCONV buffer and if the
- application supplies a BKG buffer it should be at least as large
- as the TCONV buffer. The default size for these buffers is one
- megabyte but the buffer might not be used to full capacity if
- the buffer size is not an integer multiple of the source or
- destination data point size (whichever is larger, but only
- destination for the BKG buffer).
-
-
-
- <p>Occassionally the destination data points will be partially
- initialized and the <code>H5Dread()</code> operation should not
- clobber those values. For instance, the destination type might
- be a struct with members <code>a</code> and <code>b</code> where
- <code>a</code> is already initialized and we're reading
- <code>b</code> from the file. An extra line, G, is added to the
- pipeline to provide the type conversion functions with the
- existing data.
-
- <img alt="Figure 2" src="pipe2.gif">
-
- <p>It will most likely be quite common that no data type
- conversion is necessary. In such cases a temporary buffer for
- data type conversion is not needed and data space conversion
- can happen in a single step. In fact, when the source and
- destination data are both contiguous (they aren't in the
- picture) the loop degenerates to a single iteration.
-
-
- <img alt="Figure 3" src="pipe3.gif">
-
- <p>So far we've looked only at internal contiguous storage, but by
- replacing Line B in Figures 1 and 2 and Line A in Figure 3 with
- Figure 4 the pipeline is able to handle regularly chunked
- objects. Line B of Figure 4 is executed once for each chunk
- which contains data to be read and the chunk address is found by
- looking at a multi-dimensional key in a chunk B-tree which has
- one entry per chunk.
-
- <img alt="Figure 4" src="pipe4.gif">
-
- <p>If a single chunk is requested and the destination buffer is
- the same size/shape as the chunk, then the CHUNK buffer is
- bypassed and the destination buffer is used instead as shown in
- Figure 5.
-
- <img alt="Figure 5" src="pipe5.gif">
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Tue Mar 17 11:13:35 EST 1998 -->
-<!-- hhmts start -->
-Last modified: Wed Mar 18 10:38:30 EST 1998
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/Intro/IntroExamples.html b/doc/html/Intro/IntroExamples.html
deleted file mode 100644
index 6511683..0000000
--- a/doc/html/Intro/IntroExamples.html
+++ /dev/null
@@ -1,2128 +0,0 @@
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
-<META NAME="Generator" CONTENT="Microsoft Word 97">
-<TITLE>Introduction to HDF5</TITLE>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Intro.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="../ed_styles/IntroElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></HEAD>
-<BODY LINK="#0000ff" VLINK="#800080" bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_Intro.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-<a href="../RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
-<a href="../index.html">Other HDF5 documents and links</a>&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1 ALIGN="CENTER">Introduction to HDF5 -- Example Codes</h1></a>
-
-
-<a name="IEx-TOC">
-<hr>
-<center>
-<table border=0 width=90%>
-<tr><th colspan=3>Table of Contents</th></tr></a>
-<tr><td valign=top align=left width=42%>
-
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#CreateExample">1: Creating and writing a
- dataset</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#CheckAndReadExample">2. Reading a hyperslab</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#WriteSelected">3. Writing selected data</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#Compound">4. Working with compound datatypes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#CreateExtendWrite">5. Creating and writing an extendible</a> <br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#CreateExtendWrite">dataset</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#ReadExtended">6. Reading data</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#CreateGroups">7. Creating groups</A><br>
- </font>
-
-</td><td width=6%>&nbsp;&nbsp;</td><td valign=top align=left width=42%>
-
- <font size=-1>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <A href="#ReadWriteAttributes">8. Writing and reading
- attributes</A><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#CreateWriteRefObj">9. Creating and writing references</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#CreateWriteRefObj">to objects</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#ReadRefObj">10. Reading references to objects</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#CreateWriteRefReg">11. Creating and writing references</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#CreateWriteRefReg">to dataset regions</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#ReadRefReg">12. Reading references to dataset</a><br>
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;
- <a href="#ReadRefReg">regions</a>
- </font>
-</td></tr>
-</table>
-</center>
-<p>
-
-<hr>
-
-
-
-<H4><A NAME="CreateExample">Example 1: How to create a homogeneous multi-dimensional dataset</A> and write it to a file.</A></H4>
-<P>This example creates a 2-dimensional HDF 5 dataset of little endian 32-bit integers.
-<PRE>
-<!-- Insert Example 1, h5_write.c, here. -->
-/*
- * This example writes data to the HDF5 file.
- * Data conversion is performed during write operation.
- */
-
-#include <hdf5.h>
-
-#define FILE "SDS.h5"
-#define DATASETNAME "IntArray"
-#define NX 5 /* dataset dimensions */
-#define NY 6
-#define RANK 2
-
-int
-main (void)
-{
- hid_t file, dataset; /* file and dataset handles */
- hid_t datatype, dataspace; /* handles */
- hsize_t dimsf[2]; /* dataset dimensions */
- herr_t status;
- int data[NX][NY]; /* data to write */
- int i, j;
-
- /*
- * Data and output buffer initialization.
- */
- for (j = 0; j < NX; j++) {
- for (i = 0; i < NY; i++)
- data[j][i] = i + j;
- }
- /*
- * 0 1 2 3 4 5
- * 1 2 3 4 5 6
- * 2 3 4 5 6 7
- * 3 4 5 6 7 8
- * 4 5 6 7 8 9
- */
-
- /*
- * Create a new file using H5F_ACC_TRUNC access,
- * default file creation properties, and default file
- * access properties.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Describe the size of the array and create the data space for fixed
- * size dataset.
- */
- dimsf[0] = NX;
- dimsf[1] = NY;
- dataspace = H5Screate_simple(RANK, 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);
-
- /*
- * Create a new dataset within the file using defined dataspace and
- * datatype and default dataset creation properties.
- */
- dataset = H5Dcreate(file, DATASETNAME, datatype, dataspace,
- H5P_DEFAULT);
-
- /*
- * Write the data to the dataset using default transfer properties.
- */
- status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, data);
-
- /*
- * Close/release resources.
- */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Dclose(dataset);
- H5Fclose(file);
-
- return 0;
-}
-</pre>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<A NAME="CheckAndReadExample">&nbsp;</a>
-<H4><A NAME="_Toc429885326">Example 2.</A> How to read a hyperslab from file into memory.</A></H4>
-<P>This example reads a hyperslab from a 2-d HDF5 dataset into a 3-d dataset in memory.
-<PRE>
-<!-- Insert Example 2, h5_read.c, here. -->
-/*
- * This example reads hyperslab from the SDS.h5 file
- * created by h5_write.c program into two-dimensional
- * plane of the three-dimensional array.
- * Information about dataset in the SDS.h5 file is obtained.
- */
-
-#include "hdf5.h"
-
-#define FILE "SDS.h5"
-#define DATASETNAME "IntArray"
-#define NX_SUB 3 /* hyperslab dimensions */
-#define NY_SUB 4
-#define NX 7 /* output buffer dimensions */
-#define NY 7
-#define NZ 3
-#define RANK 2
-#define RANK_OUT 3
-
-int
-main (void)
-{
- hid_t file, dataset; /* handles */
- hid_t datatype, dataspace;
- hid_t memspace;
- H5T_class_t class; /* datatype class */
- H5T_order_t order; /* data order */
- size_t size; /*
- * size of the data element
- * stored in file
- */
- hsize_t dimsm[3]; /* memory space dimensions */
- hsize_t dims_out[2]; /* dataset dimensions */
- herr_t status;
-
- int data_out[NX][NY][NZ ]; /* output buffer */
-
- hsize_t count[2]; /* size of the hyperslab in the file */
- hsize_t offset[2]; /* hyperslab offset in the file */
- hsize_t count_out[3]; /* size of the hyperslab in memory */
- hsize_t offset_out[3]; /* hyperslab offset in memory */
- int i, j, k, status_n, rank;
-
- for (j = 0; j < NX; j++) {
- for (i = 0; i < NY; i++) {
- for (k = 0; k < NZ ; k++)
- data_out[j][i][k] = 0;
- }
- }
-
- /*
- * Open the file and the dataset.
- */
- file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- dataset = H5Dopen(file, DATASETNAME);
-
- /*
- * Get datatype and dataspace handles and then query
- * dataset class, order, size, rank and dimensions.
- */
- datatype = H5Dget_type(dataset); /* datatype handle */
- class = H5Tget_class(datatype);
- if (class == H5T_INTEGER) printf("Data set has INTEGER type \n");
- order = H5Tget_order(datatype);
- if (order == H5T_ORDER_LE) printf("Little endian order \n");
-
- size = H5Tget_size(datatype);
- printf(" Data size is %d \n", size);
-
- dataspace = H5Dget_space(dataset); /* dataspace handle */
- rank = H5Sget_simple_extent_ndims(dataspace);
- status_n = H5Sget_simple_extent_dims(dataspace, dims_out, NULL);
- printf("rank %d, dimensions %lu x %lu \n", rank,
- (unsigned long)(dims_out[0]), (unsigned long)(dims_out[1]));
-
- /*
- * Define hyperslab in the dataset.
- */
- offset[0] = 1;
- offset[1] = 2;
- count[0] = NX_SUB;
- count[1] = NY_SUB;
- status = H5Sselect_hyperslab(dataspace, H5S_SELECT_SET, offset, NULL,
- count, NULL);
-
- /*
- * Define the memory dataspace.
- */
- dimsm[0] = NX;
- dimsm[1] = NY;
- dimsm[2] = NZ ;
- memspace = H5Screate_simple(RANK_OUT,dimsm,NULL);
-
- /*
- * Define memory hyperslab.
- */
- offset_out[0] = 3;
- offset_out[1] = 0;
- offset_out[2] = 0;
- count_out[0] = NX_SUB;
- count_out[1] = NY_SUB;
- count_out[2] = 1;
- status = H5Sselect_hyperslab(memspace, H5S_SELECT_SET, offset_out, NULL,
- count_out, NULL);
-
- /*
- * Read data from hyperslab in the file into the hyperslab in
- * memory and display.
- */
- status = H5Dread(dataset, H5T_NATIVE_INT, memspace, dataspace,
- H5P_DEFAULT, data_out);
- for (j = 0; j < NX; j++) {
- for (i = 0; i < NY; i++) printf("%d ", data_out[j][i][0]);
- printf("\n");
- }
- /*
- * 0 0 0 0 0 0 0
- * 0 0 0 0 0 0 0
- * 0 0 0 0 0 0 0
- * 3 4 5 6 0 0 0
- * 4 5 6 7 0 0 0
- * 5 6 7 8 0 0 0
- * 0 0 0 0 0 0 0
- */
-
- /*
- * Close/release resources.
- */
- H5Tclose(datatype);
- H5Dclose(dataset);
- H5Sclose(dataspace);
- H5Sclose(memspace);
- H5Fclose(file);
-
- return 0;
-}
-</pre>
-
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="_Toc429885331"><A NAME="WriteSelected"></A>Example 3. Writing selected data from memory to a file.</A></H4>
-<P>This example shows how to use the selection capabilities of HDF5 to write selected data to a file. It includes the examples discussed in the text.
-
-<pre>
-<!-- Insert Example 3, h5_select.c, here. -->
-/*
- * This program shows how the H5Sselect_hyperslab and H5Sselect_elements
- * functions are used to write selected data from memory to the file.
- * Program takes 48 elements from the linear buffer and writes them into
- * the matrix using 3x2 blocks, (4,3) stride and (2,4) count.
- * Then four elements of the matrix are overwritten with the new values and
- * file is closed. Program reopens the file and reads and displays the result.
- */
-
-#include <hdf5.h>
-
-#define FILE "Select.h5"
-
-#define MSPACE1_RANK 1 /* Rank of the first dataset in memory */
-#define MSPACE1_DIM 50 /* Dataset size in memory */
-
-#define MSPACE2_RANK 1 /* Rank of the second dataset in memory */
-#define MSPACE2_DIM 4 /* Dataset size in memory */
-
-#define FSPACE_RANK 2 /* Dataset rank as it is stored in the file */
-#define FSPACE_DIM1 8 /* Dimension sizes of the dataset as it is
- stored in the file */
-#define FSPACE_DIM2 12
-
- /* We will read dataset back from the file
- to the dataset in memory with these
- dataspace parameters. */
-#define MSPACE_RANK 2
-#define MSPACE_DIM1 8
-#define MSPACE_DIM2 12
-
-#define NPOINTS 4 /* Number of points that will be selected
- and overwritten */
-int main (void)
-{
-
- hid_t file, dataset; /* File and dataset identifiers */
- hid_t mid1, mid2, fid; /* Dataspace identifiers */
- hsize_t dim1[] = {MSPACE1_DIM}; /* Dimension size of the first dataset
- (in memory) */
- hsize_t dim2[] = {MSPACE2_DIM}; /* Dimension size of the second dataset
- (in memory */
- hsize_t fdim[] = {FSPACE_DIM1, FSPACE_DIM2};
- /* Dimension sizes of the dataset (on disk) */
-
- hsize_t start[2]; /* Start of hyperslab */
- hsize_t stride[2]; /* Stride of hyperslab */
- hsize_t count[2]; /* Block count */
- hsize_t block[2]; /* Block sizes */
-
- hsize_t coord[NPOINTS][FSPACE_RANK]; /* Array to store selected points
- from the file dataspace */
- herr_t ret;
- uint i,j;
- int matrix[MSPACE_DIM1][MSPACE_DIM2];
- int vector[MSPACE1_DIM];
- int values[] = {53, 59, 61, 67}; /* New values to be written */
-
- /*
- * Buffers' initialization.
- */
- vector[0] = vector[MSPACE1_DIM - 1] = -1;
- for (i = 1; i < MSPACE1_DIM - 1; i++) vector[i] = i;
-
- for (i = 0; i < MSPACE_DIM1; i++) {
- for (j = 0; j < MSPACE_DIM2; j++)
- matrix[i][j] = 0;
- }
-
- /*
- * Create a file.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Create dataspace for the dataset in the file.
- */
- fid = H5Screate_simple(FSPACE_RANK, fdim, NULL);
-
- /*
- * Create dataset and write it into the file.
- */
- dataset = H5Dcreate(file, "Matrix in file", H5T_NATIVE_INT, fid, H5P_DEFAULT);
- ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, matrix);
-
- /*
- * Select hyperslab for the dataset in the file, using 3x2 blocks,
- * (4,3) stride and (2,4) count starting at the position (0,1).
- */
- start[0] = 0; start[1] = 1;
- stride[0] = 4; stride[1] = 3;
- count[0] = 2; count[1] = 4;
- block[0] = 3; block[1] = 2;
- ret = H5Sselect_hyperslab(fid, H5S_SELECT_SET, start, stride, count, block);
-
- /*
- * Create dataspace for the first dataset.
- */
- mid1 = H5Screate_simple(MSPACE1_RANK, dim1, NULL);
-
- /*
- * Select hyperslab.
- * We will use 48 elements of the vector buffer starting at the second element.
- * Selected elements are 1 2 3 . . . 48
- */
- start[0] = 1;
- stride[0] = 1;
- count[0] = 48;
- block[0] = 1;
- ret = H5Sselect_hyperslab(mid1, H5S_SELECT_SET, start, stride, count, block);
-
- /*
- * Write selection from the vector buffer to the dataset in the file.
- *
- * File dataset should look like this:
- * 0 1 2 0 3 4 0 5 6 0 7 8
- * 0 9 10 0 11 12 0 13 14 0 15 16
- * 0 17 18 0 19 20 0 21 22 0 23 24
- * 0 0 0 0 0 0 0 0 0 0 0 0
- * 0 25 26 0 27 28 0 29 30 0 31 32
- * 0 33 34 0 35 36 0 37 38 0 39 40
- * 0 41 42 0 43 44 0 45 46 0 47 48
- * 0 0 0 0 0 0 0 0 0 0 0 0
- */
- ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid1, fid, H5P_DEFAULT, vector);
-
- /*
- * Reset the selection for the file dataspace fid.
- */
- ret = H5Sselect_none(fid);
-
- /*
- * Create dataspace for the second dataset.
- */
- mid2 = H5Screate_simple(MSPACE2_RANK, dim2, NULL);
-
- /*
- * Select sequence of NPOINTS points in the file dataspace.
- */
- coord[0][0] = 0; coord[0][1] = 0;
- coord[1][0] = 3; coord[1][1] = 3;
- coord[2][0] = 3; coord[2][1] = 5;
- coord[3][0] = 5; coord[3][1] = 6;
-
- ret = H5Sselect_elements(fid, H5S_SELECT_SET, NPOINTS,
- (const hsize_t **)coord);
-
- /*
- * Write new selection of points to the dataset.
- */
- ret = H5Dwrite(dataset, H5T_NATIVE_INT, mid2, fid, H5P_DEFAULT, values);
-
- /*
- * File dataset should look like this:
- * 53 1 2 0 3 4 0 5 6 0 7 8
- * 0 9 10 0 11 12 0 13 14 0 15 16
- * 0 17 18 0 19 20 0 21 22 0 23 24
- * 0 0 0 59 0 61 0 0 0 0 0 0
- * 0 25 26 0 27 28 0 29 30 0 31 32
- * 0 33 34 0 35 36 67 37 38 0 39 40
- * 0 41 42 0 43 44 0 45 46 0 47 48
- * 0 0 0 0 0 0 0 0 0 0 0 0
- *
- */
-
- /*
- * Close memory file and memory dataspaces.
- */
- ret = H5Sclose(mid1);
- ret = H5Sclose(mid2);
- ret = H5Sclose(fid);
-
- /*
- * Close dataset.
- */
- ret = H5Dclose(dataset);
-
- /*
- * Close the file.
- */
- ret = H5Fclose(file);
-
- /*
- * Open the file.
- */
- file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
-
- /*
- * Open the dataset.
- */
- dataset = dataset = H5Dopen(file,"Matrix in file");
-
- /*
- * Read data back to the buffer matrix.
- */
- ret = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, matrix);
-
- /*
- * Display the result.
- */
- for (i=0; i < MSPACE_DIM1; i++) {
- for(j=0; j < MSPACE_DIM2; j++) printf("%3d ", matrix[i][j]);
- printf("\n");
- }
-
- return 0;
-}
-</pre>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="Compound"><A NAME="_Toc429885327"></A>Example 4. Working with compound datatypes.</A></H4>
-<P>This example shows how to create a compound datatype, write an array which has the compound datatype to the file, and read back subsets of fields.
-<PRE>
-<!-- Insert Example 4, h5_compound.c, here. -->
-/*
- * This example shows how to create a compound datatype,
- * write an array which has the compound datatype to the file,
- * and read back fields' subsets.
- */
-
-#include "hdf5.h"
-
-#define FILE "SDScompound.h5"
-#define DATASETNAME "ArrayOfStructures"
-#define LENGTH 10
-#define RANK 1
-
-int
-main(void)
-{
-
- /* First structure and dataset*/
- typedef struct s1_t {
- int a;
- float b;
- double c;
- } s1_t;
- s1_t s1[LENGTH];
- hid_t s1_tid; /* File datatype identifier */
-
- /* Second structure (subset of s1_t) and dataset*/
- typedef struct s2_t {
- double c;
- int a;
- } s2_t;
- s2_t s2[LENGTH];
- hid_t s2_tid; /* Memory datatype handle */
-
- /* Third "structure" ( will be used to read float field of s1) */
- hid_t s3_tid; /* Memory datatype handle */
- float s3[LENGTH];
-
- int i;
- hid_t file, dataset, space; /* Handles */
- herr_t status;
- hsize_t dim[] = {LENGTH}; /* Dataspace dimensions */
-
-
- /*
- * Initialize the data
- */
- for (i = 0; i< LENGTH; i++) {
- s1[i].a = i;
- s1[i].b = i*i;
- s1[i].c = 1./(i+1);
- }
-
- /*
- * Create the data space.
- */
- space = H5Screate_simple(RANK, dim, NULL);
-
- /*
- * Create the file.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Create the memory datatype.
- */
- s1_tid = H5Tcreate (H5T_COMPOUND, sizeof(s1_t));
- H5Tinsert(s1_tid, "a_name", HOFFSET(s1_t, a), H5T_NATIVE_INT);
- H5Tinsert(s1_tid, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE);
- H5Tinsert(s1_tid, "b_name", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT);
-
- /*
- * Create the dataset.
- */
- dataset = H5Dcreate(file, DATASETNAME, s1_tid, space, H5P_DEFAULT);
-
- /*
- * Wtite data to the dataset;
- */
- status = H5Dwrite(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1);
-
- /*
- * Release resources
- */
- H5Tclose(s1_tid);
- H5Sclose(space);
- H5Dclose(dataset);
- H5Fclose(file);
-
- /*
- * Open the file and the dataset.
- */
- file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
-
- dataset = H5Dopen(file, DATASETNAME);
-
- /*
- * Create a datatype for s2
- */
- s2_tid = H5Tcreate(H5T_COMPOUND, sizeof(s2_t));
-
- H5Tinsert(s2_tid, "c_name", HOFFSET(s2_t, c), H5T_NATIVE_DOUBLE);
- H5Tinsert(s2_tid, "a_name", HOFFSET(s2_t, a), H5T_NATIVE_INT);
-
- /*
- * Read two fields c and a from s1 dataset. Fields in the file
- * are found by their names "c_name" and "a_name".
- */
- status = H5Dread(dataset, s2_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s2);
-
- /*
- * Display the fields
- */
- printf("\n");
- printf("Field c : \n");
- for( i = 0; i < LENGTH; i++) printf("%.4f ", s2[i].c);
- printf("\n");
-
- printf("\n");
- printf("Field a : \n");
- for( i = 0; i < LENGTH; i++) printf("%d ", s2[i].a);
- printf("\n");
-
- /*
- * Create a datatype for s3.
- */
- s3_tid = H5Tcreate(H5T_COMPOUND, sizeof(float));
-
- status = H5Tinsert(s3_tid, "b_name", 0, H5T_NATIVE_FLOAT);
-
- /*
- * Read field b from s1 dataset. Field in the file is found by its name.
- */
- status = H5Dread(dataset, s3_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s3);
-
- /*
- * Display the field
- */
- printf("\n");
- printf("Field b : \n");
- for( i = 0; i < LENGTH; i++) printf("%.4f ", s3[i]);
- printf("\n");
-
- /*
- * Release resources
- */
- H5Tclose(s2_tid);
- H5Tclose(s3_tid);
- H5Dclose(dataset);
- H5Fclose(file);
-
- return 0;
-}
-</pre>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="CreateExtendWrite"><A NAME="_Toc429885328"></A>Example 5. Creating and writing an extendible dataset.</A></H4>
-<P>This example shows how to create a 3x3 extendible dataset, to extend the dataset to 10x3, then to extend it again to 10x5.
-<PRE>
-<!-- Insert Example 5, h5_extend_write.c, here. -->
-/*
- * This example shows how to work with extendible dataset.
- * In the current version of the library dataset MUST be
- * chunked.
- *
- */
-
-#include "hdf5.h"
-
-#define FILE "SDSextendible.h5"
-#define DATASETNAME "ExtendibleArray"
-#define RANK 2
-#define NX 10
-#define NY 5
-
-int
-main (void)
-{
- hid_t file; /* handles */
- hid_t dataspace, dataset;
- hid_t filespace;
- hid_t cparms;
- hsize_t dims[2] = { 3, 3}; /*
- * dataset dimensions
- * at the creation time
- */
- hsize_t dims1[2] = { 3, 3}; /* data1 dimensions */
- hsize_t dims2[2] = { 7, 1}; /* data2 dimensions */
- hsize_t dims3[2] = { 2, 2}; /* data3 dimensions */
-
- hsize_t maxdims[2] = {H5S_UNLIMITED, H5S_UNLIMITED};
- hsize_t chunk_dims[2] ={2, 5};
- hsize_t size[2];
- hsize_t offset[2];
-
- herr_t status;
-
- int data1[3][3] = { {1, 1, 1}, /* data to write */
- {1, 1, 1},
- {1, 1, 1} };
-
- int data2[7] = { 2, 2, 2, 2, 2, 2, 2};
-
- int data3[2][2] = { {3, 3},
- {3, 3} };
-
- /*
- * Create the data space with unlimited dimensions.
- */
- dataspace = H5Screate_simple(RANK, dims, maxdims);
-
- /*
- * Create a new file. If file exists its contents will be overwritten.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Modify dataset creation properties, i.e. enable chunking.
- */
- cparms = H5Pcreate (H5P_DATASET_CREATE);
- status = H5Pset_chunk( cparms, RANK, chunk_dims);
-
- /*
- * Create a new dataset within the file using cparms
- * creation properties.
- */
- dataset = H5Dcreate(file, DATASETNAME, H5T_NATIVE_INT, dataspace,
- cparms);
-
- /*
- * Extend the dataset. This call assures that dataset is at least 3 x 3.
- */
- size[0] = 3;
- size[1] = 3;
- status = H5Dextend (dataset, size);
-
- /*
- * Select a hyperslab.
- */
- filespace = H5Dget_space (dataset);
- offset[0] = 0;
- offset[1] = 0;
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL,
- dims1, NULL);
-
- /*
- * Write the data to the hyperslab.
- */
- status = H5Dwrite(dataset, H5T_NATIVE_INT, dataspace, filespace,
- H5P_DEFAULT, data1);
-
- /*
- * Extend the dataset. Dataset becomes 10 x 3.
- */
- dims[0] = dims1[0] + dims2[0];
- size[0] = dims[0];
- size[1] = dims[1];
- status = H5Dextend (dataset, size);
-
- /*
- * Select a hyperslab.
- */
- filespace = H5Dget_space (dataset);
- offset[0] = 3;
- offset[1] = 0;
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL,
- dims2, NULL);
-
- /*
- * Define memory space
- */
- dataspace = H5Screate_simple(RANK, dims2, NULL);
-
- /*
- * Write the data to the hyperslab.
- */
- status = H5Dwrite(dataset, H5T_NATIVE_INT, dataspace, filespace,
- H5P_DEFAULT, data2);
-
- /*
- * Extend the dataset. Dataset becomes 10 x 5.
- */
- dims[1] = dims1[1] + dims3[1];
- size[0] = dims[0];
- size[1] = dims[1];
- status = H5Dextend (dataset, size);
-
- /*
- * Select a hyperslab
- */
- filespace = H5Dget_space (dataset);
- offset[0] = 0;
- offset[1] = 3;
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL,
- dims3, NULL);
-
- /*
- * Define memory space.
- */
- dataspace = H5Screate_simple(RANK, dims3, NULL);
-
- /*
- * Write the data to the hyperslab.
- */
- status = H5Dwrite(dataset, H5T_NATIVE_INT, dataspace, filespace,
- H5P_DEFAULT, data3);
-
- /*
- * Resulting dataset
- *
- * 1 1 1 3 3
- * 1 1 1 3 3
- * 1 1 1 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- */
- /*
- * Close/release resources.
- */
- H5Dclose(dataset);
- H5Sclose(dataspace);
- H5Sclose(filespace);
- H5Fclose(file);
-
- return 0;
-}
-</pre>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="ReadExtended"><A NAME="_Toc429885329"></A>Example 6. Reading data.</A></H4>
-<P>This example shows how to read information the chunked dataset written by <A HREF="#CreateExtendWrite">Example 5</A>.
-<PRE>
-<!-- Insert Example 6, h5_chunk_read.c, here. -->
-/*
- * This example shows how to read data from a chunked dataset.
- * We will read from the file created by h5_extend_write.c
- */
-
-#include "hdf5.h"
-
-#define FILE "SDSextendible.h5"
-#define DATASETNAME "ExtendibleArray"
-#define RANK 2
-#define RANKC 1
-#define NX 10
-#define NY 5
-
-int
-main (void)
-{
- hid_t file; /* handles */
- hid_t dataset;
- hid_t filespace;
- hid_t memspace;
- hid_t cparms;
- hsize_t dims[2]; /* dataset and chunk dimensions*/
- hsize_t chunk_dims[2];
- hsize_t col_dims[1];
- hsize_t count[2];
- hsize_t offset[2];
-
- herr_t status, status_n;
-
- int data_out[NX][NY]; /* buffer for dataset to be read */
- int chunk_out[2][5]; /* buffer for chunk to be read */
- int column[10]; /* buffer for column to be read */
- int rank, rank_chunk;
- hsize_t i, j;
-
-
-
- /*
- * Open the file and the dataset.
- */
- file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
- dataset = H5Dopen(file, DATASETNAME);
-
- /*
- * Get dataset rank and dimension.
- */
-
- filespace = H5Dget_space(dataset); /* Get filespace handle first. */
- rank = H5Sget_simple_extent_ndims(filespace);
- status_n = H5Sget_simple_extent_dims(filespace, dims, NULL);
- printf("dataset rank %d, dimensions %lu x %lu\n",
- rank, (unsigned long)(dims[0]), (unsigned long)(dims[1]));
-
- /*
- * Get creation properties list.
- */
- cparms = H5Dget_create_plist(dataset); /* Get properties handle first. */
-
- /*
- * Check if dataset is chunked.
- */
- if (H5D_CHUNKED == H5Pget_layout(cparms)) {
-
- /*
- * Get chunking information: rank and dimensions
- */
- rank_chunk = H5Pget_chunk(cparms, 2, chunk_dims);
- printf("chunk rank %d, dimensions %lu x %lu\n", rank_chunk,
- (unsigned long)(chunk_dims[0]), (unsigned long)(chunk_dims[1]));
- }
-
- /*
- * Define the memory space to read dataset.
- */
- memspace = H5Screate_simple(RANK,dims,NULL);
-
- /*
- * Read dataset back and display.
- */
- status = H5Dread(dataset, H5T_NATIVE_INT, memspace, filespace,
- H5P_DEFAULT, data_out);
- printf("\n");
- printf("Dataset: \n");
- for (j = 0; j < dims[0]; j++) {
- for (i = 0; i < dims[1]; i++) printf("%d ", data_out[j][i]);
- printf("\n");
- }
-
- /*
- * dataset rank 2, dimensions 10 x 5
- * chunk rank 2, dimensions 2 x 5
-
- * Dataset:
- * 1 1 1 3 3
- * 1 1 1 3 3
- * 1 1 1 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- * 2 0 0 0 0
- */
-
- /*
- * Read the third column from the dataset.
- * First define memory dataspace, then define hyperslab
- * and read it into column array.
- */
- col_dims[0] = 10;
- memspace = H5Screate_simple(RANKC, col_dims, NULL);
-
- /*
- * Define the column (hyperslab) to read.
- */
- offset[0] = 0;
- offset[1] = 2;
- count[0] = 10;
- count[1] = 1;
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL,
- count, NULL);
- status = H5Dread(dataset, H5T_NATIVE_INT, memspace, filespace,
- H5P_DEFAULT, column);
- printf("\n");
- printf("Third column: \n");
- for (i = 0; i < 10; i++) {
- printf("%d \n", column[i]);
- }
-
- /*
- * Third column:
- * 1
- * 1
- * 1
- * 0
- * 0
- * 0
- * 0
- * 0
- * 0
- * 0
- */
-
- /*
- * Define the memory space to read a chunk.
- */
- memspace = H5Screate_simple(rank_chunk,chunk_dims,NULL);
-
- /*
- * Define chunk in the file (hyperslab) to read.
- */
- offset[0] = 2;
- offset[1] = 0;
- count[0] = chunk_dims[0];
- count[1] = chunk_dims[1];
- status = H5Sselect_hyperslab(filespace, H5S_SELECT_SET, offset, NULL,
- count, NULL);
-
- /*
- * Read chunk back and display.
- */
- status = H5Dread(dataset, H5T_NATIVE_INT, memspace, filespace,
- H5P_DEFAULT, chunk_out);
- printf("\n");
- printf("Chunk: \n");
- for (j = 0; j < chunk_dims[0]; j++) {
- for (i = 0; i < chunk_dims[1]; i++) printf("%d ", chunk_out[j][i]);
- printf("\n");
- }
- /*
- * Chunk:
- * 1 1 1 0 0
- * 2 0 0 0 0
- */
-
- /*
- * Close/release resources.
- */
- H5Pclose(cparms);
- H5Dclose(dataset);
- H5Sclose(filespace);
- H5Sclose(memspace);
- H5Fclose(file);
-
- return 0;
-}
-
-</pre>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="CreateGroups"><A NAME="_Toc429885330"></A>Example 7. Creating groups.</A></H4>
-<P>This example shows how to create and access a group in an
-HDF5 file and to place a dataset within this group.
-It also illustrates the usage of the <code>H5Giterate</code>,
-<code>H5Glink</code>, and <code>H5Gunlink</code> functions.
-
-<PRE>
-<!-- Insert Example 7, h5_group.c, here. -->
-/*
- * This example creates a group in the file and dataset in the group.
- * Hard link to the group object is created and the dataset is accessed
- * under different names.
- * Iterator function is used to find the object names in the root group.
- */
-
-
-#include "hdf5.h"
-
-
-#define FILE "group.h5"
-#define RANK 2
-
-
-herr_t file_info(hid_t loc_id, const char *name, void *opdata);
- /* Operator function */
-int
-main(void)
-{
-
- hid_t file;
- hid_t grp;
- hid_t dataset, dataspace;
- hid_t plist;
-
- herr_t status;
- hsize_t dims[2];
- hsize_t cdims[2];
-
- int idx;
-
- /*
- * Create a file.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Create a group in the file.
- */
- grp = H5Gcreate(file, "/Data", 0);
-
- /*
- * Create dataset "Compressed Data" in the group using absolute
- * name. Dataset creation property list is modified to use
- * GZIP compression with the compression effort set to 6.
- * Note that compression can be used only when dataset is chunked.
- */
- dims[0] = 1000;
- dims[1] = 20;
- cdims[0] = 20;
- cdims[1] = 20;
- dataspace = H5Screate_simple(RANK, dims, NULL);
- plist = H5Pcreate(H5P_DATASET_CREATE);
- H5Pset_chunk(plist, 2, cdims);
- H5Pset_deflate( plist, 6);
- dataset = H5Dcreate(file, "/Data/Compressed_Data", H5T_NATIVE_INT,
- dataspace, plist);
-
- /*
- * Close the dataset and the file.
- */
- H5Sclose(dataspace);
- H5Dclose(dataset);
- H5Fclose(file);
-
- /*
- * Now reopen the file and group in the file.
- */
- file = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT);
- grp = H5Gopen(file, "Data");
-
- /*
- * Access "Compressed_Data" dataset in the group.
- */
- dataset = H5Dopen(grp, "Compressed_Data");
- if( dataset < 0) printf(" Dataset is not found. \n");
- printf("\"/Data/Compressed_Data\" dataset is open \n");
-
- /*
- * Close the dataset.
- */
- status = H5Dclose(dataset);
-
- /*
- * Create hard link to the Data group.
- */
- status = H5Glink(file, H5G_LINK_HARD, "Data", "Data_new");
-
- /*
- * We can access "Compressed_Data" dataset using created
- * hard link "Data_new".
- */
- dataset = H5Dopen(file, "/Data_new/Compressed_Data");
- if( dataset < 0) printf(" Dataset is not found. \n");
- printf("\"/Data_new/Compressed_Data\" dataset is open \n");
-
- /*
- * Close the dataset.
- */
- status = H5Dclose(dataset);
-
- /*
- * Use iterator to see the names of the objects in the file
- * root directory.
- */
- idx = H5Giterate(file, "/", NULL, file_info, NULL);
-
- /*
- * Unlink name "Data" and use iterator to see the names
- * of the objects in the file root direvtory.
- */
- if (H5Gunlink(file, "Data") < 0)
- printf(" H5Gunlink failed \n");
- else
- printf("\"Data\" is unlinked \n");
-
- idx = H5Giterate(file, "/", NULL, file_info, NULL);
-
-
- /*
- * Close the file.
- */
-
- status = H5Fclose(file);
-
- return 0;
-}
-/*
- * Operator function.
- */
-herr_t
-file_info(hid_t loc_id, const char *name, void *opdata)
-{
- hid_t grp;
- /*
- * Open the group using its name.
- */
- grp = H5Gopen(loc_id, name);
-
- /*
- * Display group name.
- */
- printf("\n");
- printf("Name : ");
- puts(name);
-
- H5Gclose(grp);
- return 0;
- }
-</pre>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="_Toc429885332"><A NAME="ReadWriteAttributes">Example 8</A>. Writing and reading attributes.</A></H4>
-<P>This example shows how to create HDF5 attributes, to attach them to a dataset, and to read through all of the attributes of a dataset.
-
-<pre>
-<!-- Insert Example 8, h5_attribute.c, here. -->
-/*
- * This program illustrates the usage of the H5A Interface functions.
- * It creates and writes a dataset, and then creates and writes array,
- * scalar, and string attributes of the dataset.
- * Program reopens the file, attaches to the scalar attribute using
- * attribute name and reads and displays its value. Then index of the
- * third attribute is used to read and display attribute values.
- * The H5Aiterate function is used to iterate through the dataset attributes,
- * and display their names. The function is also reads and displays the values
- * of the array attribute.
- */
-
-#include <stdlib.h>
-#include <hdf5.h>
-
-#define FILE "Attributes.h5"
-
-#define RANK 1 /* Rank and size of the dataset */
-#define SIZE 7
-
-#define ARANK 2 /* Rank and dimension sizes of the first dataset attribute */
-#define ADIM1 2
-#define ADIM2 3
-#define ANAME "Float attribute" /* Name of the array attribute */
-#define ANAMES "Character attribute" /* Name of the string attribute */
-
-herr_t attr_info(hid_t loc_id, const char *name, void *opdata);
- /* Operator function */
-
-int
-main (void)
-{
-
- hid_t file, dataset; /* File and dataset identifiers */
-
- hid_t fid; /* Dataspace identifier */
- hid_t attr1, attr2, attr3; /* Attribute identifiers */
- hid_t attr;
- hid_t aid1, aid2, aid3; /* Attribute dataspace identifiers */
- hid_t atype; /* Attribute type */
-
- hsize_t fdim[] = {SIZE};
- hsize_t adim[] = {ADIM1, ADIM2}; /* Dimensions of the first attribute */
-
- float matrix[ADIM1][ADIM2]; /* Attribute data */
-
- herr_t ret; /* Return value */
- uint i,j; /* Counters */
- int idx; /* Attribute index */
- char string_out[80]; /* Buffer to read string attribute back */
- int point_out; /* Buffer to read scalar attribute back */
-
- /*
- * Data initialization.
- */
- int vector[] = {1, 2, 3, 4, 5, 6, 7}; /* Dataset data */
- int point = 1; /* Value of the scalar attribute */
- char string[] = "ABCD"; /* Value of the string attribute */
-
-
- for (i=0; i < ADIM1; i++) { /* Values of the array attribute */
- for (j=0; j < ADIM2; j++)
- matrix[i][j] = -1.;
- }
-
- /*
- * Create a file.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Create the dataspace for the dataset in the file.
- */
- fid = H5Screate(H5S_SIMPLE);
- ret = H5Sset_extent_simple(fid, RANK, fdim, NULL);
-
- /*
- * Create the dataset in the file.
- */
- dataset = H5Dcreate(file, "Dataset", H5T_NATIVE_INT, fid, H5P_DEFAULT);
-
- /*
- * Write data to the dataset.
- */
- ret = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL , H5S_ALL, H5P_DEFAULT, vector);
-
- /*
- * Create dataspace for the first attribute.
- */
- aid1 = H5Screate(H5S_SIMPLE);
- ret = H5Sset_extent_simple(aid1, ARANK, adim, NULL);
-
- /*
- * Create array attribute.
- */
- attr1 = H5Acreate(dataset, ANAME, H5T_NATIVE_FLOAT, aid1, H5P_DEFAULT);
-
- /*
- * Write array attribute.
- */
- ret = H5Awrite(attr1, H5T_NATIVE_FLOAT, matrix);
-
- /*
- * Create scalar attribute.
- */
- aid2 = H5Screate(H5S_SCALAR);
- attr2 = H5Acreate(dataset, "Integer attribute", H5T_NATIVE_INT, aid2,
- H5P_DEFAULT);
-
- /*
- * Write scalar attribute.
- */
- ret = H5Awrite(attr2, H5T_NATIVE_INT, &point);
-
- /*
- * Create string attribute.
- */
- aid3 = H5Screate(H5S_SCALAR);
- atype = H5Tcopy(H5T_C_S1);
- H5Tset_size(atype, 4);
- attr3 = H5Acreate(dataset, ANAMES, atype, aid3, H5P_DEFAULT);
-
- /*
- * Write string attribute.
- */
- ret = H5Awrite(attr3, atype, string);
-
- /*
- * Close attribute and file dataspaces.
- */
- ret = H5Sclose(aid1);
- ret = H5Sclose(aid2);
- ret = H5Sclose(aid3);
- ret = H5Sclose(fid);
-
- /*
- * Close the attributes.
- */
- ret = H5Aclose(attr1);
- ret = H5Aclose(attr2);
- ret = H5Aclose(attr3);
-
- /*
- * Close the dataset.
- */
- ret = H5Dclose(dataset);
-
- /*
- * Close the file.
- */
- ret = H5Fclose(file);
-
- /*
- * Reopen the file.
- */
- file = H5Fopen(FILE, H5F_ACC_RDONLY, H5P_DEFAULT);
-
- /*
- * Open the dataset.
- */
- dataset = H5Dopen(file,"Dataset");
-
- /*
- * Attach to the scalar attribute using attribute name, then read and
- * display its value.
- */
- attr = H5Aopen_name(dataset,"Integer attribute");
- ret = H5Aread(attr, H5T_NATIVE_INT, &point_out);
- printf("The value of the attribute \"Integer attribute\" is %d \n", point_out);
- ret = H5Aclose(attr);
-
- /*
- * Attach to the string attribute using its index, then read and display the value.
- */
- attr = H5Aopen_idx(dataset, 2);
- atype = H5Tcopy(H5T_C_S1);
- H5Tset_size(atype, 4);
- ret = H5Aread(attr, atype, string_out);
- printf("The value of the attribute with the index 2 is %s \n", string_out);
- ret = H5Aclose(attr);
- ret = H5Tclose(atype);
-
- /*
- * Get attribute info using iteration function.
- */
- idx = H5Aiterate(dataset, NULL, attr_info, NULL);
-
- /*
- * Close the dataset and the file.
- */
- H5Dclose(dataset);
- H5Fclose(file);
-
- return 0;
-}
-
-/*
- * Operator function.
- */
-herr_t
-attr_info(hid_t loc_id, const char *name, void *opdata)
-{
- hid_t attr, atype, aspace; /* Attribute, datatype and dataspace identifiers */
- int rank;
- hsize_t sdim[64];
- herr_t ret;
- int i;
- size_t npoints; /* Number of elements in the array attribute. */
- float *float_array; /* Pointer to the array attribute. */
- /*
- * Open the attribute using its name.
- */
- attr = H5Aopen_name(loc_id, name);
-
- /*
- * Display attribute name.
- */
- printf("\n");
- printf("Name : ");
- puts(name);
-
- /*
- * Get attribute datatype, dataspace, rank, and dimensions.
- */
- atype = H5Aget_type(attr);
- aspace = H5Aget_space(attr);
- rank = H5Sget_simple_extent_ndims(aspace);
- ret = H5Sget_simple_extent_dims(aspace, sdim, NULL);
-
- /*
- * Display rank and dimension sizes for the array attribute.
- */
-
- if(rank > 0) {
- printf("Rank : %d \n", rank);
- printf("Dimension sizes : ");
- for (i=0; i< rank; i++) printf("%d ", (int)sdim[i]);
- printf("\n");
- }
-
- /*
- * Read array attribute and display its type and values.
- */
-
- if (H5T_FLOAT == H5Tget_class(atype)) {
- printf("Type : FLOAT \n");
- npoints = H5Sget_simple_extent_npoints(aspace);
- float_array = (float *)malloc(sizeof(float)*(int)npoints);
- ret = H5Aread(attr, atype, float_array);
- printf("Values : ");
- for( i = 0; i < (int)npoints; i++) printf("%f ", float_array[i]);
- printf("\n");
- free(float_array);
- }
-
- /*
- * Release all identifiers.
- */
- H5Tclose(atype);
- H5Sclose(aspace);
- H5Aclose(attr);
-
- return 0;
-}
-</pre>
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="CreateWriteRefObj">Example 9</A>. Creating and storing references to objects.</A></H4>
-This example creates a group and two datasets and a named datatype
-in the group. References to these four objects are stored in the dataset
-in the root group.
-
-<PRE>
-
-#include &lt;hdf5.h&gt;
-
-#define FILE1 "trefer1.h5"
-
-/* 1-D dataset with fixed dimensions */
-#define SPACE1_NAME "Space1"
-#define SPACE1_RANK 1
-#define SPACE1_DIM1 4
-
-/* 2-D dataset with fixed dimensions */
-#define SPACE2_NAME "Space2"
-#define SPACE2_RANK 2
-#define SPACE2_DIM1 10
-#define SPACE2_DIM2 10
-
-int
-main(void) {
- hid_t fid1; /* HDF5 File IDs */
- hid_t dataset; /* Dataset ID */
- hid_t group; /* Group ID */
- hid_t sid1; /* Dataspace ID */
- hid_t tid1; /* Datatype ID */
- hsize_t dims1[] = {SPACE1_DIM1};
- hobj_ref_t *wbuf; /* buffer to write to disk */
- int *tu32; /* Temporary pointer to int data */
- int i; /* counting variables */
- const char *write_comment="Foo!"; /* Comments for group */
- herr_t ret; /* Generic return value */
-
-/* Compound datatype */
-typedef struct s1_t {
- unsigned int a;
- unsigned int b;
- float c;
-} s1_t;
-
- /* Allocate write buffers */
- wbuf=(hobj_ref_t *)malloc(sizeof(hobj_ref_t)*SPACE1_DIM1);
- tu32=malloc(sizeof(int)*SPACE1_DIM1);
-
- /* Create file */
- fid1 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /* Create dataspace for datasets */
- sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL);
-
- /* Create a group */
- group=H5Gcreate(fid1,"Group1",-1);
-
- /* Set group's comment */
- ret=H5Gset_comment(group,".",write_comment);
-
- /* Create a dataset (inside Group1) */
- dataset=H5Dcreate(group,"Dataset1",H5T_STD_U32LE,sid1,H5P_DEFAULT);
-
- for(i=0; i &lt; SPACE1_DIM1; i++)
- tu32[i] = i*3;
-
- /* Write selection to disk */
- ret=H5Dwrite(dataset,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,tu32);
-
- /* Close Dataset */
- ret = H5Dclose(dataset);
-
- /* Create another dataset (inside Group1) */
- dataset=H5Dcreate(group,"Dataset2",H5T_NATIVE_UCHAR,sid1,H5P_DEFAULT);
-
- /* Close Dataset */
- ret = H5Dclose(dataset);
-
- /* Create a datatype to refer to */
- tid1 = H5Tcreate (H5T_COMPOUND, sizeof(s1_t));
-
- /* Insert fields */
- ret=H5Tinsert (tid1, "a", HOFFSET(s1_t,a), H5T_NATIVE_INT);
-
- ret=H5Tinsert (tid1, "b", HOFFSET(s1_t,b), H5T_NATIVE_INT);
-
- ret=H5Tinsert (tid1, "c", HOFFSET(s1_t,c), H5T_NATIVE_FLOAT);
-
- /* Save datatype for later */
- ret=H5Tcommit (group, "Datatype1", tid1);
-
- /* Close datatype */
- ret = H5Tclose(tid1);
-
- /* Close group */
- ret = H5Gclose(group);
-
- /* Create a dataset to store references */
- dataset=H5Dcreate(fid1,"Dataset3",H5T_STD_REF_OBJ,sid1,H5P_DEFAULT);
-
- /* Create reference to dataset */
- ret = H5Rcreate(&wbuf[0],fid1,"/Group1/Dataset1",H5R_OBJECT,-1);
-
- /* Create reference to dataset */
- ret = H5Rcreate(&wbuf[1],fid1,"/Group1/Dataset2",H5R_OBJECT,-1);
-
- /* Create reference to group */
- ret = H5Rcreate(&wbuf[2],fid1,"/Group1",H5R_OBJECT,-1);
-
- /* Create reference to named datatype */
- ret = H5Rcreate(&wbuf[3],fid1,"/Group1/Datatype1",H5R_OBJECT,-1);
-
- /* Write selection to disk */
- ret=H5Dwrite(dataset,H5T_STD_REF_OBJ,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf);
-
- /* Close disk dataspace */
- ret = H5Sclose(sid1);
-
- /* Close Dataset */
- ret = H5Dclose(dataset);
-
- /* Close file */
- ret = H5Fclose(fid1);
- free(wbuf);
- free(tu32);
- return 0;
-}
-
-</PRE>
-
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="ReadRefObj">Example 10</A>. Reading references to objects.</A></H4>
-This example opens and reads dataset <code>Dataset3</code> from
-the file created in Example 9. Then the program dereferences the references
-to dataset <code>Dataset1</code>, the group and the named datatype,
-and opens those objects.
-The program reads and displays the dataset's data, the group's comment, and
-the number of members of the compound datatype.
-
-
-<PRE>
-
-#include &lt;stdlib.h&gt;
-#include &lt;hdf5.h&gt;
-
-#define FILE1 "trefer1.h5"
-
-/* dataset with fixed dimensions */
-#define SPACE1_NAME "Space1"
-#define SPACE1_RANK 1
-#define SPACE1_DIM1 4
-
-int
-main(void)
-{
- hid_t fid1; /* HDF5 File IDs */
- hid_t dataset, /* Dataset ID */
- dset2; /* Dereferenced dataset ID */
- hid_t group; /* Group ID */
- hid_t sid1; /* Dataspace ID */
- hid_t tid1; /* Datatype ID */
- hobj_ref_t *rbuf; /* buffer to read from disk */
- int *tu32; /* temp. buffer read from disk */
- int i; /* counting variables */
- char read_comment[10];
- herr_t ret; /* Generic return value */
-
- /* Allocate read buffers */
- rbuf = malloc(sizeof(hobj_ref_t)*SPACE1_DIM1);
- tu32 = malloc(sizeof(int)*SPACE1_DIM1);
-
- /* Open the file */
- fid1 = H5Fopen(FILE1, H5F_ACC_RDWR, H5P_DEFAULT);
-
- /* Open the dataset */
- dataset=H5Dopen(fid1,"/Dataset3");
-
- /* Read selection from disk */
- ret=H5Dread(dataset,H5T_STD_REF_OBJ,H5S_ALL,H5S_ALL,H5P_DEFAULT,rbuf);
-
- /* Open dataset object */
- dset2 = H5Rdereference(dataset,H5R_OBJECT,&rbuf[0]);
-
- /* Check information in referenced dataset */
- sid1 = H5Dget_space(dset2);
-
- ret=H5Sget_simple_extent_npoints(sid1);
-
- /* Read from disk */
- ret=H5Dread(dset2,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,tu32);
- printf("Dataset data : \n");
- for (i=0; i &lt; SPACE1_DIM1 ; i++) printf (" %d ", tu32[i]);
- printf("\n");
- printf("\n");
-
- /* Close dereferenced Dataset */
- ret = H5Dclose(dset2);
-
- /* Open group object */
- group = H5Rdereference(dataset,H5R_OBJECT,&rbuf[2]);
-
- /* Get group's comment */
- ret=H5Gget_comment(group,".",10,read_comment);
- printf("Group comment is %s \n", read_comment);
- printf(" \n");
- /* Close group */
- ret = H5Gclose(group);
-
- /* Open datatype object */
- tid1 = H5Rdereference(dataset,H5R_OBJECT,&rbuf[3]);
-
- /* Verify correct datatype */
- {
- H5T_class_t tclass;
-
- tclass= H5Tget_class(tid1);
- if ((tclass == H5T_COMPOUND))
- printf ("Number of compound datatype members is %d \n", H5Tget_nmembers(tid1));
- printf(" \n");
- }
-
- /* Close datatype */
- ret = H5Tclose(tid1);
-
- /* Close Dataset */
- ret = H5Dclose(dataset);
-
- /* Close file */
- ret = H5Fclose(fid1);
-
- /* Free memory buffers */
- free(rbuf);
- free(tu32);
- return 0;
-}
-
-</PRE>
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="CreateWriteRefReg">Example 11</A>. Creating and writing a reference to a region.</A></H4>
-
-This example creates a dataset in the file. Then it creates a dataset
-to store references to the dataset regions (selections).
-The first selection is a 6 x 6 hyperslab.
-The second selection is a point selection in the same dataset.
-References to both selections are created and stored in the buffer,
-and then written to the dataset in the file.
-
-<pre>
-#include &lt;stdlib.h&gt;
-#include &lt;hdf5.h&gt;
-
-#define FILE2 "trefer2.h5"
-#define SPACE1_NAME "Space1"
-#define SPACE1_RANK 1
-#define SPACE1_DIM1 4
-
-/* Dataset with fixed dimensions */
-#define SPACE2_NAME "Space2"
-#define SPACE2_RANK 2
-#define SPACE2_DIM1 10
-#define SPACE2_DIM2 10
-
-/* Element selection information */
-#define POINT1_NPOINTS 10
-
-int
-main(void)
-{
- hid_t fid1; /* HDF5 File IDs */
- hid_t dset1, /* Dataset ID */
- dset2; /* Dereferenced dataset ID */
- hid_t sid1, /* Dataspace ID #1 */
- sid2; /* Dataspace ID #2 */
- hsize_t dims1[] = {SPACE1_DIM1},
- dims2[] = {SPACE2_DIM1, SPACE2_DIM2};
- hsize_t start[SPACE2_RANK]; /* Starting location of hyperslab */
- hsize_t stride[SPACE2_RANK]; /* Stride of hyperslab */
- hsize_t count[SPACE2_RANK]; /* Element count of hyperslab */
- hsize_t block[SPACE2_RANK]; /* Block size of hyperslab */
- hsize_t coord1[POINT1_NPOINTS][SPACE2_RANK];
- /* Coordinates for point selection */
- hdset_reg_ref_t *wbuf; /* buffer to write to disk */
- int *dwbuf; /* Buffer for writing numeric data to disk */
- int i; /* counting variables */
- herr_t ret; /* Generic return value */
-
-
- /* Allocate write & read buffers */
- wbuf=calloc(sizeof(hdset_reg_ref_t), SPACE1_DIM1);
- dwbuf=malloc(sizeof(int)*SPACE2_DIM1*SPACE2_DIM2);
-
- /* Create file */
- fid1 = H5Fcreate(FILE2, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /* Create dataspace for datasets */
- sid2 = H5Screate_simple(SPACE2_RANK, dims2, NULL);
-
- /* Create a dataset */
- dset2=H5Dcreate(fid1,"Dataset2",H5T_STD_U8LE,sid2,H5P_DEFAULT);
-
- for(i=0; i &lt; SPACE2_DIM1*SPACE2_DIM2; i++)
- dwbuf[i]=i*3;
-
- /* Write selection to disk */
- ret=H5Dwrite(dset2,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,dwbuf);
-
- /* Close Dataset */
- ret = H5Dclose(dset2);
-
- /* Create dataspace for the reference dataset */
- sid1 = H5Screate_simple(SPACE1_RANK, dims1, NULL);
-
- /* Create a dataset */
- dset1=H5Dcreate(fid1,"Dataset1",H5T_STD_REF_DSETREG,sid1,H5P_DEFAULT);
-
- /* Create references */
-
- /* Select 6x6 hyperslab for first reference */
- start[0]=2; start[1]=2;
- stride[0]=1; stride[1]=1;
- count[0]=6; count[1]=6;
- block[0]=1; block[1]=1;
- ret = H5Sselect_hyperslab(sid2,H5S_SELECT_SET,start,stride,count,block);
-
- /* Store first dataset region */
- ret = H5Rcreate(&wbuf[0],fid1,"/Dataset2",H5R_DATASET_REGION,sid2);
-
- /* Select sequence of ten points for second reference */
- coord1[0][0]=6; coord1[0][1]=9;
- coord1[1][0]=2; coord1[1][1]=2;
- coord1[2][0]=8; coord1[2][1]=4;
- coord1[3][0]=1; coord1[3][1]=6;
- coord1[4][0]=2; coord1[4][1]=8;
- coord1[5][0]=3; coord1[5][1]=2;
- coord1[6][0]=0; coord1[6][1]=4;
- coord1[7][0]=9; coord1[7][1]=0;
- coord1[8][0]=7; coord1[8][1]=1;
- coord1[9][0]=3; coord1[9][1]=3;
- ret = H5Sselect_elements(sid2,H5S_SELECT_SET,POINT1_NPOINTS,(const hsize_t **)coord1);
-
- /* Store second dataset region */
- ret = H5Rcreate(&wbuf[1],fid1,"/Dataset2",H5R_DATASET_REGION,sid2);
-
- /* Write selection to disk */
- ret=H5Dwrite(dset1,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,wbuf);
-
- /* Close all objects */
- ret = H5Sclose(sid1);
- ret = H5Dclose(dset1);
- ret = H5Sclose(sid2);
-
- /* Close file */
- ret = H5Fclose(fid1);
-
- free(wbuf);
- free(dwbuf);
- return 0;
-}
-
-</pre>
-
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<H4><A NAME="ReadRefReg">Example 12</A>. Reading a reference to a region.</A></H4>
-
-This example reads a dataset containing dataset region references.
-It reads data from the dereferenced dataset and displays the number of
-elements and raw data. Then it reads two selections:
-a hyperslab selection and a point selection. The program queries a
-number of points in the hyperslab and the coordinates and displays them.
-Then it queries a number of selected points and their coordinates and
-displays the information.
-
-<PRE>
-
-#include &lt;stdlib.h&gt;
-#include &lt;hdf5.h&gt;
-
-#define FILE2 "trefer2.h5"
-#define NPOINTS 10
-
-/* 1-D dataset with fixed dimensions */
-#define SPACE1_NAME "Space1"
-#define SPACE1_RANK 1
-#define SPACE1_DIM1 4
-
-/* 2-D dataset with fixed dimensions */
-#define SPACE2_NAME "Space2"
-#define SPACE2_RANK 2
-#define SPACE2_DIM1 10
-#define SPACE2_DIM2 10
-
-int
-main(void)
-{
- hid_t fid1; /* HDF5 File IDs */
- hid_t dset1, /* Dataset ID */
- dset2; /* Dereferenced dataset ID */
- hid_t sid1, /* Dataspace ID #1 */
- sid2; /* Dataspace ID #2 */
- hsize_t * coords; /* Coordinate buffer */
- hsize_t low[SPACE2_RANK]; /* Selection bounds */
- hsize_t high[SPACE2_RANK]; /* Selection bounds */
- hdset_reg_ref_t *rbuf; /* buffer to to read disk */
- int *drbuf; /* Buffer for reading numeric data from disk */
- int i, j; /* counting variables */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
-
- /* Allocate write & read buffers */
- rbuf=malloc(sizeof(hdset_reg_ref_t)*SPACE1_DIM1);
- drbuf=calloc(sizeof(int),SPACE2_DIM1*SPACE2_DIM2);
-
- /* Open the file */
- fid1 = H5Fopen(FILE2, H5F_ACC_RDWR, H5P_DEFAULT);
-
- /* Open the dataset */
- dset1=H5Dopen(fid1,"/Dataset1");
-
- /* Read selection from disk */
- ret=H5Dread(dset1,H5T_STD_REF_DSETREG,H5S_ALL,H5S_ALL,H5P_DEFAULT,rbuf);
-
- /* Try to open objects */
- dset2 = H5Rdereference(dset1,H5R_DATASET_REGION,&rbuf[0]);
-
- /* Check information in referenced dataset */
- sid1 = H5Dget_space(dset2);
-
- ret=H5Sget_simple_extent_npoints(sid1);
- printf(" Number of elements in the dataset is : %d\n",ret);
-
- /* Read from disk */
- ret=H5Dread(dset2,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,drbuf);
-
- for(i=0; i &lt; SPACE2_DIM1; i++) {
- for (j=0; j &lt; SPACE2_DIM2; j++) printf (" %d ", drbuf[i*SPACE2_DIM2+j]);
- printf("\n"); }
-
- /* Get the hyperslab selection */
- sid2=H5Rget_region(dset1,H5R_DATASET_REGION,&rbuf[0]);
-
- /* Verify correct hyperslab selected */
- ret = H5Sget_select_npoints(sid2);
- printf(" Number of elements in the hyperslab is : %d \n", ret);
- ret = H5Sget_select_hyper_nblocks(sid2);
- coords=malloc(ret*SPACE2_RANK*sizeof(hsize_t)*2); /* allocate space for the hyperslab blocks */
- ret = H5Sget_select_hyper_blocklist(sid2,0,ret,coords);
- printf(" Hyperslab coordinates are : \n");
- printf (" ( %lu , %lu ) ( %lu , %lu ) \n", \
-(unsigned long)coords[0],(unsigned long)coords[1],(unsigned long)coords[2],(unsigned long)coords[3]);
- free(coords);
- ret = H5Sget_select_bounds(sid2,low,high);
-
- /* Close region space */
- ret = H5Sclose(sid2);
-
- /* Get the element selection */
- sid2=H5Rget_region(dset1,H5R_DATASET_REGION,&rbuf[1]);
-
- /* Verify correct elements selected */
- ret = H5Sget_select_elem_npoints(sid2);
- printf(" Number of selected elements is : %d\n", ret);
-
- /* Allocate space for the element points */
- coords= malloc(ret*SPACE2_RANK*sizeof(hsize_t));
- ret = H5Sget_select_elem_pointlist(sid2,0,ret,coords);
- printf(" Coordinates of selected elements are : \n");
- for (i=0; i &lt; 2*NPOINTS; i=i+2)
- printf(" ( %lu , %lu ) \n", (unsigned long)coords[i],(unsigned long)coords[i+1]);
-
- free(coords);
- ret = H5Sget_select_bounds(sid2,low,high);
-
- /* Close region space */
- ret = H5Sclose(sid2);
-
- /* Close first space */
- ret = H5Sclose(sid1);
-
- /* Close dereferenced Dataset */
- ret = H5Dclose(dset2);
-
- /* Close Dataset */
- ret = H5Dclose(dset1);
-
- /* Close file */
- ret = H5Fclose(fid1);
-
- /* Free memory buffers */
- free(rbuf);
- free(drbuf);
- return 0;
-}
-
-</PRE>
-
-
-<P>&nbsp;
-<p align=right><font size=-1><a href="#IEx-TOC">(Return to TOC)</a></font>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_Intro.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="../H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-<a href="../RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
-<a href="../index.html">Other HDF5 documents and links</a>&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><address>
-<table width=100% border=0>
-<tr><td align=left valign=top>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem -->
-
-Last modified: 3 August 2004
-
-</td><td align=right valign=top>
-<a href="../Copyright.html">Copyright</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-
-
-</BODY>
-</HTML>
diff --git a/doc/html/Intro/Makefile.am b/doc/html/Intro/Makefile.am
deleted file mode 100644
index 0cbc3a6..0000000
--- a/doc/html/Intro/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir=$(docdir)/hdf5/Intro
-
-# Public doc files (to be installed)...
-localdoc_DATA=IntroExamples.html
diff --git a/doc/html/Intro/Makefile.in b/doc/html/Intro/Makefile.in
deleted file mode 100644
index 5c71f3c..0000000
--- a/doc/html/Intro/Makefile.in
+++ /dev/null
@@ -1,485 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html/Intro
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(localdocdir)"
-localdocDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(localdoc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdir)/hdf5/Intro
-
-# Public doc files (to be installed)...
-localdoc_DATA = IntroExamples.html
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Intro/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/Intro/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-localdocDATA: $(localdoc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(localdocdir)" || $(mkdir_p) "$(DESTDIR)$(localdocdir)"
- @list='$(localdoc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(localdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(localdocdir)/$$f'"; \
- $(localdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-uninstall-localdocDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(localdoc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(localdocdir)/$$f'"; \
- rm -f "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(localdocdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-localdocDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-localdocDATA
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-localdocDATA install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-info-am \
- uninstall-localdocDATA
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/Lib_Maint.html b/doc/html/Lib_Maint.html
deleted file mode 100644
index bff638c..0000000
--- a/doc/html/Lib_Maint.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<pre>
-Information for HDF5 maintainers:
-
-* You can run make from any directory. However, running in a
- subdirectory only knows how to build things in that directory and
- below. However, all makefiles know when their target depends on
- something outside the local directory tree:
-
- $ cd test
- $ make
- make: *** No rule to make target ../src/libhdf5.a
-
-* All Makefiles understand the following targets:
-
- all -- build locally.
- install -- install libs, headers, progs.
- uninstall -- remove installed files.
- mostlyclean -- remove temp files (eg, *.o but not *.a).
- clean -- mostlyclean plus libs and progs.
- distclean -- all non-distributed files.
- maintainer-clean -- all derived files but H5config.h.in and configure.
-
-* Most Makefiles also understand:
-
- TAGS -- build a tags table
- dep, depend -- recalculate source dependencies
- lib -- build just the libraries w/o programs
-
-* If you have personal preferences for which make, compiler, compiler
- flags, preprocessor flags, etc., that you use and you don't want to
- set environment variables, then use a site configuration file.
-
- When configure starts, it looks in the config directory for files
- whose name is some combination of the CPU name, vendor, and
- operating system in this order:
-
- CPU-VENDOR-OS
- VENDOR-OS
- CPU-VENDOR
- OS
- VENDOR
- CPU
-
- The first file which is found is sourced and can therefore affect
- the behavior of the rest of configure. See config/BlankForm for the
- template.
-
-* If you use GNU make along with gcc the Makefile will contain targets
- that automatically maintain a list of source interdependencies; you
- seldom have to say `make clean'. I say `seldom' because if you
- change how one `*.h' file includes other `*.h' files you'll have
- to force an update.
-
- To force an update of all dependency information remove the
- `.depend' file from each directory and type `make'. For
- instance:
-
- $ cd $HDF5_HOME
- $ find . -name .depend -exec rm {} \;
- $ make
-
- If you're not using GNU make and gcc then dependencies come from
- ".distdep" files in each directory. Those files are generated on
- GNU systems and inserted into the Makefile's by running
- config.status (which happens near the end of configure).
-
-* If you use GNU make along with gcc then the Perl script `trace' is
- run just before dependencies are calculated to update any H5TRACE()
- calls that might appear in the file. Otherwise, after changing the
- type of a function (return type or argument types) one should run
- `trace' manually on those source files (e.g., ../bin/trace *.c).
-
-* Object files stay in the directory and are added to the library as a
- final step instead of placing the file in the library immediately
- and removing it from the directory. The reason is three-fold:
-
- 1. Most versions of make don't allow `$(LIB)($(SRC:.c=.o))'
- which makes it necessary to have two lists of files, one
- that ends with `.c' and the other that has the library
- name wrapped around each `.o' file.
-
- 2. Some versions of make/ar have problems with modification
- times of archive members.
-
- 3. Adding object files immediately causes problems on SMP
- machines where make is doing more than one thing at a
- time.
-
-* When using GNU make on an SMP you can cause it to compile more than
- one thing at a time. At the top of the source tree invoke make as
-
- $ make -j -l6
-
- which causes make to fork as many children as possible as long as
- the load average doesn't go above 6. In subdirectories one can say
-
- $ make -j2
-
- which limits the number of children to two (this doesn't work at the
- top level because the `-j2' is not passed to recursive makes).
-
-* To create a release tarball go to the top-level directory and run
- ./bin/release. You can optionally supply one or more of the words
- `tar', `gzip', `bzip2' or `compress' on the command line. The
- result will be a (compressed) tar file(s) in the `releases'
- directory. The README file is updated to contain the release date
- and version number.
-
-* To create a tarball of all the files which are part of HDF5 go to
- the top-level directory and type:
-
- tar cvf foo.tar `grep '^\.' MANIFEST |unexpand |cut -f1`
-</pre>
diff --git a/doc/html/Makefile.am b/doc/html/Makefile.am
deleted file mode 100644
index 2d89255..0000000
--- a/doc/html/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-# This is the top level makefile of the Doc directory. It mostly just
-# reinvokes make in the various subdirectories.
-# You can alternatively invoke make from each subdirectory manually.
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir=$(docdir)/hdf5
-
-# Subdirectories in build-order
-SUBDIRS=ADGuide Graphics Intro PSandPDF TechNotes Tutor \
- cpplus ed_libs ed_styles fortran
-
-# Public doc files (to be installed)...
-localdoc_DATA=ADGuide.html Attributes.html Big.html Caching.html Chunk_f1.gif \
- Chunk_f2.gif Chunk_f3.gif Chunk_f4.gif Chunk_f5.gif Chunk_f6.gif \
- Chunking.html Coding.html Copyright.html Datasets.html \
- Dataspaces.html Datatypes.html DatatypesEnum.html Debugging.html \
- EnumMap.gif Environment.html Errors.html FF-IH_FileGroup.gif \
- FF-IH_FileObject.gif Files.html Filters.html Glossary.html \
- Groups.html H5.api_map.html H5.format.html H5.intro.html \
- H5.sample_code.html H5.user.PrintGen.html H5.user.PrintTpg.html \
- H5.user.html IH_map1.gif IH_map2.gif IH_map3.gif IH_map4.gif \
- IH_mapFoot.gif IH_mapHead.gif IOPipe.html MountingFiles.html \
- NCSAfooterlogo.gif Performance.html PredefDTypes.html \
- Properties.html RM_H5.html RM_H5A.html RM_H5D.html RM_H5E.html \
- RM_H5F.html RM_H5Front.html RM_H5G.html RM_H5I.html RM_H5P.html \
- RM_H5R.html RM_H5S.html RM_H5T.html RM_H5Z.html References.html \
- TechNotes.html Tools.html Version.html chunk1.gif compat.html \
- dataset_p1.gif ddl.html extern1.gif extern2.gif group_p1.gif \
- group_p2.gif group_p3.gif h5s.examples hdf2.jpg ph5design.html \
- ph5example.c ph5implement.txt pipe1.gif pipe2.gif pipe3.gif \
- pipe4.gif pipe5.gif index.html version.gif
diff --git a/doc/html/Makefile.in b/doc/html/Makefile.in
deleted file mode 100644
index 2f39b5f..0000000
--- a/doc/html/Makefile.in
+++ /dev/null
@@ -1,670 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-# This is the top level makefile of the Doc directory. It mostly just
-# reinvokes make in the various subdirectories.
-# You can alternatively invoke make from each subdirectory manually.
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-exec-recursive install-info-recursive \
- install-recursive installcheck-recursive installdirs-recursive \
- pdf-recursive ps-recursive uninstall-info-recursive \
- uninstall-recursive
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(localdocdir)"
-localdocDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(localdoc_DATA)
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdir)/hdf5
-
-# Subdirectories in build-order
-SUBDIRS = ADGuide Graphics Intro PSandPDF TechNotes Tutor \
- cpplus ed_libs ed_styles fortran
-
-
-# Public doc files (to be installed)...
-localdoc_DATA = ADGuide.html Attributes.html Big.html Caching.html Chunk_f1.gif \
- Chunk_f2.gif Chunk_f3.gif Chunk_f4.gif Chunk_f5.gif Chunk_f6.gif \
- Chunking.html Coding.html Copyright.html Datasets.html \
- Dataspaces.html Datatypes.html DatatypesEnum.html Debugging.html \
- EnumMap.gif Environment.html Errors.html FF-IH_FileGroup.gif \
- FF-IH_FileObject.gif Files.html Filters.html Glossary.html \
- Groups.html H5.api_map.html H5.format.html H5.intro.html \
- H5.sample_code.html H5.user.PrintGen.html H5.user.PrintTpg.html \
- H5.user.html IH_map1.gif IH_map2.gif IH_map3.gif IH_map4.gif \
- IH_mapFoot.gif IH_mapHead.gif IOPipe.html MountingFiles.html \
- NCSAfooterlogo.gif Performance.html PredefDTypes.html \
- Properties.html RM_H5.html RM_H5A.html RM_H5D.html RM_H5E.html \
- RM_H5F.html RM_H5Front.html RM_H5G.html RM_H5I.html RM_H5P.html \
- RM_H5R.html RM_H5S.html RM_H5T.html RM_H5Z.html References.html \
- TechNotes.html Tools.html Version.html chunk1.gif compat.html \
- dataset_p1.gif ddl.html extern1.gif extern2.gif group_p1.gif \
- group_p2.gif group_p3.gif h5s.examples hdf2.jpg ph5design.html \
- ph5example.c ph5implement.txt pipe1.gif pipe2.gif pipe3.gif \
- pipe4.gif pipe5.gif index.html version.gif
-
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-localdocDATA: $(localdoc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(localdocdir)" || $(mkdir_p) "$(DESTDIR)$(localdocdir)"
- @list='$(localdoc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(localdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(localdocdir)/$$f'"; \
- $(localdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-uninstall-localdocDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(localdoc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(localdocdir)/$$f'"; \
- rm -f "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(mkdir_p) "$(distdir)/$$subdir" \
- || exit 1; \
- distdir=`$(am__cd) $(distdir) && pwd`; \
- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
- (cd $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$top_distdir" \
- distdir="$$distdir/$$subdir" \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(localdocdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
- distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-localdocDATA
-
-install-exec-am:
-
-install-info: install-info-recursive
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-localdocDATA
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
- clean clean-generic clean-libtool clean-recursive ctags \
- ctags-recursive distclean distclean-generic distclean-libtool \
- distclean-recursive distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-exec install-exec-am install-info \
- install-info-am install-localdocDATA install-man install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic \
- maintainer-clean-recursive mostlyclean mostlyclean-generic \
- mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
- tags tags-recursive uninstall uninstall-am uninstall-info-am \
- uninstall-localdocDATA
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/MemoryManagement.html b/doc/html/MemoryManagement.html
deleted file mode 100644
index c93dc10..0000000
--- a/doc/html/MemoryManagement.html
+++ /dev/null
@@ -1,510 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Memory Management in HDF5</title>
- </head>
-
- <body>
- <h1>Memory Management in HDF5</h1>
-
- <!-- ---------------------------------------------------------------- -->
- <h2>Is a Memory Manager Necessary?</h2>
-
- <p>Some form of memory management may be necessary in HDF5 when
- the various deletion operators are implemented so that the
- file memory is not permanently orphaned. However, since an
- HDF5 file was designed with persistent data in mind, the
- importance of a memory manager is questionable.
-
- <p>On the other hand, when certain meta data containers (file glue)
- grow, they may need to be relocated in order to keep the
- container contiguous.
-
- <blockquote>
- <b>Example:</b> An object header consists of up to two
- chunks of contiguous memory. The first chunk is a fixed
- size at a fixed location when the header link count is
- greater than one. Thus, inserting additional items into an
- object header may require the second chunk to expand. When
- this occurs, the second chunk may need to move to another
- location in the file, freeing the file memory which that
- chunk originally occupied.
- </blockquote>
-
- <p>The relocation of meta data containers could potentially
- orphan a significant amount of file memory if the application
- has made poor estimates for preallocation sizes.
-
- <!-- ---------------------------------------------------------------- -->
- <h2>Levels of Memory Management</h2>
-
- <p>Memory management by the library can be independent of memory
- management support by the file format. The file format can
- support no memory management, some memory management, or full
- memory management. Similarly with the library.
-
- <h3>Support in the Library</h3>
-
- <dl>
- <dt><b>No Support: I</b>
- <dd>When memory is deallocated it simply becomes unreferenced
- (orphaned) in the file. Memory allocation requests are
- satisfied by extending the file.
-
- <dd>A separate off-line utility can be used to detect the
- unreferenced bytes of a file and "bubble" them up to the end
- of the file and then truncate the file.
-
- <dt><b>Some Support: II</b>
- <dd>The library could support partial memory management all
- the time, or full memory management some of the time.
- Orphaning free blocks instead of adding them to a free list
- should not affect the file integrity, nor should fulfilling
- new requests by extending the file instead of using the free
- list.
-
- <dt><b>Full Support: III</b>
- <dd>The library supports space-efficient memory management by
- always fulfilling allocation requests from the free list when
- possible, and by coalescing adjacent free blocks into a
- single larger free block.
- </dl>
-
- <h3>Support in the File Format</h3>
-
- <dl>
- <dt><b>No Support: A</b>
- <dd>The file format does not support memory management; any
- unreferenced block in the file is assumed to be free. If
- the library supports full memory management then it will
- have to traverse the entire file to determine which blocks
- are unreferenced.
-
- <dt><b>Some Support: B</b>
- <dd>Assuming that unreferenced blocks are free can be
- dangerous in a situation where the file is not consistent.
- For instance, if a directory tree becomes detached from the
- main directory hierarchy, then the detached directory and
- everything that is referenced only through the detached
- directory become unreferenced. File repair utilities will
- be unable to determine which unreferenced blocks need to be
- linked back into the file hierarchy.
-
- <dd>Therefore, it might be useful to keep an unsorted,
- doubly-linked list of free blocks in the file. The library
- can add and remove blocks from the list in constant time,
- and can generate its own internal free-block data structure
- in time proportional to the number of free blocks instead of
- the size of the file. Additionally, a library can use a
- subset of the free blocks, an alternative which is not
- feasible if the file format doesn't support any form of
- memory management.
-
- <dt><b>Full Support: C</b>
- <dd>The file format can mirror library data structures for
- space-efficient memory management. The free blocks are
- linked in unsorted, doubly-linked lists with one list per
- free block size. The heads of the lists are pointed to by a
- B-tree whose nodes are sorted by free block size. At the
- same time, all free blocks are the leaf nodes of another
- B-tree sorted by starting and ending address. When the
- trees are used in combination we can deallocate and allocate
- memory in O(log <em>N</em>) time where <em>N</em> is the
- number of free blocks.
- </dl>
-
- <h3>Combinations of Library and File Format Support</h3>
-
- <p>We now evaluate each combination of library support with file
- support:
-
- <dl>
- <dt><b>I-A</b>
- <dd>If neither the library nor the file support memory
- management, then each allocation request will come from the
- end of the file and each deallocation request is a no-op
- that simply leaves the free block unreferenced.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>No library overhead for allocation or
- deallocation.
- <li>No file traversal required at time of open.
- <li>No data needs to be written back to the file when
- it's closed.
- <li>Trivial to implement (already implemented).
- </ul>
-
- <li>Disadvantages
- <ul>
- <li>Inefficient use of file space.
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities. (Is an
- unreferenced block a free block or orphaned data?)
- </ul>
- </ul>
-
- <dt><b>II-A</b>
- <dd>In order for the library to support memory management, it
- will be required to build the internal free block
- representation by traversing the entire file looking for
- unreferenced blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>Variable amount of library overhead for allocation
- and deallocation depending on how much work the
- library wants to do.
- <li>No data needs to be written back to the file when
- it's closed.
- <li>Might use file space efficiently.
- </ul>
- <li>Disadvantages
- <ul>
- <li>Might use file space inefficiently.
- <li>File traversal required at time of open.
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities.
- <li>Sharing of the free list between processes falls
- outside the HDF5 file format documentation.
- </ul>
- </ul>
-
- <dt><b>III-A</b>
- <dd>In order for the library to support full memory
- management, it will be required to build the internal free
- block representation by traversing the entire file looking
- for unreferenced blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>Efficient use of file space.
- <li>No data needs to be written back to the file when
- it's closed.
- </ul>
- <li>Disadvantages
- <ul>
- <li>Moderate amount of library overhead for allocation
- and deallocation.
- <li>File traversal required at time of open.
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities.
- <li>Sharing of the free list between processes falls
- outside the HDF5 file format documentation.
- </ul>
- </ul>
-
- <dt><b>I-B</b>
- <dd>If the library doesn't support memory management but the
- file format supports some level of management, then a file
- repair utility will have to be run occasionally to reclaim
- unreferenced blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>No library overhead for allocation or
- deallocation.
- <li>No file traversal required at time of open.
- <li>No data needs to be written back to the file when
- it's closed.
- </ul>
- <li>Disadvantages
- <ul>
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities.
- </ul>
- </ul>
-
- <dt><b>II-B</b>
- <dd>Both the library and the file format support some level
- of memory management.
-
- <ul>
- <li>Advantages
- <ul>
- <li>Constant file overhead per allocation or
- deallocation.
- <li>Variable library overhead per allocation or
- deallocation depending on how much work the library
- wants to do.
- <li>Traversal at file open time is on the order of the
- free list size instead of the file size.
- <li>The library has the option of reading only part of
- the free list.
- <li>No data needs to be written at file close time if
- it has been amortized into the cost of allocation
- and deallocation.
- <li>File repair utilties don't have to be run to
- reclaim memory.
- <li>File repair utilities can detect whether an
- unreferenced block is a free block or orphaned data.
- <li>Sharing of the free list between processes might
- be easier.
- <li>Possible efficient use of file space.
- </ul>
- <li>Disadvantages
- <ul>
- <li>Possible inefficient use of file space.
- </ul>
- </ul>
-
- <dt><b>III-B</b>
- <dd>The library provides space-efficient memory management but
- the file format only supports an unsorted list of free
- blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>Constant time file overhead per allocation or
- deallocation.
- <li>No data needs to be written at file close time if
- it has been amortized into the cost of allocation
- and deallocation.
- <li>File repair utilities don't have to be run to
- reclaim memory.
- <li>File repair utilities can detect whether an
- unreferenced block is a free block or orphaned data.
- <li>Sharing of the free list between processes might
- be easier.
- <li>Efficient use of file space.
- </ul>
- <li>Disadvantages
- <ul>
- <li>O(log <em>N</em>) library overhead per allocation or
- deallocation where <em>N</em> is the total number of
- free blocks.
- <li>O(<em>N</em>) time to open a file since the entire
- free list must be read to construct the in-core
- trees used by the library.
- <li>Library is more complicated.
- </ul>
- </ul>
-
- <dt><b>I-C</b>
- <dd>This has the same advantages and disadvantages as I-C with
- the added disadvantage that the file format is much more
- complicated.
-
- <dt><b>II-C</b>
- <dd>If the library only provides partial memory management but
- the file requires full memory management, then this method
- degenerates to the same as II-A with the added disadvantage
- that the file format is much more complicated.
-
- <dt><b>III-C</b>
- <dd>The library and file format both provide complete data
- structures for space-efficient memory management.
-
- <ul>
- <li>Advantages
- <ul>
- <li>Files can be opened in constant time since the
- free list is read on demand and amortised into the
- allocation and deallocation requests.
- <li>No data needs to be written back to the file when
- it's closed.
- <li>File repair utilities don't have to be run to
- reclaim memory.
- <li>File repair utilities can detect whether an
- unreferenced block is a free block or orphaned data.
- <li>Sharing the free list between processes is easy.
- <li>Efficient use of file space.
- </ul>
- <li>Disadvantages
- <ul>
- <li>O(log <em>N</em>) file allocation and deallocation
- cost where <em>N</em> is the total number of free
- blocks.
- <li>O(log <em>N</em>) library allocation and
- deallocation cost.
- <li>Much more complicated file format.
- <li>More complicated library.
- </ul>
- </ul>
-
- </dl>
-
- <!-- ---------------------------------------------------------------- -->
- <h2>The Algorithm for II-B</h2>
-
- <p>The file contains an unsorted, doubly-linked list of free
- blocks. The address of the head of the list appears in the
- super block. Each free block contains the following fields:
-
- <center>
- <table border cellpadding=4 width="60%">
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <th colspan=4>Free Block Signature</th>
-
- <tr align=center>
- <th colspan=4>Total Free Block Size</th>
-
- <tr align=center>
- <th colspan=4>Address of Left Sibling</th>
-
- <tr align=center>
- <th colspan=4>Address of Right Sibling</th>
-
- <tr align=center>
- <th colspan=4><br><br>Remainder of Free Block<br><br><br></th>
- </table>
- </center>
-
- <p>The library reads as much of the free list as convenient when
- convenient and pushes those entries onto stacks. This can
- occur when a file is opened or any time during the life of the
- file. There is one stack for each free block size and the
- stacks are sorted by size in a balanced tree in memory.
-
- <p>Deallocation involves finding the correct stack or creating
- a new one (an O(log <em>K</em>) operation where <em>K</em> is
- the number of stacks), pushing the free block info onto the
- stack (a constant-time operation), and inserting the free
- block into the file free block list (a constant-time operation
- which doesn't necessarily involve any I/O since the free blocks
- can be cached like other objects). No attempt is made to
- coalesce adjacent free blocks into larger blocks.
-
- <p>Allocation involves finding the correct stack (an O(log
- <em>K</em>) operation), removing the top item from the stack
- (a constant-time operation), and removing the block from the
- file free block list (a constant-time operation). If there is
- no free block of the requested size or larger, then the file
- is extended.
-
- <p>To provide sharability of the free list between processes,
- the last step of an allocation will check for the free block
- signature and if it doesn't find one will repeat the process.
- Alternatively, a process can temporarily remove free blocks
- from the file and hold them in it's own private pool.
-
- <p>To summarize...
- <dl>
- <dt>File opening
- <dd>O(<em>N</em>) amortized over the time the file is open,
- where <em>N</em> is the number of free blocks. The library
- can still function without reading any of the file free
- block list.
-
- <dt>Deallocation
- <dd>O(log <em>K</em>) where <em>K</em> is the number of unique
- sizes of free blocks. File access is constant.
-
- <dt>Allocation
- <dd>O(log <em>K</em>). File access is constant.
-
- <dt>File closing
- <dd>O(1) even if the library temporarily removes free
- blocks from the file to hold them in a private pool since
- the pool can still be a linked list on disk.
- </dl>
-
- <!-- ---------------------------------------------------------------- -->
- <h2>The Algorithm for III-C</h2>
-
- <p>The HDF5 file format supports a general B-tree mechanism
- for storing data with keys. If we use a B-tree to represent
- all parts of the file that are free and the B-tree is indexed
- so that a free file chunk can be found if we know the starting
- or ending address, then we can efficiently determine whether a
- free chunk begins or ends at the specified address. Call this
- the <em>Address B-Tree</em>.
-
- <p>If a second B-tree points to a set of stacks where the
- members of a particular stack are all free chunks of the same
- size, and the tree is indexed by chunk size, then we can
- efficiently find the best-fit chunk size for a memory request.
- Call this the <em>Size B-Tree</em>.
-
- <p>All free blocks of a particular size can be linked together
- with an unsorted, doubly-linked, circular list and the left
- and right sibling addresses can be stored within the free
- chunk, allowing us to remove or insert items from the list in
- constant time.
-
- <p>Deallocation of a block fo file memory consists of:
-
- <ol type="I">
- <li>Add the new free block whose address is <em>ADDR</em> to the
- address B-tree.
-
- <ol type="A">
- <li>If the address B-tree contains an entry for a free
- block that ends at <em>ADDR</em>-1 then remove that
- block from the B-tree and from the linked list (if the
- block was the first on the list then the size B-tree
- must be updated). Adjust the size and address of the
- block being freed to include the block just removed from
- the free list. The time required to search for and
- possibly remove the left block is O(log <em>N</em>)
- where <em>N</em> is the number of free blocks.
-
- <li>If the address B-tree contains an entry for the free
- block that begins at <em>ADDR</em>+<em>LENGTH</em> then
- remove that block from the B-tree and from the linked
- list (if the block was the first on the list then the
- size B-tree must be updated). Adjust the size of the
- block being freed to include the block just removed from
- the free list. The time required to search for and
- possibly remove the right block is O(log <em>N</em>).
-
- <li>Add the new (adjusted) block to the address B-tree.
- The time for this operation is O(log <em>N</em>).
- </ol>
-
- <li>Add the new block to the size B-tree and linked list.
-
- <ol type="A">
- <li>If the size B-tree has an entry for this particular
- size, then add the chunk to the tail of the list. This
- is an O(log <em>K</em>) operation where <em>K</em> is
- the number of unique free block sizes.
-
- <li>Otherwise make a new entry in the B-tree for chunks of
- this size. This is also O(log <em>K</em>).
- </ol>
- </ol>
-
- <p>Allocation is similar to deallocation.
-
- <p>To summarize...
-
- <dl>
- <dt>File opening
- <dd>O(1)
-
- <dt>Deallocation
- <dd>O(log <em>N</em>) where <em>N</em> is the total number of
- free blocks. File access time is O(log <em>N</em>).
-
- <dt>Allocation
- <dd>O(log <em>N</em>). File access time is O(log <em>N</em>).
-
- <dt>File closing
- <dd>O(1).
- </dl>
-
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Thu Jul 24 15:16:40 PDT 1997 -->
-<!-- hhmts start -->
-Last modified: Thu Jul 31 14:41:01 EST
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/MountingFiles.html b/doc/html/MountingFiles.html
deleted file mode 100644
index 16f9115..0000000
--- a/doc/html/MountingFiles.html
+++ /dev/null
@@ -1,427 +0,0 @@
-<html>
- <head>
- <title>Mounting Files</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>Mounting Files</h1>
-
- <h2>Purpose</h2>
-
- <p>This document contrasts two methods for mounting an hdf5 file
- on another hdf5 file: the case where the relationship between
- files is a tree and the case where it's a graph. The tree case
- simplifies current working group functions and allows symbolic
- links to point into ancestor files whereas the graph case is
- more consistent with the organization of groups within a
- particular file.
-
- <h2>Definitions</h2>
-
- <p>If file <code>child</code> is mounted on file
- <code>parent</code> at group <code>/mnt</code> in
- <code>parent</code> then the contents of the root group of
- <code>child</code> will appear in the group <code>/mnt</code> of
- <code>parent</code>. The group <code>/mnt</code> is called the
- <em>mount point</em> of the child in the parent.
-
- <h2>Common Features</h2>
-
- <p>These features are common to both mounting schemes.
-
- <ul>
- <li>The previous contents of <code>/mnt</code> in
- <code>parent</code> is temporarily hidden. If objects in that
- group had names from other groups then the objects will still
- be visible by those other names.
-
- <li>The mount point is actually an OID (not a name) so if there
- are other names besides <code>/mnt</code> for that group then
- the root group of the child will be visible in all those
- names.
-
- <li>At most one file can be mounted per mount point but a parent
- can have any number of mounted children.
-
- <li>Name lookups will entail a search through the mount table at
- each stage of the lookup. The search will be O(log
- <em>N</em>) where <em>N</em> is the number of children mounted
- on that file.
-
- <li>Files open for read-only can be mounted on other files that
- are open for read-only. Mounting a file in no way changes the
- contents of the file.
-
- <li>Mounting a child may hide mount points that exist below the
- child's mount point, but it does not otherwise affect mounted
- files.
-
- <li>Hard links cannot cross file boundaries. An object cannot
- be moved or renamed with <code>H5Gmove()</code> in such a way
- that the new location would be in a different file than the
- original location.
-
- <li>The child can be accessed in a manner different from the
- parent. For instance, a read-write child in a read-only
- parent, a parallel child in a serial parent, <em>etc</em>.
-
- <li>If some object in the child is open and the child is
- unmounted and/or closed, the object will remain open and
- accessible until explicitly closed. As in the mountless case,
- the underlying UNIX file will be held open until all member
- objects are closed.
-
- <li>Current working groups that point into a child will remain
- open and usable even after the child has been unmounted and/or
- closed.
-
- <li>Datasets that share a committed datatype must reside in the
- same file as the datatype.
-
- </ul>
-
- <h2>Contrasting Features</h2>
-
- <center>
- <table border width="90%">
- <tr>
- <th width="50%">Tree</th>
- <th width="50%">Graph</th>
- </tr>
-
- <tr valign=top>
- <td>The set of mount-related files makes a tree.</td>
- <td>The set of mount-related files makes a directed
- graph.</td>
- </tr>
-
- <tr valign=top>
- <td>A file can be mounted at only one mount point.</td>
- <td>A file can be mounted at any number of mount points.</td>
- </tr>
-
- <tr valign=top>
- <td>Symbolic links in the child that have a link value which
- is an absolute name can be interpreted with respect to the
- root group of either the child or the root of the mount
- tree, a property which is determined when the child is
- mounted.</td>
- <td>Symbolic links in the child that have a link value which
- is an absolute name are interpreted with respect to the
- root group of the child.</td>
- </tr>
-
- <tr valign=top>
- <td>Closing a child causes it to be unmounted from the
- parent.</td>
- <td>Closing a child has no effect on its relationship with
- the parent. One can continue to access the child contents
- through the parent.</td>
- </tr>
-
- <tr valign=top>
- <td>Closing the parent recursively unmounts and closes all
- mounted children.</td>
- <td>Closing the parent unmounts all children but
- does not close them or unmount their children.</td>
- </tr>
-
- <tr valign=top>
- <td>The current working group functions
- <code>H5Gset()</code>, <code>H5Gpush()</code>, and
- <code>H5Gpop()</code> operate on the root of the mount
- tree.</td>
- <td>The current working group functions operate on the file
- specified by their first argument.</td>
- </tr>
-
- <tr valign=top>
- <td>Absolute name lookups (like for <code>H5Dopen()</code>)
- are always performed with respect to the root of the mount
- tree.</td>
- <td>Absolute name lookups are performed with respect to the
- file specified by the first argument.</td>
- </tr>
-
- <tr valign=top>
- <td>Relative name lookups (like for <code>H5Dopen()</code>)
- are always performed with respect to the specified group
- or the current working group of the root of the mount
- tree.</td>
- <td>Relative name lookups are always performed with respect
- to the specified group or the current working group of the
- file specified by the first argument.</td>
- </tr>
-
- <tr valign=top>
- <td>Mounting a child temporarily hides the current working
- group stack for that child</td>
- <td>Mounting a child has no effect on its current working
- group stack.</td>
- </tr>
-
- <tr valign=top>
- <td>Calling <code>H5Fflush()</code> will flush all files of
- the mount tree regardless of which file is specified as
- the argument.</td>
- <td>Calling <code>H5Fflush()</code> will flush only the
- specified file.</td>
- </tr>
-
-
- </table>
- </center>
-
-
- <h2>Functions</h2>
-
- <dl>
- <dt><code>herr_t H5Fmount(hid_t <em>loc</em>, const char
- *<em>name</em>, hid_t <em>child</em>, hid_t
- <em>plist</em>)</code>
- <dd>The file <em>child</em> is mounted at the specified location
- in the parent. The <em>loc</em> and <em>name</em> specify the
- mount point, a group in the parent. The <em>plist</em>
- argument is an optional mount property list. The call will
- fail if some file is already mounted on the specified group.
-
- <table border>
- <tr>
- <th width="50%">Tree</th>
- <th width="50%">Graph</th>
- </tr>
- <tr valign=top>
- <td>The call will fail if the child is already mounted
- elsewhere.</td>
- <td>A child can be mounted at numerous mount points.</td>
- </tr>
- <tr valign=top>
- <td>The call will fail if the child is an ancestor of the
- parent.</td>
- <td>The mount graph is allowed to have cycles.</td>
- </tr>
- <tr valign=top>
- <td>Subsequently closing the child will cause it to be
- unmounted from the parent.</td>
- <td>Closing the child has no effect on its mount
- relationship with the parent.</td>
- </tr>
- </table>
-
- <br><br>
- <dt><code>herr_t H5Funmount(hid_t <em>loc</em>, const char
- *<em>name</em>)</code>
- <dd>Any file mounted at the group specified by <em>loc</em> and
- <em>name</em> is unmounted. The child is not closed. This
- function fails if no child is mounted at the specified point.
-
- <br><br>
- <dt><code>hid_t H5Pcreate(H5P_MOUNT)</code>
- <dd>Creates and returns a new mount property list initialized
- with default values.
-
- <br><br>
- <dt><code>herr_t H5Pset_symlink_locality(hid_t <em>plist</em>,
- H5G_symlink_t <em>locality</em>)</code>
- <dt><code>herr_t H5Pget_symlink_locality(hid_t <em>plist</em>,
- H5G_symlink_t *<em>locality</em>)</code>
- <dd>These functions exist only for the tree scheme. They set or
- query the property that determines whether symbolic links with
- absolute name value in the child are looked up with respect to
- the child or to the mount root. The possible values are
- <code>H5G_SYMLINK_LOCAL</code> or
- <code>H5G_SYMLINK_GLOBAL</code> (the default).
-
- <br><br>
- <dt><code>hid_t H5Freopen(hid_t <em>file</em>)</code>
- <dd>A file handle is reopened, creating an additional file
- handle. The new file handle refers to the same file but has an
- empty current working group stack.
-
- <table border>
- <tr>
- <th width="50%">Tree</th>
- <th width="50%">Graph</th>
- </tr>
- <tr valign=top>
- <td>The new handle is not mounted but the old handle
- continues to be mounted.</td>
- <td>The new handle is mounted at the same location(s) as
- the original handle.</td>
- </tr>
- </table>
- </dl>
-
- <h2>Example</h2>
-
- <p>A file <code>eos.h5</code> contains data which is constant for
- all problems. The output of a particular physics application is
- dumped into <code>data1.h5</code> and <code>data2.h5</code> and
- the physics expects various constants from <code>eos.h5</code>
- in the <code>eos</code> group of the two data files. Instead of
- copying the contents of <code>eos.h5</code> into every physics
- output file we simply mount <code>eos.h5</code> as a read-only
- child of <code>data1.h5</code> and <code>data2.h5</code>.
-
- <center>
- <table border width="90%">
- <tr><td><h3>Tree</h3><code><pre>
-/* Create data1.h5 */
-data1 = H5Fcreate("data1.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-H5Gclose(H5Gcreate(data1, "/eos", 0));
-H5Gset_comment(data1, "/eos", "EOS mount point");
-
-/* Create data2.h5 */
-data2 = H5Fcreate("data2.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-H5Gclose(H5Gcreate(data2, "/eos", 0));
-H5Gset_comment(data2, "/eos", "EOS mount point");
-
-/* Open eos.h5 and mount it in both files */
-eos1 = H5Fopen("eos.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
-H5Fmount(data1, "/eos", eos1, H5P_DEFAULT);
-eos2 = H5Freopen(eos1);
-H5Fmount(data2, "/eos", eos2, H5P_DEFAULT);
-
- ... physics output ...
-
-H5Fclose(data1);
-H5Fclose(data2);
- </pre></code></td></tr>
- <tr><td><h3>Graph</h3><code><pre>
-/* Create data1.h5 */
-data1 = H5Fcreate("data1.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-H5Gclose(H5Gcreate(data1, "/eos", 0));
-H5Gset_comment(data1, "/eos", "EOS mount point");
-
-/* Create data2.h5 */
-data2 = H5Fcreate("data2.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-H5Gclose(H5Gcreate(data2, "/eos", 0));
-H5Gset_comment(data2, "/eos", "EOS mount point");
-
-/* Open eos.h5 and mount it in both files */
-eos = H5Fopen("eos.h5", H5F_ACC_RDONLY, H5P_DEFAULT);
-H5Fmount(data1, "/eos", eos, H5P_DEFAULT);
-H5Fmount(data2, "/eos", eos, H5P_DEFAULT);
-H5Fclose(eos);
-
- ... physics output ...
-
-H5Fclose(data1);
-H5Fclose(data2);
- </pre></code></td></tr>
- </table>
- </center>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Spring 1999 -->
-<!-- hhmts start -->
-Last modified: 14 October 1999
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/NCSAfooterlogo.gif b/doc/html/NCSAfooterlogo.gif
deleted file mode 100644
index b6b1cff..0000000
--- a/doc/html/NCSAfooterlogo.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/ObjectHeader.txt b/doc/html/ObjectHeader.txt
deleted file mode 100644
index d769377..0000000
--- a/doc/html/ObjectHeader.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-OBJECT HEADERS
---------------
-
-haddr_t
-H5O_new (hdf5_file_t *f, intn nrefs, size_t size_hint)
-
- Creates a new empty object header and returns its address.
- The SIZE_HINT is the initial size of the data portion of the
- object header and NREFS is the number of symbol table entries
- that reference this object header (normally one).
-
- If SIZE_HINT is too small, then at least some default amount
- of space is allocated for the object header.
-
-intn /*num remaining links */
-H5O_link (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- intn adjust) /*link adjustment amount */
-
-
-size_t
-H5O_sizeof (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5O_class_t *type, /*message type or H5O_ANY */
- intn sequence) /*sequence number, usually zero */
-
- Returns the size of a particular instance of a message in an
- object header. When an object header has more than one
- instance of a particular message type, then SEQUENCE indicates
- which instance to return.
-
-void *
-H5O_read (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5G_entry_t *ent, /*optional symbol table entry */
- H5O_class_t *type, /*message type or H5O_ANY */
- intn sequence, /*sequence number, usually zero */
- size_t size, /*size of output message */
- void *mesg) /*output buffer */
-
- Reads a message from the object header into memory.
-
-const void *
-H5O_peek (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5G_entry_t *ent, /*optional symbol table entry */
- H5O_class_t *type, /*type of message or H5O_ANY */
- intn sequence) /*sequence number, usually zero */
-
-haddr_t /*new heap address */
-H5O_modify (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5G_entry_t *ent, /*optional symbol table entry */
- hbool_t *ent_modified, /*entry modification flag */
- H5O_class_t *type, /*message type */
- intn overwrite, /*sequence number or -1 */
- void *mesg) /*the message */
-
-
-
diff --git a/doc/html/PSandPDF/Makefile.am b/doc/html/PSandPDF/Makefile.am
deleted file mode 100644
index 0d85ec4..0000000
--- a/doc/html/PSandPDF/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir=$(docdirc)/hdf5/PSandPDF
-
-# This makefile does nothing; there are no files to install.
diff --git a/doc/html/PSandPDF/Makefile.in b/doc/html/PSandPDF/Makefile.in
deleted file mode 100644
index dcf57ca..0000000
--- a/doc/html/PSandPDF/Makefile.in
+++ /dev/null
@@ -1,453 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html/PSandPDF
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdirc)/hdf5/PSandPDF
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/PSandPDF/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/PSandPDF/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-man install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
- uninstall-info-am
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-
-# This makefile does nothing; there are no files to install.
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/PSandPDF/process.txt b/doc/html/PSandPDF/process.txt
deleted file mode 100644
index 92fe2e6..0000000
--- a/doc/html/PSandPDF/process.txt
+++ /dev/null
@@ -1,218 +0,0 @@
-
-==============================================================================
-Process for Creating PDF Versions of the HDF5 RM and UG from HTML Source Files
-==============================================================================
-
- Last modified: 24 Sep 2004
-
-PDF versions of the HDF5 Reference Manual (RM) and the new HDF5 User's Guide
-(UG) are created from the HTML source at each release of the HDF5 Library.
-The process is managed through two application environments, Macromedia
-DreamWeaver (an HTML editing environment) and HTML doc (a conversion tool).
-This document describes the process in detail for the RM; the process for the
-UG is very similar and will be described in a subsequent update.
-
-
-The HDF5 Reference Manual
--------------------------
-1. Using Macromedia Dreamweaver, define a site that contains all the
- documents within doc/html, including html, image, DreamWeaver library and
- .book files.
-
-2. In the ed_libs directory:
-
- a) Assuming you have your libraries set up for electronic viewing (to
- verify, check that there is nothing more than a commented note and
- an '&nbsp;' in the 3 aforementioned _Null libraries) drop the code
- from the actual library into it's respective Null lib, replacing
- the &nbsp;.
- (EXAMPLE: Take all the code from Footer.lbi and insert it into
- Footer_Null.lbi, taking care not to remove the commented note.)
-
- b) In the now empty library file, add an &nbsp;.
-
- c) Save the libraries and thier respective Null files.
-
- d) With a library still open (not a Null one) choose
- Modify>Library>Update Pages...
- Look in: Entire Site
- Check 'Library Items' in the 'Update:' selection.
- Hit start.
-
-3. In RM_H5P.html:
-
- a) RM_H5P.html contains two versions of the 'C Interfaces' function
- list. One is for print use and one is for electronic use.
- One should be visible and one should be commented out.
- Make sure that the section labelled with
- <!-- FOR USE WITH ELECTRONIC VERSION ---> is commented out.
- (by removing the >s).
-
-
-4. Using HTMLdoc:
-
- a) Open PDF_RM_body.book
-
- b) The Input tab:
- Document Type: Web Page
- Input Files:
- RM_H5Front.html
- RM_H5.html
- RM_H5A.html
- RM_H5D.html
- RM_H5E.html
- RM_H5F.html
- RM_H5G.html
- RM_H5I.html
- RM_H5P.html
- RM_H5R.html
- RM_H5S.html
- RM_H5T.html
- RM_H5Z.html
- Tools.html
- PredefDTypes.html
- Glossary.html
- Logo Image: none
- Title File/Image: none
-
- c) The Output tab:
- Output To: File
- Output Path: H5_RM_body.pdf
- Output Format: PDF
- Output Options: JPEG Big Images
- Compression (not critical, change at will): Slider right above 'Fast'
- JPEG Quality (not critical, change at will): 60
-
- d) The Page tab:
- Page Size: Letter, 2-Sided
- Top: 0.50in, Left: 1.00in, Right: 0.50in, Bottom: 0.50in
- Header: Blank, Blank, Blank
- Footer: Blank, Blank, 1,2,3,...
- Number Up: 1
-
- e) The Colors tab:
- Everything Blank
- Link Style: Plain
-
- f) The Fonts tab:
- Base Font Size: 11.0
- Line Spacing: 1.2
- Body Typeface: Times
- Heading Typeface: Helvetica
- Header/Footer Size: 10.0
- Header/Footer Font: Helvetica
- Character Set: iso-8859-1
- Options: Do Not Check 'Embed Fonts'
-
- g) The PDF tab:
- PDF Version: 1.3
- Page Mode: Document
- Page Layout: Single
- Page Effect: None
- Options: Check 'Include Links'
-
- h) The Security tab:
- Encryption: No
-
- i) The Options tab:
- HTML Editor: Point to Dreamweaver (recommended)
- Browser Width: 680
- GUI Option: Check all 3
-
- j) Save the book file.
-
- k) Verify that the output file (H5_RM_body.pdf) is not open.
-
- l) Generate the document.
-
-5. Open H5_RM_body.pdf
-
- a) Scan through the document page by page to verify that there are no
- elements that should have been eliminated via javascripts or swapped
- library contents.
-
- b) Scan through again looking only for places where page breaks need to
- be added, removed, or relocated. I have found that re-generating the
- document after every pagination correction actually saves time in the
- long run. This is because some pagination corrections that must be
- made may create other problems further down in the document.
- Re-generating the document ensures that every problem you focus on
- won't have to be re-done.
-
- c) When you are sure all the pagination is correct (don't forget to
- start each of the sections included in the Table of Contents on a
- recto) note page numbers for the beginning of each section in the TOC.
-
-6. Open RM_TOC.html
-
- a) Edit page numbers accordingly.
- (Note: Assuming the general format of RM_H5Front remains the same,
- the 'Overview' listing in the TOC should always be on pg. 1, and
- the 'Fortran90 and C++ APIs' listing should be on pg. 2, an
- exepction to the recto-rule.)
-
- b) Save.
-
-7. Using HTMLdoc:
-
- a) Open PDF_RM_front.book
-
- b) The Input tab:
- Document Type: Web Page
- Input Files:
- RM_Title.html
- Copyright.html
- RM_TOC.html
- Logo Image: none
- Title File/Image: none
-
- c) The Output tab:
- Output To: File
- Output Path: H5_RM_front.pdf
- Output Format: PDF
- Output Options: JPEG Big Images
- Compression (not critical, change at will): Slider right above 'Fast'
- JPEG Quality (not critical, change at will): 60
-
- d) The Page tab:
- Page Size: Letter, 2-Sided
- Top: 0.50in, Left: 1.00in, Right: 0.50in, Bottom: 0.50in
- Header: Blank, Blank, Blank
- Footer: Blank, Blank, Blank
- Number Up: 1
-
- e) The Colors tab:
- Everything Blank
- Link Style: Plain
-
- f) The Fonts tab:
- Base Font Size: 11.0
- Line Spacing: 1.2
- Body Typeface: Times
- Heading Typeface: Helvetica
- Header/Footer Size: 10.0
- Header/Footer Font: Helvetica
- Character Set: iso-8859-1
- Options: Do Not Check 'Embed Fonts'
-
- g) The PDF tab:
- PDF Version: 1.3
- Page Mode: Document
- Page Layout: Single
- Page Effect: None
- Options: Check 'Include Links'
-
- h) The Security tab:
- Encryption: No
-
- i) The Options tab:
- HTML Editor: Point to Dreamweaver (recommended)
- Browser Width: 680
- GUI Options: Check all 3
-
- j) Save the book file.
-
- k) Verify that the output file (H5_RM_front.pdf) is not open.
-
- l) Generate the document.
-
diff --git a/doc/html/Performance.html b/doc/html/Performance.html
deleted file mode 100644
index 25db8f4..0000000
--- a/doc/html/Performance.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Performance</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>Performance Analysis and Issues</h1>
-
- <h2>1. Introduction</h2>
-
- <p>This section includes brief discussions of performance issues
- in HDF5 and performance analysis tools for HDF5 or pointers to
- such discussions.
-
- <h2>2. Dataset Chunking</h2>
-
- Appropriate dataset chunking can make a siginificant difference
- in HDF5 performance. This topic is discussed in
- <a href="Chunking.html">Dataset Chunking Issues</a> elsewhere
- in this <cite>User's Guide</cite>.
-
- <a name="Freespace">
- <h2>3. Freespace Management</h2>
- </a>
-
- <p>HDF5 does not yet manage freespace as effectively as it might.
- While a file is opened, the library actively tracks and re-uses
- <em>freespace</em>, i.e., space that is freed (or released)
- during the run.
- But the library does not yet manage freespace across the
- closing and reopening of a file; when a file is closed,
- all knowledge of available freespace is lost.
- What was freespace becomes an unusable <em>hole</em> in the file.
-
- <p>There are several circumstances that can result in freespace
- in an HDF5 file:
- <ul>
- <li>Reading then rewriting a dataset or compressed dataset
- chunk.<sup><a href="#footcchunk">1</a></sup>
- <ul>
- <li>If the rewritten dataset or compressed chunk is the same
- size as or smaller than the original, it will be written
- to the same file location.
- <li>If, however, the dataset or compressed chunk is larger
- than the original, it will be written contiguously elsewhere
- in the file, leaving freespace at the original location.
- <li>If the rewritten dataset or compressed chunk is
- substantially smaller than the original, the remaining
- space will be released and identified as freespace.
- </ul>
- <li>Deleting (or unlinking) a dataset or group.
- <ul>
- <li>If an object, such as a dataset, group, or named datatype,
- is deleted (normally with <code>H5Gunlink</code>),
- the space previously occupied by the object is released
- and identified as freespace.
- </ul>
- </ul>
-
- <p>As stated above, freespace is not managed across the
- closing and reopening of an HDF5 file; file space that was
- known freespace while the file remained open becomes an
- inaccessible hole when the file is closed.
- Thus, if a file is often closed and reopened, datasets
- frequently rewritten, or groups and/or datasets frequently
- added and deleted, that file can develop large numbers of
- holes and grow unnecessarily large. This can, in turn,
- seriously impair application or library performance
- as the file ages.
-
- <p>An <code>h5pack</code> utility would enable <em>packing</em>
- a file to remove the holes, but writing such a utility to
- universally pack the file correctly is a complex task and the
- HDF5 development team has not to date had the resources to
- complete the task.
-
- <p>For application developers or researchers who find themselves
- working with files that become bloated in this manner, there
- are, at this time, two remedies:
- <ul>
- <li><code>H5view</code>, an HDF5 Java tool, allows the user
- to open a file and, using the <code>Save As...</code> feature,
- save the file under a new filename. The new file can then
- be closed and will be a packed version of the original file.
- This approach is reasonably reliable, but with two caveats:
- <ul>
- <li>It is not automated.
- <li>This ability is a side-effect of the tool's design;
- it was not designed for this purpose and this approach
- to file packing has not been exhaustively tested.
- </ul>
- <li>An application developer or researcher can write a utility
- that is tuned to their data and file structures. This
- untility can then read in a file, copy the structures and
- datasets to a new file, and write the new file to storage.
- This will eliminate the holes, making the new file a
- fully-packed version of the original file.
- </ul>
-
- <a name="footcchunk">
- <p></a>
- <sup>1</sup>
- <font size=-1>
- This is a problem only with compressed chunks.
- The compression ratio of data is highly dependent on the data
- itself; regardless of whether the <em>size</em> of the data
- changes, the size of the compressed data change substantially
- as the data changes. Uncompressed chunks do not vary in size,
- so this issue does not arise.
- </font>
-
- <h2>4. Use of the Pablo Instrumentation of HDF5</h2>
-
- Pablo HDF5 Trace software provides a means of measuring the
- performance of programs using HDF5.
-
- <p>The Pablo software consists
- of an instrumented copy of the HDF5 library, the Pablo Trace and
- Trace Extensions libraries, and some utilities for processing the
- output. The instrumented version of the HDF5 library has hooks
- inserted into the HDF5 code which call routines in the Pablo Trace
- library just after entry to each instrumented HDF5 routine and
- just prior to exit from the routine. The Pablo Trace Extension
- library has programs that track the I/O activity between the
- entry and exit of the HDF5 routine during execution.
-
- <p>A few lines of code must be inserted in the user's main program
- to enable tracing and to specify which HDF5 procedures are to be
- traced. The program is linked with the special HDF5 and Pablo
- libraries to produce an executable. Running this executable on
- a single processor produces an output file called the trace file
- which contains records, called Pablo Self-Defining Data Format
- (SDDF) records, which can later be analyzed using the
- HDF5 Analysis Utilities. The HDF5 Analysis Utilites can be used
- to interpret the SDDF records in the trace files to produce a
- report describing the HDF5 IO activity that occurred during
- execution.
-
- <p>For further instructions, see the file <code>READ_ME</code>
- in the <code> $(toplevel)/hdf5/pablo/ </code> subdirectory of
- the HDF5 source code distribution.
-
- <p>For further information about Pablo and the
- Self-Defining Data Format, visit the Pablo website at
- <code><a href="http://www-pablo.cs.uiuc.edu/">http://www-pablo.cs.uiuc.edu/</a></code>.</p>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Thu Oct 14 16:46:00 CDT 1999 -->
-<!-- hhmts start -->
-Last modified: 2 August 2001
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/PredefDTypes.html b/doc/html/PredefDTypes.html
deleted file mode 100644
index 0f72414..0000000
--- a/doc/html/PredefDTypes.html
+++ /dev/null
@@ -1,516 +0,0 @@
-<html>
-<head><title>
-HDF5/Predefined Datatypes
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>HDF5 Predefined Datatypes</h1>
-</center>
-
-
-The following datatypes are predefined in HDF5.
-
-
-<h4>IEEE floating point datatypes</h4>
- <ul>
- <li>32-bit and 64-bit
- <li>Big-endian and little-endian
- </ul>
-
-<pre>
- H5T_IEEE_F32BE
- H5T_IEEE_F32LE
- H5T_IEEE_F64BE
- H5T_IEEE_F64LE
-</pre>
-
-
-<h4>Standard datatypes</h4>
- <ul>
- <li>Signed integer (2's complement), unsigned integer, and bitfield
- <li>8-bit, 16-bit, 32-bit, and 64-bit
- <li>Big-endian and little-endian
- </ul>
-
- <table border=0 width=76%>
- <tr><td valign=top width=33% align=left>
-<pre>
- H5T_STD_I8BE
- H5T_STD_I8LE
- H5T_STD_I16BE
- H5T_STD_I16LE
- H5T_STD_I32BE
- H5T_STD_I32LE
- H5T_STD_I64BE
- H5T_STD_I64LE
-</pre>
- </td>
- <td valign=top width=34% align=left>
-<pre>
- H5T_STD_U8BE
- H5T_STD_U8LE
- H5T_STD_U16BE
- H5T_STD_U16LE
- H5T_STD_U32BE
- H5T_STD_U32LE
- H5T_STD_U64BE
- H5T_STD_U64LE
-</pre>
- </td>
- <td valign=top width=33% align=left>
-<pre>
- H5T_STD_B8BE
- H5T_STD_B8LE
- H5T_STD_B16BE
- H5T_STD_B16LE
- H5T_STD_B32BE
- H5T_STD_B32LE
- H5T_STD_B64BE
- H5T_STD_B64LE
-</pre>
- </tr></td>
- </table>
-
- <ul>
- <li>Object reference or dataset region reference
- </ul>
-
-<pre>
- H5T_STD_REF_OBJ
- H5T_STD_REF_DSETREG
-</pre>
-
-
-<h4>UNIX-specific datatypes</h4>
- <ul>
- <li>32-bit and 64-bit
- <li>Big-endian and little-endian
- </ul>
-
-<pre>
- H5T_UNIX_D32BE
- H5T_UNIX_D32LE
- H5T_UNIX_D64BE
- H5T_UNIX_D64LE
-</pre>
-
-
-<h4>C-specific datatype</h4>
- <ul>
- <li>String datatype in C (size defined in bytes rather than in bits)
- </ul>
-
-<pre>
- H5T_C_S1
-</pre>
-
-
-<h4>FORTRAN-specific datatype</h4>
- <ul>
- <li>String datatype in FORTRAN (as defined for the HDF5 C library)
- </ul>
-
-<pre>
- H5T_FORTRAN_S1
-</pre>
-
-
-<h4>Intel-specific datatypes</h4>
- <ul>
- <li>For Intel CPUs
- <li>Little-endian
- <li>Signed integer (2's complement), unsigned integer, bitfield, and
- IEEE floating point
- <li>8-bit, 16-bit, 32-bit, and 64-bit
- </ul>
-
- <table border=0 width=76%>
- <tr><td valign=top width=50% align=left>
-<pre>
- H5T_INTEL_I8
- H5T_INTEL_I16
- H5T_INTEL_I32
- H5T_INTEL_I64
-
- H5T_INTEL_U8
- H5T_INTEL_U16
- H5T_INTEL_U32
- H5T_INTEL_U64
-</pre>
- </td>
- <td valign=top width=50% align=left>
-<pre>
- H5T_INTEL_B8
- H5T_INTEL_B16
- H5T_INTEL_B32
- H5T_INTEL_B64
-
- H5T_INTEL_F32
- H5T_INTEL_F64
-</pre>
- </tr></td>
- </table>
-
-
-<h4>DEC Alpha-specific datatypes</h4>
- <ul>
- <li>For DEC Alpha CPUs
- <li>Little-endian
- <li>Signed integer (2's complement), unsigned integer, bitfield, and
- IEEE floating point
- <li>8-bit, 16-bit, 32-bit, and 64-bit
- </ul>
-
- <table border=0 width=76%>
- <tr><td valign=top width=50% align=left>
-<pre>
- H5T_ALPHA_I8
- H5T_ALPHA_I16
- H5T_ALPHA_I32
- H5T_ALPHA_I64
-
- H5T_ALPHA_U8
- H5T_ALPHA_U16
- H5T_ALPHA_U32
- H5T_ALPHA_U64
-</pre>
- </td>
- <td valign=top width=50% align=left>
-<pre>
- H5T_ALPHA_B8
- H5T_ALPHA_B16
- H5T_ALPHA_B32
- H5T_ALPHA_B64
-
- H5T_ALPHA_F32
- H5T_ALPHA_F64
-</pre>
- </tr></td>
- </table>
-
-
-<h4>MIPS-specific datatypes</h4>
- <ul>
- <li>For MIPS CPUs, commonly used in SGI system
- <li>Big-endian
- <li>Signed integer (2's complement), unsigned integer, bitfield, and
- IEEE floating point
- <li>8-bit, 16-bit, 32-bit, and 64-bit
- </ul>
-
- <table border=0 width=76%>
- <tr><td valign=top width=50% align=left>
-<pre>
- H5T_MIPS_I8
- H5T_MIPS_I16
- H5T_MIPS_I32
- H5T_MIPS_I64
-
- H5T_MIPS_U8
- H5T_MIPS_U16
- H5T_MIPS_U32
- H5T_MIPS_U64
-</pre>
- </td>
- <td valign=top width=50% align=left>
-<pre>
- H5T_MIPS_B8
- H5T_MIPS_B16
- H5T_MIPS_B32
- H5T_MIPS_B64
-
- H5T_MIPS_F32
- H5T_MIPS_F64
-</pre>
- </tr></td>
- </table>
-
-
-<h4>Predefined native datatypes</h4>
- <dir>
- These are the datatypes detected by <code>H5detect</code>.
- Their names differ from other HDF5 datatype names as follows:
- <ul>
- <li>Instead of a class name, precision, and byte order as the last
- component, they have a C-like datatype name.
- <li>If the datatype begins with <code>U</code>, then it is the unsigned
- version of the integer datatype; other integer datatypes are signed.
- <li>The datatype <code>LLONG</code> corresponds to
- C's <code>long_long</code> and
- <code>LDOUBLE</code> is <code>long_double</code>.
- These datatypes might be the same as <code>LONG</code> and
- <code>DOUBLE</code>, respectively.
- </ul>
- </dir>
-
- <table border=0 width=76%>
- <tr><td valign=top width=50% align=left>
-<pre>
- H5T_NATIVE_CHAR
- H5T_NATIVE_SCHAR
- H5T_NATIVE_UCHAR
-
- H5T_NATIVE_SHORT
- H5T_NATIVE_USHORT
-
- H5T_NATIVE_INT
- H5T_NATIVE_UINT
-
- H5T_NATIVE_LONG
- H5T_NATIVE_ULONG
- H5T_NATIVE_LLONG
- H5T_NATIVE_ULLONG
-</pre>
- </td>
- <td valign=top width=50% align=left>
-<pre>
- H5T_NATIVE_FLOAT
- H5T_NATIVE_DOUBLE
- H5T_NATIVE_LDOUBLE
-
- H5T_NATIVE_B8
- H5T_NATIVE_B16
- H5T_NATIVE_B32
- H5T_NATIVE_B64
-
- H5T_NATIVE_OPAQUE
- H5T_NATIVE_HADDR
- H5T_NATIVE_HSIZE
- H5T_NATIVE_HSSIZE
- H5T_NATIVE_HERR
- H5T_NATIVE_HBOOL
-</pre>
- </tr></td>
- </table>
-
-
-<h4>ANSI C9x-specific native integer datatypes</h4>
- <ul>
- <li>Signed integer (2's complement), unsigned integer, and bitfield
- <li>8-bit, 16-bit, 32-bit, and 64-bit
- <li><code>LEAST</code> -- storage to use least amount of space
- <br>
- <code>FAST</code> -- storage to maximize performance
- </ul>
-
- <table border=0 width=76%>
- <tr><td valign=top width=50% align=left>
-<pre>
- H5T_NATIVE_INT8
- H5T_NATIVE_UINT8
- H5T_NATIVE_INT_LEAST8
- H5T_NATIVE_UINT_LEAST8
- H5T_NATIVE_INT_FAST8
- H5T_NATIVE_UINT_FAST8
-
- H5T_NATIVE_INT16
- H5T_NATIVE_UINT16
- H5T_NATIVE_INT_LEAST16
- H5T_NATIVE_UINT_LEAST16
- H5T_NATIVE_INT_FAST16
- H5T_NATIVE_UINT_FAST16
-</pre>
- </td>
- <td valign=top width=50% align=left>
-<pre>
- H5T_NATIVE_INT32
- H5T_NATIVE_UINT32
- H5T_NATIVE_INT_LEAST32
- H5T_NATIVE_UINT_LEAST32
- H5T_NATIVE_INT_FAST32
- H5T_NATIVE_UINT_FAST32
-
- H5T_NATIVE_INT64
- H5T_NATIVE_UINT64
- H5T_NATIVE_INT_LEAST64
- H5T_NATIVE_UINT_LEAST64
- H5T_NATIVE_INT_FAST64
- H5T_NATIVE_UINT_FAST64
-</pre>
- </tr></td>
- </table>
-
-<!-- NEW PAGE -->
-<a name="F90">
-<h4>FORTRAN90 API datatypes</h4>
-</a>
- <ul>
- <li>Datatypes defined for the FORTRAN90 APIs
- <br>
- <br>
- <li>Native integer, single-precision real, double-precision real,
- and character
- </ul>
-
-<pre>
- H5T_NATIVE_INTEGER
- H5T_NATIVE_REAL
- H5T_NATIVE_DOUBLE
- H5T_NATIVE_CHARACTER
-</pre>
-
- <ul>
- <li>Signed integer (2's complement), unsigned integer, and
- IEEE floating point
- <li>8-bit, 16-bit, 32-bit, and 64-bit
- <li>Big-endian and little-endian
- </ul>
-
- <table border=0 width=76%>
- <tr><td valign=top width=33% align=left>
-<pre>
- H5T_STD_I8BE
- H5T_STD_I8LE
- H5T_STD_I16BE
- H5T_STD_I16LE
- H5T_STD_I32BE
- H5T_STD_I32LE
- H5T_STD_I64BE
- H5T_STD_I64LE
-</pre>
- </td>
- <td valign=top width=34% align=left>
-<pre>
- H5T_STD_U8BE
- H5T_STD_U8LE
- H5T_STD_U16BE
- H5T_STD_U16LE
- H5T_STD_U32BE
- H5T_STD_U32LE
- H5T_STD_U64BE
- H5T_STD_U64LE
-</pre>
- </td>
- <td valign=top width=33% align=left>
-<pre>
- H5T_IEEE_F32BE
- H5T_IEEE_F32LE
- H5T_IEEE_F64BE
- H5T_IEEE_F64LE
-</pre>
- </tr></td>
- </table>
-
-
- <ul>
- <li>Object reference or dataset region reference
- </ul>
-
-<pre>
- H5T_STD_REF_OBJ
- H5T_STD_REF_DSETREG
-</pre>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 February 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/Properties.html b/doc/html/Properties.html
deleted file mode 100644
index c13a269..0000000
--- a/doc/html/Properties.html
+++ /dev/null
@@ -1,185 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Property List Interface (H5P)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Property List Interface (H5P)</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The property list (a.k.a., template) interface provides a
- mechanism for default named arguments for a C function
- interface. A property list is a collection of name/value pairs
- which can be passed to various other HDF5 functions to control
- features that are typically unimportant or whose default values
- are usually used.
-
- <p>For instance, file creation needs to know various things such
- as the size of the user-block at the beginning of the file, or
- the size of various file data structures. Wrapping this
- information in a property list simplifies the API by reducing
- the number of arguments to <code>H5Fcreate()</code>.
-
- <h2>2. General Property List Operations</h2>
-
- <p>Property lists follow the same create/open/close paradigm as
- the rest of the library.
-
- <dl>
- <dt><code>hid_t H5Pcreate (H5P_class_t <em>class</em>)</code>
- <dd>A new property list can be created as an instance of some
- property list class. The new property list is initialized
- with default values for the specified class. The classes are:
-
- <br><br>
- <dl>
- <dt><code>H5P_FILE_CREATE</code>
- <dd>Properties for file creation. See <a href="Files.html">H5F</a>
- for details about the file creation properties.
- <dt><code>H5P_FILE_ACCESS</code>
- <dd>Properties for file access. See <a href="Files.html">H5F</a>
- for details about the file creation properties.
- <dt><code>H5P_DATASET_CREATE</code>
- <dd>Properties for dataset creation. See
- <a href="Datasets.html">H5D</a> for details about dataset
- creation properties.
- <dt><code>H5P_DATASET_XFER</code>
- <dd>Properties for raw data transfer. See
- <a href="Datasets.html">H5D</a> for details about raw data
- transfer properties.
- </dl>
-
- <br><br>
- <dt><code>hid_t H5Pcopy (hid_t <em>plist</em>)</code>
- <dd>A property list can be copied to create a new property
- list. The new property list has the same properties and values
- as the original property list.
-
- <br><br>
- <dt><code>herr_t H5Pclose (hid_t <em>plist</em>)</code>
- <dd>All property lists should be closed when the application is
- finished accessing them. This frees resources used by the
- property list.
-
- <br><br>
- <dt><code>H5P_class_t H5Pget_class (hid_t <em>plist</em>)</code>
- <dd>The class of which the property list is a member can be
- obtained by calling this function. The property list classes
- are defined above for <code>H5Pcreate()</code>.
- </dl>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem --><!-- Created: Tue Feb 10 17:06:58 PST 1998 -->
-<!-- hhmts start -->
-Last modified: 13 December 1999
-<!-- hhmts end -->
-
-</body>
-</html>
diff --git a/doc/html/RM_H5.html b/doc/html/RM_H5.html
deleted file mode 100644
index cafc31a..0000000
--- a/doc/html/RM_H5.html
+++ /dev/null
@@ -1,650 +0,0 @@
-<html>
-<head><title>
-HDF5/H5 API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head> <body bgcolor="#FFFFFF">
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5: General Library Functions</h1>
-</center>
-
-These functions serve general-purpose needs of the HDF5 library
-and it users.
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Library-Open">H5open</a>
- <li><a href="#Library-Close">H5close</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Library-Version">H5get_libversion</a>
- <li><a href="#Library-VersCheck">H5check_version</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Library-SetFreeListLimits">H5set_free_list_limits</a>
- <li><a href="#Library-GarbageCollect">H5garbage_collect</a>
- <li><a href="#Library-DontAtExit">H5dont_atexit</a>
-</ul>
-</td></tr>
-</table>
-<br>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
-
- <td valign="top">
- <ul>
- <li><a href="#Library-VersCheck">H5check_version</a>
- <li><a href="#Library-Close">H5close</a>
- <li><a href="#Library-DontAtExit">H5dont_atexit</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Library-GarbageCollect">H5garbage_collect</a>
- <li><a href="#Library-Version">H5get_libversion</a>
- <li><a href="#Library-Open">H5open</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Library-SetFreeListLimits">H5set_free_list_limits</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Library-Open">h5open_f</a>
- <li><a href="#Library-Close">h5close_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Library-Version">h5get_libversion_f</a>
- <li><a href="#Library-VersCheck">h5check_version_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Library-SetFreeListLimits">h5set_free_list_limits_f</a>
- <li><a href="#Library-GarbageCollect">h5garbage_collect_f</a>
- <li><a href="#Library-DontAtExit">h5dont_atexit_f</a>
-</ul>
-</td></tr>
-</table>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5check_version" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-VersCheck">H5check_version</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5check_version</code>(<em>unsigned</em> <code>majnum</code>,
- <em>unsigned</em> <code>minnum</code>,
- <em>unsigned</em> <code>relnum</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Verifies that library versions are consistent.
-<dt><strong>Description:</strong>
- <dd><code>H5check_version</code> verifies that the arguments provided
- with the function call match the version numbers compiled into
- the library.
- <p>
- <code>H5check_version</code> serves two slightly differing purposes.
- <p>
- First, the function is intended to be called by the user to verify
- that the version of the header files compiled into an application
- matches the version of the HDF5 library being used.
- One may look at the <code>H5check</code> definition in the file
- <code>H5public.h</code> as an example.
- <p>
- Due to the risks of data corruption or segmentation faults,
- <code>H5check_version</code> causes the application to abort if the
- version numbers do not match.
- The abort is achieved by means of a call to the
- standard C function <code>abort()</code>.
- <p>
- Note that <code>H5check_version</code> verifies only the
- major and minor version numbers and the release number;
- it does not verify the sub-release value as that should be
- an empty string for any official release.
- This means that any two incompatible library versions must
- have different {major,minor,release} numbers. (Notice the
- reverse is not necessarily true.)
- <p>
- Secondarily, <code>H5check_version</code> verifies that the
- library version identifiers <code>H5_VERS_MAJOR</code>,
- <code>H5_VERS_MINOR</code>, <code>H5_VERS_RELEASE</code>,
- <code>H5_VERS_SUBRELEASE</code>, and <code>H5_VERS_INFO</code>
- are consistent.
- This is designed to catch source code inconsistencies,
- but does not generate the fatal error as in the first stage
- because this inconsistency does not cause errors in the data files.
- If this check reveals inconsistencies, the library issues a warning
- but the function does not fail.
-<!--
- <p>
-<strong><em>Alternate to preceding paragraph / More to the point?</em></strong>
-<br>
- If the function passes the above test and does not generate
- an <code>abort()</code> call, the function's second purpose
- comes into play.
- <code>H5check_version</code> then procedes to verify
- that the additional library version identifiers
- <code>H5_VERS_SUBRELEASE</code>, and <code>H5_VERS_INFO</code>
- are consistent.
- This is designed to catch source code inconsistencies,
- but does not generate the fatal error
- that is generated under the first function.
- <p>
- The version and release numbers passed as
- <code>H5check_version</code> parameters have the
- following relationsips to each other:
- <dir>
- An official HDF5 release is labelled as
- <br>
- HDF5 Release &lt;<code>majnum</code>&gt;<strong>.</strong>&lt;<code>minnum</code>&gt;<strong>.</strong>&lt;<code>relnum</code>&gt;
- </dir>
- For example, in the version of the library known as HDF5 Release 1.4.2,
- the 1 is the major version number, <code>majnum</code>;
- the 1 is the minor version number, <code>minnum</code>; and
- the 1 is the release number, <code>relnum</code>.
--->
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>unsigned </em><code>majnum</code></td>
- <td valign="top">IN: The major version of the library.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;</em><code>minnum&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The minor version of the library.</td></tr>
- <tr>
- <td valign="top"><em>unsigned </em><code>relnum</code></td>
- <td valign="top">IN: The release number of the library.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Upon failure, this function causes the application to abort.
-<dt><strong>Fortran90 Interface:</strong> h5check_version_f
- <dd>
- <pre>
-SUBROUTINE h5check_version_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: majnum ! The major version of the library
- INTEGER, INTENT(IN) :: minnum ! The minor version of the library
- INTEGER, INTENT(IN) :: relnum ! The release number
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5check_version_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5close" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-Close">H5close</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5close</code>(<em>void</em>)
-<dt><strong>Purpose:</strong>
- <dd>Flushes all data to disk, closes file identifiers, and cleans up memory.
-<dt><strong>Description:</strong>
- <dd><code>H5close</code> flushes all data to disk,
- closes all file identifiers, and cleans up all memory used by
- the library. This function is generally called when the
- application calls <code>exit()</code>, but may be called earlier
- in event of an emergency shutdown or out of desire to free all
- resources used by the HDF5 library.
- <p>
- <code>h5close_f</code> and <code>h5open_f</code> are
- required calls in Fortran90 applications.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt>None.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5close_f
- <dd>
- <pre>
-SUBROUTINE h5close_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5close_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5H5dont_atexit" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-DontAtExit">H5dont_atexit</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5dont_atexit</code>(<em>void</em>)
-<dt><strong>Purpose:</strong>
- <dd>Instructs library not to install <code>atexit</code> cleanup routine.
-<dt><strong>Description:</strong>
- <dd><code>H5dont_atexit</code> indicates to the library that an
- <code>atexit()</code> cleanup routine should not be installed.
- The major purpose for this is in situations where the
- library is dynamically linked into an application and is
- un-linked from the application before <code>exit()</code> gets
- called. In those situations, a routine installed with
- <code>atexit()</code> would jump to a routine which was
- no longer in memory, causing errors.
- <p>
- In order to be effective, this routine <em>must</em> be called
- before any other HDF function calls, and must be called each
- time the library is loaded/linked into the application
- (the first time and after it's been un-loaded).
-<dt><strong>Parameters:</strong>
- <dl>
- <dt>None.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dont_atexit_f
- <dd>
- <pre>
-SUBROUTINE h5dont_atexit_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5dont_atexit_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5garbage_collect" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-GarbageCollect">H5garbage_collect</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5garbage_collect</code>(<em>void</em>)
-<dt><strong>Purpose:</strong>
- <dd>Garbage collects on all free-lists of all types.
-<dt><strong>Description:</strong>
- <dd><code>H5garbage_collect</code> walks through all the garbage
- collection routines of the library, freeing any unused memory.
- <p>
- It is not required that <code>H5garbage_collect</code> be called
- at any particular time; it is only necessary in certain situations
- where the application has performed actions that cause the library
- to allocate many objects. The application should call
- <code>H5garbage_collect</code> if it eventually releases those
- objects and wants to reduce the memory used by the library from
- the peak usage required.
- <p>
- The library automatically garbage collects all the free lists
- when the application ends.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt>None.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5garbage_collect_f
- <dd>
- <pre>
-SUBROUTINE h5garbage_collect_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5garbage_collect_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5get_libversion" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-Version">H5get_libversion</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5get_libversion</code>(<em>unsigned *</em><code>majnum</code>,
- <em>unsigned *</em><code>minnum</code>,
- <em>unsigned *</em><code>relnum</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the HDF library release number.
-<dt><strong>Description:</strong>
- <dd><code>H5get_libversion</code> retrieves the major, minor, and release
- numbers of the version of the HDF library which is linked to
- the application.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>unsigned *</em><code>majnum</code></td>
- <td valign="top">OUT: The major version of the library.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;*</em><code>minnum&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: The minor version of the library.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em><code>relnum</code></td>
- <td valign="top">OUT: The release number of the library.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5get_libversion_f
- <dd>
- <pre>
-SUBROUTINE h5get_libversion_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: majnum ! The major version of the library
- INTEGER, INTENT(OUT) :: minnum ! The minor version of the library
- INTEGER, INTENT(OUT) :: relnum ! The release number
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5get_libversion_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5open" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-Open">H5open</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5open</code>(<em>void</em>)
-<dt><strong>Purpose:</strong>
- <dd>Initializes the HDF5 library.
-<dt><strong>Description:</strong>
- <dd><code>H5open</code> initialize the library.
- <p>
- When the HDF5 Library is employed in a C application,
- this function is normally called automatically, but if you
- find that an HDF5 library function is failing inexplicably,
- try calling this function first.
- If you wish to elimnate this possibility, it is safe to
- routinely call <code>H5open</code> before an application
- starts working with the library as there are no damaging
- side-effects in calling it more than once.
- <p>
- When the HDF5 Library is employed in a Fortran90 application,
- <code>h5open_f</code> initializes global variables
- (e.g. predefined types) and performs other tasks required to
- initialize the library.
- <code>h5open_f</code> and <code>h5close_f</code> are therefore
- required calls in Fortran90 applications.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt>None.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5open_f
- <dd>
- <pre>
-SUBROUTINE h5open_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5open_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5set_free_list_limits" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Library-SetFreeListLimits">H5set_free_list_limits</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5set_free_list_limits</code>(<em>int</em> <code>reg_global_lim</code>,
- <em>int</em> <code>reg_list_lim</code>,
- <em>int</em> <code>arr_global_lim</code>,
- <em>int</em> <code>arr_list_lim</code>,
- <em>int</em> <code>blk_global_lim</code>,
- <em>int</em> <code>blk_list_lim</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets free-list size limits.
-<dt><strong>Description:</strong>
- <dd><code>H5set_free_list_limits</code> sets size limits
- on all types of free lists.
- The HDF5 library uses free lists internally to manage memory.
- There are three types of free lists:
- <ul><li><span class=termDef>Regular</span>
- free lists manage a single data structure.
- <li><span class=termDef>Array</span>
- free lists manage arrays of a data structure.
- <li><span class=termDef>Block</span>
- free lists manage blocks of bytes.
- </ul>
- <em>Alternate phrasing?</em>:
- <ul><li><span class=termDef>Regular</span>
- free lists manage data structures containing atomic data.
- <li><span class=termDef>Array</span>
- free lists manage data structures containing array data.
- <li><span class=termDef>Block</span>
- free lists manage blocks of bytes.
- </ul>
- <p>
- These are global limits, but each limit applies only to
- free lists of the specified type.
- Therefore, if an application sets a 1Mb limit on each of
- the global lists, up to 3Mb of total storage might be
- allocated, 1Mb for each of the regular, array, and
- block type lists.
- <p>
- Using a value of <code>-1</code> for a limit means that
- no limit is set for the specified type of free list.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>int</em>&nbsp;<code>reg_global_lim&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The limit on all regular free list memory used</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>reg_list_lim</code></td>
- <td valign="top">IN: The limit on memory used in each regular free list</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>arr_global_lim</code></td>
- <td valign="top">IN: The limit on all array free list memory used</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>arr_list_lim</code></td>
- <td valign="top">IN: The limit on memory used in each array free list</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>blk_global_lim</code></td>
- <td valign="top">IN: The limit on all block free list memory used</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>blk_list_lim</code></td>
- <td valign="top">IN: The limit on memory used in each block free list</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 February 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5A.html b/doc/html/RM_H5A.html
deleted file mode 100644
index 28a16ff..0000000
--- a/doc/html/RM_H5A.html
+++ /dev/null
@@ -1,954 +0,0 @@
-<html>
-<head><title>
-HDF5/H5A API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5A: Attribute Interface</h1>
-</center>
-
-<h2>Attribute API Functions</h2>
-
-These functions create and manipulate attributes
-and information about attributes.
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Annot-Create">H5Acreate</a>
- <li><a href="#Annot-Write">H5Awrite</a>
- <li><a href="#Annot-Read">H5Aread</a>
- <li><a href="#Annot-Close">H5Aclose</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Annot-GetName">H5Aget_name</a>
- <li><a href="#Annot-OpenName">H5Aopen_name</a>
- <li><a href="#Annot-OpenIdx">H5Aopen_idx</a>
- <li><a href="#Annot-GetSpace">H5Aget_space</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Annot-GetType">H5Aget_type</a>
- <li><a href="#Annot-NumAttrs">H5Aget_num_attrs</a>
- <li><a href="#Annot-Iterate">H5Aiterate</a>
- <li><a href="#Annot-Delete">H5Adelete</a>
-</ul>
-</td></tr>
-</table>
-<br>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Annot-Close">H5Aclose</a>
- <li><a href="#Annot-Create">H5Acreate</a>
- <li><a href="#Annot-Delete">H5Adelete</a>
- <li><a href="#Annot-GetName">H5Aget_name</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Annot-NumAttrs">H5Aget_num_attrs</a>
- <li><a href="#Annot-GetSpace">H5Aget_space</a>
- <li><a href="#Annot-GetType">H5Aget_type</a>
- <li><a href="#Annot-Iterate">H5Aiterate</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Annot-OpenIdx">H5Aopen_idx</a>
- <li><a href="#Annot-OpenName">H5Aopen_name</a>
- <li><a href="#Annot-Read">H5Aread</a>
- <li><a href="#Annot-Write">H5Awrite</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Annot-Create">h5acreate_f</a>
- <li><a href="#Annot-Write">h5awrite_f</a>
- <li><a href="#Annot-Read">h5aread_f</a>
- <li><a href="#Annot-Close">h5aclose_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Annot-GetName">h5aget_name_f</a>
- <li><a href="#Annot-OpenName">h5aopen_name_f</a>
- <li><a href="#Annot-OpenIdx">h5aopen_idx_f</a>
- <li><a href="#Annot-GetSpace">h5aget_space_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Annot-GetType">h5aget_type_f</a>
- <li><a href="#Annot-NumAttrs">h5aget_num_attrs_f</a>
- <!--<li><a href="#Annot-Iterate">h5aiterate_f</a>-->
- <li><a href="#Annot-Delete">h5adelete_f</a>
-</ul>
-</td></tr>
-</table>
-
-
-<p>
-The Attribute interface, H5A, is primarily designed to easily allow
-small datasets to be attached to primary datasets as metadata information.
-Additional goals for the H5A interface include keeping storage requirement
-for each attribute to a minimum and easily sharing attributes among
-datasets.
-<p>
-Because attributes are intended to be small objects, large datasets
-intended as additional information for a primary dataset should be
-stored as supplemental datasets in a group with the primary dataset.
-Attributes can then be attached to the group containing everything
-to indicate a particular type of dataset with supplemental datasets
-is located in the group. How small is "small" is not defined by the
-library and is up to the user's interpretation.
-<p>
-See <a href="Attributes.html"><cite>Attributes</cite></a> in the
-<a href="H5.user.html"><cite>HDF5 User's Guide</cite></a> for further information.
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aclose" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-Close">H5Aclose</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Aclose</code>(<em>hid_t</em> <code>attr_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Closes the specified attribute.
-<dt><strong>Description:</strong>
- <dd><code>H5Aclose</code> terminates access to the attribute
- specified by <code>attr_id</code> by releasing the identifier.
- <p>
- Further use of a released attribute identifier is illegal;
- a function using such an identifier will fail.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>attr_id</code></td>
- <td>IN: Attribute to release access to.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aclose_f
- <dd>
- <pre>
-SUBROUTINE h5aclose_f(attr_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Acreate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-Create">H5Acreate</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Acreate</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hid_t</em> <code>create_plist</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a dataset as an attribute of another group, dataset,
- or named datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Acreate</code> creates an attribute named <code>name</code>
- and attached to the object specified with <code>loc_id</code>.
- <code>loc_id</code> is a group, dataset, or named datatype identifier.
- <p>
- The attribute name specified in <code>name</code> must be unique.
- Attempting to create an attribute with the same name as an already
- existing attribute will fail, leaving the pre-existing attribute
- in place. To overwrite an existing attribute with a new attribute
- of the same name, first call <code>H5Adelete</code> then recreate
- the attribute with <code>H5Acreate</code>.
- <p>
- The datatype and dataspace identifiers of the attribute,
- <code>type_id</code> and <code>space_id</code>, respectively,
- are created with the H5T and H5S interfaces, respectively.
- <p>
- Currently only simple dataspaces are allowed for attribute dataspaces.
- <p>
- The attribute creation property list, <code>create_plist</code>,
- is currently unused;
- it may be used in the future for optional attribute properties.
- At this time, <code>H5P_DEFAULT</code> is the only accepted value.
- </p>
- The attribute identifier returned from this function must be released
- with <code>H5Aclose</code> or resource leaks will develop.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Object (dataset, group, or named datatype) to be attached to.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>name</code></td>
- <td valign="top">IN: Name of attribute to create.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">IN: Identifier of datatype for attribute.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Identifier of dataspace for attribute.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>create_plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of creation property list. (Currently unused;
- the only accepted value is <code>H5P_DEFAULT</code>.)</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns an attribute identifier if successful;
- otherwise returns a negative value.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-
-<dt><strong>Fortran90 Interface:</strong> h5acreate_f
- <dd>
- <pre>
-SUBROUTINE h5acreate_f(obj_id, name, type_id, space_id, attr_id, &amp;
- hdferr, creation_prp)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
- INTEGER(HID_T), INTENT(IN) :: type_id ! Attribute datatype identifier
- INTEGER(HID_T), INTENT(IN) :: space_id ! Attribute dataspace identifier
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure</pre>
-<!-- NEW PAGE -->
-<pre>
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
- ! Attribute creation property
- ! list identifier
-END SUBROUTINE h5acreate_f
- </pre>
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Adelete" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-Delete">H5Adelete</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Adelete</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Deletes an attribute from a location.
-<dt><strong>Description:</strong>
- <dd><code>H5Adelete</code> removes the attribute specified by its
- name, <code>name</code>, from a dataset, group, or named datatype.
- This function should not be used when attribute identifiers are
- open on <code>loc_id</code> as it may cause the internal indexes
- of the attributes to change and future writes to the open
- attributes to produce incorrect results.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the dataset, group, or named datatype
- to have the attribute deleted from.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the attribute to delete.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5adelete_f
- <dd>
- <pre>
-SUBROUTINE h5adelete_f(obj_id, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5adelete_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aget_name" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-GetName">H5Aget_name</a>
-<dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Aget_name</code>(<em>hid_t</em> <code>attr_id</code>,
- <em>size_t</em> <code>buf_size</code>,
- <em>char *</em><code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Gets an attribute name.
-<dt><strong>Description:</strong>
- <dd><code>H5Aget_name</code> retrieves the name of an attribute
- specified by the identifier, <code>attr_id</code>.
- Up to <code>buf_size</code> characters are stored in
- <code>buf</code> followed by a <code>\0</code> string
- terminator. If the name of the attribute is longer than
- <code>(buf_size -1)</code>, the string terminator is stored in the
- last position of the buffer to properly terminate the string.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>attr_id</code></td>
- <td valign="top">IN: Identifier of the attribute.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>buf_size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The size of the buffer to store the name in.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>buf</code></td>
- <td valign="top">IN: Buffer to store name in.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the length of the attribute's name, which may be
- longer than <code>buf_size</code>, if successful.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aget_name_f
- <dd>
- <pre>
-SUBROUTINE h5aget_name_f(attr_id, size, buf, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER, INTENT(IN) :: size ! Buffer size
- CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer to hold attribute name
- INTEGER, INTENT(OUT) :: hdferr ! Error code: name length
- ! on success and -1 on failure
-END SUBROUTINE h5aget_name_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aget_num_attrs" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-NumAttrs">H5Aget_num_attrs</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Aget_num_attrs</code>(<em>hid_t</em> <code>loc_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines the number of attributes attached to an object.
-<dt><strong>Description:</strong>
- <dd><code>H5Aget_num_attrs</code> returns the number of attributes
- attached to the object specified by its identifier,
- <code>loc_id</code>.
- The object can be a group, dataset, or named datatype.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>loc_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of a group, dataset, or named datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of attributes if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aget_num_attrs_f
- <dd>
- <pre>
-SUBROUTINE h5aget_num_attrs_f(obj_id, attr_num, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- INTEGER, INTENT(OUT) :: attr_num ! Number of attributes of the object
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aget_num_attrs_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aget_space" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-GetSpace">H5Aget_space</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Aget_space</code>(<em>hid_t</em> <code>attr_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Gets a copy of the dataspace for an attribute.
-<dt><strong>Description:</strong>
- <dd><code>H5Aget_space</code> retrieves a copy of the dataspace
- for an attribute. The dataspace identifier returned from
- this function must be released with <code>H5Sclose</code>
- or resource leaks will develop.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>attr_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of an attribute.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns attribute dataspace identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aget_space_f
- <dd>
- <pre>
-SUBROUTINE h5aget_space_f(attr_id, space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(OUT) :: space_id ! Attribute dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aget_space_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aget_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-GetType">H5Aget_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Aget_type</code>(<em>hid_t</em> <code>attr_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Gets an attribute datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Aget_type</code> retrieves a copy of the datatype
- for an attribute.
- <p>
- The datatype is reopened if it is a named type before returning
- it to the application. The datatypes returned by this function
- are always read-only. If an error occurs when atomizing the
- return datatype, then the datatype is closed.
- <p>
- The datatype identifier returned from this function must be
- released with <code>H5Tclose</code> or resource leaks will develop.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>attr_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of an attribute.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a datatype identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aget_type_f
- <dd>
- <pre>
-SUBROUTINE h5aget_type_f(attr_id, type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(OUT) :: type_id ! Attribute datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aget_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aiterate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-Iterate">H5Aiterate</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Aiterate</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>unsigned *</em> <code>idx</code>,
- <em>H5A_operator_t</em> <code>op</code>,
- <em>void *</em><code>op_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Calls a user's function for each attribute on an object.
-<dt><strong>Description:</strong>
- <dd><code>H5Aiterate</code> iterates over the attributes of
- the object specified by its identifier, <code>loc_id</code>.
- The object can be a group, dataset, or named datatype.
- For each attribute of the object, the <code>op_data</code>
- and some additional information specified below are passed
- to the operator function <code>op</code>.
- The iteration begins with the attribute specified by its
- index, <code>idx</code>; the index for the next attribute
- to be processed by the operator, <code>op</code>, is
- returned in <code>idx</code>.
- If <code>idx</code> is the null pointer, then all attributes
- are processed.
- <p>
- The prototype for <code>H5A_operator_t</code> is: <br>
- <code>typedef herr_t (*H5A_operator_t)(hid_t <em>loc_id</em>,
- const char *<em>attr_name</em>,
- void *<em>operator_data</em>);
- </code>
- <p>
- The operation receives the identifier for the group, dataset
- or named datatype being iterated over, <code>loc_id</code>, the
- name of the current attribute about the object, <code>attr_name</code>,
- and the pointer to the operator data passed in to <code>H5Aiterate</code>,
- <code>op_data</code>. The return values from an operator are:
- <ul>
- <li>Zero causes the iterator to continue, returning zero when all
- attributes have been processed.
- <li>Positive causes the iterator to immediately return that positive
- value, indicating short-circuit success. The iterator can be
- restarted at the next attribute.
- <li>Negative causes the iterator to immediately return that value,
- indicating failure. The iterator can be restarted at the next
- attribute.
- </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of a group, dataset or named datatype.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>idx</code></td>
- <td valign="top">IN/OUT: Starting (IN) and ending (OUT) attribute index.</td></tr>
- <tr>
- <td valign="top"><em>H5A_operator_t</em>&nbsp;<code>op&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: User's function to pass each attribute to</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>op_data</code></td>
- <td valign="top">IN/OUT: User's data to pass through to iterator operator function</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>If successful, returns the return value of the last operator
- if it was non-zero, or zero if all attributes were processed.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aopen_idx" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-OpenIdx">H5Aopen_idx</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Aopen_idx</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>unsigned int</em> <code>idx</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Opens the attribute specified by its index.
-<dt><strong>Description:</strong>
- <dd><code>H5Aopen_idx</code> opens an attribute which is attached
- to the object specified with <code>loc_id</code>.
- The location object may be either a group, dataset, or
- named datatype, all of which may have any sort of attribute.
- The attribute specified by the index, <code>idx</code>,
- indicates the attribute to access.
- The value of <code>idx</code> is a 0-based, non-negative integer.
- The attribute identifier returned from this function must be
- released with <code>H5Aclose</code> or resource leaks will develop.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the group, dataset, or named datatype
- attribute to be attached to.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;int</em>&nbsp;<code>idx&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Index of the attribute to open.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns attribute identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aopen_idx_f
- <dd>
- <pre>
-SUBROUTINE h5aopen_idx_f(obj_id, index, attr_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- INTEGER, INTENT(IN) :: index ! Attribute index
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aopen_idx_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aopen_name" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-OpenName">H5Aopen_name</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Aopen_name</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd> Opens an attribute specified by name.
-<dt><strong>Description:</strong>
- <dd><code>H5Aopen_name</code> opens an attribute specified by
- its name, <code>name</code>, which is attached to the
- object specified with <code>loc_id</code>.
- The location object may be either a group, dataset, or
- named datatype, which may have any sort of attribute.
- The attribute identifier returned from this function must
- be released with <code>H5Aclose</code> or resource leaks
- will develop.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of a group, dataset, or named datatype
- atttribute to be attached to.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Attribute name.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns attribute identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aopen_name_f
- <dd>
- <pre>
-SUBROUTINE h5aopen_name_f(obj_id, name, attr_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Attribute name
- INTEGER(HID_T), INTENT(OUT) :: attr_id ! Attribute identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aopen_name_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Aread" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-Read">H5Aread</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Aread</code>(<em>hid_t</em> <code>attr_id</code>,
- <em>hid_t</em> <code>mem_type_id</code>,
- <em>void *</em><code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Reads an attribute.
-<dt><strong>Description:</strong>
- <dd><code>H5Aread</code> reads an attribute, specified with
- <code>attr_id</code>. The attribute's memory datatype
- is specified with <code>mem_type_id</code>. The entire
- attribute is read into <code>buf</code> from the file.
- <p>
- Datatype conversion takes place at the time of a read or write
- and is automatic. See the
- <a href="Datatypes.html#Datatypes-DataConversion">Data Conversion</a>
- section of <cite>The Data Type Interface (H5T)</cite> in the
- <cite>HDF5 User's Guide</cite> for a discussion of
- data conversion, including the range of conversions currently
- supported by the HDF5 libraries.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>attr_id</code></td>
- <td valign="top">IN: Identifier of an attribute to read.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>mem_type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the attribute datatype (in memory).</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>buf</code></td>
- <td valign="top">OUT: Buffer for data to be read.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5aread_f
- <dd>
- <pre>
-SUBROUTINE h5aread_f(attr_id, memtype_id, buf, dims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- TYPE, INTENT(INOUT) :: buf ! Data buffer; may be a scalar or
- ! an array
- DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims
- ! Array to hold corresponding
- ! dimension sizes of data buffer buf;
- ! dim(k) has value of the
- ! k-th dimension of buffer buf;
- ! values are ignored if buf is a
- ! scalar
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5aread_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Awrite" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Annot-Write">H5Awrite</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Awrite</code>(<em>hid_t</em> <code>attr_id</code>,
- <em>hid_t</em> <code>mem_type_id</code>,
- <em>const void *</em><code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Writes data to an attribute.
-<dt><strong>Description:</strong>
- <dd><code>H5Awrite</code> writes an attribute, specified with
- <code>attr_id</code>. The attribute's memory datatype
- is specified with <code>mem_type_id</code>. The entire
- attribute is written from <code>buf</code> to the file.
- <p>
- Datatype conversion takes place at the time of a read or write
- and is automatic. See the
- <a href="Datatypes.html#Datatypes-DataConversion">Data Conversion</a>
- section of <cite>The Data Type Interface (H5T)</cite> in the
- <cite>HDF5 User's Guide</cite> for a discussion of
- data conversion, including the range of conversions currently
- supported by the HDF5 libraries.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>attr_id</code></td>
- <td valign="top">IN: Identifier of an attribute to write.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>mem_type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the attribute datatype (in memory).</td></tr>
- <tr>
- <td valign="top"><em>const void *</em><code>buf</code></td>
- <td valign="top">IN: Data to be written.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5awrite_f
- <dd>
- <pre>
-SUBROUTINE h5awrite_f(attr_id, memtype_id, buf, dims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: attr_id ! Attribute identifier
- INTEGER(HID_T), INTENT(IN) :: memtype_id ! Attribute datatype
- ! identifier (in memory)
- TYPE, INTENT(IN) :: buf ! Data buffer; may be a scalar or
- ! an array
- DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims
- ! Array to hold corresponding
- ! dimension sizes of data buffer buf;
- ! dim(k) has value of the k-th
- ! dimension of buffer buf;
- ! values are ignored if buf is
- ! a scalar
- INTEGER, INTENT(OUT) :: hdferr ! Error code:
- ! 0 on success and -1 on failure
-END SUBROUTINE h5awrite_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 February 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5D.html b/doc/html/RM_H5D.html
deleted file mode 100644
index f6e313a..0000000
--- a/doc/html/RM_H5D.html
+++ /dev/null
@@ -1,1584 +0,0 @@
-<html>
-<head><title>
-HDF5/H5D API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5D: Datasets Interface</h1>
-</center>
-
-<h2>Dataset Object API Functions</h2>
-
-These functions create and manipulate dataset objects,
-and set and retrieve their constant or persistent properties.
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Dataset-Create">H5Dcreate</a>
- <li><a href="#Dataset-Open">H5Dopen</a>
- <li><a href="#Dataset-Close">H5Dclose</a>
- <li><a href="#Dataset-GetSpace">H5Dget_space</a>
- <li><a href="#Dataset-GetSpaceStatus">H5Dget_space_status</a>
-
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Dataset-GetType">H5Dget_type</a>
- <li><a href="#Dataset-GetCreatePlist">H5Dget_create_plist</a>
- <li><a href="#Dataset-GetOffset">H5Dget_offset</a>
- <li><a href="#Dataset-GetStorageSize">H5Dget_storage_size</a>
- <li><a href="#Dataset-VLGetBuf">H5Dvlen_get_buf_size</a>
- <li><a href="#Dataset-VLReclaim">H5Dvlen_reclaim</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
-<!--
- <li><a href="#Dataset-Debug">H5Ddebug</a>
- This function is in the distributed source code and is technically
- a public function, but it is NOT intended for public use.
- It is used only by certain tools.
- DO NOT list it in the Reference Manual.
- -->
- <li><a href="#Dataset-Read">H5Dread</a>
- <li><a href="#Dataset-Write">H5Dwrite</a>
- <li><a href="#Dataset-Iterate">H5Diterate</a>
- <li><a href="#Dataset-Extend">H5Dextend</a>
- <li><a href="#Dataset-Fill">H5Dfill</a>
-</ul>
-</td></tr>
-</table>
-<br>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Dataset-Close">H5Dclose</a>
- <li><a href="#Dataset-Create">H5Dcreate</a>
- <li><a href="#Dataset-Extend">H5Dextend</a>
- <li><a href="#Dataset-Fill">H5Dfill</a>
- <li><a href="#Dataset-GetCreatePlist">H5Dget_create_plist</a>
- <li><a href="#Dataset-GetOffset">H5Dget_offset</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Dataset-GetSpace">H5Dget_space</a>
- <li><a href="#Dataset-GetSpaceStatus">H5Dget_space_status</a>
- <li><a href="#Dataset-GetStorageSize">H5Dget_storage_size</a>
- <li><a href="#Dataset-GetType">H5Dget_type</a>
- <li><a href="#Dataset-Iterate">H5Diterate</a>
- <li><a href="#Dataset-Open">H5Dopen</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Dataset-Read">H5Dread</a>
- <li><a href="#Dataset-VLGetBuf">H5Dvlen_get_buf_size</a>
- <li><a href="#Dataset-VLReclaim">H5Dvlen_reclaim</a>
- <li><a href="#Dataset-Write">H5Dwrite</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Dataset-Create">h5dcreate_f</a>
- <li><a href="#Dataset-Open">h5dopen_f</a>
- <li><a href="#Dataset-Close">h5dclose_f</a>
- <li><a href="#Dataset-GetSpace">h5dget_space_f</a>
- <li><a href="#Dataset-GetSpaceStatus">h5dget_space_status_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Dataset-GetType">h5dget_type_f</a>
- <li><a href="#Dataset-GetCreatePlist">h5dget_create_plist_f</a>
- <li><a href="#Dataset-GetOffset">h5dget_offset_f</a>
- <li><a href="#Dataset-GetStorageSize">h5dget_storage_size_f</a>
- <li><a href="#Dataset-VLGetBuf">h5dvlen_get_max_len_f</a>
-<!--<li><a href="#Dataset-VLReclaim">h5dvlen_reclaim_f</a> -->
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Dataset-Read">h5dread_f</a>
- <li><a href="#Dataset-Write">h5dwrite_f</a>
-<!--<li><a href="#Dataset-Iterate">h5diterate_f</a> -->
-<!--<li><a href="#Dataset-Debug">h5ddebug_f</a> -->
- <li><a href="#Dataset-Extend">h5dextend_f</a>
- <li><a href="#Dataset-Fill">h5dfill_f</a>
-</ul>
-</td></tr>
-</table>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dclose" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Close">H5Dclose</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dclose</code>(<em>hid_t </em><code>dataset_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Closes the specified dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dclose</code> ends access to a dataset specified by
- <code>dataset_id</code> and releases resources used by it.
- Further use of the dataset identifier is illegal in calls to
- the dataset API.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dataset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset to close access to.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dclose_f
- <dd>
- <pre>
-SUBROUTINE h5dclose_f(dset_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dcreate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Create">H5Dcreate</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Dcreate</code>(<em>hid_t </em><code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hid_t</em> <code>create_plist_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a dataset at the specified location.
-<dt><strong>Description:</strong>
- <dd><code>H5Dcreate</code> creates a data set with a name,
- <code>name</code>, in the file or in the group specified by
- the identifier <code>loc_id</code>.
- The dataset has the datatype and dataspace identified by
- <code>type_id</code> and <code>space_id</code>, respectively.
- The specified datatype and dataspace are the datatype and
- dataspace of the dataset as it will exist in the file,
- which may be different than in application memory.
- Dataset creation properties are specified by the argument
- <code>create_plist_id</code>.
- <p>
- Dataset names within a group are unique:
- <code>H5Dcreate</code> will return an error if a dataset with
- the name specified in <code>name</code> already exists at the
- location specified in <code>loc_id</code>.
- <p>
- <code>create_plist_id</code> is a <code>H5P_DATASET_CREATE</code>
- property list created with <code>H5Pcreate</code> and
- initialized with the various functions described above.
- <p>
- <code>H5Dcreate</code> returns an error if the dataset's datatype
- includes a variable-length (VL) datatype and the fill value
- is undefined, i.e., set to <code>NULL</code> in the
- dataset creation property list.
- Such a VL datatype may be directly included,
- indirectly included as part of a compound or array datatype, or
- indirectly included as part of a nested compound or array datatype.
- <p>
- <code>H5Dcreate</code> returns a dataset identifier for success
- or a negative value for failure.
- The dataset identifier should eventually be closed by
- calling <code>H5Dclose</code> to release resources it uses.
- <p>
- <strong>Fill values and space allocation:</strong><br>
- The HDF5 library provides flexible means
- of specifying a fill value,
- of specifying when space will be allocated for a dataset, and
- of specifying when fill values will be written to a dataset.
- For further information on these topics, see the document
- <a href="http://hdf.ncsa.uiuc.edu/RFC/Fill_Value/FillValue.html">
- <cite>Fill Value and Dataset Storage Allocation Issues in HDF5</cite></a>
- and the descriptions of the following HDF5 functions in this
- <cite>HDF5 Reference Manual</cite>:
- <table width=80% border="0">
- <tr valign="top" align="left"><td width=10%>&nbsp;
- </td><td width=45%>
- <a href="#Dataset-Fill"><code>H5Dfill</code></a><br>
- <a href="RM_H5P.html#Property-SetFillValue"><code>H5Pset_fill_value</code></a><br>
- <a href="RM_H5P.html#Property-GetFillValue"><code>H5Pget_fill_value</code></a><br>
- <a href="RM_H5P.html#Property-FillValueDefined"><code>H5Pfill_value_defined</code></a>
- </td><td width=45%>
- <a href="RM_H5P.html#Property-SetFillTime"><code>H5Pset_fill_time</code></a><br>
- <a href="RM_H5P.html#Property-GetFillTime"><code>H5Pget_fill_time</code></a><br>
- <a href="RM_H5P.html#Property-SetAllocTime"><code>H5Pset_alloc_time</code></a><br>
- <a href="RM_H5P.html#Property-GetAllocTime"><code>H5Pget_alloc_time</code></a>
- </td></tr>
- </table>
- This information is also included in the
- &ldquo;HDF5 Datasets&rdquo; chapter of
- the new <cite>HDF5 User's Guide</cite>,
- which is being prepared for release.
-<dt><strong>Note:</strong>
- <dd><code>H5Dcreate</code> can fail if there has been an error
- in setting up an element of the dataset creation property list.
- In such cases, each item in the property list must be examined
- to ensure that the setup satisfies to all required conditions.
- This problem is most likely to occur with the use of filters.
- <p>
- For example, <code>H5Dcreate</code> will fail without a meaningful
- explanation if
- <ul>
- <li>SZIP compression is being used on the dataset and
- <li>the SZIP parameter <code>pixels_per_block</code>
- is set to an inappropriate value.
- </ul>
- <p>
- In such a case, one would refer to the description of
- <a href="RM_H5P.html#Property-SetSzip"><code>H5Pset_szip</code></a>,
- looking for any conditions or requirements that might affect the
- local computing environment.
- <!--
- <p>
- Other known similar problems can occur with . . .
- -->
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the file or group
- within which to create the dataset.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em> <code>name</code></td>
- <td valign="top">IN: The name of the dataset to create.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">IN: Identifier of the datatype to use
- when creating the dataset.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Identifier of the dataspace to use
- when creating the dataset.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>create_plist_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the set creation property list.</td></tr>
- </table></ul>
-<!-- NEW PAGE -->
-<dt><strong>Returns:</strong>
- <dd>Returns a dataset identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dcreate_f
- <dd>
- <pre>
-SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, &
- hdferr, creation_prp)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
- ! Dataset creation propertly
- ! list identifier , default
- ! value is H5P_DEFAULT_F (6)
-END SUBROUTINE h5dcreate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dextend" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Extend">H5Dextend</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dextend</code>(<em>hid_t </em><code>dataset_id</code>,
- <em>const hsize_t *</em> <code>size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Extends a dataset with unlimited dimension.
-<dt><strong>Description:</strong>
- <dd><code>H5Dextend</code> verifies that the dataset is at least of size
- <code>size</code>.
- The dimensionality of <code>size</code> is the same as that of
- the dataspace of the dataset being changed.
- This function cannot be applied to a dataset with fixed dimensions.
- <p>
- Space on disk is immediately allocated for the new dataset extent
- if the dataset's space allocation time is set to
- <code>H5D_ALLOC_TIME_EARLY</code>.
- Fill values will be written to the dataset if the dataset's fill time
- is set to <code>H5D_FILL_TIME_IFSET</code> or
- <code>H5D_FILL_TIME_ALLOC</code>.
- (Also see
- <a href="RM_H5P.html#Property-SetFillTime">H5Pset_fill_time</a>
- and
- <a href="RM_H5P.html#Property-SetAllocTime">H5Pset_alloc_time</a>.)
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dataset_id</code></td>
- <td valign="top">IN: Identifier of the dataset.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hsize_t&nbsp;*</em>&nbsp;<code>size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Array containing the new magnitude of each dimension.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dextend_f
- <dd>
- <pre>
-SUBROUTINE h5dextend_f(dataset_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size
- ! Array containing
- ! dimensions' sizes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dextend_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dfill" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Fill">H5Dfill</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dfill</code>(
- <em>const void *</em><code>fill</code>,
- <em>hid_t </em><code>fill_type_id</code>,
- <em>void *</em><code>buf</code>,
- <em>hid_t </em><code>buf_type_id</code>,
- <em>hid_t </em><code>space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Fills dataspace elements with a fill value in a memory buffer.
-<dt><strong>Description:</strong>
- <dd><code>H5Dfill</code> explicitly fills
- the dataspace selection in memory, <code>space_id</code>,
- with the fill value specified in <code>fill</code>.
- If <code>fill</code> is <code>NULL</code>,
- a fill value of <code>0</code> (zero) is used.
- <p>
- <code>fill_type_id</code> specifies the datatype
- of the fill value.<br>
- <code>buf</code> specifies the buffer in which
- the dataspace elements will be written.<br>
- <code>buf_type_id</code> specifies the datatype of
- those data elements.
- <p>
- Note that if the fill value datatype differs
- from the memory buffer datatype, the fill value
- will be converted to the memory buffer datatype
- before filling the selection.
-<dt><strong>Note:</strong>
- <dd>Applications sometimes write data only to portions of
- an allocated dataset. It is often useful in such cases
- to fill the unused space with a known
- <span class="termEmphasis">fill value</span>.
- See <a href="RM_H5P.html#Property-SetFillValue">H5Pset_fill_value</a>
- for further discussion.
- Other related functions include
- <a href="RM_H5P.html#Property-GetFillValue">H5Pget_fill_value</a>,
- <a href="RM_H5P.html#Property-FillValueDefined">H5Pfill_value_defined</a>,
- <a href="RM_H5P.html#Property-SetFillTime">H5Pset_fill_time</a>,
- <a href="RM_H5P.html#Property-GetFillTime">H5Pget_fill_time</a>,
- and
- <a href="#Dataset-Create">H5Dcreate</a>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const void *</em><code>fill</code></td>
- <td valign="top">IN: Pointer to the fill value to be used.</td></tr>
- <tr>
- <td valign="top"><em>hid_t&nbsp;</em><code>fill_type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Fill value datatype identifier.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>buf</code></td>
- <td valign="top">IN/OUT: Pointer to the memory buffer containing the
- selection to be filled.</td></tr>
- <tr>
- <td valign="top"><em>hid_t </em><code>buf_type_id</code></td>
- <td valign="top">IN: Datatype of dataspace elements to be filled.</td></tr>
- <tr>
- <td valign="top"><em>hid_t </em><code>space_id</code></td>
- <td valign="top">IN: Dataspace describing memory buffer and
- containing the selection to be filled.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dfill_f
- <dd>
- <pre>
-SUBROUTINE h5dfill_f(fill_value, space_id, buf, hdferr)
- IMPLICIT NONE
- TYPE, INTENET(IN) :: fill_value ! Fill value; may be have one of the
- ! following types:
- ! INTEGER, REAL, DOUBLE PRECISION,
- ! CHARACTER
- INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier
- TYPE, DIMENSION(*) :: buf ! Memory buffer to fill in; must have
- ! the same datatype as fill value
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dfill_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dget_create_plist" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-GetCreatePlist">H5Dget_create_plist</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Dget_create_plist</code>(<em>hid_t </em><code>dataset_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns an identifier for a copy of the
- dataset creation property list for a dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dget_create_plist</code> returns an identifier for a
- copy of the dataset creation property list for a dataset.
- The creation property list identifier should be released with
- the <code>H5Pclose</code> function.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dataset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataset creation property list identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dget_create_plist_f
- <dd>
- <pre>
-SUBROUTINE h5dget_create_plist_f(dataset_id, creation_prp, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier
- INTEGER(HID_T), INTENT(OUT) :: creation_id ! Dataset creation
- ! property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dget_create_plist_f
-
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dget_offset" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-GetOffset">H5Dget_offset</a>
-<dt><strong>Signature:</strong>
- <dd><em>haddr_t </em><code>H5Dget_offset</code>(<em>hid_t </em><code>dset_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns dataset address in file.
-<dt><strong>Description:</strong>
- <dd><code>H5Dget_offset</code> returns the address in the file
- of the dataset <code>dset_id</code>.
- That address is expressed as the offset in bytes from
- the beginning of the file.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t&nbsp;</em><code>dset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Dataset identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the offset in bytes;
- otherwise returns <code>HADDR_UNDEF</code>, a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dget_space" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-GetSpace">H5Dget_space</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Dget_space</code>(<em>hid_t </em><code>dataset_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns an identifier for a copy of the dataspace for a dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dget_space</code> returns an identifier for a copy of the
- dataspace for a dataset.
- The dataspace identifier should be released with the
- <code>H5Sclose</code> function.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dataset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dget_space_f
- <dd>
- <pre>
-SUBROUTINE h5dget_space_f(dataset_id, dataspace_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier
- INTEGER(HID_T), INTENT(OUT) :: dataspace_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dget_space_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dget_space_status" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-GetSpaceStatus">H5Dget_space_status</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Dget_space_status</code>(<em>hid_t </em><code>dset_id</code>,
- <em>H5D_space_status_t *</em><code>status</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines whether space has been allocated for a dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dget_space_status</code> determines whether space has been
- allocated for the dataset <code>dset_id</code>.
- <p>
- Space allocation status is returned in <code>status</code>,
- which will have one of the following values:
- <center>
- <table border="0">
- <tr valign="top"><td rowspan="3">&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5D_SPACE_STATUS_NOT_ALLOCATED</code>
- </td><td>
- Space has not been allocated for this dataset.
- </td></tr><tr valign="top"><td>
- <code>H5D_SPACE_STATUS_ALLOCATED</code>
- </td><td>
- Space has been allocated for this dataset.
- </td></tr><tr valign="top"><td>
- <code>H5D_SPACE_STATUS_PART_ALLOCATED</code>&nbsp;&nbsp;
- </td><td>
- Space has been partially allocated for this dataset.
- (Used only for datasets with chunked storage.)
- </td></tr>
- </table>
- </center>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dset_id</code></td>
- <td valign="top">IN: Identifier of the dataset to query.</td></tr>
- <tr>
- <td valign="top"><em>H5D_space_status_t&nbsp;*</em><code>status&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Space allocation status.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dget_space_status_f
- <dd>
- <pre>
-SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- INTEGER, INTENET(OUT) :: flag ! Status flag ; possible values:
- ! H5D_SPACE_STS_ERROR_F
- ! H5D_SPACE_STS_NOT_ALLOCATED_F
- ! H5D_SPACE_STS_PART_ALLOCATED_F
- ! H5D_SPACE_STS_ALLOCATED_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dget_space_status_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dget_storage_size" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-GetStorageSize">H5Dget_storage_size</a>
-<dt><strong>Signature:</strong>
- <dd><em>hsize_t </em><code>H5Dget_storage_size</code>(<em>hid_t </em><code>dataset_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the amount of storage required for a dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dget_storage_size</code> returns the amount of storage
- that is required for the specified dataset, <code>dataset_id</code>.
- For chunked datasets, this is the number of allocated chunks times
- the chunk size.
- The return value may be zero if no data has been stored.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dataset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the amount of storage space allocated for the dataset,
- not counting meta data;
- otherwise returns 0 (zero).
-<dt><strong>Fortran90 Interface:</strong> h5dget_storage_size_f
- <dd>
- <pre>
-SUBROUTINE h5dget_storage_size_f(dset_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: size ! Amount of storage required
- ! for dataset
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dget_storage_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dget_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-GetType">H5Dget_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Dget_type</code>(<em>hid_t </em><code>dataset_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns an identifier for a copy of the datatype for a dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dget_type</code> returns an identifier for a copy of the
- datatype for a dataset.
- The datatype should be released with the <code>H5Tclose</code> function.
- <p>
- If a dataset has a named datatype, then an identifier to the
- opened datatype is returned.
- Otherwise, the returned datatype is read-only.
- If atomization of the datatype fails, then the datatype is closed.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dataset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a datatype identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dget_type_f
- <dd>
- <pre>
-SUBROUTINE h5dget_type_f(dataset_id, datatype_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier
- INTEGER(HID_T), INTENT(OUT) :: datatype_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dget_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Diterate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Iterate">H5Diterate</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Diterate</code>(
- <em>void *</em><code>buf</code>,
- <em>hid_t </em><code>type_id</code>,
- <em>hid_t </em><code>space_id</code>,
- <em>H5D_operator_t </em><code>operator</code>,
- <em>void *</em><code>operator_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Iterates over all selected elements in a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Diterate</code> iterates over all the elements selected
- in a memory buffer. The callback function is called once for each
- element selected in the dataspace.
- <p>
- The selection in the dataspace is modified so that any elements
- already iterated over are removed from the selection if the
- iteration is interrupted (by the <code>H5D_operator_t</code>
- function returning non-zero) before the iteration is complete;
- the iteration may then be re-started by the user where it left off.
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>void *</em><code>buf</code></td>
- <td valign="top">IN/OUT: Pointer to the buffer in memory containing the
- elements to iterate over.</td></tr>
- <tr>
- <td valign="top"><em>hid_t </em><code>type_id</code></td>
- <td valign="top">IN: Datatype identifier for the elements stored in
- <code>buf</code>.</td></tr>
- <tr>
- <td valign="top"><em>hid_t </em><code>space_id</code></td>
- <td valign="top">IN: Dataspace identifier for <code>buf</code>.
- Also contains the selection to iterate over.</td></tr>
- <tr>
- <td valign="top"><em>H5D_operator_t&nbsp;</em><code>operator&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Function pointer to the routine to be called
- for each element in <code>buf</code> iterated over.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>operator_data</code></td>
- <td valign="top">IN/OUT: Pointer to any user-defined data associated
- with the operation.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the return value of the last operator if it was non-zero,
- or zero if all elements have been processed.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dopen" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Open">H5Dopen</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Dopen</code>(<em>hid_t </em><code>loc_id</code>,
- <em>const char *</em><code>name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Opens an existing dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dopen</code> opens an existing dataset for access in the file
- or group specified in <code>loc_id</code>. <code>name</code> is
- a dataset name and is used to identify the dataset in the file.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the file or group
- within which the dataset to be accessed will be found.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The name of the dataset to access.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataset identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dopen_f
- <dd>
- <pre>
-SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset
- INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dopen_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dread" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Read">H5Dread</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dread</code>(<em>hid_t </em><code>dataset_id</code>,
- <em>hid_t</em> <code>mem_type_id</code>,
- <em>hid_t</em> <code>mem_space_id</code>,
- <em>hid_t</em> <code>file_space_id</code>,
- <em>hid_t</em> <code>xfer_plist_id</code>,
- <em>void *</em> <code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Reads raw data from a dataset into a buffer.
-<dt><strong>Description:</strong>
- <dd><code>H5Dread</code> reads a (partial) dataset, specified by its
- identifier <code>dataset_id</code>, from the
- file into an application memory buffer <code>buf</code>.
- Data transfer properties are defined by the argument
- <code>xfer_plist_id</code>.
- The memory datatype of the (partial) dataset is identified by
- the identifier <code>mem_type_id</code>.
- The part of the dataset to read is defined by
- <code>mem_space_id</code> and <code>file_space_id</code>.
- <p>
- <code>file_space_id</code> is used to specify only the selection within
- the file dataset's dataspace. Any dataspace specified in <code>file_space_id</code>
- is ignored by the library and the dataset's dataspace is always used.
- <code>file_space_id</code> can be the constant <code>H5S_ALL</code>.
- which indicates that the entire file dataspace, as defined by the
- current dimensions of the dataset, is to be selected.
- <p>
- <code>mem_space_id</code> is used to specify both the memory dataspace
- and the selection within that dataspace.
- <code>mem_space_id</code> can be the constant <code>H5S_ALL</code>,
- in which case the file dataspace is used for the memory dataspace and
- the selection defined with <code>file_space_id</code> is used for the
- selection within that dataspace.
- <p>
- If raw data storage space has not been allocated for the dataset
- and a fill value has been defined, the returned buffer <code>buf</code>
- is filled with the fill value.
- <p>
- The behavior of the library for the various combinations of valid
- dataspace identifiers and H5S_ALL for the <code>mem_space_id</code> and the
- <code>file_space_id</code> parameters is described below:
-
- <br><br>
- <table border=0>
- <tr>
- <th>
- <code>mem_space_id&nbsp;&nbsp;</code>
- </th>
- <th>
- <code>file_space_id&nbsp;&nbsp;</code>
- </th>
- <th>
- Behavior
- </th>
- </tr>
-
- <tr valign="top">
- <td>
- valid dataspace identifier
- </td>
- <td>
- valid dataspace identifier
- </td>
- <td>
- <code>mem_space_id</code> specifies the memory dataspace and the
- selection within it.
- <code>file_space_id</code> specifies the selection within the file
- dataset's dataspace.
- </td>
- </tr>
-
- <tr valign="top">
- <td>
- <code>H5S_ALL</code>
- </td>
- <td>
- valid dataspace identifier
- </td>
- <td>
- The file dataset's dataspace is used for the memory dataspace and the
- selection specified with <code>file_space_id</code> specifies the
- selection within it.
- The combination of the file dataset's dataspace and the selection from
- <code>file_space_id</code> is used for memory also.
- </td>
- </tr>
-
- <tr valign="top">
- <td>
- valid dataspace identifier
- </td>
- <td>
- <code>H5S_ALL</code>
- </td>
- <td>
- <code>mem_space_id</code> specifies the memory dataspace and the
- selection within it.
- The selection within the file dataset's dataspace is set to the "all"
- selection.
- </td>
- </tr>
-
- <tr valign="top">
- <td>
- <code>H5S_ALL</code>
- </td>
- <td>
- <code>H5S_ALL</code>
- </td>
- <td>
- The file dataset's dataspace is used for the memory dataspace and the
- selection within the memory dataspace is set to the "all" selection.
- The selection within the file dataset's dataspace is set to the "all"
- selection.
- </td>
- </tr>
-
- </table>
-
- <p>
- Setting an <code>H5S_ALL</code> selection indicates that the entire dataspace, as
- defined by the current dimensions of a dataspace, will be selected.
- The number of elements selected in the memory dataspace must match the
- number of elements selected in the file dataspace.
- <p>
- <code>xfer_plist_id</code> can be the constant <code>H5P_DEFAULT</code>.
- in which case the default data transfer properties are used.
- <p>
- Data is automatically converted from the file datatype
- and dataspace to the memory datatype and dataspace
- at the time of the read. See the
- <a href="Datatypes.html#Datatypes-DataConversion">Data Conversion</a>
- section of <cite>The Data Type Interface (H5T)</cite> in the
- <cite>HDF5 User's Guide</cite> for a discussion of
- data conversion, including the range of conversions currently
- supported by the HDF5 libraries.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dataset_id</code></td>
- <td valign="top">IN: Identifier of the dataset read from.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>mem_type_id</code></td>
- <td valign="top">IN: Identifier of the memory datatype.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>mem_space_id</code></td>
- <td valign="top">IN: Identifier of the memory dataspace.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset's dataspace in the file.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>xfer_plist_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of a transfer property list
- for this I/O operation.</td></tr>
- <tr>
- <td valign="top"><em>void *</em> <code>buf</code></td>
- <td valign="top">OUT: Buffer to receive data read from file.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dread_f
-
- <dd>
- <pre>
-SUBROUTINE h5dread_f(dset_id, mem_type_id, buf, dims, hdferr, &amp;
- mem_space_id, file_space_id, xfer_prp)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier
- TYPE, INTENT(INOUT) :: buf ! Data buffer; may be a scalar
- ! or an array
- DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims
- ! Array to hold corresponding
- ! dimension sizes of data
- ! buffer buf
- ! dim(k) has value of the k-th
- ! dimension of buffer buf
- ! Values are ignored if buf is
- ! a scalar
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id
- ! Memory dataspace identfier
- ! Default value is H5S_ALL_F
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id
- ! File dataspace identfier
- ! Default value is H5S_ALL_F
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp
- ! Transfer property list identifier
- ! Default value is H5P_DEFAULT_F
-END SUBROUTINE h5dread_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dvlen_get_buf_size" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-VLGetBuf">H5Dvlen_get_buf_size</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dvlen_get_buf_size</code>(<em>hid_t </em><code>dataset_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hsize_t</em> *<code>size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Determines the number of bytes required to store VL data.
-<dt><strong>Description:</strong>
- <dd><code>H5Dvlen_get_buf_size</code> determines the number of bytes
- required to store the VL data from the dataset, using the
- <code>space_id</code> for the selection in the dataset on
- disk and the <code>type_id</code> for the memory representation
- of the VL data in memory.
- <p>
- <code>*size</code> is returned with the number of bytes
- required to store the VL data in memory.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dataset_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset to query.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">IN: Datatype identifier.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Dataspace identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> *<code>size</code></td>
- <td valign="top">OUT: The size in bytes of the memory
- buffer required to store the VL data.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dvlen_get_max_len_f
- <dd>There is no direct FORTRAN couterpart for the C function
- <code>H5Dvlen_get_buf_size</code>;
- corresponding functionality is provided by the FORTRAN function
- <code>h5dvlen_get_max_len_f</code></a>.
- <br>
- <pre>
-SUBROUTINE h5dvlen_get_max_len_f(dset_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
-
- INTEGER(SIZE_T), INTENT(OUT) :: elem_len ! Maximum length of the element
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5dvlen_get_max_len_f
- </pre>
-
- <!--
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dvlen_reclaim" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-VLReclaim">H5Dvlen_reclaim</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dvlen_reclaim</code>(<em>hid_t </em><code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>,
- <em>hid_t</em> <code>plist_id</code>,
- <em>void</em> *<code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Reclaims VL datatype memory buffers.
-<dt><strong>Description:</strong>
- <dd><code>H5Dvlen_reclaim</code> reclaims memory buffers created to
- store VL datatypes.
- <p>
- The <code>type_id</code> must be the datatype stored in the buffer.
- The <code>space_id</code> describes the selection for the memory buffer
- to free the VL datatypes within.
- The <code>plist_id</code> is the dataset transfer property list which
- was used for the I/O transfer to create the buffer.
- And <code>buf</code> is the pointer to the buffer to be reclaimed.
- <p>
- The VL structures (<code>hvl_t</code>) in the user's buffer are
- modified to zero out the VL information after the memory has been reclaimed.
- <p>
- If nested VL datatypes were used to create the buffer,
- this routine frees them <em>from the bottom up</em>, releasing all
- the memory without creating memory leaks.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">IN: Identifier of the datatype.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataspace.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Identifier of the property list used to create the buffer.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>buf</code></td>
- <td valign="top">IN: Pointer to the buffer to be reclaimed.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Dwrite" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataset-Write">H5Dwrite</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Dwrite</code>(<em>hid_t </em><code>dataset_id</code>,
- <em>hid_t</em> <code>mem_type_id</code>,
- <em>hid_t</em> <code>mem_space_id</code>,
- <em>hid_t</em> <code>file_space_id</code>,
- <em>hid_t</em> <code>xfer_plist_id</code>,
- <em>const void *</em> <code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Writes raw data from a buffer to a dataset.
-<dt><strong>Description:</strong>
- <dd><code>H5Dwrite</code> writes a (partial) dataset, specified by its
- identifier <code>dataset_id</code>, from the
- application memory buffer <code>buf</code> into the file.
- Data transfer properties are defined by the argument
- <code>xfer_plist_id</code>.
- The memory datatype of the (partial) dataset is identified by
- the identifier <code>mem_type_id</code>.
- The part of the dataset to write is defined by
- <code>mem_space_id</code> and <code>file_space_id</code>.
- <p>
- <code>file_space_id</code> is used to specify only the selection within
- the file dataset's dataspace. Any dataspace specified in <code>file_space_id</code>
- is ignored by the library and the dataset's dataspace is always used.
- <code>file_space_id</code> can be the constant <code>H5S_ALL</code>.
- which indicates that the entire file dataspace, as defined by the
- current dimensions of the dataset, is to be selected.
- <p>
- <code>mem_space_id</code> is used to specify both the memory dataspace
- and the selection within that dataspace.
- <code>mem_space_id</code> can be the constant <code>H5S_ALL</code>,
- in which case the file dataspace is used for the memory dataspace and
- the selection defined with <code>file_space_id</code> is used for the
- selection within that dataspace.
- <p>
- The behavior of the library for the various combinations of valid
- dataspace IDs and H5S_ALL for the <code>mem_space_id</code> and the
- <code>file_space_id</code> parameters is described below:
-
- <br><br>
- <table border=0>
- <tr>
- <th>
- <code>mem_space_id&nbsp;&nbsp;</code>
- </th>
- <th>
- <code>file_space_id&nbsp;&nbsp;</code>
- </th>
- <th>
- Behavior
- </th>
- </tr>
-
- <tr valign="top">
- <td>
- valid dataspace identifier
- </td>
- <td>
- valid dataspace identifier
- </td>
- <td>
- <code>mem_space_id</code> specifies the memory dataspace and the
- selection within it.
- <code>file_space_id</code> specifies the selection within the file
- dataset's dataspace.
- </td>
- </tr>
-
- <tr valign="top">
- <td>
- H5S_ALL
- </td>
- <td>
- valid dataspace identifier
- </td>
- <td>
- The file dataset's dataspace is used for the memory dataspace and the
- selection specified with <code>file_space_id</code> specifies the
- selection within it.
- The combination of the file dataset's dataspace and the selection from
- <code>file_space_id</code> is used for memory also.
- </td>
- </tr>
-
- <tr valign="top">
- <td>
- valid dataspace identifier
- </td>
- <td>
- H5S_ALL
- </td>
- <td>
- <code>mem_space_id</code> specifies the memory dataspace and the
- selection within it.
- The selection within the file dataset's dataspace is set to the "all"
- selection.
- </td>
- </tr>
-
- <tr valign="top">
- <td>
- H5S_ALL
- </td>
- <td>
- H5S_ALL
- </td>
- <td>
- The file dataset's dataspace is used for the memory dataspace and the
- selection within the memory dataspace is set to the "all" selection.
- The selection within the file dataset's dataspace is set to the "all"
- selection.
- </td>
- </tr>
- </table>
-
- <p>
- Setting an "all" selection indicates that the entire dataspace, as
- defined by the current dimensions of a dataspace, will be selected.
- The number of elements selected in the memory dataspace must match the
- number of elements selected in the file dataspace.
- <p>
- <code>xfer_plist_id</code> can be the constant <code>H5P_DEFAULT</code>.
- in which case the default data transfer properties are used.
- <p>
- Writing to an dataset will fail if the HDF5 file was
- not opened with write access permissions.
- <p>
- Data is automatically converted from the memory datatype
- and dataspace to the file datatype and dataspace
- at the time of the write. See the
- <a href="Datatypes.html#Datatypes-DataConversion">Data Conversion</a>
- section of <cite>The Data Type Interface (H5T)</cite> in the
- <cite>HDF5 User's Guide</cite> for a discussion of
- data conversion, including the range of conversions currently
- supported by the HDF5 libraries.
- <p>
- If the dataset's space allocation time is set to
- <code>H5D_ALLOC_TIME_LATE</code> or <code>H5D_ALLOC_TIME_INCR</code>
- and the space for the dataset has not yet been allocated,
- that space is allocated when the first raw data is written to the
- dataset.
- Unused space in the dataset will be written with fill values at the
- same time if the dataset's fill time is set to
- <code>H5D_FILL_TIME_IFSET</code> or <code>H5D_FILL_TIME_ALLOC</code>.
- (Also see
- <a href="RM_H5P.html#Property-SetFillTime">H5Pset_fill_time</a>
- and
- <a href="RM_H5P.html#Property-SetAllocTime">H5Pset_alloc_time</a>.)
- <p>
- If a dataset's storage layout is 'compact', care must be taken when
- writing data to the dataset in parallel. A compact dataset's raw data
- is cached in memory and may be flushed to the file from any of the
- parallel processes, so parallel applications should always attempt to
- write identical data to the dataset from all processes.
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dataset_id</code></td>
- <td valign="top">IN: Identifier of the dataset to write to.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>mem_type_id</code></td>
- <td valign="top">IN: Identifier of the memory datatype.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>mem_space_id</code></td>
- <td valign="top">IN: Identifier of the memory dataspace.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the dataset's dataspace in the file.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>xfer_plist_id</code></td>
- <td valign="top">IN: Identifier of a transfer property list
- for this I/O operation.</td></tr>
- <tr>
- <td valign="top"><em>const void *</em> <code>buf</code></td>
- <td valign="top">IN: Buffer with data to be written to the file.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5dwrite_f
-
- <dd>
- <pre>
-SUBROUTINE h5dwrite_f(dset_id, mem_type_id, buf, dims, hdferr, &amp;
- mem_space_id, file_space_id, xfer_prp)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier
- TYPE, INTENT(IN) :: buf ! Data buffer; may be a scalar
- ! or an array</pre>
-<!-- NEW PAGE -->
-<pre>
- DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims
- ! Array to hold corresponding
- ! dimension sizes of data
- ! buffer buf; dim(k) has value
- ! of the k-th dimension of
- ! buffer buf; values are
- ! ignored if buf is a scalar
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id
- ! Memory dataspace identfier
- ! Default value is H5S_ALL_F
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id
- ! File dataspace identfier
- ! Default value is H5S_ALL_F
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp
- ! Transfer property list
- ! identifier; default value
- ! is H5P_DEFAULT_F
-
-END SUBROUTINE h5dwrite_f
- </pre>
-
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 2 August 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5E.html b/doc/html/RM_H5E.html
deleted file mode 100644
index 3678b18..0000000
--- a/doc/html/RM_H5E.html
+++ /dev/null
@@ -1,1689 +0,0 @@
-<html>
-<head><title>
-HDF5/H5E API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<!--
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
--->
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5E: Error Interface</h1>
-</center>
-
-<h2>Error API Functions</h2>
-
-These functions provide error handling capabilities in the HDF5 environment.
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Error-Clear">H5Eclear</a>
- <li><a href="#Error-ClearStack">H5Eclear_stack</a>
- <li><a href="#Error-Print">H5Eprint</a>
- <li><a href="#Error-PrintStack">H5Eprint_stack</a>
- <li><a href="#Error-Push">H5Epush</a>
- <li><a href="#Error-PushStack">H5Epush_stack</a>
- <li><a href="#Error-Pop">H5Epop</a>
- <li><a href="#Error-GetNum">H5Eget_num</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Error-GetMajor">H5Eget_major</a>
- <li><a href="#Error-GetMinor">H5Eget_minor</a>
- <li><a href="#Error-GetMsg">H5Eget_msg</a>
- <li><a href="#Error-CreateMsg">H5Ecreate_msg</a>
- <li><a href="#Error-CloseMsg">H5Eclose_msg</a>
- <li><a href="#Error-RegisterClass">H5Eregister_class</a>
- <li><a href="#Error-UnregisterClass">H5Eunregister_class</a>
- <li><a href="#Error-GetClassName">H5Eget_class_name</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Error-AutoIsStack">H5Eauto_is_stack</a>
- <li><a href="#Error-SetAuto">H5Eset_auto</a>
- <li><a href="#Error-SetAutoStack">H5Eset_auto_stack</a>
- <li><a href="#Error-GetAuto">H5Eget_auto</a>
- <li><a href="#Error-GetAutoStack">H5Eget_auto_stack</a>
- <li><a href="#Error-Walk">H5Ewalk</a>
- <li><a href="#Error-WalkStack">H5Ewalk_stack</a>
- <li><a href="#Error-WalkCB">H5Ewalk_cb</a>
- <li><a href="#Error-GetCurrentStack">H5Eget_current_stack</a>
- <li><a href="#Error-SetCurrentStack">H5Eset_current_stack</a>
- <li><a href="#Error-CloseStack">H5Eclose_stack</a>
-</ul>
-</td></tr>
-</table>
-<br>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Error-AutoIsStack">H5Eauto_is_stack</a>
- <li><a href="#Error-Clear">H5Eclear</a>
- <li><a href="#Error-ClearStack">H5Eclear_stack</a>
- <li><a href="#Error-CloseMsg">H5Eclose_msg</a>
- <li><a href="#Error-CloseStack">H5Eclose_stack</a>
- <li><a href="#Error-CreateMsg">H5Ecreate_msg</a>
- <li><a href="#Error-GetAuto">H5Eget_auto</a>
- <li><a href="#Error-GetAutoStack">H5Eget_auto_stack</a>
- <li><a href="#Error-GetClassName">H5Eget_class_name</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Error-GetCurrentStack">H5Eget_current_stack</a>
- <li><a href="#Error-GetMajor">H5Eget_major</a>
- <li><a href="#Error-GetMinor">H5Eget_minor</a>
- <li><a href="#Error-GetMsg">H5Eget_msg</a>
- <li><a href="#Error-GetNum">H5Eget_num</a>
- <li><a href="#Error-Pop">H5Epop</a>
- <li><a href="#Error-Print">H5Eprint</a>
- <li><a href="#Error-PrintStack">H5Eprint_stack</a>
- <li><a href="#Error-Push">H5Epush</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Error-PushStack">H5Epush_stack</a>
- <li><a href="#Error-RegisterClass">H5Eregister_class</a>
- <li><a href="#Error-SetAuto">H5Eset_auto</a>
- <li><a href="#Error-SetAutoStack">H5Eset_auto_stack</a>
- <li><a href="#Error-SetCurrentStack">H5Eset_current_stack</a>
- <li><a href="#Error-UnregisterClass">H5Eunregister_class</a>
- <li><a href="#Error-Walk">H5Ewalk</a>
- <li><a href="#Error-WalkStack">H5Ewalk_stack</a>
- <li><a href="#Error-WalkCB">H5Ewalk_cb</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Error-Clear">h5eclear_f</a>
- <li><a href="#Error-Print">h5eprint_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Error-SetAuto">h5eset_auto_f</a>
-<!--<li><a href="#Error-GetAuto">h5eget_auto_f</a> -->
-<!--<li><a href="#Error-Walk">h5ewalk_f</a> -->
-<!--<li><a href="#Error-WalkCB">h5ewalk_cb_f</a> -->
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Error-GetMajor">h5eget_major_f</a>
- <li><a href="#Error-GetMinor">h5eget_minor_f</a>
-</ul>
-</td></tr>
-</table>
-
-<p>
-The Error interface provides error handling in the form of a stack.
-The <code>FUNC_ENTER()</code> macro clears the error stack whenever
-an interface function is entered.
-When an error is detected, an entry is pushed onto the stack.
-As the functions unwind, additional entries are pushed onto the stack.
-The API function will return some indication that an error occurred and
-the application can print the error stack.
-<p>
-Certain API functions in the H5E package, such as <code>H5Eprint</code>,
-do not clear the error stack. Otherwise, any function which
-does not have an underscore immediately after the package name
-will clear the error stack. For instance, <code>H5Fopen</code>
-clears the error stack while <code>H5F_open</code> does not.
-<p>
-An error stack has a fixed maximum size.
-If this size is exceeded then the stack will be truncated and only the
-inner-most functions will have entries on the stack.
-This is expected to be a rare condition.
-<p>
-Each thread has its own error stack, but since
-multi-threading has not been added to the library yet, this
-package maintains a single error stack. The error stack is
-statically allocated to reduce the complexity of handling
-errors within the H5E package.
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eauto_is_stack" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-AutoIsStack">H5Eauto_is_stack</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eauto_is_stack</code>(<em>hid_t</em>
- <code>estack_id</code>, <em>unsigned</em> *<code>is_stack</code>)
- <dt><strong>Purpose:</strong>
- <dd>Determines type of error stack.
- <dt><strong>Description:</strong>
- <dd><code>H5Eauto_is_stack</code> determines whether the error auto
- reporting function for an error stack conforms to the
- <code>H5E_auto_stack_t</code> typedef or the
- <code>H5E_auto_t</code> typedef.
- <p>
- The <code>is_stack</code> parameter is set to <code>1</code>1
- if the error stack conforms to <code>H5E_auto_stack_t</code>
- and <code>0</code> for if <code>H5E_auto_t</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>estack_id</code></td>
- <td valign="top">The error stack identifier</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em>*&nbsp;<code>is_stack</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">A flag indicating which error stack typedef
- the specified error stack conforms to. </td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eclear" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-Clear">H5Eclear</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>herr_t</em> <code>H5Eclear</code>(<code>void</code>)
-<dt><strong>Purpose:</strong>
- <dd>Clears the error stack for the current thread.
-<dt><strong>Description:</strong>
- <dd><code>H5Eclear</code> clears the error stack for the current thread.
- <p>
- The stack is also cleared whenever an API function is called,
- with certain exceptions (for instance, <code>H5Eprint</code>).
- <p>
- <code>H5Eclear</code> can fail if there are problems initializing
- the library.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-ClearStack"><code>H5Eclear_stack</code></a>
- replaces <code>H5Eclear</code> and <code>H5Eclear</code> is designated
- a <em>deprecated function</em>. <code>H5Eclear</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr><td valign="top">None</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5eclear_f
- <dd>
- <pre>
-SUBROUTINE h5eclear_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eclear_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eclear_stack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-ClearStack">H5Eclear_stack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eclear_stack</code>(<em>hid_t</em> <code>estack_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Clears the error stack for the current thread.
-<dt><strong>Description:</strong>
- <dd><code>H5Eclear_stack</code> clears the error stack specified
- by <code>estack_id</code> for the current thread.
- <p>
- If the value of <code>estack_id</code> is <code>H5E_DEFAULT</code>,
- the current current error stack will be cleared.
- <p>
- The current error stack is also cleared whenever an API function
- is called, with certain exceptions
- (for instance, <code>H5Eprint</code>).
- <p>
- <code>H5Eclear_stack</code> can fail if there are problems initializing
- the library.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>mesg_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error message identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <dd>
- <pre>
-SUBROUTINE h5eclear_stack_f(hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eclear_stack_f
- </pre>
- -->
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eclose_msg" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-CloseMsg">H5Eclose_msg</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eclose_msg</code>(<em>hid_t</em>
- <code>mesg_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Closes an error message identifier.
- <dt><strong>Description:</strong>
- <dd><code>H5Eclose_msg</code> closes an error message identifier.,
- which can be either a major or minor message.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>mesg_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error message identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eclose_stack" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-CloseStack">H5Eclose_stack</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eclose_stack</code>(<em>hid_t</em>
- <code>estack_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Closes object handle for error stack.
- <dt><strong>Description:</strong>
- <dd><code>H5Eclose_stack</code> closes the object handle for an
- error stack and releases its resources. <code>H5E_DEFAULT</code>
- cannot be closed.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>estack_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error stack identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Ecreate_msg" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-CreateMsg">H5Ecreate_msg</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Ecreate_msg</code>(<em>hid_t</em>
- <code>class</code>, <em>H5E_type_t</em> <code>msg_type</code>,
- <em>const char</em>* <code>mesg</code>)
- <dt><strong>Purpose:</strong>
- <dd>Add major error message to an error class.
- <dt><strong>Description:</strong>
- <dd><code>H5Ecreate_msg</code> adds an error message to an error class
- defined by client library or application program. The error message
- can be either major or minor which is indicated
- by parameter <code>msg_type</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>class</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error class identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5E_type_t</em>&nbsp;<code>msg_type</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: The type of the error message.
- <br>
- Valid values are <code>H5E_MAJOR</code> and
- <code>H5E_MINOR</code>.</td></tr>
- <tr>
- <td valign="top"><em>const char</em>*&nbsp;<code>mesg</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Major error message.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a message identifier on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_auto" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-GetAuto">H5Eget_auto</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>herr_t</em> <code>H5Eget_auto</code>(<em>H5E_auto_t *</em> <code>func</code>,
- <em>void **</em><code>client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the current settings for the automatic error stack
- traversal function and its data.
-<dt><strong>Description:</strong>
- <dd><code>H5Eget_auto</code> returns the current settings for the
- automatic error stack traversal function, <code>func</code>,
- and its data, <code>client_data</code>. Either (or both)
- arguments may be null in which case the value is not returned.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-GetAutoStack"><code>H5Eget_auto_stack</code></a>
- replaces <code>H5Eget_auto</code> and <code>H5Eget_auto</code> is designated
- a <em>deprecated function</em>. <code>H5Eget_auto</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5E_auto_t *</em> <code>func</code></td>
- <td valign="top">OUT: Current setting for the function to be called upon an
- error condition.</td></tr>
- <tr>
- <td valign="top"><em>void&nbsp;**</em><code>client_data&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Current setting for the data passed to the error function.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_auto_stack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-GetAutoStack">H5Eget_auto_stack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eget_auto_stack</code>(
- <em>hid_t</em> <code>estack_id</code>,
- <em>H5E_auto_stack_t *</em> <code>func</code>,
- <em>void **</em><code>client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the current settings for the automatic error stack
- traversal function and its data.
-<dt><strong>Description:</strong>
- <dd><code>H5Eget_auto_stack</code> returns the current settings for the
- automatic error stack traversal function, <code>func</code>,
- and its data, <code>client_data</code>, that are associated with
- the error stack specified by <code>estack_id</code>.
- <p>
- Either or both of the <code>func</code> and <code>client_data</code>
- arguments may be null, in which case the value is not returned.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>estack_id</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error stack identifier.
- <code>H5E_DEFAULT</code> indicates the current stack.</td></tr>
- <tr>
- <td valign="top"><em>H5E_auto_stack_t *</em> <code>func</code></td>
- <td valign="top">OUT: The function currently set to be
- called upon an error condition.</td></tr>
- <tr>
- <td valign="top"><em>void&nbsp;**</em><code>client_data&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Data currently set to be passed
- to the error function.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_class_name" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-GetClassName">H5Eget_class_name</a>
- <dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Eget_class_name</code>(<em>hid_t</em>
- <code>class_id</code>, <em>char</em>* <code>name</code>,
- <em>size_t</em> <code>size</code>)
- <dt><strong>Purpose:</strong>
- <dd>Retrieves error class name.
- <dt><strong>Description:</strong>
- <dd><code>H5Eget_class_name</code> retrieves the name of the error class
- specified by the class identifier.
- If non-NULL pointer is passed in for <code>name</code> and
- <code>size</code> is greater than zero, the class
- name of <code>size</code> long is returned. The length of the error
- class name is also returned.
- If NULL is passed in as name, only the length of
- class name is returned. If zero is returned, it means no name.
- User is responsible for allocated enough buffer for the name.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>class_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error class identifier.</td></tr>
- <tr>
- <td valign="top"><em>char</em>*&nbsp;<code>name</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: The name of the class to be queried.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>size</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: The length of class name to be returned
- by this function.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns non-negative value as on success;
- otherwise returns negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_current_stack" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-GetCurrentStack">H5Eget_current_stack</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Eget_current_stack</code>(<em>void</em>)
- <dt><strong>Purpose:</strong>
- <dd>Registers the current error stack.
- <dt><strong>Description:</strong>
- <dd><code>H5Eget_current_stack</code> registers the current error stack,
- returns an object identifier, and clears the current error stack.
- An empty error stack will also be assigned an identifier.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr><td>None.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the identifier of the current error stack on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_major" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-GetMajor">H5Eget_major</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>const char *</em> <code>H5Eget_major</code>(<em>H5E_major_t</em> <code>n</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns a character string describing an error specified by a
- major error number.
-<dt><strong>Description:</strong>
- <dd>Given a major error number, <code>H5Eget_major</code> returns a
- constant character string that describes the error.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-GetMsg"><code>H5Eget_msg</code></a>
- replaces <code>H5Eget_major</code> and <code>H5Eget_major</code> is designated
- a <em>deprecated function</em>. <code>H5Eget_major</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5E_major_t</em>&nbsp;<code>n&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Major error number.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd> Returns a character string describing the error if successful.
- Otherwise returns "Invalid major error number."
-<dt><strong>Fortran90 Interface:</strong> h5eget_major_f
- <dd>
- <pre>
-SUBROUTINE h5eget_major_f(error_no, name, hdferr)
- INTEGER, INTENT(IN) :: error_no !Major error number
- CHARACTER(LEN=*), INTENT(OUT) :: name ! File name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eget_major_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_minor" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-GetMinor">H5Eget_minor</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>const char *</em> <code>H5Eget_minor</code>(<em>H5E_minor_t</em> <code>n</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns a character string describing an error specified by a
- minor error number.
-<dt><strong>Description:</strong>
- <dd>Given a minor error number, <code>H5Eget_minor</code> returns a
- constant character string that describes the error.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-GetMsg"><code>H5Eget_msg</code></a>
- replaces <code>H5Eget_minor</code> and <code>H5Eget_minor</code> is designated
- a <em>deprecated function</em>. <code>H5Eget_minor</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5E_minor_t</em>&nbsp;<code>n&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Minor error number.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd> Returns a character string describing the error if successful.
- Otherwise returns "Invalid minor error number."
-<dt><strong>Fortran90 Interface:</strong> h5eget_minor_f
- <dd>
- <pre>
-SUBROUTINE h5eget_minor_f(error_no, name, hdferr)
- INTEGER, INTENT(IN) :: error_no !Major error number
- CHARACTER(LEN=*), INTENT(OUT) :: name ! File name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eget_minor_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_msg" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-GetMsg">H5Eget_msg</a>
- <dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Eget_msg</code>(<em>hid_t</em>
- <code>mesg_id</code>, <em>H5E_type_t</em>* <code>mesg_type</code>,
- <em>char</em>* <code>mesg</code>, <em>size_t</em> <code>size</code>)
- <dt><strong>Purpose:</strong>
- <dd>Retrieves an error message.
- <dt><strong>Description:</strong>
- <dd><code>H5Eget_msg</code> retrieves the error message including its
- length and type. The error message is specified by <code>mesg_id</code>.
- User is responsible for passing in enough buffer for the message.
- If <code>mesg</code> is not NULL and <code>size</code> is greater than zero,
- the error message of <code>size</code> long is returned. The length of the
- message is also returned. If NULL is passed in as <code>mesg</code>, only the
- length and type of the message is returned. If the return value is zero,
- it means no message.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>mesg_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Idenfier for error message to be queried.</td></tr>
- <tr>
- <td valign="top"><em>H5E_type_t</em>*&nbsp;<code>mesg_type</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: The type of the error message.
- <br>
- Valid values are <code>H5E_MAJOR</code> and
- <code>H5E_MINOR</code>.</td></tr>
- <tr>
- <td valign="top"><em>char</em>*&nbsp;<code>mesg</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Error message buffer.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>size</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: The length of error message to be returned
- by this function.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the size of the error message in bytes on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eget_num" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-GetNum">H5Eget_num</a>
- <dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Eget_num</code>(<em>hid_t</em> <code>estack_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the number of error messages in an error stack.
- <dt><strong>Description:</strong>
- <dd><code>H5Eget_num</code> retrieves the number of error records
- in the error stack specified by <code>estack_id</code>
- (including major, minor messages and description).
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>estack_id</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error stack identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Epop" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-Pop">H5Epop</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Epop</code>(<em>hid_t</em>
- <code>estack_id</code>, <em>size_t</em> <code>count</code>)
- <dt><strong>Purpose:</strong>
- <dd>Deletes specified number of error messages from the error stack.
- <dt><strong>Description:</strong>
- <dd><code>H5Epop</code> deletes the number of error records specified
- in <code>count</code> from the top of the error stack
- specified by <code>estack_id</code>
- (including major, minor messages and description).
- The number of error messages to be deleted is specified by count.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>estack_id</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error stack identifier.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>count</code></td>
- <td valign="top">IN: The number of error messages to be deleted
- from the top of error stack.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eprint" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-Print">H5Eprint</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>herr_t</em> <code>H5Eprint</code>(<em>FILE *</em> <code>stream</code>)
-<dt><strong>Purpose:</strong>
- <dd>Prints the error stack in a default manner.
-<dt><strong>Description:</strong>
- <dd><code>H5Eprint</code> prints the error stack on the specified
- stream, <code>stream</code>.
- Even if the error stack is empty, a one-line message will be printed:
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <code>HDF5-DIAG: Error detected in thread 0.</code>
- <p>
- <code>H5Eprint</code> is a convenience function for
- <code>H5Ewalk</code> with a function that prints error messages.
- Users are encouraged to write their own more specific error handlers.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-PrintStack"><code>H5Eprint_stack</code></a>
- replaces <code>H5Eprint</code> and <code>H5Eprint</code> is designated
- a <em>deprecated function</em>. <code>H5Eprint</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>FILE&nbsp;*</em>&nbsp;<code>stream&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File pointer, or stderr if NULL.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5eprint_f
- <dd>
- <pre>
-SUBROUTINE h5eprint_f(hdferr, name)
- CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: name ! File name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eprint_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eprint_stack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-PrintStack">H5Eprint_stack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eprint</code>(
- <em>hid_t</em> <code>estack_id</code>,
- <em>FILE *</em> <code>stream</code>)
-<dt><strong>Purpose:</strong>
- <dd>Prints the error stack in a default manner.
-<dt><strong>Description:</strong>
- <dd><code>H5Eprint_stack</code> prints the error stack specified by
- <code>estack_id</code> on the specified stream, <code>stream</code>.
- Even if the error stack is empty, a one-line message of the
- following form will be printed:
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <code>HDF5-DIAG: Error detected in HDF5 library version: 1.5.62
- thread 0.</code>
- <p>
- A similar line will appear before the error messages of each
- error class stating the library name, library version number, and
- thread identifier.
- <p>
- If <code>estack_id</code> is <code>H5E_DEFAULT</code>,
- the current error stack will be printed.
- <p>
- <code>H5Eprint_stack</code> is a convenience function for
- <code>H5Ewalk_stack</code> with a function that prints error messages.
- Users are encouraged to write their own more specific error handlers.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t </em><code>estack_id</code></td>
- <td valign="top">IN: Identifier of the error stack to be printed.
- If the identifier is <code>H5E_DEFAULT</code>,
- the current error stack will be printed.</td></tr>
- <tr>
- <td valign="top"><em>FILE&nbsp;*</em>&nbsp;<code>stream&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File pointer, or stderr if NULL.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
-<dt><strong>Fortran90 Interface:</strong> h5eprint_stack_f
- <dd>
- <pre>
-SUBROUTINE h5eprint_stack_f(hdferr, name)
- CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: name ! File name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eprint_stack_f
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Epush" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-Push">H5Epush</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>herr_t</em> <code>H5Epush</code>(
- <em>const char *</em><code>file</code>,
- <em>const char *</em><code>func</code>,
- <em>unsigned</em> <code>line</code>,
- <em>H5E_major_t</em> <code>maj_num</code>,
- <em>H5E_minor_t</em> <code>min_num</code>,
- <em>const char *</em><code>str</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Pushes new error record onto error stack.
-<dt><strong>Description:</strong>
- <dd><code>H5Epush</code> pushes a new error record onto the
- error stack for the current thread.
- <p>
- The error has major and minor numbers <code>maj_num</code> and
- <code>min_num</code>,
- the function <code>func</code> where the error was detected,
- the name of the file <code>file</code> where the error was detected,
- the line <code>line</code> within that file,
- and an error description string <code>str</code>.
- <p>
- The function name, filename, and error description strings
- must be statically allocated.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-PushStack"><code>H5Epush_stack</code></a>
- replaces <code>H5Epush</code> and <code>H5Epush</code> is designated
- a <em>deprecated function</em>. <code>H5Epush</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters, <code>H5Epush</code>:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const char *</em><code>file</code></td>
- <td valign="top">IN: Name of the file in which the error
- was detected.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>func</code></td>
- <td valign="top">IN: Name of the function in which the error
- was detected.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>line</code></td>
- <td valign="top">IN: Line within the file at which the error
- was detected.</td></tr>
- <tr>
- <td valign="top"><em>H5E_major_t</em>&nbsp;<code>maj_num&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Major error number.</td></tr>
- <tr>
- <td valign="top"><em>H5E_minor_t</em> <code>min_num</code></td>
- <td valign="top">IN: Minor error number.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>str</code></td>
- <td valign="top">IN: Error description string.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Epush_stack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-PushStack">H5Epush_stack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Epush_stack</code>(
- <em>hid_t </em><code>estack_id</code>,
- <em>const char *</em><code>file</code>,
- <em>const char *</em><code>func</code>,
- <em>unsigned</em> <code>line</code>,
- <em>hid_t </em><code>class_id</code>,
- <em>hid_t</em> <code>major_id</code>,
- <em>hid_t</em> <code>minor_id</code>,
- <em>const char *</em><code>msg</code>,
- ...)
-<dt><strong>Purpose:</strong>
- <dd>Pushes new error record onto error stack.
-<dt><strong>Description:</strong>
- <dd><code>H5Epush_stack</code> pushes a new error record onto the
- error stack for the current thread.
- <p>
- The error record contains
- the error class identifier <code>class_id</code>,
- the major and minor message identifiers <code>major_id</code> and
- <code>minor_id</code>,
- the function name <code>func</code> where the error was detected,
- the filename <code>file</code> and line number <code>line</code>
- within that file where the error was detected, and
- an error description <code>msg</code>.
- <p>
- The major and minor errors must be in the same error class.
- <p>
- The function name, filename, and error description strings
- must be statically allocated.
- <p>
- <code>msg</code> can be a format control string with
- additional arguments. This design of appending additional arguments
- is similar to the system and C functions <code>printf</code> and
- <code>fprintf</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t </em><code>estack_id</code></td>
- <td valign="top">IN: Identifier of the error stack to which
- the error record is to be pushed.
- If the identifier is <code>H5E_DEFAULT</code>, the error record
- will be pushed to the current stack.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>file</code></td>
- <td valign="top">IN: Name of the file in which the error was
- detected.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>func</code></td>
- <td valign="top">IN: Name of the function in which the error was
- detected.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>line</code></td>
- <td valign="top">IN: Line number within the file at which the
- error was detected.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>class_id</code></td>
- <td valign="top">IN: Error class identifier.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>major_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Major error identifier.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>minor_id</code></td>
- <td valign="top">IN: Minor error identifier.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>msg</code></td>
- <td valign="top">IN: Error description string.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eregister_class" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-RegisterClass">H5Eregister_class</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Eregister_class</code>(<em>const char</em>*
- <code>cls_name</code>, <em>const char</em>* <code>lib_name</code>,
- <em>const char</em>* <code>version</code>)
- <dt><strong>Purpose:</strong>
- <dd>Registers a client library or application program to HDF5 error API.
- <dt><strong>Description:</strong>
- <dd><code>H5Eregister_class</code> registers a client library or
- application program to HDF5 error API so that the client library
- or application program can report error together with HDF5 library.
- It receives an identifier for this error class for further error
- operations. The library name and version number will
- be printed out in the error message as preamble.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>*&nbsp;<code>cls_name</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Name of the error class.</td></tr>
- <tr>
- <td valign="top"><em>const char</em>* <code>lib_name</code></td>
- <td valign="top">IN: Name of the client library or application
- to which the error class belongs.</td></tr>
- <tr>
- <td valign="top"><em>const char</em>* <code>version</code></td>
- <td valign="top">IN: Version of the client library or application
- to which the error class belongs.
- A NULL can be passed in.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a class identifier on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eset_auto" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-SetAuto">H5Eset_auto</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>herr_t</em> <code>H5Eset_auto</code>(<em>H5E_auto_t</em> <code>func</code>,
- <em>void *</em><code>client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Turns automatic error printing on or off.
-<dt><strong>Description:</strong>
- <dd><code>H5Eset_auto</code> turns on or off automatic printing of
- errors. When turned on (non-null <code>func</code> pointer),
- any API function which returns an error indication will
- first call <code>func</code>, passing it <code>client_data</code>
- as an argument.
- <p>
- When the library is first initialized the auto printing function
- is set to <code>H5Eprint</code> (cast appropriately) and
- <code>client_data</code> is the standard error stream pointer,
- <code>stderr</code>.
- <p>
- Automatic stack traversal is always in the
- <code>H5E_WALK_DOWNWARD</code> direction.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-SetAutoStack"><code>H5Eset_auto_stack</code></a>
- replaces <code>H5Eset_auto</code> and <code>H5Eset_auto</code> is designated
- a <em>deprecated function</em>. <code>H5Eset_auto</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5E_auto_t</em> <code>func</code></td>
- <td valign="top">IN: Function to be called upon an error condition.</td></tr>
- <tr>
- <td valign="top"><em>void&nbsp;*</em><code>client_data&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Data passed to the error function.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5eset_auto_f
- <dd>
- <pre>
-SUBROUTINE h5eset_auto_f(printflag, hdferr)
- INTEGER, INTENT(IN) :: printflag !flag to turn automatic error
- !printing on or off
- !possible values are:
- !printon (1)
- !printoff(0)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eset_auto_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eset_auto_stack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-SetAutoStack">H5Eset_auto_stack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eset_auto_stack</code>(
- <em>hid_t</em> <code>estack_id</code>,
- <em>H5E_auto_stack_t</em> <code>func</code>,
- <em>void *</em><code>client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Turns automatic error printing on or off.
-<dt><strong>Description:</strong>
- <dd><code>H5Eset_auto_stack</code> turns on or off automatic printing of
- errors for the error stack specified with <code>estack_id</code>.
- An <code>estack_id</code> value of <code>H5E_DEFAULT</code>
- indicates the current stack.
- <p>
- When automatic printing is turned on,
- by the use of a non-null <code>func</code> pointer,
- any API function which returns an error indication will
- first call <code>func</code>, passing it <code>client_data</code>
- as an argument.
- <p>
- When the library is first initialized, the auto printing function
- is set to <code>H5Eprint_stack</code> (cast appropriately) and
- <code>client_data</code> is the standard error stream pointer,
- <code>stderr</code>.
- <p>
- Automatic stack traversal is always in the
- <code>H5E_WALK_DOWNWARD</code> direction.
- <p>
- Automatic error printing is turned off with a
- <code>H5Eset_auto_stack</code> call with a NULL
- <code>func</code> pointer.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>estack_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error stack identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5E_auto_stack_t</em> <code>func</code></td>
- <td valign="top">IN: Function to be called upon an error
- condition.</td></tr>
- <tr>
- <td valign="top"><em>void&nbsp;*</em><code>client_data&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Data passed to the error function.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5eset_auto_f
- <dd>None.
-<!-- <dd>
- <pre>
-SUBROUTINE h5eset_auto_f(printflag, hdferr)
- INTEGER, INTENT(IN) :: printflag !flag to turn automatic error
- !printing on or off
- !possible values are:
- !printon (1)
- !printoff(0)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5eset_auto_f
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eset_current_stack" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-SetCurrentStack">H5Eset_current_stack</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eset_current_stack</code>(<em>hid_t</em>
- <code>estack_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Replaces the current error stack.
- <dt><strong>Description:</strong>
- <dd><code>H5Eset_current_stack</code> replaces the content of
- the current error stack with a copy of the content of error stack
- specified by <code>estack_id</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>estack_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error stack identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Eunregister_class" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Error-UnregisterClass">H5Eunregister_class</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Eunregister_class</code>(<em>hid_t</em>
- <code>class_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Removes an error class.
- <dt><strong>Description:</strong>
- <dd><code>H5Eunregister_class</code> removes the error class specified
- by <code>class_id</code>.
- All the major and minor errors in this class will also be closed.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>class_id</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Error class identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Ewalk" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-Walk">H5Ewalk</a>
-<dt><strong>Signature (deprecated):</strong>
- <dd><em>herr_t</em> <code>H5Ewalk</code>(<em>H5E_direction_t</em> <code>direction</code>,
- <em>H5E_walk_t</em> <code>func</code>,
- <em>void *</em> <code>client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Walks the error stack for the current thread, calling a specified
- function.
-<dt><strong>Description:</strong>
- <dd><code>H5Ewalk</code> walks the error stack for the current thread
- and calls the specified function for each error along the way.
- <p>
- <code>direction</code> determines whether the stack is walked
- from the inside out or the outside in.
- A value of <code>H5E_WALK_UPWARD</code> means begin with the
- most specific error and end at the API;
- a value of <code>H5E_WALK_DOWNWARD</code> means to start at the
- API and end at the inner-most function where the error was first
- detected.
- <p>
- <code>func</code> will be called for each error in the error stack.
- Its arguments will include an index number (beginning at zero
- regardless of stack traversal direction), an error stack entry,
- and the <code>client_data</code> pointer passed to
- <code>H5E_print</code>.
- The <code>H5E_walk_t</code> prototype is as follows:
- <dir>
- <p>
- <code>typedef</code> <em>herr_t</em> <code>(*H5E_walk_t)(</code><em>int</em> <code>n,</code>
- <em>H5E_error_t *</em><code>err_desc,</code>
- <em>void *</em><code>client_data)</code>
- <p>
- where the parameters have the following meanings:
- <dl>
- <dt><em>int</em> <code>n</code>
- <dd>Indexed position of the error in the stack.
- <dt><em>H5E_error_t *</em><code>err_desc</code>
- <dd>Pointer to a data structure describing the error.
- <em>(This structure is currently described only in the
- source code file </em><code>hdf5/src/H5Epublic.h</code><em>.
- That file also contains the definitive list of major
- and minor error codes. That information will
- eventually be presented as an appendix to this
- <cite>Reference Manual</cite>.)</em>
- <dt><em>void *</em><code>client_data</code>
- <dd>Pointer to client data in the format expected by
- the user-defined function.
- </dl>
- </dir>
- <p>
- <code>H5Ewalk</code> can fail if there are problems initializing
- the library.
- <p>
- <strong>Note:</strong>
- As of HDF5 Release 1.8, <a href="#Error-WalkStack"><code>H5Ewalk_stack</code></a>
- replaces <code>H5Ewalk</code> and <code>H5Ewalk</code> is designated
- a <em>deprecated function</em>. <code>H5Ewalk</code> may be removed
- from the library at a future release.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5E_direction_t</em>&nbsp;<code>direction&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Direction in which the error stack is to be walked.</td></tr>
- <tr>
- <td valign="top"><em>H5E_walk_t</em> <code>func</code></td>
- <td valign="top">IN: Function to be called for each error encountered.</td></tr>
- <tr>
- <td valign="top"><em>void *</em> <code>client_data</code></td>
- <td valign="top">IN: Data to be passed with <code>func</code>.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Ewalk_stack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-WalkStack">H5Ewalk_stack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Ewalk_stack</code>(
- <em>hid_t</em> <code>estack_id</code>,
- <em>H5E_direction_t</em> <code>direction</code>,
- <em>H5E_walk_t</em> <code>func</code>,
- <em>void *</em> <code>client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Walks the error stack for the current thread, calling a specified
- function.
-<dt><strong>Description:</strong>
- <dd><code>H5Ewalk_stack</code> walks the error stack specified by
- <code>estack_id</code> for the current thread and calls the function
- specified in <code>func</code> for each error along the way.
- <p>
- If the value of <code>estack_id</code> is <code>H5E_DEFAULT</code>,
- then <code>H5Ewalk_stack</code> walks the current error stack.
- <p>
- <code>direction</code> specifies whether the stack is walked
- from the inside out or the outside in.
- A value of <code>H5E_WALK_UPWARD</code> means to begin with the
- most specific error and end at the API;
- a value of <code>H5E_WALK_DOWNWARD</code> means to start at the
- API and end at the innermost function where the error was first
- detected.
- <p>
- <code>func</code>, a function compliant with the
- <code>H5E_walk_t</code> prototype, will be called for each error
- in the error stack.
- Its arguments will include an index number <code>n</code>
- (beginning at zero regardless of stack traversal direction),
- an error stack entry <code>err_desc</code>,
- and the <code>client_data</code> pointer passed to
- <code>H5E_print</code>.
- The <code>H5E_walk_t</code> prototype is as follows:
- <dir>
- <p>
- <code>typedef</code> <em>herr_t</em> <code>(*H5E_walk_t)(</code><em>int</em> <code>n,</code>
- <em>H5E_error_t *</em><code>err_desc,</code>
- <em>void *</em><code>client_data)</code>
- <p>
- where the parameters have the following meanings:
- <dl>
- <dt><em>int</em> <code>n</code>
- <dd>Indexed position of the error in the stack.
- <dt><em>H5E_error_t *</em><code>err_desc</code>
- <dd>Pointer to a data structure describing the error.
- (This structure is currently described only in the source
- code file <code>hdf5/src/H5Epublic.h</code>.
- That file also contains the definitive list of major
- and minor error codes; that information will
- eventually be presented as an appendix to this
- <cite>HDF5 Reference Manual</cite>.)
- <dt><em>void *</em><code>client_data</code>
- <dd>Pointer to client data in the format expected by
- the user-defined function.
- </dl>
- </dir>
- <p>
- <code>H5Ewalk_stack</code> can fail if there are problems initializing
- the library.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>estack_id</code></td>
- <td valign="top">IN: Error stack identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5E_direction_t</em>&nbsp;<code>direction&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Direction in which the error stack is
- to be walked.</td></tr>
- <tr>
- <td valign="top"><em>H5E_walk_t</em> <code>func</code></td>
- <td valign="top">IN: Function to be called for each error
- encountered.</td></tr>
- <tr>
- <td valign="top"><em>void *</em> <code>client_data</code></td>
- <td valign="top">IN: Data to be passed with <code>func</code>.
- </td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Ewalk_cb" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Error-WalkCB">H5Ewalk_cb</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Ewalk_cb</code>(<em>int</em> <code>n</code>,
- <em>H5E_error_t *</em><code>err_desc</code>,
- <em>void</em> <code>*client_data</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Default error stack traversal callback function
- that prints error messages to the specified output stream.
-<dt><strong>Description:</strong>
- <dd><code>H5Ewalk_cb</code> is a default error stack traversal callback
- function that prints error messages to the specified output stream.
- It is not meant to be called directly but rather as an
- argument to the <code>H5Ewalk</code> function.
- This function is called also by <code>H5Eprint</code>.
- Application writers are encouraged to use this function as a
- model for their own error stack walking functions.
- <p>
- <code>n</code> is a counter for how many times this function
- has been called for this particular traversal of the stack.
- It always begins at zero for the first error on the stack
- (either the top or bottom error, or even both, depending on
- the traversal direction and the size of the stack).
- <p>
- <code>err_desc</code> is an error description. It contains all the
- information about a particular error.
- <p>
- <code>client_data</code> is the same pointer that was passed as the
- <code>client_data</code> argument of <code>H5Ewalk</code>.
- It is expected to be a file pointer (or stderr if NULL).
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>int</em> <code>n</code></td>
- <td valign="top">IN/OUT: Number of times this function has been called
- for this traversal of the stack.</td></tr>
- <tr>
- <td valign="top"><em>H5E_error_t&nbsp;*</em><code>err_desc&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Error description.</td></tr>
- <tr>
- <td valign="top"><em>void</em> <code>*client_data</code></td>
- <td valign="top">IN: A file pointer, or stderr if NULL.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 23 May 2005");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5F.html b/doc/html/RM_H5F.html
deleted file mode 100644
index b3cbb33..0000000
--- a/doc/html/RM_H5F.html
+++ /dev/null
@@ -1,1970 +0,0 @@
-<html>
-<head><title>
-HDF5/H5F API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5F: File Interface</h1>
-</center>
-
-<h2>File API Functions</h2>
-
-These functions are designed to provide file-level access to HDF5 files.
-Further manipulation of objects inside a file is performed through one of APIs
-documented below.
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#File-Create">H5Fcreate</a>
- <li><a href="#File-Open">H5Fopen</a>
- <li><a href="#File-Reopen">H5Freopen</a>
- <li><a href="#File-Close">H5Fclose</a>
- <li><a href="#File-Flush">H5Fflush</a>
- <li><a href="#File-IsHDF5">H5Fis_hdf5</a>
- <li><a href="#File-Mount">H5Fmount</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#File-Unmount">H5Funmount</a>
- <li><a href="#File-GetVfdHandle">H5Fget_vfd_handle</a>
- <li><a href="#File-GetFilesize">H5Fget_filesize</a>
- <li><a href="#File-GetCreatePlist">H5Fget_create_plist</a>
- <li><a href="#File-GetAccessPlist">H5Fget_access_plist</a>
- <li><a href="#File-GetName">H5Fget_name</a>
- <li><a href="#File-GetObjCount">H5Fget_obj_count</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#File-GetObjIDs">H5Fget_obj_ids</a>
- <li><a href="#File-GetFreeSpace">H5Fget_freespace</a>
- <li><a href="#File-GetMdcConfig">H5Fget_mdc_config</a>
- <li><a href="#File-GetMdcHitRate">H5Fget_mdc_hit_rate</a>
- <li><a href="#File-GetMdcSize">H5Fget_mdc_size</a>
- <li><a href="#File-ResetMdcHitRateStats">H5Freset_mdc_hit_rate_stats</a>
- <li><a href="#File-SetMdcConfig">H5Fset_mdc_config</a>
-</ul>
-</td></tr>
-</table>
-<br>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#File-Close">H5Fclose</a>
- <li><a href="#File-Create">H5Fcreate</a>
- <li><a href="#File-Flush">H5Fflush</a>
- <li><a href="#File-GetAccessPlist">H5Fget_access_plist</a>
- <li><a href="#File-GetCreatePlist">H5Fget_create_plist</a>
- <li><a href="#File-GetFilesize">H5Fget_filesize</a>
- <li><a href="#File-GetFreeSpace">H5Fget_freespace</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#File-GetMdcConfig">H5Fget_mdc_config</a>
- <li><a href="#File-GetMdcHitRate">H5Fget_mdc_hit_rate</a>
- <li><a href="#File-GetMdcSize">H5Fget_mdc_size</a>
- <li><a href="#File-GetName">H5Fget_name</a>
- <li><a href="#File-GetObjCount">H5Fget_obj_count</a>
- <li><a href="#File-GetObjIDs">H5Fget_obj_ids</a>
- <li><a href="#File-GetVfdHandle">H5Fget_vfd_handle</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#File-IsHDF5">H5Fis_hdf5</a>
- <li><a href="#File-Mount">H5Fmount</a>
- <li><a href="#File-Open">H5Fopen</a>
- <li><a href="#File-Reopen">H5Freopen</a>
- <li><a href="#File-ResetMdcHitRateStats">H5Freset_mdc_hit_rate_stats</a>
- <li><a href="#File-SetMdcConfig">H5Fset_mdc_config</a>
- <li><a href="#File-Unmount">H5Funmount</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#File-Create">h5fcreate_f</a>
- <li><a href="#File-Open">h5fopen_f</a>
- <li><a href="#File-Reopen">h5freopen_f</a>
- <li><a href="#File-Close">h5fclose_f</a>
- <li><a href="#File-Flush">h5fflush_f</a>
- <li><a href="#File-IsHDF5">h5fis_hdf5_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#File-Mount">h5fmount_f</a>
- <li><a href="#File-Unmount">h5funmount_f</a>
- <li><a href="#File-GetVfdHandle">h5fget_vfd_handle_f</a>
- <li><a href="#File-GetFilesize">h5fget_filesize_f</a>
- <li><a href="#File-GetFreespace">h5fget_freespace_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#File-GetCreatePlist">h5fget_create_plist_f</a>
- <li><a href="#File-GetAccessPlist">h5fget_access_plist_f</a>
- <li><a href="#File-GetName">h5fget_name_f</a>
- <li><a href="#File-GetObjCount">h5fget_obj_count_f</a>
- <li><a href="#File-GetObjIDs">h5fget_obj_ids_f</a>
-<!--<li><a href="#File-GetMdcConfig">H5Fget_mdc_config_f</a> -->
-<!--<li><a href="#File-GetMdcHitRate">H5Fget_mdc_hit_rate_f</a> -->
-<!--<li><a href="#File-GetMdcSize">H5Fget_mdc_size_f</a> -->
-<!--<li><a href="#File-ResetMdcHitRateStats">H5Freset_mdc_hit_rate_stats_f</a> -->
-<!--<li><a href="#File-SetMdcConfig">H5Fset_mdc_config_f</a> -->
-</ul>
-</td></tr>
-</table>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fclose" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Close">H5Fclose</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Fclose</code>(<em>hid_t</em> <code>file_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Terminates access to an HDF5 file.
-<dt><strong>Description:</strong>
- <dd><code>H5Fclose</code> terminates access to an HDF5 file
- by flushing all data to storage and terminating access
- to the file through <code>file_id</code>.
- <p>
- If this is the last file identifier open for the file
- and no other access identifier is open (e.g., a dataset
- identifier, group identifier, or shared datatype identifier),
- the file will be fully closed and access will end.
- <p>
- <strong>Delayed close:</strong>
- <br>
- Note the following deviation from the above-described behavior.
- If <code>H5Fclose</code> is called for a file but one or more
- objects within the file remain open, those objects will remain
- accessible until they are individually closed.
- Thus, if the dataset <code>data_sample</code> is open when
- <code>H5Fclose</code> is called for the file containing it,
- <code>data_sample</code> will remain open and accessible
- (including writable) until it is explicitely closed.
- The file will be automatically closed once all objects in the
- file have been closed.
- <p>
- Be warned, hoever, that there are circumstances where it is
- not possible to delay closing a file.
- For example, an MPI-IO file close is a collective call; all of
- the processes that opened the file must close it collectively.
- The file cannot be closed at some time in the future by each
- process in an independent fashion.
- Another example is that an application using an AFS token-based
- file access privilage may destroy its AFS token after
- <code>H5Fclose</code> has returned successfully.
- This would make any future access to the file, or any object
- within it, illegal.
- <p>
- In such situations, applications must close all open objects
- in a file before calling <code>H5Fclose</code>.
- It is generally recommended to do so in all cases.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of a file to terminate access to.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fclose_f
- <dd>
- <pre>
-SUBROUTINE h5fclose_f(file_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fcreate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Create">H5Fcreate</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Fcreate</code>(<em>const char *</em><code>name</code>,
- <em>unsigned</em> <code>flags</code>,
- <em>hid_t</em> <code>create_id</code>,
- <em>hid_t</em> <code>access_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates HDF5 files.
-<dt><strong>Description:</strong>
- <dd><code>H5Fcreate</code> is the primary function for creating
- HDF5 files .
- <p>
- The <code>flags</code> parameter determines whether an
- existing file will be overwritten. All newly created files
- are opened for both reading and writing. All flags may be
- combined with the bit-wise OR operator (`|') to change
- the behavior of the <code>H5Fcreate</code> call.
- <p>
- The more complex behaviors of file creation and access
- are controlled through the file-creation and file-access
- property lists. The value of <code>H5P_DEFAULT</code> for
- a property list value indicates that the library should use
- the default values for the appropriate property list.
- <p>
- The return value is a file identifier for the newly-created file;
- this file identifier should be closed by calling
- <code>H5Fclose</code> when it is no longer needed.
- <p>
-
- <b>Special case -- File creation in the case of an
- already-open file:</b>
- <br>
- If a file being created is already opened, by either a
- previous <code>H5Fopen</code> or <code>H5Fcreate</code> call,
- the HDF5 library may or may not detect that the open file and
- the new file are the same physical file.
- (See <a href="#File-Open"><code>H5Fopen</code></a> regarding
- the limitations in detecting the re-opening of an already-open
- file.)
- <p>
- If the library detects that the file is already opened,
- <code>H5Fcreate</code> will return a failure, regardless
- of the use of <code>H5F_ACC_TRUNC</code>.
- <p>
- If the library does not detect that the file is already opened
- and <code>H5F_ACC_TRUNC</code> is not used,
- <code>H5Fcreate</code> will return a failure because the file
- already exists. Note that this is correct behavior.
- <p>
- But if the library does not detect that the file is already
- opened and <code>H5F_ACC_TRUNC</code> is used,
- <code>H5Fcreate</code> will truncate the existing file
- and return a valid file identifier.
- Such a truncation of a currently-opened file will almost
- certainly result in errors.
- While unlikely, the HDF5 library may not be able to detect,
- and thus report, such errors.
- <p>
- Applications should avoid calling <code>H5Fcreate</code>
- with an already opened file.
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the file to access.</td></tr>
- <tr>
- <td valign="top"><em>uintn</em> <code>flags</code></td>
- <td valign="top">IN: File access flags. Allowable values are:
- <ul><dl>
- <dt><code>H5F_ACC_TRUNC</code>
- <dd>Truncate file, if it already exists,
- erasing all data previously stored in the file.
- <dt><code>H5F_ACC_EXCL</code>
- <dd>Fail if file already exists.
- </dl></ul>
- <li><code>H5F_ACC_TRUNC</code> and <code>H5F_ACC_EXCL</code>
- are mutually exclusive; use exactly one.
- <li>An additional flag, <code>H5F_ACC_DEBUG</code>, prints
- debug information. This flag is used only by HDF5 library
- developers; <i>it is neither tested nor supported</i>
- for use in applications.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>create_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File creation property list identifier, used when modifying
- default file meta-data.
- Use <code>H5P_DEFAULT</code> for default file creation properties.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>access_id</code></td>
- <td valign="top">IN: File access property list identifier.
- If parallel file access is desired, this is a collective
- call according to the communicator stored in the
- <code>access_id</code>.
- Use <code>H5P_DEFAULT</code> for default file access properties.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a file identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fcreate_f
- <dd>
- <pre>
-SUBROUTINE h5fcreate_f(name, access_flags, file_id, hdferr, &
- creation_prp, access_prp)
- IMPLICIT NONE
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
- INTEGER, INTENT(IN) :: access_flag ! File access flags
- ! Possible values are:
- ! H5F_ACC_RDWR_F
- ! H5F_ACC_RDONLY_F
- ! H5F_ACC_TRUNC_F
- ! H5F_ACC_EXCL_F
- ! H5F_ACC_DEBUG_F
- INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp
- ! File creation propertly
- ! list identifier, if not
- ! specified its value is
- ! H5P_DEFAULT_F
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
- ! File access property list
- ! identifier, if not
- ! specified its value is
- ! H5P_DEFAULT_F
-END SUBROUTINE h5fcreate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fflush" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Flush">H5Fflush</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Fflush</code>(<em>hid_t </em><code>object_id</code>,
- <em>H5F_scope_t</em> <code>scope</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Flushes all buffers associated with a file to disk.
-<dt><strong>Description:</strong>
- <dd><code>H5Fflush</code> causes all buffers associated with a
- file to be immediately flushed to disk without removing the
- data from the cache.
- <p>
- <code>object_id</code> can be any object associated with the file,
- including the file itself, a dataset, a group, an attribute, or
- a named data type.
- <p>
- <code>scope</code> specifies whether the scope of the flushing
- action is global or local. Valid values are
- <center>
- <table border=0>
- <tr><td align=left valign=top><code>H5F_SCOPE_GLOBAL</code></td>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td align=left valign=top>Flushes the entire virtual file.</td></tr>
- <tr><td align=left valign=top><code>H5F_SCOPE_LOCAL</code></td>
- <td></td>
- <td align=left valign=top>Flushes only the specified file.</td></tr>
- </table>
- </center>
-<dt><strong>Note:</strong>
- <dd>HDF5 does not possess full control over buffering.
- <code>H5Fflush</code> flushes the internal HDF5 buffers then
- asks the operating system (the OS) to flush the system buffers for the
- open files. After that, the OS is responsible for ensuring that
- the data is actually flushed to disk.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t </em><code>object_id</code></td>
- <td valign="top">IN: Identifier of object used to identify the file.</td></tr>
- <tr>
- <td valign="top"><em>H5F_scope_t</em>&nbsp;<code>scope&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Specifies the scope of the flushing action.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fflush_f
- <dd>
- <pre>
-SUBROUTINE h5fflush_f(obj_id, new_file_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- INTEGER, INTENT(IN) :: scope ! Flag with two possible values:
- ! H5F_SCOPE_GLOBAL_F
- ! H5F_SCOPE_LOCAL_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fflush_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_access_plist" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetAccessPlist">H5Fget_access_plist</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Fget_access_plist</code>(<em>hid_t</em> <code>file_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns a file access property list identifier.
-<dt><strong>Description:</strong>
- <dd><code>H5Fget_access_plist</code> returns the
- file access property list identifier of the specified file.
- <p>
- See "File Access Properties" in
- <a href="RM_H5P.html">H5P: Property List Interface</a>
- in this reference manual and
- "File Access Property Lists"
- in <a href="Files.html"><cite>Files</cite></a> in the
- <cite>HDF5 User's Guide</cite> for
- additional information and related functions.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of file to get access property list of</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a file access property list identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_access_plist_f
- <dd>
- <pre>
-SUBROUTINE h5fget_access_plist_f(file_id, fcpl_id, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HID_T), INTENT(OUT) :: fapl_id ! File access property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fget_access_plist_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_create_plist" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetCreatePlist">H5Fget_create_plist</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Fget_create_plist</code>(<em>hid_t</em> <code>file_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns a file creation property list identifier.
-<dt><strong>Description:</strong>
- <dd><code>H5Fget_create_plist</code> returns a file creation
- property list identifier identifying the creation properties
- used to create this file. This function is useful for
- duplicating properties when creating another file.
- <p>
- See "File Creation Properties" in
- <a href="RM_H5P.html">H5P: Property List Interface</a>
- in this reference manual and
- "File Creation Properties"
- in <a href="Files.html"><cite>Files</cite></a> in the
- <cite>HDF5 User's Guide</cite> for
- additional information and related functions.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <dt>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the file to get creation property list of</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a file creation property list identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_create_plist_f
- <dd>
- <pre>
-SUBROUTINE h5fget_create_plist_f(file_id, fcpl_id, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HID_T), INTENT(OUT) :: fcpl_id ! File creation property list
- ! identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fget_create_plist_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_filesize" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetFilesize">H5Fget_filesize</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Fget_filesize</code>(<em>hid_t</em> <code>file_id</code>,
- <em>hsize_t *</em><code>size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the size of an HDF5 file.
-<dt><strong>Description:</strong>
- <dd><code>H5Fget_filesize</code> returns the size
- of the HDF5 file specified by <code>file_id</code>.
- <p>
- The returned size is that of the entire file,
- as opposed to only the HDF5 portion of the file.
- I.e., <code>size</code> includes the user block, if any,
- the HDF5 portion of the file, and
- any data that may have been appended
- beyond the data written through the HDF5 Library.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt><em>hid_t</em> <code>file_id</code>
- <dd>IN: Identifier of a currently-open HDF5 file
- <dt><em>hsize_t *</em><code>size</code>
- <dd>OUT: Size of the file, in bytes.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_freespace_f
- <dd>
- <pre>
-SUBROUTINE h5fget_filesize_f(file_id, size, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! file identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: size ! Size of the file
- INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success,
- ! -1 if fail
-END SUBROUTINE h5fget_filesize_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_freespace" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetFreeSpace">H5Fget_freespace</a>
-<dt><strong>Signature:</strong>
- <dd><em>hssize_t </em><code>H5Fget_freespace</code>(<em>hid_t</em> <code>file_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns the amount of free space in a file.
-<dt><strong>Description:</strong>
- <dd>Given the identifier of an open file, <code>file_id</code>,
- <code>H5Fget_freespace</code> returns the amount of space that is
- unused by any objects in the file.
- <p>
- Currently, the HDF5 library only tracks free space in a file from a
- file open or create until that file is closed, so this routine will
- only report the free space that has been created during that
- interval.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of a currently-open HDF5 file</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a the amount of free space in the file if successful;
- otherwise returns a negative value.
-<dt><strong>Returns:</strong>
- <dd>Returns a file creation property list identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_freespace_f
- <dd>
- <pre>
-SUBROUTINE h5fget_freespace_f(file_id, free_space, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HSSIZE_T), INTENT(OUT) :: free_space ! Amount of free space in file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fget_freespace_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_mdc_config" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetMdcConfig">H5Fget_mdc_config</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Fget_mdc_config</code>(<em>hid_t</em>
- <code>file_id</code>, <em>H5AC_cache_config_t *</em><code>config_ptr</code>)
-<dt><strong>Purpose:</strong>
- <dd>Obtain current metadata cache configuration for target file.
-<dt><strong>Description:</strong>
- <dd><code>H5Fget_mdc_config</code> loads the current metadata cache
- configuration into the instance of <code>H5AC_cache_config_t</code>
- pointed to by the <code>config_ptr</code> parameter.
-
- <p>Note that the version field of *<code>config_ptr</code> must
- be initialized --this allows the library to support old versions
- of the <code>H5AC_cache_config_t</code> structure.
-
- <p>See the overview of the metadata cache in the special topics section
- of the user manual for details on metadata cache configuration.
- If you haven't read and understood that documentation, the results
- of this call will not make much sense.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the target file</td></tr>
- <tr>
- <td valign="top"><em>H5AC_cache_config_t&nbsp;*</em><code>config_ptr</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN/OUT: Pointer to the instance of H5AC_cache_config_t
- in which the current metadata cache configuration is to be reported.
- The fields of this structure are discussed below:</td></tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2"><strong>General configuration section:</strong></td>
- </tr>
- <tr>
- <td valign="top"><em>int</em> <code>version</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Integer field indicating the the version
- of the H5AC_cache_config_t in use. This field should be
- set to H5AC__CURR_CACHE_CONFIG_VERSION
- (defined in H5ACpublic.h).</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>rpt_fcn_enabled</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Boolean flag indicating whether the adaptive
- cache resize report function is enabled. This field should almost
- always be set to FALSE. Since resize algorithm activity is reported
- via stdout, it MUST be set to FALSE on Windows machines.
- <p>The report function is not supported code, and can be
- expected to change between versions of the library.
- Use it at your own risk.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>set_initial_size</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Boolean flag indicating whether the cache
- should be created with a user specified initial maximum size.
- <p>If the configuration is loaded from the cache,
- this flag will always be FALSE.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>initial_size</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Initial maximum size of the cache in bytes,
- if applicable.
- <p>If the configuration is loaded from the cache, this
- field will contain the cache maximum size as of the
- time of the call.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>min_clean_fraction</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: This field is only used in the parallel
- version of the library. It specifies the minimum fraction
- of the cache that must be kept either clean or
- empty when possible.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>max_size</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Upper bound (in bytes) on the range of
- values that the adaptive cache resize code can select as
- the maximum cache size.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>min_size</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Lower bound (in bytes) on the range
- of values that the adaptive cache resize code can
- select as the maximum cache size.</td></tr>
- <tr>
- <td valign="top"><em>long int</em> <code>epoch_length</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Number of cache accesses between runs
- of the adaptive cache resize code.</td></tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2"><strong>Increment configuration section:</strong></td>
- </tr>
- <tr>
- <td valign="top"><em>enum&nbsp;H5C_cache_incr_mode</em>&nbsp;<code>incr_mode</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Enumerated value indicating the operational
- mode of the automatic cache size increase code. At present,
- only the following values are legal:
- <p>H5C_incr__off: Automatic cache size increase is disabled.
- <p>H5C_incr__threshold: Automatic cache size increase is
- enabled using the hit rate threshold algorithm.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>lower_hr_threshold</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Hit rate threshold used in the hit rate
- threshold cache size increase algorithm.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>increment</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: The factor by which the current maximum
- cache size is multiplied to obtain an initial new maximum cache
- size if a size increase is triggered in the hit rate
- threshold cache size increase algorithm.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>apply_max_increment</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Boolean flag indicating whether an upper
- limit will be applied to the size of cache size increases.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>max_increment</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: The maximum number of bytes by which the
- maximum cache size can be increased in a single step -- if
- applicable.</td></tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2"><strong>Decrement configuration section:</strong></td>
- </tr>
- <tr>
- <td valign="top"><em>enum&nbsp;H5C_cache_decr_mode</em>&nbsp;<code>decr_mode</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Enumerated value indicating the operational
- mode of the automatic cache size decrease code. At present,
- the following values are legal:
- <p>H5C_decr__off: Automatic cache size decrease is disabled,
- and the remaining decrement fields are ignored.
- <p>H5C_decr__threshold: Automatic cache size decrease is
- enabled using the hit rate threshold algorithm.
- <p>H5C_decr__age_out: Automatic cache size decrease is enabled
- using the ageout algorithm.
- <p>H5C_decr__age_out_with_threshold: Automatic cache size
- decrease is enabled using the ageout with hit rate
- threshold algorithm</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>upper_hr_threshold</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Upper hit rate threshold. This value is only
- used if the decr_mode is either H5C_decr__threshold or
- H5C_decr__age_out_with_threshold.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>decrement</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Factor by which the current max cache size
- is multiplied to obtain an initial value for the new cache
- size when cache size reduction is triggered in the hit rate
- threshold cache size reduction algorithm.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>apply_max_decrement</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Boolean flag indicating whether an upper
- limit should be applied to the size of cache size
- decreases.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>max_decrement</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: The maximum number of bytes by which cache
- size can be decreased if any single step, if applicable.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>epochs_before_eviction</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: The minimum number of epochs that an entry
- must reside unaccessed in cache before being evicted under
- either of the ageout cache size reduction algorithms.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>apply_empty_reserve</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Boolean flag indicating whether an empty
- reserve should be maintained under either of the ageout
- cache size reduction algorithms.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>empty_reserve</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Empty reserve for use with the ageout
- cache size reduction algorithms, if applicable.</td></tr>
-
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful; otherwise returns a negative value.
-
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_mdc_hit_rate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetMdcHitRate">H5Fget_mdc_hit_rate</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Fget_mdc_hit_rate</code>(<em>hid_t</em>
- <code>file_id</code>, <em>double *</em><code>hit_rate_ptr</code>)
-<dt><strong>Purpose:</strong>
- <dd>Obtain target file's metadata cache hit rate.
-<dt><strong>Description:</strong>
- <dd>H5Fget_mdc_hit_rate queries the metadata cache of the target
- file to obtain its hit rate (cache hits / (cache hits + cache misses))
- since the last time hit rate statistics were reset. If the cache has
- not been accessed since the last time the hit rate stats were reset,
- the hit rate is defined to be 0.0.
- <p>The hit rate stats can be reset either manually (via
- H5Freset_mdc_hit_rate_stats()), or automatically. If the cache's
- adaptive resize code is enabled, the hit rate stats will be reset
- once per epoch. If they are reset manually as well,
- the cache may behave oddly.
- <p>See the overview of the metadata cache in the special
- topics section of the user manual for details on the metadata
- cache and its adaptive resize algorithms.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>file_id</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Identifier of the target file.</td></tr>
- <tr>
- <td valign="top"><em>double&nbsp;*</em>&nbsp;<code>hit_rate_ptr</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Pointer to the double in which the
- hit rate is returned. Note that *<code>hit_rate_ptr</code> is
- undefined if the API call fails.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful; otherwise
- returns a negative value.
-
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_mdc_size" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetMdcSize">H5Fget_mdc_size</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Fget_mdc_size</code>(<em>hid_t</em> <code>file_id</code>,
- <em>size_t *</em><code>max_size_ptr</code>,
- <em>size_t *</em><code>min_clean_size_ptr</code>,
- <em>size_t *</em><code>cur_size_ptr</code>,
- <em>int *</em><code>cur_num_entries_ptr</code>)
-<dt><strong>Purpose:</strong>
- <dd>Obtain current metadata cache size data for specified file.
-<dt><strong>Description:</strong>
- <dd>H5Fget_mdc_size queries the metadata cache of the target file
- for the desired size information, and returns this information in
- the locations indicated by the pointer parameters. If any pointer
- parameter is NULL, the associated data is not returned.
- <p>If the API call fails, the values returned via the pointer
- parameters are undefined.
- <p>If adaptive cache resizing is enabled, the cache maximum size
- and minimum clean size may change at the end of each epoch. Current
- size and current number of entries can change on each cache access.
- <p>Current size can exceed maximum size under certain conditions.
- See the overview of the metadata cache in the special topics
- section of the user manual for a discussion of this.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>file_id</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Identifier of the target file.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>max_size_ptr</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Pointer to the location in which the
- current cache maximum size is to be returned, or NULL if
- this datum is not desired.</td></tr>
- <tr>
- <td valign="top"><em>size_t&nbsp;*</em><code>min_clean_size_ptr</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Pointer to the location in which the
- current cache minimum clean size is to be returned, or
- NULL if that datum is not desired.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>cur_size_ptr</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Pointer to the location in which the
- current cache size is to be returned, or NULL if that
- datum is not desired.</td></tr>
- <tr>
- <td valign="top"><em>int&nbsp;*</em><code>cur_num_entries_ptr</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">OUT: Pointer to the location in which the
- current number of entries in the cache is to be returned,
- or NULL if that datum is not desired.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful; otherwise returns a
- negative value.
-
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_name" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetName">H5Fget_name</a>
-<dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Fget_name</code>(<em>hid_t</em> <code>obj_id</code>,
- <em>char *</em><code>name</code>,
- <em>size_t</em> <code>size</code>
- )
-
-<dt><strong>Purpose:</strong>
- <dd>Retrieves name of file to which object belongs.
-<dt><strong>Description:</strong>
- <dd><code>H5Fget_name</code> retrieves the name of the file
- to which the object <code>obj_id</code> belongs.
- The object can be a group, dataset, attribute, or
- named datatype.
- <p>
- Up to <code>size</code> characters of the filename
- are returned in <code>name</code>;
- additional characters, if any, are not returned to
- the user application.
- <p>
- If the length of the name,
- which determines the required value of <code>size</code>,
- is unknown, a preliminary <code>H5Fget_name</code> call
- can be made by setting <code>name</code> to NULL.
- The return value of this call will be the size of the filename;
- that value can then be assigned to <code>size</code>
- for a second <code>H5Fget_name</code> call,
- which will retrieve the actual name.
- <p>
- If an error occurs, the buffer pointed to by
- <code>name</code> is unchanged and
- the function returns a negative value.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt><em>hid_t</em> <code>obj_id</code>
- <dd>IN: Identifier of the object for which the
- associated filename is sought.
- The object can be a group, dataset, attribute, or
- named datatype.
- <dt><em>char *</em><code>name</code>
- <dd>OUT: Buffer to contain the returned filename.
- <dt><em>size_t</em> <code>size</code>
- <dd>IN: Size, in bytes, of the <code>name</code> buffer.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns the length of the filename if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_name_f
- <dd>
- <pre>
-SUBROUTINE h5fget_name_f(obj_id, buf, size, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(INOUT) :: buf ! Buffer to hold filename
- INTEGER(SIZE_T), INTENT(OUT) :: size ! Size of the filename
- INTEGER, INTENT(OUT) :: hdferr ! Error code: 0 on success,
- ! -1 if fail
-END SUBROUTINE h5fget_name_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_obj_count" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetObjCount">H5Fget_obj_count</a>
-<dt><strong>Signature:</strong>
- <dd><em>int </em><code>H5Fget_obj_count</code>(<em>hid_t</em> <code>file_id</code>,
- <em>unsigned int</em> <code>types</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the number of open object identifiers for an open file.
-<dt><strong>Description:</strong>
- <dd>Given the identifier of an open file, <code>file_id</code>,
- and the desired object types, <code>types</code>,
- <code>H5Fget_obj_count</code> returns the number of
- open object identifiers for the file.
- <p>
- To retrieve a count of open identifiers for open objects in
- all HDF5 application files that are currently open,
- pass the value <code>H5F_OBJ_ALL</code> in <code>file_id</code>.
- <p>
- The types of objects to be counted are specified
- in <code>types</code> as follows:
- <center>
- <table width=90% border=0>
- <tr><td valign=top>
- <code>H5F_OBJ_FILE</code>
- </td><td valign=top>
- Files only
- </td></tr><tr><td valign=top>
- <code>H5F_OBJ_DATASET</code>
- </td><td valign=top>
- Datasets only
- </td></tr><tr><td valign=top>
- <code>H5F_OBJ_GROUP</code>
- </td><td valign=top>
- Groups only
- </td></tr><tr><td valign=top>
- <code>H5F_OBJ_DATATYPE&nbsp;&nbsp;</code>
- </td><td valign=top>
- Named datatypes only
- </td></tr><tr><td valign=top>
- <code>H5F_OBJ_ATTR&nbsp;&nbsp;</code>
- </td><td valign=top>
- Attributes only
- </td></tr><tr><td valign=top>
- <code>H5F_OBJ_ALL</code>
- </td><td valign=top>
- All of the above
- <br>
- (I.e., <code>H5F_OBJ_FILE</code> | <code>H5F_OBJ_DATASET</code> |
- <code>H5F_OBJ_GROUP</code> | <code>H5F_OBJ_DATATYPE</code>
- | <code>H5F_OBJ_ATTR</code> )
- </td></tr>
- </table>
- </center>
- Multiple object types can be combined with the
- logical <code>OR</code> operator (<code>|</code>).
- For example, the expression <code>(H5F_OBJ_DATASET|H5F_OBJ_GROUP)</code> would call for
- datasets and groups.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>file_id</code></td>
- <td valign="top">IN: Identifier of a currently-open HDF5 file or
- <code>H5F_OBJ_ALL</code> for all currently-open HDF5 files.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;int</em>&nbsp;<code>types&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Type of object for which identifiers are to be returned.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a the number of open objects if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_obj_count_f
- <dd>
- <pre>
-SUBROUTINE h5fget_obj_count_f(file_id, obj_type, obj_count, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER, INTENT(IN) :: obj_type ! Object types, possible values are:
- ! H5F_OBJ_FILE_F
- ! H5F_OBJ_GROUP_F
- ! H5F_OBJ_DATASET_F
- ! H5F_OBJ_DATATYPE_F
- ! H5F_OBJ_ALL_F
- INTEGER, INTENT(OUT) :: obj_count ! Number of opened objects
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fget_obj_count_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_obj_ids" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetObjIDs">H5Fget_obj_ids</a>
-<dt><strong>Signature:</strong>
- <dd><em>int </em><code>H5Fget_obj_ids</code>(<em>hid_t</em> <code>file_id</code>,
- <em>unsigned int</em> <code>types</code>,
- <em>int</em> <code>max_objs</code>,
- <em>hid_t *</em><code>obj_id_list</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns a list of open object identifiers.
-<dt><strong>Description:</strong>
- <dd>Given the file identifier <code>file_id</code> and
- the type of objects to be identified, <code>types</code>,
- <code>H5Fget_obj_ids</code> returns the list of identifiers
- for all open HDF5 objects fitting the specified criteria.
- <p>
- To retrieve identifiers for open objects in all HDF5 application
- files that are currently open, pass the value
- <code>H5F_OBJ_ALL</code> in <code>file_id</code>.
- <p>
- The types of object identifiers to be retrieved are specified
- in <code>types</code> using the codes listed for the same
- parameter in <a href="#File-GetObjCount"><code>H5Fget_obj_count</code></a>
- <p>
- To retrieve identifiers for all open objects, pass a negative value
- for the <code>max_objs</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>file_id</code></td>
- <td valign="top">IN: Identifier of a currently-open HDF5 file or
- <code>H5F_OBJ_ALL</code> for all currently-open HDF5 files.</td></tr>
- <tr>
- <td valign="top"><em>unsigned int</em> <code>types</code></td>
- <td valign="top">IN: Type of object for which identifiers are to be returned.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>max_objs</code></td>
- <td valign="top">IN: Maximum number of object identifiers to place into
- <code>obj_id_list</code>.</td></tr>
- <tr>
- <td valign="top"><em>hid_t&nbsp;*</em><code>obj_id_list&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to the returned list of open object identifiers.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns number of objects placed into <code>obj_id_list</code> if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fget_obj_ids_f
- <dd>
- <pre>
-SUBROUTINE h5fget_obj_ids_f(file_id, obj_type, max_objs, obj_ids, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER, INTENT(IN) :: obj_type ! Object types, possible values are:
- ! H5F_OBJ_FILE_F
- ! H5F_OBJ_GROUP_F
- ! H5F_OBJ_DATASET_F
- ! H5F_OBJ_DATATYPE_F
- ! H5F_OBJ_ALL_F
- INTEGER, INTENT(IN) :: max_objs ! Maximum number of object
- ! identifiers to retrieve
- INTEGER(HID_T), DIMENSION(*), INTENT(OUT) :: obj_ids
- ! Array of requested object
- ! identifiers
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fget_obj_ids_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fget_vfd_handle" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-GetVfdHandle">H5Fget_vfd_handle</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Fget_vfd_handle</code>(<em>hid_t</em> <code>file_id</code>,
- <em>hid_t</em> <code>fapl_id</code>,
- <em>void *</em><code>file_handle</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns pointer to the file handle from the virtual file driver.
-<dt><strong>Description:</strong>
- <dd>Given the file identifier <code>file_id</code> and
- the file access property list <code>fapl_id</code>,
- <code>H5Fget_vfd_handle</code> returns a pointer to the file handle
- from the low-level file driver currently being used by the
- HDF5 library for file I/O.
-<dt><strong>Notes:</strong>
- <dd>Users are not supposed to modify any file through this file handle.
- <p>
- This file handle is dynamic and is valid only while the file remains
- open; it will be invalid if the file is closed and reopened or
- opened during a subsequent session.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>file_id</code></td>
- <td valign="top">IN: Identifier of the file to be queried.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.
- For most drivers, the value will be <code>H5P_DEFAULT</code>.
- For the <code>FAMILY</code> or <code>MULTI</code> drivers,
- this value should be defined through the property list
- functions:
- <code>H5Pset_family_offset</code> for the <code>FAMILY</code>
- driver and <code>H5Pset_multi_type</code> for the
- <code>MULTI</code> driver.</td></tr>
- <tr>
- <td valign="top"><em>void&nbsp;*</em><code>file_handle&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to the file handle being used by
- the low-level virtual file driver.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fis_hdf5" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-IsHDF5">H5Fis_hdf5</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t </em><code>H5Fis_hdf5</code>(<em>const char *</em><code>name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Determines whether a file is in the HDF5 format.
-<dt><strong>Description:</strong>
- <dd><code>H5Fis_hdf5</code> determines whether a file is in
- the HDF5 format.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File name to check format.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>When successful, returns a positive value, for <code>TRUE</code>,
- or <code>0</code> (zero), for <code>FALSE</code>.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fis_hdf5_f
- <dd>
- <pre>
-SUBROUTINE h5fis_hdf5_f(name, status, hdferr)
- IMPLICIT NONE
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
- LOGICAL, INTENT(OUT) :: status ! This parameter indicates
- ! whether file is an HDF5 file
- ! ( TRUE or FALSE )
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fis_hdf5_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fmount" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Mount">H5Fmount</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Fmount</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>hid_t</em> <code>child_id</code>,
- <em>hid_t</em> <code>plist_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Mounts a file.
-<dt><strong>Description:</strong>
- <dd><code>H5Fmount</code> mounts the file specified by
- <code>child_id</code> onto the group specified by
- <code>loc_id</code> and <code>name</code> using
- the mount properties <code>plist_id</code>.
- <p>
- Note that <code>loc_id</code> is either a file or group identifier
- and <code>name</code> is relative to <code>loc_id</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier for of file or group in
- which <code>name</code> is defined.</td>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the group onto which the
- file specified by <code>child_id</code>
- is to be mounted.</td>
- <tr>
- <td valign="top"><em>hid_t</em> <code>child_id</code></td>
- <td valign="top">IN: Identifier of the file to be mounted.</td>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Identifier of the property list to be used.</td>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fmount_f
- <dd>
- <pre>
-SUBROUTINE h5fmount_f(loc_id, name, child_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN):: name ! Group name at locationloc_id
- INTEGER(HID_T), INTENT(IN) :: child_id ! File(to be mounted) identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5fmount_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fopen" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Open">H5Fopen</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Fopen</code>(<em>const char *</em><code>name</code>,
- <em>unsigned</em> <code>flags</code>,
- <em>hid_t</em> <code>access_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Opens an existing file.
-<dt><strong>Description:</strong>
- <dd><code>H5Fopen</code> opens an existing file and is the primary
- function for accessing existing HDF5 files.
- <p>
- The parameter <code>access_id</code> is a file access property
- list identifier or <code>H5P_DEFAULT</code> if the
- default I/O access parameters are to be used
- <p>
- The <code>flags</code> argument determines whether writing
- to an existing file will be allowed.
- The file is opened with read and write permission if
- <code>flags</code> is set to <code>H5F_ACC_RDWR</code>.
- All flags may be combined with the bit-wise OR operator (`|')
- to change the behavior of the file open call.
- More complex behaviors of file access are controlled
- through the file-access property list.
- <p>
- The return value is a file identifier for the open file;
- this file identifier should be closed by calling
- <code>H5Fclose</code> when it is no longer needed.
- <p>
-
- <b>Special case -- Multiple opens:</b>
- <br>
- A file can often be opened with a new <code>H5Fopen</code>
- call without closing an already-open identifier established
- in a previous <code>H5Fopen</code> or <code>H5Fcreate</code>
- call. Each such <code>H5Fopen</code> call will return a
- unique identifier and the file can be accessed through any
- of these identifiers as long as the identifier remains valid.
- In such multiply-opened cases, all the open calls should
- use the same <code>flags</code> argument.
- <p>
- In some cases, such as files on a local Unix file system,
- the HDF5 library can detect that a file is multiply opened and
- will maintain coherent access among the file identifiers.
- <p>
- But in many other cases, such as parallel file systems or
- networked file systems, it is not always possible to detect
- multiple opens of the same physical file.
- In such cases, HDF5 will treat the file identifiers
- as though they are accessing different files and
- will be unable to maintain coherent access.
- Errors are likely to result in these cases.
- While unlikely, the HDF5 library may not be able to detect,
- and thus report, such errors.
- <p>
- It is generally recommended that applications avoid
- multiple opens of the same file.
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the file to access.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>flags</code></td>
- <td valign="top">IN: File access flags. Allowable values are:
- <ul><dl>
- <dt><code>H5F_ACC_RDWR</code>
- <dd>Allow read and write access to file.
- <dt><code>H5F_ACC_RDONLY</code>
- <dd>Allow read-only access to file.
- </dl>
- <li><code>H5F_ACC_RDWR</code> and <code>H5F_ACC_RDONLY</code>
- are mutually exclusive; use exactly one.
- <li>An additional flag, <code>H5F_ACC_DEBUG</code>, prints
- debug information. This flag is used only by HDF5 library
- developers; it is neither tested nor supported
- for use in applications.
- </ul></td></tr>
-<!-- NEW PAGE -->
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>access_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier for the file access properties list.
- If parallel file access is desired, this is a collective
- call according to the communicator stored in the
- <code>access_id</code>.
- Use <code>H5P_DEFAULT</code> for default file access properties.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a file identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5fopen_f
- <dd>
- <pre>
-SUBROUTINE h5fopen_f(name, access_flags, file_id, hdferr, &
- access_prp)
- IMPLICIT NONE
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the file
- INTEGER, INTENT(IN) :: access_flag ! File access flags
- ! Possible values are:
- ! H5F_ACC_RDWR_F
- ! H5F_ACC_RDONLY_F
- INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HID_T), OPTIONAL, INTENT(IN) :: access_prp
- ! File access property list
- ! identifier
-END SUBROUTINE h5fopen_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Freopen" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Reopen">H5Freopen</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Freopen</code>(<em>hid_t</em> <code>file_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns a new identifier for a previously-opened HDF5 file.
-<dt><strong>Description:</strong>
- <dd><code>H5Freopen</code> returns a new file identifier for an
- already-open HDF5 file, as specified by <code>file_id</code>.
- Both identifiers share caches and other information.
- The only difference between the identifiers is that the
- new identifier is not mounted anywhere and no files are
- mounted on it.
- <p>
- Note that there is no circumstance under which
- <code>H5Freopen</code> can actually open a closed file;
- the file must already be open and have an active
- <code>file_id</code>. E.g., one cannot close a file with
- <code> H5Fclose&nbsp;(file_id) </code> then use
- <code> H5Freopen&nbsp;(file_id) </code> to reopen it.
- <p>
- The new file identifier should be closed by calling
- <code>H5Fclose</code> when it is no longer needed.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of a file for which an additional identifier
- is required.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a new file identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5freopen_f
- <dd>
- <pre>
-SUBROUTINE h5freopen_f(file_id, new_file_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: file_id ! File identifier
- INTEGER(HID_T), INTENT(OUT) :: new_file_id ! New file identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5freopen_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Freset_mdc_hit_rate_stats" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-ResetMdcHitRateStats">H5Freset_mdc_hit_rate_stats</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Freset_mdc_hit_rate_stats</code>(<em>hid_t</em>
- <code>file_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Reset hit rate statistics counters for the target file.
-<dt><strong>Description:</strong>
- <dd>H5Freset_mdc_hit_rate_stats resets the hit rate statistics
- counters in the metadata cache associated with the specified
- file.
- <p>If the adaptive cache resizing code is enabled, the hit
- rate statistics are reset at the beginning of each epoch.
- This API call allows you to do the same thing from your program.
- <p>The adaptive cache resizing code may behave oddly if you use
- this call when adaptive cache resizing is enabled. However,
- the call should be useful if you choose to control metadata
- cache size from your program.
- <p>See the overview of the metadata cache in the special topics
- section of the user manual for details of the metadata cache and
- the adaptive cache resizing algorithms. If you haven't read,
- understood, and thought about the material covered in that
- documentation, you shouldn't be using this API call.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the target file.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful; otherwise returns a
- negative value.
-
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Fset_mdc_config" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-SetMdcConfig">H5Fset_mdc_config</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Fset_mdc_config</code>(<em>hid_t</em>
- <code>file_id</code>, <em>H5AC_cache_config_t *</em><code>config_ptr</code>)
-<dt><strong>Purpose:</strong>
- <dd>Attempt to configure metadata cache of target file.
-<dt><strong>Description:</strong>
- <dd>H5Fset_mdc_config attempts to configure the file's metadata cache
- according configuration supplied in *config_ptr.
- <p>See the overview of the metadata cache in the special topics
- section of the user manual for details on what is being configured.
- If you haven't read and understood that documentation, you really
- shouldn't be using this API call.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>file_id</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Identifier of the target file</td></tr>
- <tr>
- <td valign="top"><em>H5AC_cache_config_t&nbsp;*</em><code>config_ptr</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Pointer to the instance of H5AC_cache_config_t
- containing the desired configuration. The fields of this structure
- are discussed below:</td></tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2"><strong>General configuration section:</strong></td>
- </tr>
- <tr>
- <td valign="top"><em>int</em> <code>version</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Integer field indicating the the version of
- the H5AC_cache_config_t in use. This field should be set to
- H5AC__CURR_CACHE_CONFIG_VERSION (defined in H5ACpublic.h).</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>rpt_fcn_enabled</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Boolean flag indicating whether the adaptive
- cache resize report function is enabled. This field should almost
- always be set to FALSE. Since resize algorithm activity is reported
- via stdout, it MUST be set to FALSE on Windows machines.
- <p>The report function is not supported code, and can be expected to
- change between versions of the library. Use it at your own risk.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>set_initial_size</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Boolean flag indicating whether the cache should be
- forced to the user specified initial size.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>initial_size</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: If set_initial_size is TRUE, initial_size must
- contains the desired initial size in bytes. This value must lie
- in the closed interval [min_size, max_size]. (see below)</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>min_clean_fraction</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: This field is only used in the parallel version
- of the library. It specifies the minimum fraction of the cache that
- must be kept either clean or empty.
- <p>The value must lie in the interval [0.0, 1.0]. 0.25 is a good place
- to start.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>max_size</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Upper bound (in bytes) on the range of values
- that the adaptive cache resize code can select as the maximum
- cache size.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>min_size</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Lower bound (in bytes) on the range of values
- that the adaptive cache resize code can select as the maximum
- cache size.</td></tr>
- <tr>
- <td valign="top"><em>long int</em> <code>epoch_length</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Number of cache accesses between runs of the
- adaptive cache resize code. 50,000 is a good starting number.</td></tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2"><strong>Increment configuration section:</strong></td>
- </tr>
- <tr>
- <td valign="top"><em>enum&nbsp;H5C_cache_incr_mode</em>&nbsp;<code>incr_mode</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Enumerated value indicating the operational mode
- of the automatic cache size increase code. At present, only two
- values are legal:
- <p>H5C_incr__off: Automatic cache size increase is disabled,
- and the remaining increment fields are ignored.
- <p>H5C_incr__threshold: Automatic cache size increase is enabled
- using the hit rate threshold algorithm.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>lower_hr_threshold</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Hit rate threshold used by the hit rate threshold
- cache size increment algorithm.
- <p>When the hit rate over an epoch is below this threshold and the
- cache is full, the maximum size of the cache is multiplied by
- increment (below), and then clipped as necessary to stay within
- max_size, and possibly max_increment.
- <p>This field must lie in the interval [0.0, 1.0]. 0.8 or 0.9
- is a good starting point.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>increment</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Factor by which the hit rate threshold cache
- size increment algorithm multiplies the current cache max size
- to obtain a tentative new cache size.
- <p>The actual cache size increase will be clipped to satisfy the
- max_size specified in the general configuration, and possibly
- max_increment below.
- <p>The parameter must be greater than or equal to 1.0 -- 2.0
- is a reasonable value.
- <p>If you set it to 1.0, you will effectively disable cache size
- increases.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>apply_max_increment</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Boolean flag indicating whether an upper limit
- should be applied to the size of cache size increases.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>max_increment</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Maximum number of bytes by which cache size can
- be increased in a single step -- if applicable.</td></tr>
- <tr>
- <td colspan="2">&nbsp;</td>
- </tr>
- <tr>
- <td colspan="2"><strong>Decrement configuration section:</strong></td>
- </tr>
- <tr>
- <td valign="top"><em>enum&nbsp;H5C_cache_decr_mode</em>&nbsp;<code>decr_mode</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Enumerated value indicating the operational
- mode of the automatic cache size decrease code. At present,
- the following values are legal:
- <p>H5C_decr__off: Automatic cache size decrease is disabled.
- <p>H5C_decr__threshold: Automatic cache size decrease is
- enabled using the hit rate threshold algorithm.
- <p>H5C_decr__age_out: Automatic cache size decrease is enabled
- using the ageout algorithm.
- <p>H5C_decr__age_out_with_threshold: Automatic cache size
- decrease is enabled using the ageout with hit rate threshold
- algorithm</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>upper_hr_threshold</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Hit rate threshold for the hit rate threshold and
- ageout with hit rate threshold cache size decrement algorithms.
- <p>When decr_mode is H5C_decr__threshold, and the hit rate over a
- given epoch exceeds the supplied threshold, the current maximum
- cache size is multiplied by decrement to obtain a tentative new
- (and smaller) maximum cache size.
- <p>When decr_mode is H5C_decr__age_out_with_threshold, there is no
- attempt to find and evict aged out entries unless the hit rate in
- the previous epoch exceeded the supplied threshold.
- <p>This field must lie in the interval [0.0, 1.0].
- <p>For H5C_incr__threshold, .9995 or .99995 is a good place to start.
- <p>For H5C_decr__age_out_with_threshold, .999 might be
- more useful.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>decrement</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: In the hit rate threshold cache size decrease
- algorithm, this parameter contains the factor by which the
- current max cache size is multiplied to produce a tentative
- new cache size.
- <p>The actual cache size decrease will be clipped to satisfy the
- min_size specified in the general configuration, and possibly
- max_decrement below.
- <p>The parameter must be be in the interval [0.0, 1.0].
- <p>If you set it to 1.0, you will effectively disable cache size
- decreases. 0.9 is a reasonable starting point.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>apply_max_decrement</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Boolean flag indicating whether an upper limit
- should be applied to the size of cache size decreases.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>max_decrement</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Maximum number of bytes by which the maximum cache
- size can be decreased in any single step -- if applicable.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>epochs_before_eviction</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: In the ageout based cache size reduction algorithms,
- this field contains the minimum number of epochs an entry must remain
- unaccessed in cache before the cache size reduction algorithm tries to
- evict it. 3 is a reasonable value.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>apply_empty_reserve</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Boolean flag indicating whether the ageout based
- decrement algorithms will maintain a empty reserve when decreasing
- cache size.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>empty_reserve</code>
- &nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">IN: Empty reserve as a fraction of maximum cache
- size if applicable.
- <p>When so directed, the ageout based algorithms will not decrease
- the maximum cache size unless the empty reserve can be met.
- <p>The parameter must lie in the interval [0.0, 1.0].
- 0.1 or 0.05 is a good place to start.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful; otherwise returns a
- negative value.
-
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Funmount" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="File-Unmount">H5Funmount</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Funmount</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Unmounts a file.
-<dt><strong>Description:</strong>
- <dd>Given a mount point, <code>H5Funmount</code>
- dissassociates the mount point's file
- from the file mounted there. This function
- does not close either file.
- <p>
- The mount point can be either the group in the
- parent or the root group of the mounted file
- (both groups have the same name). If the mount
- point was opened before the mount then it is the
- group in the parent; if it was opened after the
- mount then it is the root group of the child.
- <p>
- Note that <code>loc_id</code> is either a file or group identifier
- and <code>name</code> is relative to <code>loc_id</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier for the location at which
- the specified file is to be unmounted.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the mount point.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5funmount_f
- <dd>
- <pre>
-SUBROUTINE h5funmount_f(loc_id, name, child_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN):: name ! Group name at location loc_id
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5funmount_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 August 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5Front.html b/doc/html/RM_H5Front.html
deleted file mode 100644
index 53e6e1b..0000000
--- a/doc/html/RM_H5Front.html
+++ /dev/null
@@ -1,409 +0,0 @@
-<html>
-<head>
-<a name="TopofRM"></a>
-<title>
-HDF5 API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-
-<body bgcolor="#FFFFFF">
-
-<!-- HEADER LEFT "HDF5 Reference Manual -->
-<!-- FOOTER $PAGE (format=1) -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>HDF5: API Specification<br>Reference Manual</h1>
-
-
-</center>
-The HDF5 library provides several interfaces, each of which provides the
-tools required to meet specific aspects of the HDF5 data-handling requirements.
-<p>
-<SCRIPT language="JavaScript">
-<!--
-document.writeln("See <a href="#F90andCPPlus">below</a> for the FORTRAN90 and C++ APIs.")
--->
-</SCRIPT>
-
-<!-- FOR USE WITH PRINT VERSION ONLY -----------------------------------
-Notes regarding FORTRAN90 and C++ APIs appear on the next page.
-<!-- FOR USE WITH PRINT VERSION ONLY ----------------------------------->
-<p>
-
-<center>
-<table border="1" width="80%">
- <tr align="center" valign="middle">
- <td width="33%"><a href="#HighLevelAPIs">High-level APIs</a></td>
- <td width="34%"><a href="#LowLevelAPIs">Main HDF5 Library,
- <br>including Low-level APIs</a></td>
- <td width="33%"><a href="#F90andCPPlus">Fortran and C++
- <br>Interfaces</a></td>
- </tr>
-</table>
-</center>
-<br>
-<a name="HighLevelAPIs"><br></a>
-
-
-<center>
-<table border=0 width="100%">
- <tr>
- <td valign="top" colspan="4">
- <h3>High-level HDF5 APIs</h3>
- The HDF5 Library includes several sets of convenience and
- standard-use APIs.
- The HDF5 Lite APIs are convenience functions designed to
- facilitate common HDF5 operations.
- The HDF5 Image, HDF5 Table and HDF5 Packet Table APIs
- implement standardized approaches to common use cases
- with the intention of improving interoperability.
- </td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">Lite</a></td>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign=top>The <strong>H5LT</strong>
- API<b><strong> </strong></b>general higher-level functions</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">Image</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5IM</strong> API for images</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">Table</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5TB</strong> API for manipulating
- table datasets&nbsp;</td>
- </tr>
- <tr>
- <!-- This row is formatted as it is in an attempt to set the -->
- <!-- format of the table containing the high- and low-level API -->
- <!-- section listings. -->
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">Packet&nbsp;Table</a>
- </td>
- <td>&nbsp;</td>
- <td valign=top>The&nbsp;<strong>H5PT</strong>&nbsp;API&nbsp;for&nbsp;managing&nbsp;packet&nbsp;tables&nbsp;(and&nbsp;<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt_c++.html">C++&nbsp;H5PT&nbsp;wrappers</a>)
- </td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5ds.html">Dimension Scales</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5DS</strong> API for managing dimension scales&nbsp;</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td><a name="LowLevelAPIs">&nbsp;</a></td>
- </tr>
- <tr>
- <td valign="top" colspan="4">
- <h3>Main HDF5 Library, or Low-level APIs</h3>
- The main HDF5 Library includes all of the low-level APIs,
- providing user applications with fine-grain control of
- HDF5 functionality.
- </td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5.html">Library Functions</a></td>
- <td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>The general-purpose
- <strong>H5</strong> functions.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5A.html">Attribute Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5A</strong> API for attributes.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5D.html">Dataset Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5D</strong> API for manipulating
- scientific datasets.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5E.html">Error Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5E</strong> API for error handling.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5F.html">File Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5F</strong> API for accessing HDF files.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5G.html">Group Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5G</strong> API for creating physical
- groups of objects on disk.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5I.html">Identifier Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5I</strong> API for working with
- object identifiers.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5P.html">Property List Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5P</strong> API for manipulating
- object property lists.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5R.html">Reference Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5R</strong> API for references.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5S.html">Dataspace Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5S</strong> API for defining dataset
- dataspace.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5T.html">Datatype Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5T</strong> API for defining dataset
- element information.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="RM_H5Z.html">Filters and</a><br>
- &nbsp;&nbsp;<a href="RM_H5Z.html">Compression&nbsp;Interface</a></td>
- <td>&nbsp;</td>
- <td valign=top>The <strong>H5Z</strong> API for inline data filters
- and data compression.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="Tools.html">Tools</a></td>
- <td>&nbsp;</td>
- <td valign=top>Interactive tools for the examination
- of existing HDF5 files.</td>
- </tr>
- <tr>
- <td valign="top" width="10%">&nbsp;</td>
- <td valign=top><a href="PredefDTypes.html">Predefined Datatypes</a></td>
- <td>&nbsp;</td>
- <td valign=top>Predefined datatypes in HDF5.
-<!--
-</td></tr>
-<tr><td valign=top><a href="Glossary.html">Glossary</a>
- </td><td></td><td valign=top>A glossary of data-types used in the APIs.
--->
- </td>
- </tr>
-</table>
-</center>
-
-<p>
-A PDF version of this <cite>HDF5 Reference Manual</cite> will be available
-from <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/PSandPDF/">
-http://hdf.ncsa.uiuc.edu/HDF5/doc/PSandPDF/</a>
-approximately one week after each release.
-
-<!-- NEW PAGE -->
-<!-- NEW PAGE -->
-<a name="F90andCPPlus">
-<hr>
-
-<SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("<div align=right><a href='#TopofRM'>To top of <cite>Reference Manual</cite></a></div>");
--->
-</SCRIPT>
-
-<h3>The Fortran90 and C++ APIs to HDF5</h3>
-</a>
-
-The HDF5 Library distribution includes FORTRAN90 and C++ APIs,
-which are described in the following documents.
-
-<p>
-<strong>Fortran90 API</strong>
- <dir>
- <a href="fortran/F90UserNotes.html" target="External">
- <cite>HDF5 FORTRAN90 User's Notes</cite></a>
- contains general information regarding the API.
- Specific information on each API call is found in the
- <cite>HDF5 Reference Manual</cite>.
- <p>
- <u>Fortran90 APIs in the <cite>Reference Manual</cite>:</u>
- The current version of the <cite>HDF5 Reference Manual</cite> includes
- descriptions of the Fortran90 APIs to HDF5.
- Fortran subroutines exist in the H5, H5A, H5D, H5E, H5F, H5G, H5I, H5P,
- H5R, H5S, H5T, and H5Z interfaces and are described on those pages.
- In general, each Fortran subroutine performs exactly the same task
- as the corresponding C function.
-
- <p>
- Whereas Fortran subroutines had been described on separate pages in
- prior releases, those descriptions were fully integrated into the
- body of the reference manual for HDF5 Release 1.6.2
- (and mostly so for Release 1.6.1).
- <p>
- <a href="fortran/F90Flags.html" target="External">
- <cite>HDF5 Fortran90 Flags and Datatypes</cite></a>
- lists the flags employed in the Fortran90 interface and
- contains a pointer to the HDF5 Fortran90 datatypes.
- </dir>
-
-<strong>C++ API</strong>
- <dir>
- <a href="cpplus/CppUserNotes.pdf" target="External">
- <cite>HDF5 C++ User's Notes</cite></a>
- <p>
- <a href="cpplus/CppInterfaces.html" target="External">
- <cite>HDF5 C++ Interfaces</cite></a>
-<!--
- <p>
- (Note that the C++ APIs are not yet integrated into the
- <cite>HDF5 Reference Manual</cite>.)
--->
- </dir>
-
-
-<br><br>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><table width=100% border=0>
-<tr><td align=left valign=top>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 23 June 2005");
--->
-</SCRIPT>
-
-
-</td><td align=right valign=top>
-<SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("<a href=Copyright.html>Copyright</a>&nbsp;&nbsp;");
--->
-</SCRIPT>
-</td></tr>
-</table>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5G.html b/doc/html/RM_H5G.html
deleted file mode 100644
index 0bf9801..0000000
--- a/doc/html/RM_H5G.html
+++ /dev/null
@@ -1,1521 +0,0 @@
-<html>
-<head><title>
-HDF5/H5G API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5G: Group Interface</h1>
-</center>
-
-<h2>Group Object API Functions</h2>
-
-The Group interface functions create and manipulate groups
-of objects in an HDF5 file.
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Group-Create">H5Gcreate</a>
- <li><a href="#Group-Open">H5Gopen</a>
- <li><a href="#Group-Close">H5Gclose</a>
- <li><a href="#Group-SetComment">H5Gset_comment</a>
- <li><a href="#Group-GetComment">H5Gget_comment</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-<td valign=top>
-<ul>
- <li><a href="#Group-Link">H5Glink</a>
- <li><a href="#Group-Link2">H5Glink2</a>
- <li><a href="#Group-Unlink">H5Gunlink</a>
- <li><a href="#Group-Move">H5Gmove</a>
- <li><a href="#Group-Move2">H5Gmove2</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Group-Iterate">H5Giterate</a>
- <li><a href="#Group-GetObjinfo">H5Gget_objinfo</a>
- <li><a href="#Group-GetNumObjs">H5Gget_num_objs</a>
- <li><a href="#Group-GetObjNameByIdx">H5Gget_objname_by_idx</a>
- <li><a href="#Group-GetObjTypeByIdx">H5Gget_objtype_by_idx</a>
- <li><a href="#Group-GetLinkval">H5Gget_linkval</a>
-</ul>
-</td></tr>
-</table>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Group-Close">H5Gclose</a>
- <li><a href="#Group-Create">H5Gcreate</a>
- <li><a href="#Group-GetComment">H5Gget_comment</a>
- <li><a href="#Group-GetLinkval">H5Gget_linkval</a>
- <li><a href="#Group-GetNumObjs">H5Gget_num_objs</a>
- <li><a href="#Group-GetObjinfo">H5Gget_objinfo</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Group-GetObjNameByIdx">H5Gget_objname_by_idx</a>
- <li><a href="#Group-GetObjTypeByIdx">H5Gget_objtype_by_idx</a>
- <li><a href="#Group-Iterate">H5Giterate</a>
- <li><a href="#Group-Link">H5Glink</a>
- <li><a href="#Group-Link2">H5Glink2</a>
- <li><a href="#Group-Move">H5Gmove</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Group-Move2">H5Gmove2</a>
- <li><a href="#Group-Open">H5Gopen</a>
- <li><a href="#Group-SetComment">H5Gset_comment</a>
- <li><a href="#Group-Unlink">H5Gunlink</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Group-Create">h5gcreate_f</a>
- <li><a href="#Group-Open">h5gopen_f</a>
- <li><a href="#Group-Close">h5gclose_f</a>
- <li><a href="#Group-SetComment">h5gset_comment_f</a>
- <li><a href="#Group-GetComment">h5gget_comment_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Group-Link">h5glink_f</a>
- <li><a href="#Group-Link2">h5glink2_f</a>
- <li><a href="#Group-Unlink">h5gunlink_f</a>
- <li><a href="#Group-Move">h5gmove_f</a>
- <li><a href="#Group-Move2">h5gmove2_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Group-Iterate">h5gget_obj_info_idx_f</a>
- <li><a href="#Group-Iterate">h5gn_members_f</a>
-<!--<li><a href="#Group-GetObjinfo">h5gget_objinfo_f</a> -->
-<!--<li><a href="#Group-GetNumObjs">h5gget_num_objs_f</a> -->
-<!--<li><a href="#Group-GetObjNameByIdx">h5gget_objname_by_idx_f</a> -->
-<!--<li><a href="#Group-GetObjTypeByIdx">h5gget_objtype_by_idx_f</a> -->
- <li><a href="#Group-GetLinkval">h5gget_linkval_f</a>
-</ul>
-</td></tr>
-</table>
-
-<p>
-A group associates names with objects and provides a mechanism
-for mapping a name to an object. Since all objects appear in at
-least one group (with the possible exception of the root object)
-and since objects can have names in more than one group, the set
-of all objects in an HDF5 file is a directed graph. The internal
-nodes (nodes with out-degree greater than zero) must be groups
-while the leaf nodes (nodes with out-degree zero) are either empty
-groups or objects of some other type. Exactly one object in every
-non-empty file is the root object. The root object always has a
-positive in-degree because it is pointed to by the file super block.
-
-<p>
-An object name consists of one or more components separated from
-one another by slashes. An absolute name begins with a slash and the
-object is located by looking for the first component in the root
-object, then looking for the second component in the first object, etc.,
-until the entire name is traversed. A relative name does not begin
-with a slash and the traversal begins at the location specified by the
-create or access function.
-
-<p>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gclose" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Close">H5Gclose</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Gclose</code>(<em>hid_t </em><code>group_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Closes the specified group.
- <dt><strong>Description:</strong>
- <dd><code>H5Gclose</code> releases resources used by a group which was
- opened by <code>H5Gcreate</code> or <code>H5Gopen</code>.
- After closing a group, the <code>group_id</code> cannot be used again.
- <p>
- Failure to release a group with this call will result in resource leaks.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>group_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Group identifier to release.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gclose_f
- <dd>
- <pre>
-SUBROUTINE h5gclose_f( gr_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: gr_id ! Group identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gcreate" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Create">H5Gcreate</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Gcreate</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t</em> <code>size_hint</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Creates a new empty group and gives it a name.
- <dt><strong>Description:</strong>
- <dd><code>H5Gcreate</code> creates a new group with the specified
- name at the specified location, <code>loc_id</code>.
- The location is identified by a file or group identifier.
- The name, <code>name</code>, must not already be taken by some
- other object and all parent groups must already exist.
- <p>
- <code>size_hint</code> is a hint for the number of bytes to
- reserve to store the names which will be eventually added to
- the new group. Passing a value of zero for <code>size_hint</code>
- is usually adequate since the library is able to dynamically
- resize the name heap, but a correct hint may result in better
- performance.
- If a non-positive value is supplied for <code>size_hint</code>,
- then a default size is chosen.
- <p>
- The return value is a group identifier for the open group.
- This group identifier should be closed by calling
- <code>H5Gclose</code> when it is no longer needed.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>name</code></td>
- <td valign="top">IN: Absolute or relative name of the new group.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>size_hint&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Optional parameter indicating the number of bytes
- to reserve for the names that will appear in the group.
- A conservative estimate could result in multiple
- system-level I/O requests to read the group name heap;
- a liberal estimate could result in a single large
- I/O request even when the group has just a few names.
- HDF5 stores each name with a null terminator.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a valid group identifier for the open group if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gcreate_f
- <dd>
- <pre>
-SUBROUTINE h5gcreate_f(loc_id, name, gr_id, hdferr, size_hint)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group to be created
- INTEGER(HID_T), INTENT(OUT) :: gr_id ! Group identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(SIZE_T), OPTIONAL, INTENT(IN) :: size_hint
- ! Number of bytes to store the names
- ! of objects in the group.
- ! Default value is
- ! OBJECT_NAMELEN_DEFAULT_F
-END SUBROUTINE h5gcreate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gget_comment" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-GetComment">H5Gget_comment</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gget_comment</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t</em> <code>bufsize</code>,
- <em>char *</em><code>comment</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves comment for specified object.
- <dt><strong>Description:</strong>
- <dd><code>H5Gget_comment</code> retrieves the comment for the the
- object specified by <code>loc_id</code> and <code>name</code>.
- The comment is returned in the buffer <code>comment</code>.
- <p>
- At most <code>bufsize</code> characters, including a null
- terminator, are returned in <code>comment</code>.
- The returned value is not null terminated
- if the comment is longer than the supplied buffer.
- <p>
- If an object does not have a comment, the empty string
- is returned.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the file, group, dataset, or
- named datatype.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the object in <code>loc_id</code> whose
- comment is to be retrieved.
- <br>
- <code>name</code> can be '.' (dot) if <code>loc_id</code>
- fully specifies the object for which the associated comment
- is to be retrieved.
- <br>
- <code>name</code> is ignored if <code>loc_id</code>
- is a dataset or named datatype.
- </td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>bufsize</code></td>
- <td valign="top">IN: Anticipated required size of the
- <code>comment</code> buffer.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>comment</code></td>
- <td valign="top">OUT: The comment.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the number of characters in the comment,
- counting the null terminator, if successful; the value
- returned may be larger than <code>bufsize</code>.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gget_comment_f
- <dd>
- <pre>
-SUBROUTINE h5gget_comment_f(loc_id, name, size, buffer, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File, group, dataset, or
- ! named datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object link
- CHARACTER(LEN=size), INTENT(OUT) :: buffer ! Buffer to hold the comment
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gget_comment_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gget_linkval" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-GetLinkval">H5Gget_linkval</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gget_linkval</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t</em> <code>size</code>,
- <em>char *</em><code>value</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns the name of the object that the symbolic link points to.
- <dt><strong>Description:</strong>
- <dd><code>H5Gget_linkval</code> returns <code>size</code>
- characters of the name of the object that the symbolic link <code>name</code> points to.
- <p>
- The parameter <code>loc_id</code> is a file or group identifier.
- <p>
- The parameter <code>name</code> must be a symbolic link pointing to
- the desired object and must be defined relative to <code>loc_id</code>.
- <p>
- If <code>size</code> is smaller than the size of the returned object name, then
- the name stored in the buffer <code>value</code> will not be null terminated.
- <p>
- This function fails if <code>name</code> is not a symbolic link.
- The presence of a symbolic link can be tested by passing zero for
- <code>size</code> and NULL for <code>value</code>.
- <p>
- This function should be used only after <code>H5Gget_objinfo</code> has been called
- to verify that <code>name</code> is a symbolic link.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the file or group.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Symbolic link to the object whose name is to be returned.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>size</code></td>
- <td valign="top">IN: Maximum number of characters of <code>value</code>
- to be returned.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>value</code></td>
- <td valign="top">OUT: A buffer to hold the name of the object being sought.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value, with the link value in <code>value</code>,
- if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gget_linkval_f
- <dd>
- <pre>
-SUBROUTINE h5gget_linkval_f(loc_id, name, size, buffer, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the symbolic link
- CHARACTER(LEN=size), INTENT(OUT) :: buffer ! Buffer to hold a
- ! name of the object
- ! symbolic link points to
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gget_linkval_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gget_num_objs" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Group-GetNumObjs">H5Gget_num_objs</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gget_num_objs</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>hsize_t* </em> <code>num_obj</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns number of objects in the group specified by its identifier
-<dt><strong>Description:</strong>
- <dd><code>H5Gget_num_objs</code> returns number of objects in a group.
- Group is specified by its identifier <code>loc_id</code>.
- If a file identifier is passed in, then the number of objects in the
- root group is returned.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the group or the file</td></tr>
- <tr>
- <td valign="top"><em>hsize_t&nbsp;*</em><code>num_obj&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Number of objects in the group.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns positive value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gget_objinfo" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-GetObjinfo">H5Gget_objinfo</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gget_objinfo</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>hbool_t</em> <code>follow_link</code>,
- <em>H5G_stat_t *</em><code>statbuf</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns information about an object.
- <dt><strong>Description:</strong>
- <dd><code>H5Gget_objinfo</code> returns information about the
- specified object through the <code>statbuf</code> argument.
- <code>loc_id</code> (a file or group identifier) and
- <code>name</code> together determine the object.
- If the object is a symbolic link and <code>follow_link</code> is
- zero (<code>0</code>), then the information returned is that for the link itself;
- otherwise the link is followed and information is returned about
- the object to which the link points.
- If <code>follow_link</code> is non-zero but the final symbolic link
- is dangling (does not point to anything), then an error is returned.
- The <code>statbuf</code> fields are undefined for an error.
- The existence of an object can be tested by calling this function
- with a null <code>statbuf</code>.
- <p>
- <code>H5Gget_objinfo</code> fills in the following data structure
- (defined in H5Gpublic.h):
- <pre>
- typedef struct H5G_stat_t {
- unsigned long fileno;
- haddr_t objno;
- unsigned nlink;
- H5G_obj_t type;
- time_t mtime;
- size_t linklen;
- H5O_stat_t ohdr;
- } H5G_stat_t
- </pre>
-
- where H5O_stat_t (defined in H5Opublic.h) is:
-
- <pre>
- typedef struct H5O_stat_t {
- hsize_t size;
- hsize_t free;
- unsigned nmesgs;
- unsigned nchunks;
- } H5O_stat_t
- </pre>
- The <code>fileno</code> and <code>objno</code> fields contain
- four values which uniquely identify an object among those
- HDF5 files which are open: if all four values are the same
- between two objects, then the two objects are the same
- (provided both files are still open).
- <ul>
- <li>Note that if a file is closed and re-opened, the
- value in <code>fileno</code> will change.
- <li>If a VFL driver either does not or cannot detect that
- two <code>H5Fopen</code> calls referencing the same file
- actually open the same file, each will get a different
- <code>fileno</code>.
- </ul>
- <p>
- The <code>nlink</code> field is the number of hard links to
- the object or zero when information is being returned about a
- symbolic link (symbolic links do not have hard links but
- all other objects always have at least one).
- <p>
- The <code>type</code> field contains the type of the object,
- one of
- <code>H5G_GROUP</code>,
- <code>H5G_DATASET</code>,
- <code>H5G_LINK</code>, or
- <code>H5G_TYPE</code>.
- <p>
- The <code>mtime</code> field contains the modification time.
- <p>
- If information is being returned about a symbolic link then
- <code>linklen</code> will be the length of the link value
- (the name of the pointed-to object with the null terminator);
- otherwise <code>linklen</code> will be zero.
- <p>
- The fields in the <code>H5O_stat_t</code> struct contain information
- about the object header for the object queried:
- <ul><dl>
- <dt><code>size</code>
- <dd>The total size of all the object header information in
- the file (for all chunks).
- <dt><code>free</code>
- <dd>The size of unused space in the object header.
- <dt><code>nmesgs</code>
- <dd>The number of object header messages.
- <dt><code>nchunks</code>
- <dd>The number of chunks the object header is broken up into.
- </dl> </ul>
-
- <p>
- Other fields may be added to this structure in the future.
- <dt><strong>Note:</strong>
- <dd>Some systems will be able to record the time accurately but
- unable to retrieve the correct time; such systems (e.g., Irix64)
- will report an <code>mtime</code> value of 0 (zero).
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const char</em> <code>*name</code></td>
- <td valign="top">IN: Name of the object for which status is being sought.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>follow_link</code></td>
- <td valign="top">IN: Link flag.</td></tr>
- <tr>
- <td valign="top"><em>H5G_stat_t</em>&nbsp;<code>*statbuf&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Buffer in which to return information about the object.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd> Returns a non-negative value if successful, with the fields of
- <code>statbuf</code> (if non-null) initialized.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gget_objname_by_idx" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Group-GetObjNameByIdx">H5Gget_objname_by_idx</a>
-<dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Gget_objname_by_idx</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>hsize_t</em> <code>idx</code>,
- <em>char *</em><code>name</code>,
- <em>size_t</em> <code>size</code> )
-<dt><strong>Purpose:</strong>
- <dd>Returns a name of an object specified by an index.
-<dt><strong>Description:</strong>
- <dd><code>H5Gget_objname_by_idx</code> returns a name of the object
- specified by the index <code>idx</code> in the group <code>loc_id</code>.
- <p>
- The group is specified by a group identifier <code>loc_id</code>.
- If preferred, a file identifier may be passed in <code>loc_id</code>;
- that file's root group will be assumed.
- <p>
- <code>idx</code> is the transient index used to iterate through
- the objects in the group.
- The value of <code>idx</code> is any nonnegative number less than
- the total number of objects in the group, which is returned by the
- function <code>H5Gget_num_objs</code>.
- Note that this is a transient index; an object may have a
- different index each time a group is opened.
- <p>
- The object name is returned in the user-specified buffer <code>name</code>.
- <p>
- If the size of the provided buffer <code>name</code> is
- less or equal the actual object name length,
- the object name is truncated to <code>max_size - 1</code> characters.
- <p>
- Note that if the size of the object's name is unkown, a
- preliminary call to <code>H5Gget_objname_by_idx</code> with <code>name</code>
- set to NULL will return the length of the object's name.
- A second call to <code>H5Gget_objname_by_idx</code>
- can then be used to retrieve the actual name.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>loc_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Group or file identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>idx</code></td>
- <td valign="top">IN: Transient index identifying object.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>name</code></td>
- <td valign="top">IN/OUT: Pointer to user-provided buffer the object name.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>size</code></td>
- <td valign="top">IN: Name length.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the size of the object name if successful,
- or <code>0</code> if no name is associated with the group identifier.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gget_objtype_by_idx" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Group-GetObjTypeByIdx">H5Gget_objtype_by_idx</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Gget_objtype_by_idx</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>hsize_t</em> <code>idx</code> )
-<dt><strong>Purpose:</strong>
- <dd>Returns the type of an object specified by an index.
-<dt><strong>Description:</strong>
- <dd><code>H5Gget_objtype_by_idx</code> returns the type of the object
- specified by the index <code>idx</code> in the group <code>loc_id</code>.
- <p>
- The group is specified by a group identifier <code>loc_id</code>.
- If preferred, a file identifier may be passed in <code>loc_id</code>;
- that file's root group will be assumed.
- <p>
- <code>idx</code> is the transient index used to iterate through
- the objects in the group.
- This parameter is described in more detail in the discussion of
- <a href="#Group-GetObjNameByIdx"><code>H5Gget_objname_by_idx</code></a>.
- <p>
- The object type is returned as the function return value:
- <table>
- <tr valign=top align=left><td>
- &nbsp;&nbsp;&nbsp;&nbsp;
- </td><td>
- <code>H5G_LINK</code>
- <!--</td><td>
- <code>0x0001</code>-->
- </td><td>
- <code>0</code>
- </td><td>
- Object is a symbolic link.
- </td></tr>
- <tr valign=top align=left><td>&nbsp;
-
- </td><td>
- <code>H5G_GROUP</code>
- <!--</td><td>
- <code>0x0001</code>-->
- </td><td>
- <code>1</code>
- </td><td>
- Object is a group.
- </td></tr>
- <tr valign=top align=left><td>&nbsp;
-
- </td><td>
- <code>H5G_DATASET</code> &nbsp;&nbsp;
- <!--</td><td>
- <code>0x0001</code>-->
- </td><td>
- <code>2</code> &nbsp;&nbsp;
- </td><td>
- Object is a dataset.
- </td></tr>
- <tr valign=top align=left><td>&nbsp;
-
- </td><td>
- <code>H5G_TYPE</code>
- <!--</td><td>
- <code>0x0001</code>-->
- </td><td>
- <code>3</code>
- </td><td>
- Object is a named datatype.
- </td></tr>
- </table>
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>loc_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Group or file identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>idx</code></td>
- <td valign="top">IN: Transient index identifying object.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the type of the object if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Giterate" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Iterate">H5Giterate</a>
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Giterate</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char</em> <code>*name</code>,
- <em>int</em> <code>*idx</code>,
- <em>H5G_iterate_t</em> <code>operator</code>,
- <em>void</em> <code>*operator_data</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Iterates an operation over the entries of a group.
- <dt><strong>Description:</strong>
- <dd><code>H5Giterate</code> iterates over the members of
- <code>name</code> in the file or group specified with
- <code>loc_id</code>.
- For each object in the group, the <code>operator_data</code>
- and some additional information, specified below, are
- passed to the <code>operator</code> function.
- The iteration begins with the <code>idx</code> object in the
- group and the next element to be processed by the operator is
- returned in <code>idx</code>. If <code>idx</code>
- is NULL, then the iterator starts at the first group member;
- since no stopping point is returned in this case, the iterator
- cannot be restarted if one of the calls to its operator returns
- non-zero.
- <p>
- The prototype for <code>H5G_iterate_t</code> is:
- <table>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top"><code>typedef</code> <em>herr_t </em>(*<code>H5G_iterate_t</code>)
- (<em>hid_t</em> <code>group_id</code>, <em>const char *</em>
- <code>member_name</code>, <em>void *</em><code>operator_data</code>);</td></tr>
- </table>
-
- <p>The operation receives the group identifier for the group being
- iterated over, <code>group_id</code>, the name of the current
- object within the group, <code>member_name</code>, and the
- pointer to the operator data passed in to <code>H5Giterate</code>,
- <code>operator_data</code>.
- <p>
- The return values from an operator are:
- <ul>
- <li>Zero causes the iterator to continue, returning
- zero when all group members have been processed.
- <li>Positive causes the iterator to immediately return that positive
- value, indicating short-circuit success. The iterator can be
- restarted at the next group member.
- <li>Negative causes the iterator to immediately return that value,
- indicating failure. The iterator can be restarted at the next
- group member.
- </ul>
- <p>
- <code>H5Giterate</code> assumes that the membership of the group
- identified by <code>name</code> remains unchanged through the
- iteration. If the membership changes during the iteration,
- the function's behavior is undefined.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const char</em> <code>*name</code></td>
- <td valign="top">IN: Group over which the iteration is performed.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>*idx</code></td>
- <td valign="top">IN/OUT: Location at which to begin the iteration.</td></tr>
- <tr>
- <td valign="top"><em>H5G_iterate_t</em>&nbsp;<code>operator&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Operation to be performed on an object at each step of
- the iteration.</td></tr>
- <tr>
- <td valign="top"><em>void</em> <code>*operator_data</code></td>
- <td valign="top">IN/OUT: Data associated with the operation.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the return value of the last operator if it was non-zero,
- or zero if all group members were processed.
- Otherwise returns a negative value.
-<!-- NEW PAGE -->
- <dt><strong>Fortran90 Interface:</strong>
- <dd>There is no direct FORTRAN couterpart for the C function
- <code>H5Giterate</code>.
- Instead, that functionality is provided by two FORTRAN functions:
-
- <center>
- <table width=80%>
- <tr valign=top align=left>
- <td>
- <code>h5gn_members_f</code>
- </td>
- <td>&nbsp;&nbsp;</td>
- <td>
- <strong>Purpose:</strong>
- Returns the number of group members.
- </tr>
- <tr valign=top align=left>
- <td>
- <code>h5gget_obj_info_idx_f</code>
- </td><td>&nbsp;&nbsp;</td><td>
- <strong>Purpose:</strong>
- Returns name and type of the group member identified by its index.
- </td>
- </tr>
- </table>
- </center>
-
- <pre>
-SUBROUTINE h5gn_members_f(loc_id, name, nmembers, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
- INTEGER, INTENT(OUT) :: nmembers ! Number of members in the group
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gn_members_f
- </pre>
-
- <pre>
-SUBROUTINE h5gget_obj_info_idx_f(loc_id, name, idx, &amp;
- obj_name, obj_type, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group
- INTEGER, INTENT(IN) :: idx ! Index of member object
- CHARACTER(LEN=*), INTENT(OUT) :: obj_name ! Name of the object
- INTEGER, INTENT(OUT) :: obj_type ! Object type :
- ! H5G_LINK_F
- ! H5G_GROUP_F
- ! H5G_DATASET_F
- ! H5G_TYPE_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gget_obj_info_idx_f
- </pre>
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Glink" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Link">H5Glink</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Glink</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>H5G_link_t</em> <code>link_type</code>,
- <em>const char *</em><code>current_name</code>,
- <em>const char *</em><code>new_name</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Creates a link of the specified type from <code>new_name</code>
- to <code>current_name</code>.
- <dt><strong>Description:</strong>
- <dd><code>H5Glink</code> creates a new name for an object that has some current
- name, possibly one of many names it currently has.
- <p>
- If <code>link_type</code> is <code>H5G_LINK_HARD</code>, then
- <code>current_name</code> must specify the name of an
- existing object and both
- names are interpreted relative to <code>loc_id</code>, which is
- either a file identifier or a group identifier.
- <p>
- If <code>link_type</code> is <code>H5G_LINK_SOFT</code>, then
- <code>current_name</code> can be anything and is interpreted at
- lookup time relative to the group which contains the final
- component of <code>new_name</code>. For instance, if
- <code>current_name</code> is <code>./foo</code>,
- <code>new_name</code> is <code>./x/y/bar</code>, and a request
- is made for <code>./x/y/bar</code>, then the actual object looked
- up is <code>./x/y/./foo</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5G_link_t</em> <code>link_type</code></td>
- <td valign="top">IN: Link type.
- Possible values are <code>H5G_LINK_HARD</code> and
- <code>H5G_LINK_SOFT</code>.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>current_name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the existing object if link is a hard link.
- Can be anything for the soft link.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em> <code>new_name</code></td>
- <td valign="top">IN: New name for the object.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5glink_f
- <dd>
- <pre>
-SUBROUTINE h5glink_f(loc_id, link_type, current_name, new_name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group location identifier
- INTEGER, INTENT(IN) :: link_type ! Link type, possible values are:
- ! H5G_LINK_HARD_F
- ! H5G_LINK_SOFT_F
- CHARACTER(LEN=*), INTENT(IN) :: current_name
- ! Current object name relative
- ! to loc_id
- CHARACTER(LEN=*), INTENT(IN) :: new_name ! New object name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5glink_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Glink2" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Link2">H5Glink2</a>
- <dt><strong>Signature:</strong>
-
- <dd><em>herr_t</em> <code>H5Glink2</code>(
- <em>hid_t</em> <code>curr_loc_id</code>, <em>const char *</em><code>current_name</code>,
- <em>H5G_link_t</em> <code>link_type</code>,
- <em>hid_t</em> <code>new_loc_id</code>, <em>const char *</em><code>new_name</code> )
- <dt><strong>Purpose:</strong>
- <dd>Creates a link of the specified type from <code>new_name</code>
- to <code>current_name</code>.
- <dt><strong>Description:</strong>
-
- <dd><code>H5Glink2</code> creates a new name for an object that has some current
- name, possibly one of many names it currently has.
- <p>
- If <code>link_type</code> is <code>H5G_LINK_HARD</code>, then <code>current_name</code>
- must specify the name of an existing object.
- In this case, <code>current_name</code> and <code>new_name</code> are interpreted
- relative to <code>curr_loc_id</code> and <code>new_loc_id</code>, respectively,
- which are either file or group identifiers.
- <p>
- If <code>link_type</code> is <code>H5G_LINK_SOFT</code>, then
- <code>current_name</code> can be anything and is interpreted at
- lookup time relative to the group which contains the final
- component of <code>new_name</code>. For instance, if
- <code>current_name</code> is <code>./foo</code>,
- <code>new_name</code> is <code>./x/y/bar</code>, and a request
- is made for <code>./x/y/bar</code>, then the actual object looked
- up is <code>./x/y/./foo</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>curr_loc_id</code></td>
- <td valign="top">IN: The file or group identifier for the original object.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>current_name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the existing object if link is a hard link.
- Can be anything for the soft link.</td></tr>
- <tr>
- <td valign="top"><em>H5G_link_t</em> <code>link_type</code></td>
- <td valign="top">IN: Link type.
- Possible values are <code>H5G_LINK_HARD</code> and
- <code>H5G_LINK_SOFT</code>.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>new_loc_id</code></td>
- <td valign="top">IN: The file or group identifier for the new link.</td></tr>
- <td valign="top"><em>const char *</em> <code>new_name</code></td>
- <td valign="top">IN: New name for the object.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5glink2_f
- <dd>
- <pre>
-SUBROUTINE h5glink2_f(cur_loc_id, cur_name, link_type, new_loc_id, new_name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: cur_loc_id ! File or group location identifier
- CHARACTER(LEN=*), INTENT(IN) :: cur_name ! Name of the existing object
- ! is relative to cur_loc_id
- ! Can be anything for the soft link
- INTEGER, INTENT(IN) :: link_type ! Link type, possible values are:
- ! H5G_LINK_HARD_F
- ! H5G_LINK_SOFT_F
- INTEGER(HID_T), INTENT(IN) :: new_loc_id ! New location identifier
- CHARACTER(LEN=*), INTENT(IN) :: new_name ! New object name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5glink2_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gmove" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Move">H5Gmove</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gmove</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char</em> <code>*src_name</code>,
- <em>const char</em> <code>*dst_name</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Renames an object within an HDF5 file.
- <dt><strong>Description:</strong>
- <dd><code>H5Gmove</code> renames an object within an HDF5 file.
- The original name, <code>src_name</code>, is unlinked from the
- group graph and the new name, <code>dst_name</code>, is inserted
- as an atomic operation. Both names are interpreted relative
- to <code>loc_id</code>, which is either a file or a group
- identifier.
- <dt><strong>Warning:</strong>
- <dd>Exercise care in moving groups as it is possible to render data in
- a file inaccessible with <code>H5Gmove</code>.
- See <a href="Groups.html#H5GUnlinkToCorrupt">The Group Interface</a>
- in the <cite>HDF5 User's Guide</cite>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;<code>*src_name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Object's original name.</td></tr>
- <tr>
- <td valign="top"><em>const char</em> <code>*dst_name</code></td>
- <td valign="top">IN: Object's new name.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gmove_f
- <dd>
- <pre>
-SUBROUTINE h5gmove_f(loc_id, name, new_name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Original name of an object
- CHARACTER(LEN=*), INTENT(IN) :: new_name ! New name of an object
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gmove_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gmove2" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Move2">H5Gmove2</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gmove2</code>( <em>hid_t</em> <code>src_loc_id</code>,
- <em>const char</em> <code>*src_name</code>, <em>hid_t</em> <code>dst_loc_id</code>,
- <em>const char</em> <code>*dst_name</code> )
- <dt><strong>Purpose:</strong>
- <dd>Renames an object within an HDF5 file.
- <dt><strong>Description:</strong>
- <dd><code>H5Gmove2</code> renames an object within an HDF5 file. The original
- name, <code>src_name</code>, is unlinked from the group graph and the new
- name, <code>dst_name</code>, is inserted as an atomic operation.
- <p>
- </p><code>src_name</code> and <code>dst_name</code> are interpreted relative to
- <code>src_name</code> and <code>dst_name</code>, respectively,
- which are either file or group identifiers.
- <dt><strong>Warning:</strong>
- <dd>Exercise care in moving groups as it is possible to render data in a file
- inaccessible with <code>H5Gmove</code>. See <a href="Groups.html#H5GUnlinkToCorrupt">The
- Group Interface</a> in the <cite>HDF5 User's Guide</cite>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>src_loc_id</code></td>
- <td valign="top">IN: Original file or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;<code>*src_name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Object's original name.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dst_loc_id</code></td>
- <td valign="top">IN: Destination file or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const char</em> <code>*dst_name</code></td>
- <td valign="top">IN: Object's new name.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful; otherwise returns a negative
- value.
- <dt><strong>Fortran90 Interface:</strong> h5gmove2_f
- <dd>
- <pre>
-SUBROUTINE h5gmove2_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: src_loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: src_name ! Original name of an object
- ! relative to src_loc_id
- INTEGER(HID_T), INTENT(IN) :: dst_loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: dst_name ! New name of an object
- ! relative to dst_loc_id
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gmove2_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gopen" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Open">H5Gopen</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Gopen</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Opens an existing group for modification and returns a group
- identifier for that group.
- <dt><strong>Description:</strong>
- <dd><code>H5Gopen</code> opens an existing group with the specified
- name at the specified location, <code>loc_id</code>.
- <p>
- The location is identified by a file or group identifier
- <p>
- <code>H5Gopen</code> returns a group identifier for the group
- that was opened. This group identifier should be released by
- calling <code>H5Gclose</code> when it is no longer needed.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: File or group identifier within which group is to be open.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of group to open.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a valid group identifier if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gopen_f
- <dd>
- <pre>
-SUBROUTINE h5gopen_f(loc_id, name, gr_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the group to open
- INTEGER(HID_T), INTENT(OUT) :: gr_id ! Group identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gopen_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gset_comment" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-SetComment">H5Gset_comment</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Gset_comment</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>const char *</em><code>comment</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets comment for specified object.
- <dt><strong>Description:</strong>
- <dd><code>H5Gset_comment</code> sets the comment for the
- object specified by <code>loc_id</code> and <code>name</code>
- to <code>comment</code>.
- Any previously existing comment is overwritten.
- <p>
- If <code>comment</code> is the empty string or a
- null pointer, the comment message is removed from the object.
- <p>
- Comments should be relatively short, null-terminated,
- ASCII strings.
- <p>
- Comments can be attached to any object that has an object header,
- e.g., datasets, groups, named datatypes, and dataspaces, but
- not symbolic links.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the file, group, dataset,
- or named datatype.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>name</code></td>
- <td valign="top">IN: Name of the object whose comment is to be
- set or reset.
- <br>
- <code>name</code> can be '.' (dot) if <code>loc_id</code>
- fully specifies the object for which the comment is to be set.
- <br>
- <code>name</code> is ignored if <code>loc_id</code>
- is a dataset or named datatype.
- </td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>comment&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The new comment.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gset_comment_f
- <dd>
- <pre>
-SUBROUTINE h5gset_comment_f(loc_id, name, comment, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File, group, dataset, or
- ! named datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of object
- CHARACTER(LEN=*), INTENT(IN) :: comment ! Comment for the object
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gset_comment_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Gunlink" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Group-Unlink">H5Gunlink</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Gunlink</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Removes the link to an object from a group.
- <dt><strong>Description:</strong>
- <dd><code>H5Gunlink</code> removes the object specified by
- <code>name</code> from the group graph and decrements the
- link count for the object to which <code>name</code> points.
- This action eliminates any association between <code>name</code>
- and the object to which <code>name</code> pointed.
- <p>
- Object headers keep track of how many hard links refer to an object;
- when the link count reaches zero, the object can be removed
- from the file. Objects which are open are not removed until all
- identifiers to the object are closed.
- <p>
- If the link count reaches zero, all file space associated with
- the object will be released, i.e., identified in memory as freespace.
- If the any object identifier is open for the object, the space
- will not be released until after the object identifier is closed.
- <p>
- Note that space identified as freespace is available for re-use
- only as long as the file remains open; once a file has been
- closed, the HDF5 library loses track of freespace. See
- &ldquo;<a href="Performance.html#Freespace">Freespace Management</a>&rdquo;
- in the <cite>HDF5 User's Guide</cite> for further details.
- <dt><strong>Warning:</strong>
- <dd>Exercise care in unlinking groups as it is possible to render data in
- a file inaccessible with <code>H5Gunlink</code>.
- See <a href="Groups.html#H5GUnlinkToCorrupt">The Group Interface</a>
- in the <cite>HDF5 User's Guide</cite>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Identifier of the file or group containing the object.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the object to unlink.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5gunlink_f
- <dd>
- <pre>
-SUBROUTINE h5gunlink_f(loc_id, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object to unlink
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5gunlink_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 25 May 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5I.html b/doc/html/RM_H5I.html
deleted file mode 100644
index 4f5e731..0000000
--- a/doc/html/RM_H5I.html
+++ /dev/null
@@ -1,1187 +0,0 @@
-<html>
-<head><title>
-HDF5/H5I API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5I: Identifier Interface</h1>
-</center>
-
-<h2>Identifier API Functions</h2>
-
-These functions provides tools for working with object identifiers and
-object names.
-
-
-<p>
-<strong>The C Interface:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Identify-GetFileId">H5Iget_file_id</a>
- <li><a href="#Identify-GetName">H5Iget_name</a>
- <li><a href="#Identify-GetType">H5Iget_type</a>
- <li><a href="#Identify-ObjectVerify">H5Iobject_verify</a>
- <li><a href="#Identify-RemoveVerify">H5Iremove_verify</a>
- <li><a href="#Identify-Search">H5Isearch</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Identify-GetRef">H5Iget_ref</a>
- <li><a href="#Identify-IncRef">H5Iinc_ref</a>
- <li><a href="#Identify-DecRef">H5Idec_ref</a>
- <li><a href="#Identify-Register">H5Iregister</a>
- <li><a href="#Identify-RegisterType">H5Iregister_type</a>
- <li><a href="#Identify-DestroyType">H5Idestroy_type</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Identify-GetTypeRef">H5Iget_type_ref</a>
- <li><a href="#Identify-DecTypeRef">H5Idec_type_ref</a>
- <li><a href="#Identify-IncTypeRef">H5Iinc_type_ref</a>
- <li><a href="#Identify-ClearType">H5Iclear_type</a>
- <li><a href="#Identify-NMembers">H5Inmembers</a>
-</ul>
-</td></tr>
-</table>
-<br>
-
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Identify-ClearType">H5Iclear_type</a>
- <li><a href="#Identify-DecRef">H5Idec_ref</a>
- <li><a href="#Identify-DecTypeRef">H5Idec_type_ref</a>
- <li><a href="#Identify-DestroyType">H5Idestroy_type</a>
- <li><a href="#Identify-GetFileId">H5Iget_file_id</a>
- <li><a href="#Identify-GetName">H5Iget_name</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Identify-GetRef">H5Iget_ref</a>
- <li><a href="#Identify-GetType">H5Iget_type</a>
- <li><a href="#Identify-GetTypeRef">H5Iget_type_ref</a>
- <li><a href="#Identify-IncRef">H5Iinc_ref</a>
- <li><a href="#Identify-IncTypeRef">H5Iinc_type_ref</a>
- <li><a href="#Identify-NMembers">H5Inmembers</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Identify-ObjectVerify">H5Iobject_verify</a>
- <li><a href="#Identify-Register">H5Iregister</a>
- <li><a href="#Identify-RegisterType">H5Iregister_type</a>
- <li><a href="#Identify-RemoveVerify">H5Iremove_verify</a>
- <li><a href="#Identify-Search">H5Isearch</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li><a href="#Identify-GetName">h5iget_name_f</a>
- <li><a href="#Identify-GetType">h5iget_type_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Identify-GetRef">h5iget_ref_f</a>
- <li><a href="#Identify-IncRef">h5iinc_ref_f</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li><a href="#Identify-DecRef">h5idec_ref_f</a>
-</ul>
-</td></tr>
-</table>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iclear_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-ClearType">H5Iclear_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Iclear_type</code>(<em>H5I_type_t</em> <code>type</code>,
- <em>hbool_t</em> <code>force</code>)
-<dt><strong>Purpose:</strong>
- <dd>Deletes all IDs of the given type
-<dt><strong>Description:</strong>
- <dd><code>H5Iclear_type</code> deletes all IDs of the type identified by the argument type.
- <p>
- The type’s free function is first called on all of these IDs to free their memory,
- then they are removed from the type.
-
- <p>
- If the <code>force</code> flag is set to false, only those IDs whose reference
- counts are equal to 1 will be deleted, and all other IDs will be entirely unchanged.
- If the <code>force</code> flag is true, all IDs of this type will be deleted.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of ID type which is to be cleared of IDs</td>
- </tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>force</code></td>
- <td valign="top">IN: Whether or not to force deletion of all IDs</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns non-negative on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Idec_ref" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-DecRef">H5Idec_ref</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Idec_ref</code>(<em>hid_t</em> <code>obj_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Decrements the reference count for an object.
-<dt><strong>Description:</strong>
- <dd><code>H5Idec_ref</code> decrements the reference count of the object
- identified by <code>obj_id</code>.
-
- <p>
- The reference count for an object ID is attached to the information
- about an object in memory and has no relation to the number of links to
- an object on disk.
-
- <p>
- The reference count for a newly created object will be 1.
- Reference counts for objects may be explicitly modified with this
- function or with <code>H5Iinc_ref</code>.
- When an object ID's reference count reaches zero, the object will be
- closed.
- Calling an object ID's 'close' function decrements the reference count
- for the ID which normally closes the object, but
- if the reference count for the ID has been incremented with
- <code>H5Iinc_ref</code>, the object will only be closed when the
- reference count
- reaches zero with further calls to this function or the
- object ID's 'close' function.
-
- <p>
- If the object ID was created by a collective parallel call (such as
- <code>H5Dcreate</code>, <code>H5Gopen</code>, etc.), the reference
- count should be modified by all the processes which have copies of
- the ID. Generally this means that group, dataset, attribute, file
- and named datatype IDs should be modified by all the processes and
- that all other types of IDs are safe to modify by individual processes.
-
- <p>
- This function is of particular value when an application is maintaining
- multiple copies of an object ID. The object ID can be incremented when
- a copy is made. Each copy of the ID can then be safely closed or
- decremented and the HDF5 object will be closed when the reference count
- for that that object drops to zero.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>obj_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Object identifier whose reference count will be modified.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative reference count of the object ID after
- decrementing it if successful; otherwise a negative value is returned.
-<dt><strong>Fortran90 Interface:</strong> h5idec_ref_f
- <dd>
- <pre>
-SUBROUTINE h5idec_ref_f(obj_id, ref_count, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier
- INTEGER, INTENT(OUT) :: ref_count !Reference count of object ID
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success, and -1 on failure
-END SUBROUTINE h5idec_ref_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Idec_type_ref" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-DecTypeRef">H5Idec_type_ref</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Idec_type_ref</code>(<em>H5I_type_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Decrements the reference count on an ID type.
-<dt><strong>Description:</strong>
- <dd><code>H5Idec_type_ref</code> decrements the reference count on an ID type.
- The reference count is used by the library to indicate when an ID type can
- be destroyed. If the reference count reaches zero, this function will destroy it.
-
- <p>The <code>type</code> parameter is the identifier for the ID type whose
- reference count is to be decremented. This identifier must have been
- created by a call to <code>H5Iregister_type</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier of the type whose reference count is to be decremented</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the current reference count on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Idestroy_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-DestroyType">H5Idestroy_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Idestroy_type</code>(<em>H5I_type_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Removes the type <code>type</code> and all IDs within that type.
-<dt><strong>Description:</strong>
- <dd><code>H5Idestroy_type</code> deletes an entire ID type. All IDs of this
- type are destroyed and no new IDs of this type can be registered.
-
- <p>
- The type’s free function is called on all of the IDs which are deleted by
- this function, freeing their memory. In addition, all memory used by this
- type’s hash table is freed.
-
- <p>
- Since the <em>H5I_type_t</em> values of destroyed ID types are reused
- when new types are registered, it is a good idea to set the variable
- holding the value of the destroyed type to <code>H5I_UNINIT</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of ID type which is to be destroyed</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns non-negative on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iget_file_id" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-GetFileId">H5Iget_file_id</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Iget_file_id</code>(<em>hid_t</em> <code>obj_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Retrieves an identifier for the file containing the specified object.
-<dt><strong>Description:</strong>
- <dd><code>H5Iget_file_id</code> returns the identifier of the file
- associated with the object referenced by <code>obj_id</code>.
- <p>
- <code>obj_id</code> can be a file, group, dataset, named datatype,
- or attribute identifier.
- <p>
- Note that the HDF5 Library permits an application to close a file
- while objects within the file remain open.
- If the file containing the object <code>obj_id</code>
- is still open, <code>H5Iget_file_id</code> will retrieve the
- existing file identifier.
- If there is no existing file identifier for the file,
- i.e., the file has been closed,
- <code>H5Iget_file_id</code> will reopen the file and
- return a new file identifier.
- In either case, the file identifier must eventually be released
- using <code>H5Fclose</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>obj_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the object whose associated
- file identifier will be returned.</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a file identifier on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>
- <pre>
-SUBROUTINE h5iget_file_id_f(obj_id, file_id, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- INTEGER(HID_T), INTENT(OUT) :: file_id ! File identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5iget_file_id_f
- </pre>
-
-<!--<dt><strong>Non-C API(s):</strong>
- <dd>
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iget_name" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-GetName">H5Iget_name</a>
-<dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Iget_name</code>(<em>hid_t</em> <code>obj_id</code>,
- <em>char *</em><code>name</code>,
- <em>size_t</em> <code>size</code>
- )
-<dt><strong>Purpose:</strong> </dt>
- <dd>Retrieves a name of an object based on the object identifier.
-<dt><strong>Description:</strong>
- <dd><code>H5Iget_name</code> retrieves a name for the object identified
- by <code>obj_id</code>.
- <p>
- Up to <code>size</code> characters of the name are returned in
- <code>name</code>; additional characters, if any, are not returned
- to the user application.
- <p>
- If the length of the name, which determines the required
- value of <code>size</code>, is unknown, a preliminary
- <code>H5Iget_name</code> call can be made.
- The return value of this call will be the size of the
- object name.
- That value can then be assigned to <code>size</code>
- for a second <code>H5Iget_name</code> call,
- which will retrieve the actual name.
- <p>
- If there is no name associated with the object identifier
- or if the name is <code>NULL</code>, <code>H5Iget_name</code>
- returns <code>0</code> (zero).
- <p>
- Note that an object in an HDF5 file may have multiple names,
- varying according to the path through the HDF5 group
- hierarchy used to reach that object.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>obj_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the object.
- This identifier can refer to a group, dataset, or named datatype.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>name</code></td>
- <td valign="top">OUT: A name associated with the identifier.</td></tr>
- <tr>
- <td valign="top"><em>size_t size</em></td>
- <td valign="top">IN: The size of the <code>name</code> buffer.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the length of the name if successful,
- returning <code>0</code> (zero) if no name is associated with the identifier.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5iget_name_f
- <dd>
- <pre>
-SUBROUTINE h5iget_name_f(obj_id, buf, buf_size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id ! Object identifier
- CHARACTER(LEN=*), INTENT(OUT) :: buf ! Buffer to hold object name
- INTEGER(SIZE_T), INTENT(IN) :: buf_size ! Buffer size
- INTEGER(SIZE_T), INTENT(OUT) :: name_size ! Name size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success, and -1 on failure
-END SUBROUTINE h5iget_name_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iget_ref" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-GetRef">H5Iget_ref</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Iget_ref</code>(<em>hid_t</em> <code>obj_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the reference count for an object.
-<dt><strong>Description:</strong>
- <dd><code>H5Iget_ref</code> retrieves the reference count of the object
- identified by <code>obj_id</code>.
-
- <p>
- The reference count for an object ID is attached to the information
- about an object in memory and has no relation to the number of links to
- an object on disk.
-
- <p>
- This function can also be used to check if an object ID is still valid.
- A non-negative return value from this function indicates that the ID
- is still valid.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>obj_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Object identifier whose reference count will be retrieved.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative current reference count of the object ID
- if successful; otherwise a negative value is returned.
-<dt><strong>Fortran90 Interface:</strong> h5iget_ref_f
- <dd>
- <pre>
-SUBROUTINE h5iget_ref_f(obj_id, ref_count, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier
- INTEGER, INTENT(OUT) :: ref_count !Reference count of object ID
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success, and -1 on failure
-END SUBROUTINE h5iget_ref_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iget_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-GetType">H5Iget_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5I_type_t</em> <code>H5Iget_type</code>(<em>hid_t</em> <code>obj_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the type of an object.
-<dt><strong>Description:</strong>
- <dd><code>H5Iget_type</code> retrieves the type of the object
- identified by <code>obj_id</code>.
- <p>
- Valid types returned by the function are
- <table>
- <tr><td width=200><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_FILE</code>
- </td><td>File</td></tr>
- <tr><td><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_GROUP</code>
- </td><td>Group</td></tr>
- <tr><td><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_DATATYPE</code>
- </td><td>Datatype</td></tr>
- <tr><td><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_DATASPACE</code>
- </td><td>Dataspace</td></tr>
- <tr><td><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_DATASET</code>
- </td><td>Dataset</td></tr>
- <tr><td><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_ATTR</code>
- </td><td>Attribute</td></tr>
- </table>
- If no valid type can be determined or the identifier
- submitted is invalid, the function returns
- <table>
- <tr><td width=200><code>&nbsp;&nbsp;&nbsp;&nbsp;H5I_BADID</code>
- </td><td>Invalid identifier</td></tr>
- </table>
- <p>
- This function is of particular value in determining the
- type of object closing function (<code>H5Dclose</code>,
- <code>H5Gclose</code>, etc.) to call after a call to
- <code>H5Rdereference</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>obj_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Object identifier whose type is to be determined.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the object type if successful;
- otherwise <code>H5I_BADID</code>.
-<dt><strong>Fortran90 Interface:</strong> h5iget_type_f
- <dd>
- <pre>
-SUBROUTINE h5iget_type_f(obj_id, type, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier
- INTEGER, INTENT(OUT) :: type !type of an object.
- !possible values are:
- !H5I_FILE_F
- !H5I_GROUP_F
- !H5I_DATATYPE_F
- !H5I_DATASPACE_F
- !H5I_DATASET_F
- !H5I_ATTR_F
- !H5I_BADID_F
- INTEGER, INTENT(OUT) :: hdferr ! E rror code
- ! 0 on success, and -1 on failure
-END SUBROUTINE h5iget_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iget_type_ref" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-GetTypeRef">H5Iget_type_ref</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Iget_type_ref</code>(<em>H5I_type_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the reference count on an ID type.
-<dt><strong>Description:</strong>
- <dd><code>H5Iget_type_ref</code> retrieves the reference count on an ID type.
- The reference count is used by the library to indicate when an
- ID type can be destroyed.
-
- <p>
- The <code>type</code> parameter is the identifier for the ID type whose
- reference count is to be retrieved. This identifier must have been created
- by a call to <code>H5Iregister_type</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier of the type whose reference count is to be retrieved</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the current reference count on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iinc_ref" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-IncRef">H5Iinc_ref</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Iinc_ref</code>(<em>hid_t</em> <code>obj_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Increments the reference count for an object.
-<dt><strong>Description:</strong>
- <dd><code>H5Iinc_ref</code> increments the reference count of the object
- identified by <code>obj_id</code>.
-
- <p>
- The reference count for an object ID is attached to the information
- about an object in memory and has no relation to the number of links to
- an object on disk.
-
- <p>
- The reference count for a newly created object will be 1.
- Reference counts for objects may be explicitly modified with this
- function or with <code>H5Idec_ref</code>.
- When an object ID's reference count reaches zero, the object will be
- closed.
- Calling an object ID's 'close' function decrements the reference count
- for the ID which normally closes the object, but
- if the reference count for the ID has been incremented with this
- function, the object will only be closed when the reference count
- reaches zero with further calls to <code>H5Idec_ref</code> or the
- object ID's 'close' function.
-
- <p>
- If the object ID was created by a collective parallel call (such as
- <code>H5Dcreate</code>, <code>H5Gopen</code>, etc.), the reference
- count should be modified by all the processes which have copies of
- the ID. Generally this means that group, dataset, attribute, file
- and named datatype IDs should be modified by all the processes and
- that all other types of IDs are safe to modify by individual processes.
-
- <p>
- This function is of particular value when an application is maintaining
- multiple copies of an object ID. The object ID can be incremented when
- a copy is made. Each copy of the ID can then be safely closed or
- decremented and the HDF5 object will be closed when the reference count
- for that that object drops to zero.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>obj_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Object identifier whose reference count will be modified.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative reference count of the object ID after
- incrementing it if successful; otherwise a negative value is returned.
-<dt><strong>Fortran90 Interface:</strong> h5iinc_ref_f
- <dd>
- <pre>
-SUBROUTINE h5iinc_ref_f(obj_id, ref_count, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: obj_id !Object identifier
- INTEGER, INTENT(OUT) :: ref_count !Reference count of object ID
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success, and -1 on failure
-END SUBROUTINE h5iinc_ref_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iinc_type_ref" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-IncTypeRef">H5Iinc_type_ref</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Iinc_type_ref</code>(<em>H5I_type_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Increments the reference count on an ID type.
-<dt><strong>Description:</strong>
- <dd><code>H5Iinc_type_ref</code> increments the reference count on an ID type.
- The reference count is used by the library to indicate when an ID type can be destroyed.
-
- <p>
- The <code>type</code> parameter is the identifier for the ID type whose
- reference count is to be incremented. This identifier must have been created
- by a call to <code>H5Iregister_type</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier of the type whose reference count is to be incremented</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the current reference count on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Inmembers" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-NMembers">H5Inmembers</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Inmembers</code>(<em>H5I_type_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns the number of IDs in a given type.
-<dt><strong>Description:</strong>
- <dd><code>H5Inmembers</code> returns the number of IDs of a given ID type.
- If no IDs of this type have been registered, H5Inmembers returns 0.
- If the type does not exist or has been destroyed, <code>H5Inmembers</code>
- also returns 0.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of ID type whose member count will be retrieved</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns number of members on success, zero if type is not a valid ID type.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iobject_verify" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-ObjectVerify">H5Iobject_verify</a>
-<dt><strong>Signature:</strong>
- <dd><em>void *</em> <code>H5Iobject_verify</code>(<em>hid_t</em> <code>id</code>,
- <em>H5I_type_t</em> <code>id_type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns the object referenced by id.
-<dt><strong>Description:</strong>
- <dd><code>H5Iobject_verify</code> returns a pointer to the memory referenced by
- <code>id</code> after verifying that <code>id</code> is of type <code>id_type</code>.
- This function is analogous to dereferencing a pointer in C with type checking.
-
- <p>
- <code>H5Iregister</code>(<em>H5I_type_t</em> <code>type</code>,
- <em>void *</em><code>object</code>) takes an <em>H5I_type_t</em> and a
- void pointer to an object, returning an <em>hid_t</em> of that type.
- This <em>hid_t</em> can then be passed to <code>H5Iobject_verify</code>
- along with its type to retrieve the object.
-
- <p>
- <code>H5Iobject_verify</code> does not change the ID it is called on in any
- way (as opposed to <code>H5Iremove_verify</code>, which removes the ID from its
- type’s hash table).
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>id</code></td>
- <td valign="top">IN: ID to be dereferenced</td>
- </tr>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: ID type to which id should belong</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Pointer to the object referenced by id on success, <code>NULL</code> on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iregister" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-Register">H5Iregister</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Iregister</code>(<em>H5I_type_t</em> <code>type</code>,
- <em>void *</em><code>object</code>)
-<dt><strong>Purpose:</strong>
- <dd>Creates and returns a new ID.
-<dt><strong>Description:</strong>
- <dd><code>H5Iregister</code> allocates space for a new ID and returns an identifier for it.
-
- <p>
- The <code>type</code> parameter is the identifier for the ID type to which
- this new ID will belong. This identifier must have been created by a call
- to <code>H5Iregister_type</code>.
-
- <p>
- The <code>object</code> parameter is a pointer to the memory which the new
- ID will be a reference to. This pointer will be stored by the library and
- returned to you via a call to <code>H5Iobject_verify</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier of the type to which the new ID will belong</td>
- </tr>
- <tr>
- <td valign="top"><em>void *</em><code>object</code></td>
- <td valign="top">IN: Pointer to memory for the library to store</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the new ID on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iregister_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-RegisterType">H5Iregister_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5I_type_t</em> <code>H5Iregister_type</code>(<em>size_t</em>
- <code>hash_size</code>, <em>unsigned</em> <code>reserved</code>,
- <em>H5I_free_t</em> <code>free_func</code>)
-<dt><strong>Purpose:</strong>
- <dd>Creates and returns a new ID type.
-<dt><strong>Description:</strong>
- <dd><code>H5Iregister_type</code> allocates space for a new ID type and
- returns an identifier for it.
-
- <p>
- The <code>hash_size</code> parameter indicates the minimum size of the hash
- table used to store IDs in the new type.
-
- <p>
- The <code>reserved</code> parameter indicates the number of IDs in this new
- type to be reserved. Reserved IDs are valid IDs which are not associated with
- any storage within the library.
-
- <p>
- The <code>free_func</code> parameter is a function pointer to a function
- which returns an <em>herr_t</em> and accepts a <em>void *</em>. The purpose
- of this function is to deallocate memory for a single ID. It will be called
- by <code>H5Iclear_type</code> and <code>H5Idestroy_type</code> on each ID.
- This function is NOT called by <code>H5Iremove_verify</code>.
- The <em>void *</em> will be the same pointer which was passed in to
- the <code>H5Iregister</code> function. The <code>free_func</code>
- function should return 0 on success and -1 on failure.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>size_t</em> <code>hash_size</code></td>
- <td valign="top">IN: Size of the hash table (in entries) used to store IDs for the new type</td>
- </tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>reserved</code></td>
- <td valign="top">IN: Number of reserved IDs for the new type</td>
- </tr>
- <tr>
- <td valign="top"><em>H5I_free_t</em>&nbsp;<code>free_func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Function used to deallocate space for a single ID</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the type identifier on success, negative on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Iremove_verify" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-RemoveVerify">H5Iremove_verify</a>
-<dt><strong>Signature:</strong>
- <dd><em>void *</em><code>H5Iremove_verify</code>(<em>hid_t</em> <code>id</code>,
- <em>H5I_type_t</em> <code>id_type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Removes an ID from internal storage.
-<dt><strong>Description:</strong>
- <dd><code>H5Iremove_verify</code> first ensures that <code>id</code> belongs to
- <code>id_type</code>. If so, it removes <code>id</code> from internal storage
- and returns the pointer to the memory it referred to. This pointer is the
- same pointer that was placed in storage by <code>H5Iregister</code>.
- If <code>id</code> does not belong to <code>id_type</code>,
- then <code>NULL</code> is returned.
-
- <p>
- The <code>id</code> parameter is the ID which is to be removed from
- internal storage. Note: this function does NOT deallocate the memory that
- <code>id</code> refers to. The pointer returned by <code>H5Iregister</code>
- must be deallocated by the user to avoid memory leaks.
-
- <p>
- The <code>type</code> parameter is the identifier for the ID type
- which <code>id</code> is supposed to belong to. This identifier must
- have been created by a call to <code>H5Iregister_type</code>.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>id</code></td>
- <td valign="top">IN: The ID to be removed from internal storage</td>
- </tr>
- <tr>
- <td valign="top"><em>H5I_type_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier of the type whose reference count is to be retrieved</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a pointer to the memory referred to by <code>id</code>
- on success, <code>NULL</code> on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Isearch" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Identify-Search">H5Isearch</a>
-<dt><strong>Signature:</strong>
- <dd><em>void *</em><code>H5Isearch</code>(<em>H5I_type_t</em> <code>type</code>,
- <em>H5I_search_func_t</em> <code>func</code>, <em>void *</em><code>key</code>)
-<dt><strong>Purpose:</strong>
- <dd>Finds the memory referred to by an ID within the given ID type such that
- some criterion is satisfied.
-<dt><strong>Description:</strong>
- <dd><code>H5Isearch</code> searches through a give ID type to find an object
- that satisfies the criteria defined by <code>func</code>. If such an object
- is found, the pointer to the memory containing this object is returned.
- Otherwise, <code>NULL</code> is returned. To do this, <code>func</code> is
- called on every member of <code>type</code>. The first member to satisfy
- <code>func</code> is returned.
-
- <p>
- The <code>type</code> parameter is the identifier for the ID type which is
- to be searched. This identifier must have been created by a call to
- <code>H5Iregister_type</code>.
-
- <p>
- The parameter <code>func</code> is a function pointer to a function
- which takes three parameters. The first parameter is a <em>void *</em>.
- It will be a pointer the object to be tested. This is the same object
- that was placed in storage using <code>H5Iregister</code>. The second
- parameter is a <em>hid_t</em>. It is the ID of the object to be tested.
- The last parameter is a <em>void *</em>. This is the <code>key</code> parameter
- and can be used however the user finds helpful. Or it can simply be ignored
- if it is not needed. <code>func</code> returns 0 if the object it is testing
- does not pass its criteria. A non-zero value should be returned if the object
- does pass its criteria.
-
- <p>
- The <code>key</code> parameter will be passed to the search function as a
- parameter. It can be used to further define the search at run-time.
-<dt><strong>Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><em>H5I_type_t</em> <code>type</code></td>
- <td valign="top">IN: The identifier of the type to be searched</td>
- </tr>
- <tr>
- <td valign="top"><em>H5I_search_func_t</em>&nbsp;<code>func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The function defining the search criteria</td>
- </tr>
- <tr>
- <td valign="top"><em>void *</em><code>key</code></td>
- <td valign="top">IN: A key for the search function</td>
- </tr>
- </table>
- </ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a pointer to the object which satisfies the search function
- on success, <code>NULL</code> on failure.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>This function is not supported in FORTRAN 90.
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 8 September 2004");
--->
-</SCRIPT>
-
-<!-- HEADER RIGHT " " -->
-
-</body>
-</html>
diff --git a/doc/html/RM_H5P.html b/doc/html/RM_H5P.html
deleted file mode 100644
index fa67723..0000000
--- a/doc/html/RM_H5P.html
+++ /dev/null
@@ -1,9783 +0,0 @@
-<html>
-<head><title>
-HDF5/H5P API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5P: Property List Interface</h1>
-</center>
-<h2>Property List API Functions</h2>
-
-These functions manipulate property list objects to allow objects
-which require many different parameters to be easily manipulated.
-
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<table border=0>
-<tr><td valign=top>
-
- <i>General Property List <br> Operations</i>
- <ul>
- <li><a href="#Property-Create">H5Pcreate</a>
- <li><a href="#Property-GetClass">H5Pget_class</a>
- <li><a href="#Property-Copy">H5Pcopy</a>
- <li><a href="#Property-Close">H5Pclose</a>
- </ul>
-
- <p><i>Generic Properties</i>
- <ul>
- <li><a href="#Property-CreateClass">H5Pcreate_class</a>
- <li><a href="#Property-CreateList">H5Pcreate_list</a>
- <li><a href="#Property-Register">H5Pregister</a>
- <li><a href="#Property-Insert">H5Pinsert</a>
- <li><a href="#Property-Set">H5Pset</a>
- <li><a href="#Property-Exist">H5Pexist</a>
- <li><a href="#Property-GetSize">H5Pget_size</a>
- <li><a href="#Property-GetNProps">H5Pget_nprops</a>
- <li><a href="#Property-GetClassName">H5Pget_class_name</a>
- <li><a href="#Property-GetClassParent">H5Pget_class_parent</a>
- <li><a href="#Property-IsAClass">H5Pisa_class</a>
- <li><a href="#Property-Get">H5Pget</a>
- <li><a href="#Property-Equal">H5Pequal</a>
- <li><a href="#Property-Iterate">H5Piterate</a>
- <li><a href="#Property-CopyProp">H5Pcopy_prop</a>
- <li><a href="#Property-Remove">H5Premove</a>
- <li><a href="#Property-Unregister">H5Punregister</a>
- <li><a href="#Property-CloseList">H5Pclose_list</a>
- <li><a href="#Property-CloseClass">H5Pclose_class</a>
- </ul>
-
-!--
- <p><i>Meta Data Cache Properties</i>
- <ul>
- <li><a href="#Property-GetMdcConfig">H5Pget_mdc_config</a>
- <li><a href="#Property-SetMdcConfig">H5Pset_mdc_config</a>
- </ul>
--->
-
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-<br>
-&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;&nbsp;
- <i>Indicates functions <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- available only in <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- the parallel HDF5 <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- library.</i>
-
-
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-
- <p><i>File Creation Properties</i>
- <ul>
- <li><a href="#Property-GetVersion">H5Pget_version</a>
- <li><a href="#Property-SetUserblock">H5Pset_userblock</a>
- <li><a href="#Property-GetUserblock">H5Pget_userblock</a>
- <li><a href="#Property-SetSizes">H5Pset_sizes</a>
- <li><a href="#Property-GetSizes">H5Pget_sizes</a>
- <li><a href="#Property-SetSymK">H5Pset_sym_k</a>
- <li><a href="#Property-GetSymK">H5Pget_sym_k</a>
- <li><a href="#Property-SetIstoreK">H5Pset_istore_k</a>
- <li><a href="#Property-GetIstoreK">H5Pget_istore_k</a>
- </ul>
-
- <p></p><i>File Access Properties</i>
- <ul>
- <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
- <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
- <li><a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
- <li><a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
- <li><a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
- <li><a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
- <li><a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
- <li><a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>
- <li><a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
- <li><a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
- <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
- <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
- <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
- <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
- <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
- <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
- <li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>
- <li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<!--<li><a href="#Property-SetDriver">H5Pset_driver</a> -->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
- <li><a href="#Property-GetDriver">H5Pget_driver</a>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<!--<li><a href="#Property-GetDriverInfo">H5Pget_driver_info</a> -->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
- <li><a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
- <li><a href="#Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
- <li><a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
- <li><a href="#Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
- <li><a href="#Property-SetAlignment">H5Pset_alignment</a>
- <li><a href="#Property-GetAlignment">H5Pget_alignment</a>
- <li><a href="#Property-SetCache">H5Pset_cache</a>
- <li><a href="#Property-GetCache">H5Pget_cache</a>
- <li><a href="#Property-SetGCReferences">H5Pset_gc_references</a>
- <li><a href="#Property-GetGCReferences">H5Pget_gc_references</a>
- <li><a href="#Property-SetFaplGass">H5Pset_fapl_gass</a>
- <li><a href="#Property-GetFaplGass">H5Pget_fapl_gass</a>
- <li><a href="#Property-SetFaplSrb">H5Pset_fapl_srb</a>
- <li><a href="#Property-GetFaplSrb">H5Pget_fapl_srb</a>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
- <!--
- <li><a href="#Property-xxx">xxx</a>
- <li><a href="#Property-xxx">xxx</a>&nbsp;&nbsp;&nbsp;||
- -->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
- </ul>
-
-
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-
- <i>Dataset Creation Properties</i>
- <ul>
- <li><a href="#Property-SetLayout">H5Pset_layout</a>
- <li><a href="#Property-GetLayout">H5Pget_layout</a>
- <li><a href="#Property-SetChunk">H5Pset_chunk</a>
- <li><a href="#Property-GetChunk">H5Pget_chunk</a>
- <li><a href="#Property-SetDeflate">H5Pset_deflate</a>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<!--
- <li><a href="#Property-GetDeflate">H5Pget_deflate</a>
- <li><a href="#Property-SetCompression">H5Pset_compression</a>
- <li><a href="#Property-GetCompression">H5Pget_compression</a>
--->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
- <li><a href="#Property-SetFillValue">H5Pset_fill_value</a>
- <li><a href="#Property-GetFillValue">H5Pget_fill_value</a>
- <li><a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
- <li><a href="#Property-SetFillTime">H5Pset_fill_time</a>
- <li><a href="#Property-GetFillTime">H5Pget_fill_time</a>
- <li><a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
- <li><a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
- <li><a href="#Property-SetFilter">H5Pset_filter</a>
- <li><a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
- <li><a href="#Property-GetNFilters">H5Pget_nfilters</a>
- <li><a href="#Property-GetFilter">H5Pget_filter</a>
- <li><a href="#Property-GetFilterById">H5Pget_filter_by_id</a>
- <li><a href="#Property-ModifyFilter">H5Pmodify_filter</a>
- <li><a href="#Property-RemoveFilter">H5Premove_filter</a>
- <li><a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
- <li><a href="#Property-SetShuffle">H5Pset_shuffle</a>
- <li><a href="#Property-SetSzip">H5Pset_szip</a>
- <li><a href="#Property-SetExternal">H5Pset_external</a>
- <li><a href="#Property-GetExternalCount">H5Pget_external_count</a>
- <li><a href="#Property-GetExternal">H5Pget_external</a>
- </ul>
-
- <p><i>Dataset Access, Memory, and <br> Transfer Properties</i>
- <ul>
- <li><a href="#Property-SetBuffer">H5Pset_buffer</a>
- <li><a href="#Property-GetBuffer">H5Pget_buffer</a>
- <li><a href="#Property-SetPreserve">H5Pset_preserve</a>
- <li><a href="#Property-GetPreserve">H5Pget_preserve</a>
- <li><a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
- <li><a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
- <li><a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
- <li><a href="#Property-SetDataTransform">H5Pset_data_transform</a>
- <li><a href="#Property-GetDataTransform">H5Pget_data_transform</a>
- <li><a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
- <li><a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
- <li><a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a>
- <li><a href="#Property-GetBTreeRatios">H5Pget_btree_ratios</a>
- <li><a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
- <li><a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
- <li><a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetDxplMpio">H5Pget_dxpl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetDxplMulti">H5Pset_dxpl_multi</a>
- <li><a href="#Property-GetDxplMulti">H5Pget_dxpl_multi</a>
- <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
- <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
- <br>&nbsp;
- <li><a href="#Property-SetSmallData">H5Pset_small_data_block_size</a>
- <li><a href="#Property-GetSmallData">H5Pget_small_data_block_size</a>
- </ul>
-
-</td></tr>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-<!--
-<tr><td colspan=5 align=right>
-<br>
-||&nbsp;&nbsp;&nbsp;<i>Available only in the parallel HDF5 library.</i>
-</td></tr>
--->
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-</table>
-<!-- FOR USE WITH ELECTRONIC VERSION ----------------------------------->
-
-
-
-<!-- FOR USE WITH PRINT VERSION ----------------------------------------
-<table border="0" width="95%">
-<tr>
-<td valign="top" width="31%">
-
- <i>General Functions</i>
- <ul>
- <li><a href="#Property-Create">H5Pcreate</a>
- <li><a href="#Property-GetClass">H5Pget_class</a>
- <li><a href="#Property-Copy">H5Pcopy</a>
- <li><a href="#Property-Close">H5Pclose</a>
- </ul>
-
- <i>Generic Properties</i>
- <ul>
- <li><a href="#Property-CreateClass">H5Pcreate_class</a>
- <li><a href="#Property-CreateList">H5Pcreate_list</a>
- <li><a href="#Property-Register">H5Pregister</a>
- <li><a href="#Property-Insert">H5Pinsert</a>
- <li><a href="#Property-Set">H5Pset</a>
- <li><a href="#Property-Exist">H5Pexist</a>
- <li><a href="#Property-GetSize">H5Pget_size</a>
- <li><a href="#Property-GetNProps">H5Pget_nprops</a>
- <li><a href="#Property-GetClassName">H5Pget_class_name</a>
- <li><a href="#Property-GetClassParent">H5Pget_class_parent</a>
- <li><a href="#Property-IsAClass">H5Pisa_class</a>
- <li><a href="#Property-Get">H5Pget</a>
- <li><a href="#Property-Equal">H5Pequal</a>
- <li><a href="#Property-Iterate">H5Piterate</a>
- <li><a href="#Property-CopyProp">H5Pcopy_prop</a>
- <li><a href="#Property-Remove">H5Premove</a>
- <li><a href="#Property-Unregister">H5Punregister</a>
- <li><a href="#Property-CloseList">H5Pclose_list</a>
- <li><a href="#Property-CloseClass">H5Pclose_class</a>
- </ul>
-
-<!--
- <i>Meta Data Cache Properties</i>
- <ul>
- <li><a href="#Property-GetMdcConfig">H5Pget_mdc_config</a>
- <li><a href="#Property-SetMdcConfig">H5Pset_mdc_config</a>
- </ul>
--->
-</td>
-<td valign="top" width="3%">&nbsp;</td>
-<td valign="top" width="32%">
- <i>File Access Properties</i>
- <ul>
- <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
- <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
- <li><a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
- <li><a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
- <li><a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
- <li><a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
- <li><a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
- <li><a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>
- <li><a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
- <li><a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
- <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
- <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
- <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
- <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
- <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
- <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
- <li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>
- <li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>
-<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
-<!--<li><a href="#Property-SetDriver">H5Pset_driver</a> -->
-<!-- FOR USE WITH PRINT VERSION ----------------------------------------
- <li><a href="#Property-GetDriver">H5Pget_driver</a>
-<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
-<!--<li><a href="#Property-GetDriverInfo">H5Pget_driver_info</a> -->
-<!-- FOR USE WITH PRINT VERSION ----------------------------------------
- <li><a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
- <li><a href="#Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
- <li><a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
- <li><a href="#Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
- <li><a href="#Property-SetAlignment">H5Pset_alignment</a>
- <li><a href="#Property-GetAlignment">H5Pget_alignment</a>
- <li><a href="#Property-SetCache">H5Pset_cache</a>
- <li><a href="#Property-GetCache">H5Pget_cache</a>
- <li><a href="#Property-SetGCReferences">H5Pset_gc_references</a>
- <li><a href="#Property-GetGCReferences">H5Pget_gc_references</a>
- <li><a href="#Property-SetFaplGass">H5Pset_fapl_gass</a>
- <li><a href="#Property-GetFaplGass">H5Pget_fapl_gass</a>
- <li><a href="#Property-SetFaplSrb">H5Pset_fapl_srb</a>
- <li><a href="#Property-GetFaplSrb">H5Pget_fapl_srb</a>
-<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
- <!--
- <li><a href="#Property-xxx">xxx</a>
- <li><a href="#Property-xxx">xxx</a>&nbsp;&nbsp;&nbsp;||
- -->
-<!-- FOR USE WITH PRINT VERSION ----------------------------------------
- </ul>
-</td>
-<td valign="top" width="3%">&nbsp;</td>
-<td valign="top" width="31%">
- <i>File Creation Properties</i>
- <ul>
- <li><a href="#Property-GetVersion">H5Pget_version</a>
- <li><a href="#Property-SetUserblock">H5Pset_userblock</a>
- <li><a href="#Property-GetUserblock">H5Pget_userblock</a>
- <li><a href="#Property-SetSizes">H5Pset_sizes</a>
- <li><a href="#Property-GetSizes">H5Pget_sizes</a>
- <li><a href="#Property-SetSymK">H5Pset_sym_k</a>
- <li><a href="#Property-GetSymK">H5Pget_sym_k</a>
- <li><a href="#Property-SetIstoreK">H5Pset_istore_k</a>
- <li><a href="#Property-GetIstoreK">H5Pget_istore_k</a>
- </ul>
-
- <br><br>
-&nbsp;&nbsp;&nbsp;|| <i>Indicates functions<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;available only in the<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parallel HDF5 library.</i>
- <br><br><br><br><br><br><br><br><br><br><br><br>
-&nbsp;&nbsp;&nbsp;<i>(Function listing<br>
-&nbsp;&nbsp;&nbsp;continues on next page.)</i></pre>
-</td>
-</tr>
-</table>
-<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
-
-<!-- NEW PAGE -->
-
-<!-- FOR USE WITH PRINT VERSION ----------------------------------------
-<table border="0" width="95%">
-<tr>
-<td valign="top" width="31%">
- <i>Dataset Creation Properties</i>
- <ul>
- <li><a href="#Property-SetLayout">H5Pset_layout</a>
- <li><a href="#Property-GetLayout">H5Pget_layout</a>
- <li><a href="#Property-SetChunk">H5Pset_chunk</a>
- <li><a href="#Property-GetChunk">H5Pget_chunk</a>
- <li><a href="#Property-SetDeflate">H5Pset_deflate</a>
-<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
-<!--
- <li><a href="#Property-GetDeflate">H5Pget_deflate</a>
- <li><a href="#Property-SetCompression">H5Pset_compression</a>
- <li><a href="#Property-GetCompression">H5Pget_compression</a>
--->
-<!-- FOR USE WITH PRINT VERSION ----------------------------------------
- <li><a href="#Property-SetFillValue">H5Pset_fill_value</a>
- <li><a href="#Property-GetFillValue">H5Pget_fill_value</a>
- <li><a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
- <li><a href="#Property-SetFillTime">H5Pset_fill_time</a>
- <li><a href="#Property-GetFillTime">H5Pget_fill_time</a>
- <li><a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
- <li><a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
- <li><a href="#Property-SetFilter">H5Pset_filter</a>
- <li><a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
- <li><a href="#Property-GetNFilters">H5Pget_nfilters</a>
- <li><a href="#Property-GetFilter">H5Pget_filter</a>
- <li><a href="#Property-GetFilterById">H5Pget_filter_by_id</a>
- <li><a href="#Property-ModifyFilter">H5Pmodify_filter</a>
- <li><a href="#Property-RemoveFilter">H5Premove_filter</a>
- <li><a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
- <li><a href="#Property-SetShuffle">H5Pset_shuffle</a>
- <li><a href="#Property-SetSzip">H5Pset_szip</a>
- <li><a href="#Property-SetExternal">H5Pset_external</a>
- <li><a href="#Property-GetExternalCount">H5Pget_external_count</a>
- <li><a href="#Property-GetExternal">H5Pget_external</a>
- </ul>
-</td>
-<td valign="top" width="3%">&nbsp;</td>
-<td valign="top" width="32%">
- <i>Dataset Access, Memory, and <br> Transfer Properties</i>
- <ul>
- <li><a href="#Property-SetBuffer">H5Pset_buffer</a>
- <li><a href="#Property-GetBuffer">H5Pget_buffer</a>
- <li><a href="#Property-SetPreserve">H5Pset_preserve</a>
- <li><a href="#Property-GetPreserve">H5Pget_preserve</a>
- <li><a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
- <li><a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
- <li><a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
- <li><a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
- <li><a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
- <li><a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a>
- <li><a href="#Property-GetBTreeRatios">H5Pget_btree_ratios</a>
- <li><a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
- <li><a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
- <li><a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetDxplMpio">H5Pget_dxpl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetDxplMulti">H5Pset_dxpl_multi</a>
- <li><a href="#Property-GetDxplMulti">H5Pget_dxpl_multi</a>
- <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
- <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
- <br>&nbsp;
- <li><a href="#Property-SetSmallData">H5Pset_small_data_block_size</a>
- <li><a href="#Property-GetSmallData">H5Pget_small_data_block_size</a>
- </ul>
-</td>
-<td valign="top" width="3%">&nbsp;</td>
-<td valign="top" width="31%">
-<br>
-&nbsp;&nbsp;&nbsp;|| <i>Indicates functions<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;available only in the<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parallel HDF5 library.</i>
-</td>
-</tr>
-</table>
-<!-- FOR USE WITH PRINT VERSION ---------------------------------------->
-
-<br>
-
-* Functions labeled with an asterisk (*) are provided only for
-backwards compatibility with HDF5 Releases 1.4.<i>x</i>.
-See further notes in the description of each function.
-<p>
-
-<!-- NEW PAGE -->
-<i>Alphabetical Listing</i>
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Property-AllFiltersAvail">H5Pall_filters_avail</a>
- <li><a href="#Property-Close">H5Pclose</a>
- <li><a href="#Property-CloseClass">H5Pclose_class</a>
- <li><a href="#Property-CloseList">H5Pclose_list</a>
- <li><a href="#Property-Copy">H5Pcopy</a>
- <li><a href="#Property-CopyProp">H5Pcopy_prop</a>
- <li><a href="#Property-Create">H5Pcreate</a>
- <li><a href="#Property-CreateClass">H5Pcreate_class</a>
- <li><a href="#Property-CreateList">H5Pcreate_list</a>
- <li><a href="#Property-Equal">H5Pequal</a>
- <li><a href="#Property-Exist">H5Pexist</a>
- <li><a href="#Property-FillValueDefined">H5Pfill_value_defined</a>
- <li><a href="#Property-Get">H5Pget</a>
- <li><a href="#Property-GetAlignment">H5Pget_alignment</a>
- <li><a href="#Property-GetAllocTime">H5Pget_alloc_time</a>
- <li><a href="#Property-GetBTreeRatios">H5Pget_btree_ratios</a>
- <li><a href="#Property-GetBuffer">H5Pget_buffer</a>
- <li><a href="#Property-GetCache">H5Pget_cache</a>
- <li><a href="#Property-GetChunk">H5Pget_chunk</a>
- <li><a href="#Property-GetClass">H5Pget_class</a>
- <li><a href="#Property-GetClassName">H5Pget_class_name</a>
- <li><a href="#Property-GetClassParent">H5Pget_class_parent</a>
- <li><a href="#Property-GetDriver">H5Pget_driver</a>
- <!--<li><a href="#Property-GetDriverInfo">H5Pget_driver_info</a> -->
- <li><a href="#Property-GetDxplMpio">H5Pget_dxpl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetDxplMulti">H5Pget_dxpl_multi</a>
- <li><a href="#Property-GetEdcCheck">H5Pget_edc_check</a>
- <li><a href="#Property-GetExternal">H5Pget_external</a>
- <li><a href="#Property-GetExternalCount">H5Pget_external_count</a>
- <li><a href="#Property-GetFamilyOffset">H5Pget_family_offset</a>
- <li><a href="#Property-GetFaplCore">H5Pget_fapl_core</a>
- <li><a href="#Property-GetFaplFamily">H5Pget_fapl_family</a>
- <li><a href="#Property-GetFaplGass">H5Pget_fapl_gass</a>
- <li><a href="#Property-GetFaplMpio">H5Pget_fapl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMulti">H5Pget_fapl_multi</a>
- <li><a href="#Property-GetFaplSrb">H5Pget_fapl_srb</a>
- <li><a href="#Property-GetFaplStream">H5Pget_fapl_stream</a>
- <li><a href="#Property-GetFcloseDegree">H5Pget_fclose_degree</a>
- <li><a href="#Property-GetFillTime">H5Pget_fill_time</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Property-GetFillValue">H5Pget_fill_value</a>
- <li><a href="#Property-GetFilter">H5Pget_filter</a>
- <li><a href="#Property-GetFilterById">H5Pget_filter_by_id</a>
- <li><a href="#Property-GetGCReferences">H5Pget_gc_references</a>
- <li><a href="#Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
- <li><a href="#Property-GetIstoreK">H5Pget_istore_k</a>
- <li><a href="#Property-GetLayout">H5Pget_layout</a>
-<!-- <li><a href="#Property-GetMdcConfig">H5Pget_mdc_config</a> -->
- <li><a href="#Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
- <li><a href="#Property-GetMultiType">H5Pget_multi_type</a>
- <li><a href="#Property-GetNFilters">H5Pget_nfilters</a>
- <li><a href="#Property-GetNProps">H5Pget_nprops</a>
- <li><a href="#Property-GetPreserve">H5Pget_preserve</a>
- <li><a href="#Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
- <li><a href="#Property-GetSize">H5Pget_size</a>
- <li><a href="#Property-GetSizes">H5Pget_sizes</a>
- <li><a href="#Property-GetSmallData">H5Pget_small_data_block_size</a>
- <li><a href="#Property-GetSymK">H5Pget_sym_k</a>
- <li><a href="#Property-GetUserblock">H5Pget_userblock</a>
- <li><a href="#Property-GetVersion">H5Pget_version</a>
- <li><a href="#Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
- <li><a href="#Property-Insert">H5Pinsert</a>
- <li><a href="#Property-IsAClass">H5Pisa_class</a>
- <li><a href="#Property-Iterate">H5Piterate</a>
- <li><a href="#Property-ModifyFilter">H5Pmodify_filter</a>
- <li><a href="#Property-Register">H5Pregister</a>
- <li><a href="#Property-Remove">H5Premove</a>
- <li><a href="#Property-RemoveFilter">H5Premove_filter</a>
- <li><a href="#Property-Set">H5Pset</a>
- <li><a href="#Property-SetAlignment">H5Pset_alignment</a>
- <li><a href="#Property-SetAllocTime">H5Pset_alloc_time</a>
- <li><a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a>
- <li><a href="#Property-SetBuffer">H5Pset_buffer</a>
- <li><a href="#Property-SetCache">H5Pset_cache</a>
- <li><a href="#Property-SetChunk">H5Pset_chunk</a>
- <li><a href="#Property-SetDeflate">H5Pset_deflate</a>
-<!-- <li><a href="#Property-SetDriver">H5Pset_driver</a> -->
- <li><a href="#Property-SetDxplMpio">H5Pset_dxpl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetDxplMulti">H5Pset_dxpl_multi</a>
- <li><a href="#Property-SetEdcCheck">H5Pset_edc_check</a>
- <li><a href="#Property-SetExternal">H5Pset_external</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Property-SetFamilyOffset">H5Pset_family_offset</a>
- <li><a href="#Property-SetFaplCore">H5Pset_fapl_core</a>
- <li><a href="#Property-SetFaplFamily">H5Pset_fapl_family</a>
- <li><a href="#Property-SetFaplGass">H5Pset_fapl_gass</a>
- <li><a href="#Property-SetFaplLog">H5Pset_fapl_log</a>
- <li><a href="#Property-SetFaplMpio">H5Pset_fapl_mpio</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMulti">H5Pset_fapl_multi</a>
- <li><a href="#Property-SetFaplSec2">H5Pset_fapl_sec2</a>
- <li><a href="#Property-SetFaplSplit">H5Pset_fapl_split</a>
- <li><a href="#Property-SetFaplSrb">H5Pset_fapl_srb</a>
- <li><a href="#Property-SetFaplStdio">H5Pset_fapl_stdio</a>
- <li><a href="#Property-SetFaplStream">H5Pset_fapl_stream</a>
- <li><a href="#Property-SetFcloseDegree">H5Pset_fclose_degree</a>
- <li><a href="#Property-SetFillTime">H5Pset_fill_time</a>
- <li><a href="#Property-SetFillValue">H5Pset_fill_value</a>
- <li><a href="#Property-SetFilter">H5Pset_filter</a>
- <li><a href="#Property-SetFilterCallback">H5Pset_filter_callback</a>
- <li><a href="#Property-SetFletcher32">H5Pset_fletcher32</a>
- <li><a href="#Property-SetGCReferences">H5Pset_gc_references</a>
- <li><a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
- <li><a href="#Property-SetIstoreK">H5Pset_istore_k</a>
- <li><a href="#Property-SetLayout">H5Pset_layout</a>
-<!-- <li><a href="#Property-SetMdcConfig">H5Pset_mdc_config</a> -->
- <li><a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
- <li><a href="#Property-SetMultiType">H5Pset_multi_type</a>
- <li><a href="#Property-SetPreserve">H5Pset_preserve</a>
- <li><a href="#Property-SetShuffle">H5Pset_shuffle</a>
- <li><a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
- <li><a href="#Property-SetSizes">H5Pset_sizes</a>
- <li><a href="#Property-SetSmallData">H5Pset_small_data_block_size</a>
- <li><a href="#Property-SetSymK">H5Pset_sym_k</a>
- <li><a href="#Property-SetSzip">H5Pset_szip</a>
- <li><a href="#Property-SetUserblock">H5Pset_userblock</a>
- <li><a href="#Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
- <li><a href="#Property-Unregister">H5Punregister</a>
- </ul>
- <br><br>
- ||&nbsp;&nbsp;<i>Available only in the parallel HDF5 library.</i>
- </td>
- </tr>
-</table>
-
-<br>
-<!-- NEW PAGE -->
-<strong>The FORTRAN90 Interfaces:</strong>
-
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
-
- <i>General Property List Operations</i>
- <ul>
- <li><a href="#Property-Create">h5pcreate_f</a>
- <li><a href="#Property-GetClass">h5pget_class_f</a>
- <li><a href="#Property-Copy">h5pcopy_f</a>
- <li><a href="#Property-Close">h5pclose_f</a>
- </ul>
-
-
- <p><i>Generic Properties</i>
- <ul>
- <li><a href="#Property-CreateClass">h5pcreate_class_f</a>
-<!--<li><a href="#Property-CreateList">H5Pcreate_list</a> -->
- <li><a href="#Property-Register">h5pregister_f</a>
- <li><a href="#Property-Insert">h5pinsert_f</a>
- <li><a href="#Property-Set">h5pset_f</a>
- <li><a href="#Property-Exist">h5pexist_f</a>
- <li><a href="#Property-GetSize">h5pget_size_f</a>
- <li><a href="#Property-GetNProps">h5pget_nprops_f</a>
- <li><a href="#Property-GetClassName">h5pget_class_name_f</a>
- <li><a href="#Property-GetClassParent">h5pget_class_parent_f</a>
- <li><a href="#Property-IsAClass">h5pisa_class_f</a>
- <li><a href="#Property-Get">h5pget_f</a>
- <li><a href="#Property-Equal">h5pequal_f</a>
-<!--<li><a href="#Property-Iterate">h5piterate_f</a> -->
- <li><a href="#Property-CopyProp">h5pcopy_prop_f</a>
- <li><a href="#Property-Remove">h5premove_f</a>
- <li><a href="#Property-Unregister">h5punregister_f</a>
- <li><a href="#Property-CloseList">h5pclose_list_f</a>
- <li><a href="#Property-CloseClass">h5pclose_class_f</a>
- </ul>
-
-<!--<p><i>Meta Data Cache Properties</i> -->
-<!--<ul> -->
-<!--<li><a href="#Property-GetMdcConfig">H5Pget_mdc_config_f</a></li> -->
-<!--<li><a href="#Property-SetMdcConfig">H5Pset_mdc_config_f</a></li> -->
-<!--</ul> -->
-
- <p><i>File Creation Properties</i>
- <ul>
- <li><a href="#Property-GetVersion">h5pget_version_f</a>
- <li><a href="#Property-SetUserblock">h5pset_userblock_f</a>
- <li><a href="#Property-GetUserblock">h5pget_userblock_f</a>
- <li><a href="#Property-SetSizes">h5pset_sizes_f</a>
- <li><a href="#Property-GetSizes">h5pget_sizes_f</a>
- <li><a href="#Property-SetSymK">h5pset_sym_k_f</a>
- <li><a href="#Property-GetSymK">h5pget_sym_k_f</a>
- <li><a href="#Property-SetIstoreK">h5pset_istore_k_f</a>
- <li><a href="#Property-GetIstoreK">h5pget_istore_k_f</a>
- </ul>
-
-<!--<p><i>Variable-length Datatype Properties</i> -->
-<!--<ul> -->
-<!--<li><a href="#Property-SetVLMemManager">h5pset_vlen_mem_manager_f</a> -->
-<!--<li><a href="#Property-GetVLMemManager">h5pget_vlen_mem_manager_f</a> -->
-<!--</ul> -->
-
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-
-
- <i>File Close Properties</i>
- <ul>
- <li><a href="#Property-SetFcloseDegree">h5pset_fclose_degree_f</a>
- <li><a href="#Property-GetFcloseDegree">h5pget_fclose_degree_f</a>
- </ul>
-
- <p><i>Dataset Creation Properties</i>
- <ul>
- <li><a href="#Property-SetLayout">h5pset_layout_f</a>
- <li><a href="#Property-GetLayout">h5pget_layout_f</a>
- <li><a href="#Property-SetChunk">h5pset_chunk_f</a>
- <li><a href="#Property-GetChunk">h5pget_chunk_f</a>
- <li><a href="#Property-SetDeflate">h5pset_deflate_f</a>
-<!--<li><a href="#Property-GetDeflate">h5pget_deflate_f</a> -->
-<!--<li><a href="#Property-SetCompression">h5pset_compression_f</a> -->
-<!--<li><a href="#Property-GetCompression">h5pget_compression_f</a> -->
- <li><a href="#Property-SetFillValue">h5pset_fill_value_f</a>
- <li><a href="#Property-GetFillValue">h5pget_fill_value_f</a>
- <li><a href="#Property-FillValueDefined">h5pfill_value_defined_f</a>
- <li><a href="#Property-SetFillTime">h5pset_fill_time_f</a>
- <li><a href="#Property-GetFillTime">h5pget_fill_time_f</a>
- <li><a href="#Property-SetAllocTime">h5pset_alloc_time_f</a>
- <li><a href="#Property-GetAllocTime">h5pget_alloc_time_f</a>
- <li><a href="#Property-SetFilter">h5pset_filter_f</a>
-<!--<li><a href="#Property-AllFiltersAvail">h5pall_filters_avail_f</a> -->
- <li><a href="#Property-GetNFilters">h5pget_nfilters_f</a>
- <li><a href="#Property-GetFilter">h5pget_filter_f</a>
- <li><a href="#Property-GetFilterById">h5pget_filter_by_id_f</a>
- <li><a href="#Property-ModifyFilter">h5pmodify_filter_f</a>
- <li><a href="#Property-RemoveFilter">h5premove_filter_f</a>
- <li><a href="#Property-SetFletcher32">h5pset_fletcher32_f</a>
- <li><a href="#Property-SetShuffle">h5pset_shuffle_f</a>
- <li><a href="#Property-SetSzip">h5pset_szip_f</a>
- <li><a href="#Property-SetExternal">h5pset_external_f</a>
- <li><a href="#Property-GetExternalCount">h5pget_external_count_f</a>
- <li><a href="#Property-GetExternal">h5pget_external_f</a>
- </ul>
-
-<!--
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
--->
-<br>&nbsp;
-<br>&nbsp;
-<br>&nbsp;
-<br>
-||&nbsp;&nbsp;<i>Available only in the parallel HDF5 library.</i>
-
-
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-
-
- <i>File Access Properties</i>
- <ul>
-<!--<li><a href="#Property-SetDriver">h5pset_driver_f</a> -->
- <li><a href="#Property-GetDriver">h5pget_driver_f</a>
-<!--<li><a href="#Property-GetDriverInfo">h5pget_driver_info_f</a> -->
- <li><a href="#Property-SetMetaBlockSize">h5pset_meta_block_size_f</a>
- <li><a href="#Property-GetMetaBlockSize">h5pget_meta_block_size_f</a>
- <li><a href="#Property-SetSieveBufSize">h5pset_sieve_buf_size_f</a>
- <li><a href="#Property-GetSieveBufSize">h5Pget_sieve_buf_size_f</a>
- <li><a href="#Property-SetStdio">h5pset_stdio_f</a>
- <li><a href="#Property-GetStdio">h5pget_stdio_f</a>
- <li><a href="#Property-SetSec2">h5pset_sec2_f</a>
-<!--<li><a href="#Property-GetSec2">h5pget_sec2_f</a> -->
- <li><a href="#Property-SetAlignment">h5pset_alignment_f</a>
- <li><a href="#Property-GetAlignment">h5pget_alignment_f</a>
-<!--<li><a href="#Property-SetCore">h5pset_core_f</a> -->
-<!--<li><a href="#Property-GetCore">h5pget_core_f</a> -->
- <li><a href="#Property-SetFaplMpio">h5pset_fapl_mpio_f</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpio">h5pget_fapl_mpio_f</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFaplMpiPosix">h5pset_fapl_mpiposix_f</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetFaplMpiPosix">h5pget_fapl_mpiposix_f</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-SetFamily">h5pset_family_f</a>
- <li><a href="#Property-GetFamily">h5pget_family_f</a>
-<!--<li><a href="#Property-SetFamilyOffset">h5pset_family_offset_f</a> -->
-<!--<li><a href="#Property-GetFamilyOffset">h5pget_family_offset_f</a> -->
- <li><a href="#Property-SetFaplMulti">h5pset_fapl_multi_f</a>
- <li><a href="#Property-GetFaplMulti">h5pget_fapl_multi_f</a>
-<!--<li><a href="#Property-SetMultiType">h5pset_multi_type_f</a> -->
-<!--<li><a href="#Property-GetMultiType">h5pget_multi_type_f</a> -->
- <li><a href="#Property-SetCache">h5pset_cache_f</a>
- <li><a href="#Property-GetCache">h5pget_cache_f</a>
- <li><a href="#Property-SetSplit">h5pset_split_f</a>
- <li><a href="#Property-GetSplit">h5pget_split_f</a>
- <li><a href="#Property-SetGCReferences">h5pset_gc_references_f</a>
- <li><a href="#Property-GetGCReferences">h5pget_gc_references_f</a>
- </ul>
-
-
- <p><i>Dataset Access, Memory, and Transfer Properties</i>
- <ul>
- <li><a href="#Property-SetBuffer">h5pset_buffer_f</a>
- <li><a href="#Property-GetBuffer">h5pget_buffer_f</a>
- <li><a href="#Property-SetPreserve">h5pset_preserve_f</a>
- <li><a href="#Property-GetPreserve">h5pget_preserve_f</a>
- <li><a href="#Property-SetEdcCheck">h5pset_edc_check_f</a>
- <li><a href="#Property-GetEdcCheck">h5pget_edc_check_f</a>
- <li><a href="#Property-SetHyperVectorSize">h5pset_hyper_vector_size_f</a>
- <li><a href="#Property-GetHyperVectorSize">h5pget_hyper_vector_size_f</a>
- <li><a href="#Property-SetBTreeRatios">h5pset_btree_ratios_f</a>
- <li><a href="#Property-GetBTreeRatios">h5pget_btree_ratios_f</a>
- <li><a href="#Property-SetDxplMpio">h5pset_dxpl_mpio_f</a>&nbsp;&nbsp;&nbsp;||
- <li><a href="#Property-GetDxplMpio">h5pget_dxpl_mpio_f</a>&nbsp;&nbsp;&nbsp;||
-<!--<li><a href="#Property-SetDxplMulti">h5pset_dxpl_multi_f</a> -->
-<!--<li><a href="#Property-GetDxplMulti">h5pget_dxpl_multi_f</a> -->
-<!--<li><a href="#Property-SetMultiType">h5pset_multi_type_f</a> -->
-<!--<li><a href="#Property-GetMultiType">h5pget_multi_type_f</a> -->
- <br>&nbsp;
- <li><a href="#Property-SetSmallData">h5pset_small_data_block_size_f</a>
- <li><a href="#Property-GetSmallData">h5pget_small_data_block_size_f</a>
- </ul>
-
-</td></tr>
-</table>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pall_filters_avail" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-AllFiltersAvail">H5Pall_filters_avail</a>
- <dt><strong>Signature:</strong>
- <dd><em>htri_t</em> <code>H5Pall_filters_avail</code>(<em>hid_t</em> <code>dcpl_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Verifies that all required filters are available.
- <dt><strong>Description:</strong>
- <dd><code>H5Pall_filters_avail</code> verifies that all of the filters
- set in the dataset creation property list <code>dcpl_id</code> are
- currently available.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dcpl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns <code>TRUE</code> if all filters are available
- and <code>FALSE</code> if one or more is not currently available.<br>
- Returns <code>FAIL</code>, a negative value, on error.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pclose" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Close">H5Pclose</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pclose</code>(<em>hid_t</em> <code>plist</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Terminates access to a property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pclose</code> terminates access to a property list.
- All property lists should be closed when the application is
- finished accessing them.
- This frees resources used by the property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the property list to terminate access to.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pclose_f
- <dd>
- <pre>
-SUBROUTINE h5pclose_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pclose_class" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-CloseClass">H5Pclose_class</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pclose_class</code>(
- <em>hid_t</em> <code>class</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Closes an existing property list class.
-
- <dt><strong>Description:</strong>
- <dd>Removes a property list class from the library.
-
- <p>
- Existing property lists of this class will continue to exist,
- but new ones are not able to be created.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em>&nbsp;<code>class&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Property list class to close</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pclose_class_f
- <dd>
- <pre>
-SUBROUTINE h5pclose_class_f(class, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier
- ! to close
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pclose_class_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pclose_list" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-CloseList">H5Pclose_list</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pclose_list</code>(
- <em>hid_t</em> <code>plist</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Closes a property list.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pclose_list</code> closes a property list.
-
- <p>
- If a <code>close</code> callback exists for the property list class,
- it is called before the property list is destroyed.
- If <code>close</code> callbacks exist for any individual properties
- in the property list, they are called after the class
- <code>close</code> callback.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code><td>
- <td>IN: Property list to close</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pclose_list_f
- <dd>
- <pre>
-SUBROUTINE h5pclose_list_f(plist, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier to close
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pclose_list_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pcopy" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Copy">H5Pcopy</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Pcopy</code>(<em>hid_t</em> <code>plist</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Copies an existing property list to create a new property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pcopy</code> copies an existing property list to create
- a new property list.
- The new property list has the same properties and values
- as the original property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of property list to duplicate.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a property list identifier if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pcopy_f
- <dd>
- <pre>
-SUBROUTINE h5pcopy_f(prp_id, new_prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HID_T), INTENT(OUT) :: new_prp_id ! Identifier of property list
- ! copy
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pcopy_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pcopy_prop" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-CopyProp">H5Pcopy_prop</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pcopy_prop</code>(
- <em>hid_t</em> <code>dst_id</code>,
- <em>hid_t</em> <code>src_id</code>,
- <em>const char *</em><code>name</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Copies a property from one list or class to another.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pcopy_prop</code> copies a property from one property
- list or class to another.
-
- <p>
- If a property is copied from one class to another, all the property
- information will be first deleted from the destination class and
- then the property information will be copied from the source class
- into the destination class.
-
- <p>
- If a property is copied from one list to another, the property
- will be first deleted from the destination list (generating a call
- to the <code>close</code> callback for the property, if one exists)
- and then the property is copied from the source list to the
- destination list (generating a call to the <code>copy</code>
- callback for the property, if one exists).
-
- <p>
- If the property does not exist in the class or list, this call is
- equivalent to calling <code>H5Pregister</code> or <code>H5Pinsert</code>
- (for a class or list, as appropriate) and the <code>create</code>
- callback will be called in the case of the property being
- copied into a list (if such a callback exists for the property).
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>dst_id</code></td>
- <td>IN: Identifier of the destination property list or
- class</td></tr>
- <tr>
- <td><em>hid_t</em> <code>src_id</code></td>
- <td>IN: Identifier of the source property list or class</td></tr>
- <tr>
- <td><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Name of the property to copy</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pcopy_prop_f
- <dd>
- <pre>
-SUBROUTINE h5pcopy_prop_f(dst_id, src_id, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dst_id ! Destination property list
- ! identifier
- INTEGER(HID_T), INTENT(IN) :: src_id ! Source property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Property name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pcopy_prop_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pcreate" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Create">H5Pcreate</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Pcreate</code>(<em>hid_t</em> <code>cls_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Creates a new property as an instance of a property list class.
- <dt><strong>Description:</strong>
- <dd><code>H5Pcreate</code> creates a new property as an instance of some
- property list class. The new property list is initialized
- with default values for the specified class. The classes are:
- <dl>
- <dt><code>H5P_FILE_CREATE</code>
- <dd>Properties for file creation.
- See <a href="Files.html">Files</a>
- in the <cite>HDF User's Guide</cite>
- for details about the file creation properties.
- <dt><code>H5P_FILE_ACCESS</code>
- <dd>Properties for file access.
- See <a href="Files.html">Files</a>
- in the <cite>HDF User's Guide</cite>
- for details about the file creation properties.
- <dt><code>H5P_DATASET_CREATE</code>
- <dd>Properties for dataset creation.
- See <a href="Datasets.html">Datasets</a>
- in the <cite>HDF User's Guide</cite>
- for details about dataset creation properties.
- <dt><code>H5P_DATASET_XFER</code>
- <dd>Properties for raw data transfer.
- See <a href="Datasets.html">Datasets</a>
- in the <cite>HDF User's Guide</cite>
- for details about raw data transfer properties.
- <dt><code>H5P_MOUNT</code>
- <dd>Properties for file mounting.
- With this parameter, <code>H5Pcreate</code>
- creates and returns a new mount property list
- initialized with default values.
- </dl>
- <p>
- This property list must eventually be closed with
- <code>H5Pclose</code>;
- otherwise, errors are likely to occur.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>cls_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The class of the property list to create.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a property list identifier (<code>plist</code>) if successful;
- otherwise Fail (-1).
- <dt><strong>Fortran90 Interface:</strong> h5pcreate_f
- <dd>
- <pre>
-SUBROUTINE h5pcreate_f(classtype, prp_id, hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: classtype ! The type of the property list
- ! to be created
- ! Possible values are:
- ! H5P_FILE_CREATE_F
- ! H5P_FILE_ACCESS_F
- ! H5P_DATASET_CREATE_F
- ! H5P_DATASET_XFER_F
- ! H5P_MOUNT_F
- INTEGER(HID_T), INTENT(OUT) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pcreate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pcreate_class" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-CreateClass">H5Pcreate_class</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Pcreate_class</code>(
- <em>hid_t</em> <code>class</code>,
- <em>const char *</em><code>name</code>,
- <em>H5P_cls_create_func_t</em> <code>create</code>,
- <em>H5P_cls_copy_func_t</em> <code>copy</code>,
- <em>H5P_cls_close_func_t</em> <code>close</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Creates a new property list class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pcreate_class</code> registers a new property list class
- with the library.
- The new property list class can inherit from an existing property
- list class or may be derived from the default "empty" class.
- New classes with inherited properties from existing classes
- may not remove those existing properties, only add or remove
- their own class properties.
- </P>
-
- The <code>create</code> routine is called when a new property list
- of this class is being created.
- The <code>H5P_cls_create_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_cls_create_func_t</code>)(
- <em>hid_t</em> <code>prop_id</code>,
- <em>void *</em> <code>create_data</code>
- );
- </ul>
- The parameters to this callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being created</td></tr>
- <tr>
- <td><em>void *</em> <code>create_data</code></td>
- <td>IN/OUT: User pointer to any class creation information needed</td></tr>
- </table></ul>
- The <code>create</code> routine is called after any registered
- <code>create</code> function is called for each property value.
- If the <code>create</code> routine returns a negative value,
- the new list is not returned to the user and the
- property list creation routine returns an error value.
- </P>
-
- The <code>copy</code> routine is called when an existing property list
- of this class is copied.
- The <code>H5P_cls_copy_func_t</code> callback function
- is defined as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_cls_copy_func_t</code>)(
- <em>hid_t</em> <code>prop_id</code>,
- <em>void *</em> <code>copy_data</code>
- );
- </ul>
- The parameters to this callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list created by copying</td></tr>
- <tr>
- <td><em>void *</em> <code>copy_data</code></td>
- <td>IN/OUT: User pointer to any class copy information needed</td></tr>
- </table></ul>
- The <code>copy</code> routine is called after any registered
- <code>copy</code> function is called for each property value.
- If the <code>copy</code> routine returns a negative value, the new list
- is not returned to the user and the property list copy routine returns
- an error value.
- </P>
-
- The <code>close</code> routine is called when a property list of this
- class
- is being closed.
- The <code></code>H5P_cls_close_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_cls_close_func_t</code>)(
- <em>hid_t</em> <code>prop_id</code>,
- <em>void *</em> <code>close_data</code>
- );
- </ul>
- The parameters to this callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being closed</td></tr>
- <tr>
- <td><em>void *</em> <code>close_data</code></td>
- <td>IN/OUT: User pointer to any class close information needed</td></tr>
- </table></ul>
- The <code>close</code> routine is called before any registered
- <code>close</code> function is called for each property value.
- If the <code>close</code> routine returns a negative value,
- the property list close routine returns an error value
- but the property list is still closed.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>class</code></td>
- <td>IN: Property list class to inherit from.</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: Name of property list class to register</td></tr>
- <tr>
- <td><em>H5P_cls_create_func_t</em>&nbsp;<code>create&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Callback routine called when a property list is created</td></tr>
- <tr>
- <td><em>H5P_cls_copy_func_t</em> <code>copy</code></td>
- <td>IN: Callback routine called when a property list is copied</td></tr>
- <tr>
- <td><em>H5P_cls_close_func_t</em> <code>close</code></td>
- <td>IN: Callback routine called when a property list is being closed</td></tr>
- </table>
- </ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a valid property list class identifier
- <dd>Failure: a negative value
-
-<!-- NEW PAGE -->
- <dt><strong>Fortran90 Interface:</strong> h5pcreate_class_f
- <dd>
- <pre>
-SUBROUTINE h5pcreate_class_f(parent, name, class, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: parent ! Parent property list class
- ! identifier
- ! Possible values include:
- ! H5P_NO_CLASS_F
- ! H5P_FILE_CREATE_F
- ! H5P_FILE_ACCESS_F
- ! H5P_DATASET_CREATE_F
- ! H5P_DATASET_XFER_F
- ! H5P_MOUNT_F
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to create
- INTEGER(HID_T), INTENT(OUT) :: class ! Property list class identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pcreate_class_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pcreate_list" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-CreateList">H5Pcreate_list</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Pcreate_list</code>(
- <em>hid_t</em> <code>class</code>)
-
- <dt><strong>Purpose:</strong>
- <dd>Creates a new property list class of a given class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pcreate_list</code> creates a new property list of a
- given class. If a <code>create</code> callback exists for the
- property list class, it is called before the property list
- is passed back to the user.
- If <code>create</code> callbacks exist for any individual properties
- in the property list, they are called before the class
- <code>create</code> callback.
-
- <dt><strong>Parameter:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em>&nbsp;<code>class;&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Class of property list to create.</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a valid property list identifier
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Premove_filter" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-RemoveFilter">H5Premove_filter</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Premove_filter</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5Z_filter_t</em> <code>filter</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Delete one or more filters in the filter pipeline.
- <dt><strong>Description:</strong>
- <dd><code>H5Premove_filter</code> removes the specified
- <code>filter</code> from the filter pipeline in the
- dataset creation property list <code>plist</code>.
- <p>
- The <code>filter</code> parameter specifies the filter to be removed.
- Valid values for use in <code>filter</code> are as follows:
-
- <center>
- <table width=75%>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_ALL</code>
- </td><td>
- Removes all filters from the permanent filter pipeline.
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_DEFLATE</code>
- </td><td>
- Data compression filter, employing the gzip algorithm
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_SHUFFLE</code>
- </td><td>
- Data shuffling filter
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_FLETCHER32&nbsp;&nbsp;</code>
- </td><td>
- Error detection filter, employing the Fletcher32 checksum algorithm
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_SZIP</code>
- </td><td>
- Data compression filter, employing the SZIP algorithm
- </td></tr>
- </table>
- </center>
- <p>
- Additionally, user-defined filters can be removed with this routine
- by passing the filter identifier with which they were registered
- with the HDF5 Library.
- <p>
- Attempting to remove a filter that is not in the permanent filter
- pipeline is an error.
- <dt><strong>Note:</strong>
- <dd>This function currently supports only the permanent filter
- pipeline; <code>plist</code> must be a dataset creation
- property list.
- <dt><strong>Parameters:</strong>
- <dl>
- <dt><em>hid_t</em> <code>plist_id</code>
- <dd>IN: Dataset creation property list identifier.
- <dt><em>H5Z_filter_t</em> <code>filter</code>
- <dd>IN: Filter to be deleted.
- </dl>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-
- <dt><strong>Fortran90 Interface:</strong> h5premove_filter_f
- <dd>
- <pre>
-SUBROUTINE h5premove_filter_f(prp_id, filter, hdferr)
-
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property
- ! list identifier
- INTEGER, INTENT(IN) :: filter ! Filter to be removed
- ! Valid values are:
- ! H5Z_FILTER_ALL_F
- ! H5Z_FILTER_DEFLATE_F
- ! H5Z_FILTER_SHUFFLE_F
- ! H5Z_FILTER_FLETCHER32_F
- ! H5Z_FILTER_SZIP_F
- !
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success, -1 on failure
-END SUBROUTINE h5premove_filter_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pequal" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Property-Equal">H5Pequal</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>htri_t</em> <code>H5Pequal</code>(
- <em></em>hid_t</em> <em>id1</em>,
- <em>hid_t</em> <em>id2</em>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Compares two property lists or classes for equality.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pequal</code> compares two property lists or classes
- to determine whether they are equal to one another.
-
- <p>
- Either both <code>id1</code> and <code>id2</code> must be
- property lists or both must be classes; comparing a list to a
- class is an error.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em>&nbsp;<code>id1&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: First property object to be compared</td></tr>
- <tr>
- <td><em>hid_t</em> <code>id2</code></td>
- <td>IN: Second property object to be compared</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: TRUE (positive) if equal; FALSE (zero) if unequal
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pequal_f
- <dd>
- <pre>
-SUBROUTINE h5pequal_f(plist1_id, plist2_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist1_id ! Property list identifier
- INTEGER(HID_T), INTENT(IN) :: plist2_id ! Property list identifier
- LOGICAL, INTENET(OUT) :: flag ! Flag
- ! .TRUE. if lists are equal
- ! .FALSE. otherwise
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pequal_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pexist" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Exist">H5Pexist</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>htri_t</em> <code>H5Pexist</code>(
- <em>hid_t</em> <code>id</code>;
- <em>const char *</em><code>name</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Queries whether a property name exists in a property list
- or class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pexist</code> determines whether a property exists
- within a property list or class.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>id</code></td>
- <td>IN: Identifier for the property to query</td></tr>
- <tr>
- <td><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Name of property to check for</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a positive value if the property exists in the
- property object; zero if the property does not exist
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pexist_f
- <dd>
- <pre>
-SUBROUTINE h5pexist_f(prp_id, name, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to modify
- LOGICAL, INTENT(OUT) :: flag ! Logical flag
- ! .TRUE. if exists
- ! .FALSE. otherwise
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pexist_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pfill_value_defined" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-FillValueDefined">H5Pfill_value_defined</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pfill_value_defined</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_fill_value_t *</em><code>status</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Determines whether fill value is defined.
- <dt><strong>Description:</strong>
- <dd><code>H5Pfill_value_defined</code> determines whether a fill value
- is defined in the dataset creation property list <code>plist_id</code>.
- <p>
- Valid values returned in <code>status</code> are as follows:
- <table border=0 width="80%">
- <tr valign="top"><td rowspan="3">&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5D_FILL_VALUE_UNDEFINED</code>
- </td><td>
- Fill value is undefined.
- </td></tr><tr valign="top"><td>
- <code>H5D_FILL_VALUE_DEFAULT</code>
- </td><td>
- Fill value is the library default.
- </td></tr><tr valign="top"><td>
- <code>H5D_FILL_VALUE_USER_DEFINED</code>&nbsp;&nbsp;
- </td><td>
- Fill value is defined by the application.
- </td></tr></table>
- <dt><strong>Note:</strong>
- <dd><code>H5Pfill_value_defined</code> is designed for use in
- concert with the dataset fill value properties functions
- <code>H5Pget_fill_value</code> and <code>H5Pget_fill_time</code>.
- <p>
- See <a href="RM_H5D.html#Dataset-Create">H5Dcreate</a> for
- further cross-references.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5D_fill_value_t&nbsp;*</em><code>status&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Status of fill value in property list.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Get">H5Pget</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget</code>(
- <em>hid_t</em> <code>plid</code>,
- <em>const char *</em><code>name</code>,
- <em>void *</em><code>value</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Queries the value of a property.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pget</code> retrieves a copy of the value for a property
- in a property list. If there is a <code>get</code> callback routine
- registered for this property, the copy of the value of the property
- will first be passed to that routine and any changes to the copy of
- the value will be used when returning the property value from this
- routine.
-
- <p>
- This routine may be called for zero-sized properties with the
- <code>value</code> set to NULL. The <code>get</code> routine
- will be called with a NULL value if the callback exists.
-
- <p>
- The property name must exist or this routine will fail.
-
- <p>
- If the <code>get</code> callback routine returns an error,
- <code>value</code> will not be modified.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>plid</ecodem></td>
- <td>IN: Identifier of the property list to query</td></tr>
- <tr>
- <td><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Name of property to query</td></tr>
- <tr>
- <td><em>void *</em><code>value</code></td>
- <td>OUT: Pointer to a location to which to copy the value of
- of the property</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pget_f
- <dd>
- <pre>
-SUBROUTINE h5pget_f(plid, name, value, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plid ! Property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to get
- TYPE, INTENT(OUT) :: value ! Property value
- ! Supported types are:
- ! INTEGER
- ! REAL
- ! DOUBLE PRECISION
- ! CHARACTER(LEN=*)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_alignment" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetAlignment">H5Pget_alignment</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_alignment</code>(<em>hid_t</em> <code>plist</code>,
- <em>hsize_t</em> <code>*threshold</code>,
- <em>hsize_t</em> <code>*alignment</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the current settings for alignment properties from a
- file access property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_alignment</code> retrieves the current settings for
- alignment properties from a file access property list.
- The <code>threshold</code> and/or <code>alignment</code> pointers
- may be null pointers (NULL).
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of a file access property list.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em>&nbsp;<code>*threshold&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to location of return threshold value.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>*alignment</code></td>
- <td valign="top">OUT: Pointer to location of return alignment value.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_alignment_f
- <dd>
- <pre>
-SUBROUTINE h5pget_alignment_f(prp_id, threshold, alignment, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: threshold ! Threshold value
- INTEGER(HSIZE_T), INTENT(OUT) :: alignment ! Alignment value
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_alignment_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_alloc_time" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetAllocTime">H5Pget_alloc_time</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_alloc_time</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_alloc_time_t *</em><code>alloc_time</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the timing for storage space allocation.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_alloc_time</code> retrieves the timing for allocating
- storage space for a dataset's raw data.
- This property is set in the dataset creation property list
- <code>plist_id</code>.
- <p>
- The timing setting is returned in <code>fill_time</code> as one of the
- following values:
- <table border=0 >
- <tr valign="top"><td rowspan="4">&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5D_ALLOC_TIME_DEFAULT</code>&nbsp;&nbsp;
- </td><td>
- Uses the default allocation time, based on the dataset storage method.<br>
- See the <code>fill_time</code> description in
- <a href="#Property-SetAllocTime">H5Pset_alloc_time</a> for
- default allocation times for various storage methods.
- </td></tr><tr valign="top"><td>
- <code>H5D_ALLOC_TIME_EARLY</code>
- </td><td>
- All space is allocated when the dataset is created.
- </td></tr><tr valign="top"><td>
- <code>H5D_ALLOC_TIME_INCR</code>&nbsp;&nbsp;
- </td><td>
- Space is allocated incrementally as data is written to the dataset.
- </td></tr><tr valign="top"><td>
- <code>H5D_ALLOC_TIME_LATE</code>
- </td><td>
- All space is allocated when data is first written to the dataset.
- </td></tr></table>
- <dt><strong>Note:</strong>
- <dd><code>H5Pget_alloc_time</code> is designed to work in concert
- with the dataset fill value and fill value write time properties,
- set with the functions
- <code>H5Pget_fill_value</code> and <code>H5Pget_fill_time</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5D_alloc_time_t&nbsp;*</em><code>alloc_time&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: When to allocate dataset storage space.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_alloc_time_f
- <dd>
- <pre>
-SUBROUTINE h5pget_alloc_time_f(plist_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation
- ! property list identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: flag ! Allocation time flag
- ! Possible values are:
- ! H5D_ALLOC_TIME_ERROR_F
- ! H5D_ALLOC_TIME_DEFAULT_F
- ! H5D_ALLOC_TIME_EARLY_F
- ! H5D_ALLOC_TIME_LATE_F
- ! H5D_ALLOC_TIME_INCR_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_alloc_time_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_btree_ratios" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetBTreeRatios">H5Pget_btree_ratios</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_btree_ratios</code>(<em>hid_t</em> <code>plist</code>,
- <em>double</em> *<code>left</code>,
- <em>double</em> *<code>middle</code>,
- <em>double</em> *<code>right</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Gets B-tree split ratios for a dataset transfer property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_btree_ratios</code> returns the B-tree split ratios
- for a dataset transfer property list.
- <p>
- The B-tree split ratios are returned through the non-<code>NULL</code>
- arguments <code>left</code>, <code>middle</code>, and <code>right</code>,
- as set by the <a href="#Property-SetBTreeRatios">H5Pset_btree_ratios</a> function.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: The dataset transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>left</code></td>
- <td valign="top">OUT: The B-tree split ratio for left-most nodes.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>right</code></td>
- <td valign="top">OUT: The B-tree split ratio for right-most nodes and lone nodes.</td></tr>
- <tr>
- <td valign="top"><em>double</em>&nbsp;<code>middle&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: The B-tree split ratio for all other nodes.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_btree_ratios_f
- <dd>
- <pre>
-SUBROUTINE h5pget_btree_ratios_f(prp_id, left, middle, right, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- ! Property list identifier
- REAL, INTENT(OUT) :: left ! B-tree split ratio for left-most nodes
- REAL, INTENT(OUT) :: middle ! B-tree split ratio for all other nodes
- REAL, INTENT(OUT) :: right ! The B-tree split ratio for right-most
- ! nodes and lone nodes.
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_btree_ratios_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_buffer" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetBuffer">H5Pget_buffer</a>
- <dt><strong>Signature:</strong>
- <dd><em>hsize_t</em> <code>H5Pget_buffer</code>(<em>hid_t</em> <code>plist</code>,
- <em>void</em> <code>**tconv</code>,
- <em>void</em> <code>**bkg</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Reads buffer settings.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_buffer</code> reads values previously set
- with H5Pset_buffer.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for the dataset transfer property list.</td></tr>
- <tr>
- <td valign="top"><em>void</em>&nbsp;<code>**tconv&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Address of the pointer to application-allocated
- type conversion buffer.</td></tr>
- <tr>
- <td valign="top"><em>void</em> <code>**bkg</code></td>
- <td valign="top">OUT: Address of the pointer to application-allocated
- background buffer.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns buffer size, in bytes, if successful;
- otherwise 0 on failure.
- <dt><strong>Fortran90 Interface:</strong> h5pget_buffer_f
- <dd>
- <pre>
-SUBROUTINE h5pget_buffer_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer
- ! property list identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: size ! Conversion buffer size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_buffer_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_cache" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetCache">H5Pget_cache</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_cache</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>int</em> <code>*mdc_nelmts</code>,
- <em>int</em> <code>*rdcc_nelmts</code>,
- <em>size_t</em> <code>*rdcc_nbytes</code>,
- <em>double</em> <code>*rdcc_w0</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Queries the meta data cache and raw data chunk cache parameters.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_cache</code> retrieves the maximum possible
- number of elements in the meta
- data cache and raw data chunk cache, the maximum possible number of
- bytes in the raw data chunk cache, and the preemption policy value.
- <p>
- Any (or all) arguments may be null pointers, in which case the
- corresponding datum is not returned.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Identifier of the file access property list.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>*mdc_nelmts</code></td>
- <td valign="top">IN/OUT: Number of elements (objects) in the meta data cache.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>*rdcc_nelmts</code></td>
- <td valign="top">IN/OUT: Number of elements (objects) in the raw data chunk cache.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>*rdcc_nbytes&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN/OUT: Total size of the raw data chunk cache, in bytes.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>*rdcc_w0</code></td>
- <td valign="top">IN/OUT: Preemption policy.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_cache_f
- <dd>
- <pre>
-SUBROUTINE h5pget_cache_f(prp_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes,
- rdcc_w0, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: mdc_nelmts ! Number of elements (objects)
- ! in the meta data cache
- INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nelmts ! Number of elements (objects)
- ! in the meta data cache
- INTEGER(SIZE_T), INTENT(OUT) :: rdcc_nbytes ! Total size of the raw data
- ! chunk cache, in bytes
- REAL, INTENT(OUT) :: rdcc_w0 ! Preemption policy
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_cache_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_chunk" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetChunk">H5Pget_chunk</a>
- <dt><strong>Signature:</strong>
- <dd><em>int </em><code>H5Pget_chunk</code>(<em>hid_t</em> <code>plist</code>,
- <em>int</em> <code>max_ndims</code>,
- <em>hsize_t *</em> <code>dims</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the size of chunks for the raw data of a chunked layout dataset.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_chunk</code> retrieves the size of chunks for the
- raw data of a chunked layout dataset.
- This function is only valid for dataset creation property lists.
- At most, <code>max_ndims</code> elements of <code>dims</code>
- will be initialized.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of property list to query.</td></tr>
- <tr>
- <td valign="top"><em>int</em>&nbsp;<code>max_ndims&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Size of the <code>dims</code> array.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em> <code>dims</code></td>
- <td valign="top">OUT: Array to store the chunk dimensions.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns chunk dimensionality successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_chunk_f
- <dd>
- <pre>
-SUBROUTINE h5pget_chunk_f(prp_id, ndims, dims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions
- ! to return
- INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(OUT) :: dims
- ! Array containing sizes of
- ! chunk dimensions
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! chunk rank on success
- ! and -1 on failure
-END SUBROUTINE h5pget_chunk_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_class" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetClass">H5Pget_class</a>
- <dt><strong>Signature:</strong>
- <dd><em>H5P_class_t </em><code>H5Pget_class</code>(<em>hid_t</em> <code>plist</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns the property list class for a property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_class</code> returns the property list class for the
- property list identified by the <code>plist</code> parameter.
- Valid property list classes are defined in the description of
- <code>H5Pcreate</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of property list to query.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a property list class if successful.
- Otherwise returns H5P_NO_CLASS (-1).
- <dt><strong>Fortran90 Interface:</strong> h5pget_class_f
- <dd>
- <pre>
-SUBROUTINE h5pget_class_f(prp_id, classtype, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: classtype ! The type of the property list
- ! to be created
- ! Possible values are:
- ! H5P_NO_CLASS
- ! H5P_FILE_CREATE_F
- ! H5P_FILE_ACCESS_F
- ! H5PE_DATASET_CREATE_F
- ! H5P_DATASET_XFER_F
- ! H5P_MOUNT_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_class_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_class_name" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetClassName">H5Pget_class_name</a>
-
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the name of a class.
-
- <dt><strong>Signature:</strong>
- <dd><em>char *</em> <code>H5Pget_class_name</code>(
- <em>hid_t</em> <code>pcid</code>
- )
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_class_name</code> retrieves the name of a
- generic property list class. The pointer to the name
- must be freed by the user after each successful call.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em>&nbsp;<code>pcid&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Identifier of the property class to query</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a pointer to an allocated string containing the class name
- <dd>Failure: NULL
-
- <dt><strong>Fortran90 Interface:</strong> h5pget_class_name_f
- <dd>
- <pre>
-SUBROUTINE h5pget_class_name_f(prp_id, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier to
- ! query
- CHARACTER(LEN=*), INTENT(INOUT) :: name ! Buffer to retrieve class name
- INTEGER, INTENT(OUT) :: hdferr ! Error code, possible values:
- ! Success: Actual length of the
- ! class name
- ! If provided buffer "name" is
- ! smaller, than name will be
- ! truncated to fit into
- ! provided user buffer
- ! Failure: -1
-END SUBROUTINE h5pget_class_name_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_class_parent" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetClassParent">H5Pget_class_parent</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Pget_class_parent</code>(
- <em>hid_t</em> <code>pcid</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the parent class of a property class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_class_parent</code> retrieves an identifier for the
- parent class of a property class.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em>&nbsp;<code>pcid&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Identifier of the property class to query</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a valid parent class object identifier
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pget_class_parent_f
- <dd>
- <pre>
-SUBROUTINE h5pget_class_parent_f(prp_id, parent_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HID_T), INTENT(OUT) :: parent_id ! Parent class property list
- ! identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_class_parent_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_data_transform" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetDataTransform">H5Pget_data_transform</a>
- <dt><strong>Signature:</strong>
- <dd><em>ssize_t</em> <code>H5Pget_data_transform</code>
- (<em>hid_t</em> <code>plist_id</code>,
- <em>char</em> *<code>expression</code>,
- <em>size_t</em> <code>size</code>)
- <dt><strong>Purpose:</strong>
- <dd>Retrieves a data transform expression.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_data_transform</code> retrieves the data
- transform expression previously set in the dataset transfer
- property list plist_id by <code>H5Pset_data_transform</code>.
- <p><code>H5Pget_data_transform</code> can be used to both
- retrieve the transform expression and to query its size.
- <p>
- If <code>expression</code> is non-NULL, up to <code>size</code>
- bytes of the data transform expression are written to the buffer.
- If <code>expression</code> is NULL, <code>size</code> is ignored
- and the function does not write anything to the buffer.
- The function always returns the size of the data transform expression.
- <p>
- If <code>0</code> is returned for the size of the expression,
- no data transform expression exists for the property list.
- <p>
- If an error occurs, the buffer pointed to by <code>expression</code>
- is unchanged and the function returns a negative value.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Identifier of the property list or class</td></tr>
- <tr>
- <td valign="top"><em>char</em>&nbsp;*<code>expression&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to memory where the transform
- expression will be copied</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>size</code></td>
- <td valign="top">IN: Number of bytes of the transform expression
- to copy to</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Success: size of the transform expression.
- <dd>Failure: a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_driver" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetDriver">H5Pget_driver</a>
- <dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Pget_driver</code>(
- <em>hid_t</em> <code>plist_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns low-lever driver identifier.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_driver</code> returns the identifier of the
- low-level file driver associated with the file access property list
- or data transfer property list <code>plist_id</code>.
- <p>
- Valid driver identifiers with the standard HDF5 library distribution
- include the following:
- <pre>
- H5FD_CORE
- H5FD_FAMILY
- H5FD_GASS
- H5FD_LOG
- H5FD_MPIO
- H5FD_MULTI
- H5FD_SEC2
- H5FD_STDIO
- H5FD_STREAM </pre>
- If a user defines and registers custom drivers or
- if additional drivers are defined in an HDF5 distribution,
- this list will be longer.
- <p>
- The returned driver identifier is only valid as long as the
- file driver remains registered.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access or data transfer property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a valid low-level driver identifier if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_driver_f
- <dd>
- <pre>
-SUBROUTINE h5pget_driver_f(prp_id, driver, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: driver ! Low-level file driver identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_driver_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- ********** MOVED TO TechNotes/VFLfunc.html **********
-
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetDriverInfo">H5Pget_driver_info</a>
- <dt><strong>Signature:</strong>
- <dd><em>void *</em><code>H5Pget_driver_info</code>(
- <em>hid_t</em> <code>plist_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns a pointer to file driver information.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_driver_info</code> returns a pointer to
- file driver-specific information for the low-level driver
- associated with the file access or data transfer property list
- <code>plist_id</code>.
-
- <p>
- <font color=red><b><i>Need more on "a pointer" or on what
- is "pointed to." Might this be the <code>driver_info</code>
- struct definition in <code>H5Pset_driver</code>?</i></b></font>
-
- <p>
- If no driver-specific properties have been registered,
- <code>H5Pget_driver_info</code> returns <code>NULL</code>.
- <dt><strong>Parameters:</strong>
- <dl>
- <dt><em>hid_t</em> <code>plist_id</code>
- <dd>IN: File access or data transfer property list identifier.
- </dl>
- <dt><strong>Returns:</strong>
- <dd>Returns a pointer to the struct containing
- low-level driver information.
- Otherwise returns <code>NULL</code>.
- <p>
- <code>NULL</code> is also returned if no driver-specific properties
- have been registered.
- No error is pushed on the stack in this case.
- <dt><strong>Non-C API(s):</strong>
- <dd><a href="fortran/h5p_FORTRAN.html#h5pxxx_f"
- target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a>
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
-</dl>
-
--->
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_dxpl_mpio" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetDxplMpio">H5Pget_dxpl_mpio</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_dxpl_mpio</code>(
- <em>hid_t</em> <code>dxpl_id</code>,
- <em>H5FD_mpio_xfer_t *</em><code>xfer_mode</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns the data transfer mode.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_dxpl_mpio</code> queries the data transfer mode
- currently set in the data transfer property list <code>dxpl_id</code>.
- <p>
- Upon return, <code>xfer_mode</code> contains the data transfer mode,
- if it is non-null.
- <p>
- <code>H5Pget_dxpl_mpio</code> is not a collective function.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dxpl_id</code></td>
- <td valign="top">IN: Data transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5FD_mpio_xfer_t&nbsp;*</em><code>xfer_mode&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Data transfer mode.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_dxpl_mpio_f
- <dd>
- <pre>
-SUBROUTINE h5pget_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: data_xfer_mode ! Data transfer mode
- ! Possible values are:
- ! H5FD_MPIO_INDEPENDENT_F
- ! H5FD_MPIO_COLLECTIVE_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_dxpl_mpio_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_dxpl_multi" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetDxplMulti">H5Pget_dxpl_multi</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_dxpl_multi</code>(
- <em>hid_t</em> <code>dxpl_id</code>,
- <em>const hid_t *</em><code>memb_dxpl</code>
- )
-<br>
-<br>
- <dt><strong>Purpose:</strong>
- <dd>Returns multi-file data transfer property list information.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_dxpl_multi</code> returns the data transfer property list
- information for the multi-file driver.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dxpl_id</code>,</td>
- <td valign="top">IN: Data transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hid_t&nbsp;*</em><code>memb_dxpl&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Array of data access property lists.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_edc_check" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetEdcCheck">H5Pget_edc_check</a>
- <dt><strong>Signature:</strong>
- <dd><em>H5Z_EDC_t</em> <code>H5Pget_edc_check</code>(<em>hid_t</em> <code>plist</code>)
- <dt><strong>Purpose:</strong>
- <dd>Determines whether error-detection is enabled for dataset reads.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_edc_check</code> queries the dataset transfer property
- list <code>plist</code> to determine whether error detection
- is enabled for data read operations.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Dataset transfer property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns <code>H5Z_ENABLE_EDC</code> or <code>H5Z_DISABLE_EDC</code>
- if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_edc_check_f
- <dd>
- <pre>
-SUBROUTINE h5pget_edc_check_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property list
- ! identifier
- INTEGER, INTENT(OUT) :: flag ! EDC flag; possible values
- ! H5Z_DISABLE_EDC_F
- ! H5Z_ENABLE_EDC_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_edc_check_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_external" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetExternal">H5Pget_external</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_external</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned</em> <code>idx</code>,
- <em>size_t</em> <code>name_size</code>,
- <em>char</em> <code>*name</code>,
- <em>off_t</em> <code>*offset</code>,
- <em>hsize_t</em> <code>*size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns information about an external file.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_external</code> returns information about an external
- file. The external file is specified by its index, <code>idx</code>,
- which is a number from zero to N-1, where N is the value
- returned by <code>H5Pget_external_count</code>.
- At most <code>name_size</code> characters are copied into the
- <code>name</code> array. If the external file name is
- longer than <code>name_size</code> with the null terminator, the
- return value is not null terminated (similar to <code>strncpy()</code>).
- <p>
- If <code>name_size</code> is zero or <code>name</code> is the
- null pointer, the external file name is not returned.
- If <code>offset</code> or <code>size</code> are null pointers
- then the corresponding information is not returned.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of a dataset creation property list.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>idx</code></td>
- <td valign="top">IN: External file index.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>name_size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Maximum length of <code>name</code> array.</td></tr>
- <tr>
- <td valign="top"><em>char</em> <code>*name</code></td>
- <td valign="top">OUT: Name of the external file.</td></tr>
- <tr>
- <td valign="top"><em>off_t</em> <code>*offset</code></td>
- <td valign="top">OUT: Pointer to a location to return an offset value.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>*size</code></td>
- <td valign="top">OUT: Pointer to a location to return the size of the
- external file data.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_external_f
- <dd>
- <pre>
-SUBROUTINE h5pget_external_f(prp_id, idx, name_size, name, offset,bytes, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: idx ! External file index.
- INTEGER, INTENT(IN) :: name_size ! Maximum length of name array
- CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of an external file
- INTEGER, INTENT(OUT) :: offset ! Offset, in bytes, from the
- ! beginning of the file to the
- ! location in the file where
- ! the data starts.
- INTEGER(HSIZE_T), INTENT(OUT) :: bytes ! Number of bytes reserved in
- ! the file for the data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_external_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_external_count" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetExternalCount">H5Pget_external_count</a>
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Pget_external_count</code>(<em>hid_t</em> <code>plist</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns the number of external files for a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_external_count</code> returns the number of external files
- for the specified dataset.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of a dataset creation property list.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the number of external files if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_external_count_f
- <dd>
- <pre>
-SUBROUTINE h5pget_external_count_f (prp_id, count, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: count ! Number of external files for
- ! the specified dataset
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_external_count_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_family_offset" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFamilyOffset">H5Pget_family_offset</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_family_offset</code> (
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t *</em><code>offset</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves a data offset from the file access property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_family_offset</code> retrieves the value of <code>offset</code>
- from the file access property list <code>fapl_id</code>
- so that the user application
- can retrieve a file handle for low-level access to a particular member
- of a family of files. The file handle is retrieved with a separate call
- to <a href="RM_H5F.html#File-GetVfdHandle"><code>H5Fget_vfd_handle</code></a>
- (or, in special circumstances, to <code>H5FDget_vfd_handle</code>;
- see <cite>Virtual File Layer</cite> and <cite>List of VFL Functions</cite>
- in <a href="TechNotes.html"><cite>HDF5 Technical Notes</cite></a>).
- <p>
- The data offset returned in <code>offset</code> is the offset
- of the data in the HDF5 file that is stored on disk in the selected
- member file in a family of files.
- <p>
- Use of this function is only appropriate for an HDF5 file written as a
- family of files with the <code>FAMILY</code> file driver.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t&nbsp;*</em><code>offset&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Offset in bytes within the HDF5 file.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_core" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplCore">H5Pget_fapl_core</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_core</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>size_t</em> *<code>increment</code>,
- <em>hbool_t</em> *<code>backing_store</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Queries core file driver properties.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fapl_core</code> queries the <code>H5FD_CORE</code>
- driver properties as set by <code>H5Pset_fapl_core</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> *<code>increment</code></td>
- <td valign="top">OUT: Size, in bytes, of memory increments.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em>&nbsp;*<code>backing_store&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Boolean flag indicating whether to write the file
- contents to disk when the file is closed.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fapl_core_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fapl_core_f(prp_id, increment, backing_store, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(SIZE_T), INTENT(OUT) :: increment ! File block size in bytes
- LOGICAL, INTENT(OUT) :: backing_store ! Flag to indicate that entire
- ! file contents are flushed to
- ! a file with the same name as
- ! this core file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_fapl_core_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_family" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplFamily">H5Pget_fapl_family</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_family</code> (
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t *</em><code>memb_size</code>,
- <em>hid_t *</em><code>memb_fapl_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns file access property list information.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fapl_family</code> returns file access property list
- for use with the family driver.
- This information is returned through the output parameters.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em> hsize_t *</em><code>memb_size</code></td>
- <td valign="top">OUT: Size in bytes of each file member.</td></tr>
- <tr>
- <td valign="top"><em>hid_t&nbsp;*</em><code>memb_fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Identifier of file access property list for each
- family member.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fapl_family_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fapl_family_f(prp_id, imemb_size, memb_plist, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: memb_size ! Logical size, in bytes,
- ! of each family member
- INTEGER(HID_T), INTENT(OUT) :: memb_plist ! Identifier of the file
- ! access property list to be
- ! used for each family member
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_fapl_family_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_gass" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplGass">H5Pget_fapl_gass</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_gass</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>GASS_Info *</em><code>info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves GASS information.
- <dt><strong>Description:</strong>
- <dd>If the file access property list <code>fapl_id</code> is set
- for use of the <code>H5FD_GASS</code> driver,
- <code>H5Pget_fapl_gass</code> returns the <em>GASS_Info</em>
- object through the <code>info</code> pointer.
- <p>
- The <em>GASS_Info</em> information is copied, so it is valid
- only until the file access property list is modified or closed.
- <dt><strong>Note:</strong>
- <dd><code>H5Pget_fapl_gass</code> is an experimental function.
- It is designed for use only when accessing files via the
- GASS facility of the Globus environment.
- For further information, see
- <a href="http://www.globus.org/">http//www.globus.org/</a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code>,</td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>GASS_Info&nbsp;*</em><code>info&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to the GASS information structure.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_mpio" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplMpio">H5Pget_fapl_mpio</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_mpio</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>MPI_Comm *</em><code>comm</code>,
- <em>MPI_Info *</em><code>info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd> Returns MPI communicator information.
- <dt><strong>Description:</strong>
- <dd>If the file access property list is set to the <code>H5FD_MPIO</code>
- driver, <code>H5Pget_fapl_mpio</code> returns the MPI communicator and
- information through the <code>comm</code> and <code>info</code>
- pointers, if those values are non-null.
- <p>
- Neither <code>comm</code> nor <code>info</code> is copied,
- so they are valid only until the file access property list
- is either modified or closed.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>MPI_Comm&nbsp;*</em><code>comm&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: MPI-2 communicator.</td></tr>
- <tr>
- <td valign="top"><em>MPI_Info *</em><code>info</code></td>
- <td valign="top">OUT: MPI-2 info object.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fapl_mpio_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fapl_mpio_f(prp_id, comm, info, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: comm ! Buffer to return communicator
- INTEGER, INTENT(IN) :: info ! Buffer to return info object as
- ! defined in MPI_FILE_OPEN of MPI-2
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_fapl_mpio_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_mpiposix" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplMpiPosix">H5Pget_fapl_mpiposix</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_mpiposix</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>MPI_Comm *</em><code>comm</code>
- )
- <dt><strong>Purpose:</strong>
- <dd> Returns MPI communicator information.
- <dt><strong>Description:</strong>
- <dd>If the file access property list is set to the <code>H5FD_MPIO</code>
- driver, <code>H5Pget_fapl_mpiposix</code> returns
- the MPI communicator through the <code>comm</code>
- pointer, if those values are non-null.
- <p>
- <code>comm</code> is not copied, so it is valid only
- until the file access property list is either modified or closed.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>MPI_Comm&nbsp;*</em><code>comm&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: MPI-2 communicator.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fapl_mpiposix_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: comm ! Buffer to return communicator
- LOGICAL, INTENT(OUT) :: use_gpfs
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5pget_fapl_mpiposix_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_multi" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplMulti">H5Pget_fapl_multi</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_multi</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>const H5FD_mem_t *</em><code>memb_map</code>,
- <em>const hid_t *</em><code>memb_fapl</code>,
- <em>const char **</em><code>memb_name</code>,
- <em>const haddr_t *</em><code>memb_addr</code>,
- <em>hbool_t *</em><code>relax</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns information about the multi-file access property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fapl_multi</code> returns information about the
- multi-file access property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;H5FD_mem_t&nbsp;*</em><code>memb_map&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Maps memory usage types to other memory usage types.</td></tr>
- <tr>
- <td valign="top"><em>const hid_t *</em><code>memb_fapl</code></td>
- <td valign="top">OUT: Property list for each memory usage type.</td></tr>
- <tr>
- <td valign="top"><em>const char **</em><code>memb_name</code></td>
- <td valign="top">OUT: Name generator for names of member files.</td></tr>
- <tr>
- <td valign="top"><em>const haddr_t *</em><code>memb_addr</code></td>
- <td valign="top">OUT:</td></tr>
- <tr>
- <td valign="top"><em>hbool_t *</em><code>relax</code></td>
- <td valign="top">OUT: Allows read-only access to incomplete file sets
- when <code>TRUE</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fapl_multi_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name,
- memb_addr, relax, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T),INTENT(IN) :: prp_id ! Property list identifier
-
- INTEGER,DIMENSION(0:H5FD_MEM_NTYPES_F-1),INTENT(OUT) :: memb_map
- INTEGER(HID_T),DIMENSION(0:H5FD_MEM_NTYPES_F-1),INTENT(OUT) :: memb_fapl
- CHARACTER(LEN=*),DIMENSION(0:H5FD_MEM_NTYPES_F-1),INTENT(OUT) :: memb_name
- REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(OUT) :: memb_addr
- ! Numbers in the interval [0,1) (e.g. 0.0 0.1 0.5 0.2 0.3 0.4)
- ! real address in the file will be calculated as X*HADDR_MAX
-
- LOGICAL, INTENT(OUT) :: relax
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_fapl_multi_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_srb" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplSrb">H5Pget_fapl_srb</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_srb</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>SRB_Info *</em><code>info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves SRB information.
- <dt><strong>Description:</strong>
- <dd>If the file access property list <code>fapl_id</code> is set
- for use of the <code>H5FD_SRB</code> driver,
- <code>H5Pget_fapl_srb</code> returns the <em>SRB_Info</em>
- object through the <code>info</code> pointer.
- <p>
- The <em>SRB_Info</em> information is copied, so it is valid
- only until the file access property list is modified or closed.
- <dt><strong>Note:</strong>
- <dd><code>H5Pset_fapl_gass</code> is an experimental function.
- It is designed for use only when accessing files via the
- Storage Resource Broker (SRB). For further information, see
- <a href="http://www.npaci.edu/Research/DI/srb/">http//www.npaci.edu/Research/DI/srb/</a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>SRB_Info&nbsp;*</em><code>info&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to the SRB information structure.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_stream" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFaplStream">H5Pget_fapl_stream</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fapl_stream</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>H5FD_stream_fapl_t *</em><code>fapl</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns the streaming I/O driver settings.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fapl_stream</code> returns the file access properties
- set for the use of the streaming I/O driver.
- <p>
- <code>H5Pset_fapl_stream</code> and <code>H5Pget_fapl_stream</code>
- are not intended for use in a parallel environment.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5FD_stream_fapl_t&nbsp;*</em><code>fapl&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: The streaming I/O file access property list.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fclose_degree" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFcloseDegree">H5Pget_fclose_degree</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fclose_degree</code>(<em>hid_t</em> <code>fapl_id</code>,
- <em>H5F_close_degree_t *</em><code>fc_degree</code>)
- <dt><strong>Purpose:</strong>
- <dd>Returns the file close degree.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fclose_degree</code> returns the current setting of the file
- close degree property <code>fc_degree</code> in the file access property list
- <code>fapl_id</code>. 
- <p> The value of <code>fc_degree</code> determines how aggressively <code>H5Fclose</code>
- deals with objects within a file that remain open when <code>H5Fclose</code>
- is called to close that file.  <code>fc_degree</code> can have any one of
- four valid values as described above in <a href="#Property-SetFcloseDegree"><code>H5Pset_fclose_degree</code></a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5F_close_degree_t&nbsp;*</em><code>fc_degree&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to a location to which to return the file close degree
- property, the value of <code>fc_degree</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful. Otherwise returns a negative
- value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fclose_degree_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fclose_degree_f(fapl_id, degree, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier
- INTEGER, INTENT(OUT) :: degree ! Info about file close behavior
- ! Possible values:
- ! H5F_CLOSE_DEFAULT_F
- ! H5F_CLOSE_WEAK_F
- ! H5F_CLOSE_SEMI_F
- ! H5F_CLOSE_STRONG_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_fclose_degree_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fill_time" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFillTime">H5Pget_fill_time</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_fill_time</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_fill_time_t *</em><code>fill_time</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the time when fill value are written to a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fill_time</code> examines the dataset creation
- property list <code>plist_id</code> to determine when fill values
- are to be written to a dataset.
- <p>
- Valid values returned in <code>fill_time</code> are as follows:
- <table border=0 >
- <tr valign="top"><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5D_FILL_TIME_IFSET</code>&nbsp;&nbsp;
- </td><td>
- Fill values are written to the dataset when storage space is allocated
- only if there is a user-defined fill value, i.e., one set with
- <a href="#Property-SetFillValue">H5Pset_fill_value</a>.
- &nbsp;&nbsp;(Default)
- </td></tr><tr valign="top"><td>&nbsp;</td><td>
- <code>H5D_FILL_TIME_ALLOC</code>&nbsp;&nbsp;
- </td><td>
- Fill values are written to the dataset when storage space is allocated.
- </td></tr><tr valign="top"><td>&nbsp;</td><td>
- <code>H5D_FILL_TIME_NEVER</code>
- </td><td>
- Fill values are never written to the dataset.
- </td></tr></table>
- <dt><strong>Note:</strong>
- <dd><code>H5Pget_fill_time</code> is designed to work in coordination
- with the dataset fill value and
- dataset storage allocation time properties, retrieved with the functions
- <code>H5Pget_fill_value</code> and <code>H5Pget_alloc_time</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5D_fill_time_t&nbsp;*</em><code>fill_time&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Setting for the timing of writing fill values to the dataset.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fill_time_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fill_time_f(plist_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property
- ! list identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: flag ! Fill time flag
- ! Possible values are:
- ! H5D_FILL_TIME_ERROR_F
- ! H5D_FILL_TIME_ALLOC_F
- ! H5D_FILL_TIME_NEVER_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_fill_time_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fill_value" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFillValue">H5Pget_fill_value</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_fill_value</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>void *</em><code>value</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves a dataset fill value.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_fill_value</code> returns the dataset
- fill value defined in the dataset creation property list
- <code>plist_id</code>.
- <p>
- The fill value is returned through the <code>value</code>
- pointer and will be converted to the datatype specified
- by <code>type_id</code>.
- This datatype may differ from the
- fill value datatype in the property list,
- but the HDF5 library must be able to convert between the
- two datatypes.
- <p>
- If the fill value is undefined,
- i.e., set to <code>NULL</code> in the property list,
- <code>H5Pget_fill_value</code> will return an error.
- <code>H5Pfill_value_defined</code> should be used to
- check for this condition before
- <code>H5Pget_fill_value</code> is called.
- <p>
- Memory must be allocated by the calling application.
- <dt><strong>Note:</strong>
- <dd><code>H5Pget_fill_value</code> is designed to coordinate
- with the dataset storage allocation time and
- fill value write time properties, which can be retrieved
- with the functions <code>H5Pget_alloc_time</code>
- and <code>H5Pget_fill_time</code>, respectively.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code>,</td>
- <td valign="top">IN: Datatype identifier for the value passed
- via <code>value</code>.</td></tr>
- <tr><td valign="top"><em>void *</em><code>value</code></td>
- <td valign="top">OUT: Pointer to buffer to contain the returned fill value.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_fill_value_f
- <dd>
- <pre>
-SUBROUTINE h5pget_fill_value_f(prp_id, type_id, fillvalue, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of fill
- ! value datatype (in memory)
- TYPE(VOID), INTENT(IN) :: fillvalue ! Fillvalue
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-
-END SUBROUTINE h5pget_fill_value_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_filter" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFilter">H5Pget_filter</a>
- <dt><strong>Signature:</strong>
- <dd><em>H5Z_filter_t</em> <code>H5Pget_filter</code>(<em>hid_t</em> <code>plist</code>,
- <em>int</em> <code>filter_number</code>,
- <em>unsigned int *</em><code>flags</code>,
- <em>size_t *</em><code>cd_nelmts</code>,
- <em>unsigned int *</em><code>cd_values</code>,
- <em>size_t</em> <code>namelen</code>,
- <em>char</em> <code>name[]</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns information about a filter in a pipeline.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_filter</code> returns information about a
- filter, specified by its filter number, in a filter pipeline,
- specified by the property list with which it is associated.
- <p>
- If <code>plist</code> is a dataset creation property list,
- the pipeline is a permanent filter pipeline;
- if <code>plist</code> is a dataset transfer property list,
- the pipeline is a transient filter pipeline.
- <p>
- On input, <code>cd_nelmts</code> indicates the number of entries
- in the <code>cd_values</code> array, as allocated by the caller;
- on return,<code>cd_nelmts</code> contains the number of values
- defined by the filter.
- <p>
- <code>filter_number</code> is a value between zero and
- <em>N</em>-1, as described in
- <a href="#Property-GetNFilters"><code>H5Pget_nfilters</code></a>.
- The function will return a negative value if the filter number
- is out of range.
- <p>
- If <code>name</code> is a pointer to an array of at least
- <code>namelen</code> bytes, the filter name will be copied
- into that array. The name will be null terminated if
- <code>namelen</code> is large enough. The filter name returned
- will be the name appearing in the file, the name registered
- for the filter, or an empty string.
- <p>
- The structure of the <code>flags</code> argument is discussed
- in <a href="#Property-SetFilter"><code>H5Pset_filter</code></a>.
- <dt><strong>Note:</strong>
- <dd>This function currently supports only the permanent filter
- pipeline; <code>plist</code> must be a dataset creation property
- list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>filter_number</code></td>
- <td valign="top">IN: Sequence number within the filter pipeline of
- the filter for which information is sought.</td></tr>
- <tr>
- <td valign="top"><em>unsigned int *</em><code>flags</code></td>
- <td valign="top">OUT: Bit vector specifying certain general properties
- of the filter.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>cd_nelmts</code></td>
- <td valign="top">IN/OUT: Number of elements in <code>cd_values</code>.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;int&nbsp;*</em><code>cd_values&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Auxiliary data for the filter.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>namelen</code></td>
- <td valign="top">IN: Anticipated number of characters in <code>name</code>.</td></tr>
- <tr>
- <td valign="top"><em>char</em> <code>name[]</code></td>
- <td valign="top">OUT: Name of the filter.</td></tr>
- </table></ul>
-<!-- NEW PAGE -->
- <dt><strong>Returns:</strong>
- <dd>Returns the filter identifier if successful:
- <center>
- <table width=75%>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_DEFLATE</code>
- </td><td>
- Data compression filter, employing the gzip algorithm
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_SHUFFLE</code>
- </td><td>
- Data shuffling filter
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_FLETCHER32&nbsp;&nbsp;</code>
- </td><td>
- Error detection filter, employing the Fletcher32 checksum algorithm
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_SZIP</code>
- </td><td>
- Data compression filter, employing the SZIP algorithm
- </td></tr>
- </table>
- </center>
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_filter_f
- <dd>
- <pre>
-SUBROUTINE h5pget_filter_f(prp_id, filter_number, flags, cd_nelmts,
- cd_values, namelen, name, filter_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: filter_number ! Sequence number within the filter
- ! pipeline of the filter for which
- ! information is sought
- INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values
- ! Auxiliary data for the filter
- INTEGER, INTENT(OUT) :: flags ! Bit vector specifying certain
- ! general properties of the filter
- INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts
- ! Number of elements in cd_values
- INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters
- ! in name
- CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of the filter
- INTEGER, INTENT(OUT) :: filter_id ! Filter identification number
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_filter_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_filter_by_id" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetFilterById">H5Pget_filter_by_id</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_filter_by_id</code>(
- <em>hid_t</em> <code>plist_id</code>,
- <em>H5Z_filter_t</em> <code>filter</code>,
- <em>unsigned int *</em><code>flags</code>,
- <em>size_t *</em><code>cd_nelmts</code>,
- <em>unsigned int</em> <code>cd_values[]</code>,
- <em>size_t</em> <code>namelen</code>,
- <em>char </em><code>name[]</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns information about the specified filter.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_filter_by_id</code> returns information about the
- filter specified in <code>filter</code>, a filter identifier.
- <p>
- <code>plist_id</code> must identify a dataset creation property list
- and <code>filter</code> will be in a permanent filter pipeline.
- <p>
- The <code>filter</code> and <code>flags</code> parameters are used
- in the same manner as described in the discussion of
- <a href="#Property-SetFilter"><code>H5Pset_filter</code></a>.
- <p>
- Aside from the fact that they are used for output, the
- parameters <code>cd_nelmts</code> and <code>cd_values[]</code> are
- used in the same manner as described in the discussion
- of <a href="#Property-SetFilter"><code>H5Pset_filter</code></a>.
- On input, the <code>cd_nelmts</code> parameter indicates the
- number of entries in the <code>cd_values[]</code> array
- allocated by the calling program; on exit it contains the
- number of values defined by the filter.
- <p>
- On input, the <code>name_len</code> parameter indicates the
- number of characters allocated for the filter name
- by the calling program in the array <code>name[]</code>.
- On exit it contains the length in characters of name of the filter.
- On exit <code>name[]</code> contains the name of the filter
- with one character of the name in each element of the array.
- <p>
- If the filter specified in <code>filter</code> is not
- set for the property list, an error will be returned
- and <code>H5Pget_filter_by_id</code> will fail.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5Z_filter_t</em> <code>filter</code></td>
- <td valign="top">IN: Filter identifier.</td></tr>
- <tr>
- <td valign="top"><em>unsigned int</em> <code>flags</code></td>
- <td valign="top">OUT: Bit vector specifying certain general properties
- of the filter.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>cd_nelmts</code></td>
- <td valign="top">IN/OUT: Number of elements in <code>cd_values</code>.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;unsigned&nbsp;int</em>&nbsp;<code>cd_values[]&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Auxiliary data for the filter.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>namelen</code></td>
- <td valign="top">IN/OUT: Length of filter name and
- number of elements in <code>name[]</code>.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>name[]</code></td>
- <td valign="top">OUT: Name of filter.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<!-- NEW PAGE -->
- <dt><strong>Fortran90 Interface:</strong> h5pget_filter_by_id_f
- <dd>
- <pre>
-SUBROUTINE h5pget_filter_by_id_f(prp_id, filter_id, flags, cd_nelmts,
- cd_values, namelen, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: filter_id ! Filter identifier
- INTEGER(SIZE_T), INTENT(INOUT) :: cd_nelmts
- ! Number of elements in cd_values
- INTEGER, DIMENSION(*), INTENT(OUT) :: cd_values
- ! Auxiliary data for the filter
- INTEGER, INTENT(OUT) :: flags ! Bit vector specifying certain
- ! general properties of the filter
- INTEGER(SIZE_T), INTENT(IN) :: namelen ! Anticipated number of characters
- ! in name
- CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of the filter
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_filter_by_id_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_gc_references" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetGCReferences">H5Pget_gc_references</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_gc_references</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned</em> *<code>gc_ref</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns garbage collecting references setting.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_gc_references</code> returns the current setting
- for the garbage collection references property from
- the specified file access property list.
- The garbage collection references property is set
- by <a href="#Property-SetGCReferences">H5Pset_gc_references</a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em>&nbsp;<code>gc_ref&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Flag returning the state of reference garbage collection.
- A returned value of <code>1</code> indicates that
- garbage collection is on while
- <code>0</code> indicates that garbage collection is off.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_gc_references_f
- <dd>
- <pre>
-SUBROUTINE h5pget_gc_references_f (prp_id, gc_reference, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: gc_reference ! The flag for garbage collecting
- ! references for the file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_gc_references_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_hyper_vector_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetHyperVectorSize">H5Pget_hyper_vector_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_hyper_vector_size</code>(<em>hid_t</em> <code>dxpl_id</code>,
- <em>size_t *</em><code>vector_size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves number of I/O vectors to be read/written in hyperslab I/O.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_hyper_vector_size</code> retrieves the number of
- I/O vectors to be accumulated in memory before being issued
- to the lower levels of the HDF5 library for reading or writing the
- actual data.
- <p>
- The number of I/O vectors set in the dataset transfer property list
- <code>dxpl_id</code> is returned in <code>vector_size</code>.
- Unless the default value is in use, <code>vector_size</code>
- was previously set with a call to
- <a href="#Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dxpl_id</code></td>
- <td valign="top">IN: Dataset transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>size_t&nbsp;*</em><code>vector_size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Number of I/O vectors to accumulate in memory for I/O operations.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_hyper_vector_size_f
- <dd>
- <pre>
-SUBROUTINE h5pget_hyper_vector_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list
- ! identifier
- INTEGER(SIZE_T), INTENT(OUT) :: size ! Vector size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_hyper_vector_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_istore_k" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetIstoreK">H5Pget_istore_k</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_istore_k</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned *</em> <code>ik</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Queries the 1/2 rank of an indexed storage B-tree.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_istore_k</code> queries the 1/2 rank of
- an indexed storage B-tree.
- The argument <code>ik</code> may be the null pointer (NULL).
- This function is only valid for file creation property lists.
- <p>
- See <a href="#Property-SetIstoreK">H5Pset_istore_k</a> for details.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of property list to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>ik</code></td>
- <td valign="top">OUT: Pointer to location to return the chunked storage B-tree 1/2 rank.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_istore_k_f
- <dd>
- <pre>
-SUBROUTINE h5pget_istore_k_f(prp_id, ik, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: ik ! 1/2 rank of chunked storage B-tree
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_istore_k_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_layout" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetLayout">H5Pget_layout</a>
- <dt><strong>Signature:</strong>
- <dd><em>H5D_layout_t</em> <code>H5Pget_layout</code>(<em>hid_t</em> <code>plist</code>)
- <dt><strong>Purpose:</strong>
- <dd>Returns the layout of the raw data for a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_layout</code> returns the layout of the raw data for
- a dataset. This function is only valid for dataset creation
- property lists.
- <p>
- Note that a compact storage layout may affect writing data to
- the dataset with parallel applications. See note in
- <a href="RM_H5D.html#Dataset-Write">H5Dwrite</a>
- documentation for details.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier for property list to query.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the layout type (a non-negative value)
- of a dataset creation property list if successful.
- Valid return values are:
- <ul> <dl>
- <dt>H5D_COMPACT
- <dd>Raw data is stored in the object header in the file.
- <dt>H5D_CONTIGUOUS
- <dd>Raw data is stored separately from the object header in
- one contiguous chunk in the file.
- <dt>H5D_CHUNKED
- <dd>Raw data is stored separately from the object header in
- chunks in separate locations in the file.
- </dl> </ul>
- <p>
- Otherwise, returns a negative value indicating failure.
- <dt><strong>Fortran90 Interface:</strong> h5pget_layout_f
- <dd>
- <pre>
-SUBROUTINE h5pget_layout_f (prp_id, layout, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: layout ! Type of storage layout for raw data
- ! possible values are:
- ! H5D_COMPACT_F
- ! H5D_CONTIGUOUS_F
- ! H5D_CHUNKED_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_layout_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_mdc_config" -->
-<!--
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetMdcConfig">H5Pget_mdc_config</a>
- <dt><strong>Signature:</strong>
- <dt><strong>Purpose:</strong>
- <dt><strong>Description:</strong>
- <dt><strong>Parameters:</strong>
- <dt><strong>Returns:</strong>
- <dt><strong>Fortran90 Interface:</strong>
-</dl>
--->
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_meta_block_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetMetaBlockSize">H5Pget_meta_block_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_meta_block_size</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t *</em><code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Returns the current metadata block size setting.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_meta_block_size</code> returns the current
- minimum size, in bytes, of new metadata block allocations.
- This setting is retrieved from the file access property list
- <code>fapl_id</code>.
- <p>
- This value is set by
- <a href="#Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
- and is retrieved from the file access property list
- <code>fapl_id</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>size</code></td>
- <td valign="top">OUT: Minimum size, in bytes, of metadata block allocations.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_meta_block_size_f
- <dd>
- <pre>
-SUBROUTINE h5pget_meta_block_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list
- ! identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: size ! Metadata block size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_meta_block_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_multi_type" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetMultiType">H5Pget_multi_type</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_multi_type</code> (
- <em>hid_t</em> <code>fapl_id</code>,
- <em>H5FD_mem_t *</em><code>type</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves data type property for <code>MULTI</code> driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_multi_type</code> retrieves the data type setting from the
- file access or data transfer property list <code>fapl_id</code>.
- This enables a user application to specify the type of data the
- application wishes to access so that the application
- can retrieve a file handle for low-level access to the particular member
- of a set of <code>MULTI</code> files in which that type of data is stored.
- The file handle is retrieved with a separate call
- to <a href="RM_H5F.html#File-GetVfdHandle"><code>H5Fget_vfd_handle</code></a>
- (or, in special circumstances, to <code>H5FDget_vfd_handle</code>;
- see <cite>Virtual File Layer</cite> and <cite>List of VFL Functions</cite>
- in <a href="TechNotes.html"><cite>HDF5 Technical Notes</cite></a>).
- <p>
- The type of data returned in <code>type</code> will be one of those
- listed in the discussion of the <code>type</code> parameter in the the
- description of the function
- <a href="#Property-SetMultiType"><code>H5Pset_multi_type</code></a>.
- <p>
- Use of this function is only appropriate for an HDF5 file written
- as a set of files with the <code>MULTI</code> file driver.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list or data transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5FD_mem_t&nbsp;*</em><code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Type of data.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_nfilters" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetNFilters">H5Pget_nfilters</a>
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Pget_nfilters</code>(<em>hid_t</em> <code>plist</code>)
- <dt><strong>Purpose:</strong>
- <dd>Returns the number of filters in the pipeline.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_nfilters</code> returns the number of filters
- defined in the filter pipeline associated with the property list
- <code>plist</code>.
- <p>
- In each pipeline, the filters are numbered from
- 0 through <em>N</em>-1, where <em>N</em> is the value returned
- by this function. During output to the file, the filters are
- applied in increasing order; during input from the file, they
- are applied in decreasing order.
- <p>
- <code>H5Pget_nfilters</code> returns the number of filters
- in the pipeline, including zero (<code>0</code>) if there
- are none.
- <dt><strong>Note:</strong>
- <dd>This function currently supports only the permanent filter
- pipeline; <code>plist_id</code> must be a dataset creation
- property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns the number of filters in the pipeline if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_nfilters_f
- <dd>
- <pre>
-SUBROUTINE h5pget_nfilters_f(prp_id, nfilters, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property
- ! list identifier
- INTEGER, INTENT(OUT) :: nfilters ! The number of filters in
- ! the pipeline
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_nfilters_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_nprops" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetNProps">H5Pget_nprops</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Pget_nprops</code>(
- <em>hid_t</em> <code>id</code>,
- <em>size_t *</em><code>nprops</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Queries number of properties in property list or class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_nprops</code> retrieves the number of properties in a
- property list or class.
- If a property class identifier is given, the number of registered
- properties in the class is returned in <code>nprops</code>.
- If a property list identifier is given, the current number of
- properties in the list is returned in <code>nprops</code>.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>id</code></td>
- <td>IN: Identifier of property object to query</td></tr>
- <tr>
- <td><em>size_t&nbsp;*</em><code>nprops&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>OUT: Number of properties in object</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pget_nprops_f
- <dd>
- <pre>
-SUBROUTINE h5pget_nprops_f(prp_id, nprops, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(SIZE_T), INTENT(OUT) :: nprops ! Number of properties
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_nprops_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_preserve" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetPreserve">H5Pget_preserve</a>
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Pget_preserve</code>(<em>hid_t</em> <code>plist</code>)
- <dt><strong>Purpose:</strong>
- <dd>Checks status of the dataset transfer property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_preserve</code> checks the status of the
- dataset transfer property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier for the dataset transfer property list.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns TRUE or FALSE if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_preserve_f
- <dd>
- <pre>
-SUBROUTINE h5pget_preserve_f(prp_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property
- ! list identifier
- LOGICAL, INTENT(OUT) :: flag ! Status of for the dataset
- ! transfer property list
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_preserve_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_sieve_buf_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetSieveBufSize">H5Pget_sieve_buf_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_sieve_buf_size</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t *</em><code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd> Returns maximum data sieve buffer size.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_sieve_buf_size</code> retrieves, <code>size</code>,
- the current maximum size of the data sieve buffer.
- <p>
- This value is set by
- <a href="#Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
- and is retrieved from the file access property list
- <code>fapl_id</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>size</code></td>
- <td valign="top">IN: Maximum size, in bytes, of data sieve buffer.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_sieve_buf_size_f
- <dd>
- <pre>
-SUBROUTINE h5pget_sieve_buf_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list
- ! identifier
- INTEGER(SIZE_T), INTENT(OUT) :: size ! Sieve buffer size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_sieve_buf_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetSize">H5Pget_size</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Pget_size</code>(
- <em>hid_t</em> <code>id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t *</em><code>size</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Queries the size of a property value in bytes.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_size</code> retrieves the size of a
- property's value in bytes. This function operates on both
- property lists and property classes
-
- <p>
- Zero-sized properties are allowed and return <code>0</code>.
-
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>id</code></td>
- <td>IN: Identifier of property object to query</td></tr>
- <tr>
- <td><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Name of property to query</td></tr>
- <tr>
- <td><em>size_t *</em><code>size</code></td>
- <td>OUT: Size of property in bytes</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pget_size_f
- <dd>
- <pre>
-SUBROUTINE h5pget_size_f(prp_id, name, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to query
- INTEGER(SIZE_T), INTENT(OUT) :: size ! Size in bytes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_sizes" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetSizes">H5Pget_sizes</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_sizes</code>(<em>hid_t</em> <code>plist</code>,
- <em>size_t *</em> <code>sizeof_addr</code>,
- <em>size_t *</em> <code>sizeof_size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the size of the offsets and lengths used in an HDF5 file.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_sizes</code> retrieves the size of the offsets
- and lengths used in an HDF5 file.
- This function is only valid for file creation property lists.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of property list to query.</td></tr>
- <tr>
- <td valign="top"><em>size_t&nbsp;*</em>&nbsp;<code>size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to location to return offset size in bytes.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em> <code>size</code></td>
- <td valign="top">OUT: Pointer to location to return length size in bytes.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_sizes_f
- <dd>
- <pre>
-SUBROUTINE h5pget_sizes_f(prp_id, sizeof_addr, sizeof_size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(SIZE_T), DIMENSION(:), INTENT(OUT) :: sizeof_addr
- ! Size of an object address in bytes
- INTEGER(SIZE_T), DIMENSION(:), INTENT(OUT) :: sizeof_size
- ! Size of an object in bytes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_sizes_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_small_data_block_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetSmallData">H5Pget_small_data_block_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_small_data_block_size</code>(<em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t *</em><code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the current small data block size setting.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_small_data_block_size</code> retrieves the
- current setting for the size of the small data block.
- <p>
- If the returned value is zero (<code>0</code>), the small data
- block mechanism has been disabled for the file.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>size</code></td>
- <td valign="top">OUT: Maximum size, in bytes, of the small data block.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_small_data_block_size_f
- <dd>
- <pre>
-SUBROUTINE h5pget_small_data_block_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list
- ! identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: size ! Small raw data block size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_small_data_block_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_sym_k" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetSymK">H5Pget_sym_k</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_sym_k</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned *</em> <code>ik</code>,
- <em>unsigned *</em> <code>lk</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the size of the symbol table B-tree 1/2 rank
- and the symbol table leaf node 1/2 size.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_sym_k</code> retrieves the size of the
- symbol table B-tree 1/2 rank and the symbol table leaf
- node 1/2 size. This function is only valid for file creation
- property lists. If a parameter valued is set to NULL, that
- parameter is not retrieved. See the description for
- <a href="#Property-SetSymK">H5Pset_sym_k</a> for more
- information.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Property list to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>ik</code></td>
- <td valign="top">OUT: Pointer to location to return the symbol table's B-tree 1/2 rank.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>size</code></td>
- <td valign="top">OUT: Pointer to location to return the symbol table's leaf node 1/2 size.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_sym_k_f
- <dd>
- <pre>
-SUBROUTINE h5pget_sym_k_f(prp_id, ik, lk, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: ik ! Symbol table tree rank
- INTEGER, INTENT(OUT) :: lk ! Symbol table node size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_sym_k_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_userblock" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetUserblock">H5Pget_userblock</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_userblock</code>(<em>hid_t</em> <code>plist</code>,
- <em>hsize_t *</em> <code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the size of a user block.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_userblock</code> retrieves the size of a user block
- in a file creation property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for property list to query.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t&nbsp;*</em>&nbsp;<code>size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to location to return user-block size.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_userblock_f
- <dd>
- <pre>
-SUBROUTINE h5pget_userblock_f(prp_id, block_size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), DIMENSION(:), INTENT(OUT) :: block_size
- ! Size of the user-block in bytes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_userblock_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_version" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetVersion">H5Pget_version</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pget_version</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned *</em> <code>super</code>,
- <em>unsigned *</em> <code>freelist</code>,
- <em>unsigned *</em> <code>stab</code>,
- <em>unsigned *</em> <code>shhdr</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Retrieves the version information of various objects for
- a file creation property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_version</code> retrieves the version information of various objects
- for a file creation property list. Any pointer parameters which are
- passed as NULL are not queried.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of the file creation property list.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>super</code></td>
- <td valign="top">OUT: Pointer to location to return super block version number.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;*</em>&nbsp;<code>freelist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to location to return global freelist version number.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>stab</code></td>
- <td valign="top">OUT: Pointer to location to return symbol table version number.</td></tr>
- <tr>
- <td valign="top"><em>unsigned *</em> <code>shhdr</code></td>
- <td valign="top">OUT: Pointer to location to return shared object header version number.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pget_version_f
- <dd>
- <pre>
-SUBROUTINE h5pget_version_f(prp_id, boot, freelist, &amp;
- stab, shhdr, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, DIMENSION(:), INTENT(OUT) :: boot ! Array to put boot block
- ! version number
- INTEGER, DIMENSION(:), INTENT(OUT) :: freelist
- ! Array to put global
- ! freelist version number
- INTEGER, DIMENSION(:), INTENT(OUT) :: stab ! Array to put symbol table
- ! version number
- INTEGER, DIMENSION(:), INTENT(OUT) :: shhdr ! Array to put shared object
- ! header version number
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pget_version_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_vlen_mem_manager" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-GetVLMemManager">H5Pget_vlen_mem_manager</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pget_vlen_mem_manager</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5MM_allocate_t</em> *<code>alloc</code>,
- <em>void</em> **<code>alloc_info</code>,
- <em>H5MM_free_t</em> *<code>free</code>,
- <em>void</em> **<code>free_info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Gets the memory manager for variable-length datatype allocation in
- <code>H5Dread</code> and <code>H5Dvlen_reclaim</code>.
- <dt><strong>Description:</strong>
- <dd><code>H5Pget_vlen_mem_manager</code> is the companion function to
- <code>H5Pset_vlen_mem_manager</code>, returning the parameters
- set by that function.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for the dataset transfer property list.</td></tr>
- <tr>
- <td valign="top"><em>H5MM_allocate_t</em>&nbsp;<code>alloc&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: User's allocate routine, or &nbsp; <code> NULL</code>
- for system &nbsp; <code> malloc</code>.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>alloc_info</code></td>
- <td valign="top">OUT: Extra parameter for user's allocation routine.
- <br>
- Contents are ignored if preceding parameter is &nbsp;
- <code> NULL</code>.</td></tr>
- <tr>
- <td valign="top"><em>H5MM_free_t</em> <code>free</code></td>
- <td valign="top">OUT: User's free routine, or &nbsp; <code> NULL</code> for
- system <code>free</code>.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>free_info</code></td>
- <td valign="top">OUT: Extra parameter for user's free routine.
- <br>
- Contents are ignored if preceding parameter is &nbsp;
- <code> NULL</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pinsert" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Insert">H5Pinsert</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pinsert</code>(
- <em>hid_t</em> <code>plid</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t</em> <code>size</code>,
- <em>void *</em><code>value</code>,
- <em>H5P_prp_set_func_t</em> <code>set</code>,
- <em>H5P_prp_get_func_t</em> <code>get</code>,
- <em>H5P_prp_delete_func_t</em> <code>delete</code>,
- <em>H5P_prp_copy_func_t</em> <code>copy</code>,
- <em>H5P_prp_compare_func_t</em> <code>compare</code>,
- <em>H5P_prp_close_func_t</em> <code>close</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Registers a temporary property with a property list.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pinsert</code> create a new property in a property list.
- The property will exist only in this property list and copies made
- from it.
-
- <p>
- The initial property value must be provided in
- <code>value</code> and the property value will be set accordingly.
-
- <p>
- The name of the property must not already exist in this list,
- or this routine will fail.
-
- <p>
- The <code>set</code> and <code>get</code> callback routines may
- be set to NULL if they are not needed.
-
- <p>
- Zero-sized properties are allowed and do not store any data in the
- property list. The default value of a zero-size property may be set
- to NULL. They may be used to indicate the presence or absence of a
- particular piece of information.
- </p>
-
- The <code>set</code> routine is called before a new value is copied
- into the property.
- The <code>H5P_prp_set_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_set_func_t</code>)(
- <em>hid_t</em> <code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>new_value</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being modified</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property being modified</td></tr>
- <tr>
- <td><em>size_t </em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void **</em><code>new_value</code></td>
- <td>IN: Pointer to new value pointer for the property being
- modified</td></tr>
- </table></ul>
- The <code>set</code> routine may modify the value pointer to be set
- and those changes will be used when setting the property's value.
- If the <code>set</code> routine returns a negative value, the new
- property value is not copied into the property and the set routine
- returns an error value.
- The <code>set</code> routine will be called for the initial value.
- <p>
- <strong>Note:</strong>
- The <code>set</code> callback function may be useful
- to range check the value being set for the property
- or may perform some transformation or translation of the
- value set. The <code>get</code> callback would then
- reverse the transformation or translation.
- A single <code>get</code> or <code>set</code> callback
- could handle multiple properties by
- performing different actions based on the
- property name or other properties in the property list.
-
- <p>
- The <code>get</code> routine is called when a value is retrieved
- from a property value.
- The <code>H5P_prp_get_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_get_func_t</code>)(
- <em>hid_t</em> <code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- where the parameters to the callback function are:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being queried</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property being queried</td></tr>
- <tr>
- <td><em>size_t </em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em><code>value</code></td>
- <td>IN: The value of the property being returned</td></tr>
- </table></ul>
- The <code>get</code> routine may modify the value to be returned from
- the query and those changes will be preserved.
- If the <code>get</code> routine returns a negative value, the query
- routine returns an error value.
- </p>
-
- <P>
- The <code>delete</code> routine is called when a property is being
- deleted from a property list.
- The <code>H5P_prp_delete_func_t</code> callback function is defined
- as follows:
- <ul><code>typedef herr_t</code> (*<code>H5P_prp_delete_func_t</code>)(
- <em>hid_t </em><code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- where the parameters to the callback function are:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list the property is
- being deleted from</td></tr>
- <tr>
- <td><em>const char *</em> <code>name</code></td>
- <td>IN: The name of the property in the list</td></tr>
- <tr>
- <td><em>size_t </em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em> <code>value</code></td>
- <td>IN: The value for the property being deleted</td></tr>
- </table></ul>
- The <code>delete</code> routine may modify the value passed in,
- but the value is not used by the library when the <code>delete</code>
- routine returns. If the <code>delete</code> routine returns a
- negative value, the property list delete routine returns an
- error value but the property is still deleted.
- </P>
-
- <P>
- The <code>copy</code> routine is called when a new property list
- with this property is being created through a copy operation.
- The <code>H5P_prp_copy_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_copy_func_t</code>)(
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- where the parameters to the callback function are:
- <ul><table>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property being copied</td></tr>
- <tr>
- <td><em>size_t </em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em> <code>value</code></td>
- <td>IN/OUT: The value for the property being copied</td></tr>
- </table></ul>
- The <code>copy</code> routine may modify the value to be set and
- those changes will be stored as the new value of the property.
- If the <code>copy</code> routine returns a negative value, the
- new property value is not copied into the property and the
- copy routine returns an error value.
- </P>
-
- <P>
- The <code>compare</code> routine is called when a property list with
- this property is compared to another property list with the same property.
- The <code>H5P_prp_compare_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef int</em> (*<code>H5P_prp_compare_func_t</code>)(
- <em>const void *</em><code>value1</code>,
- <em>const void *</em><code>value2</code>,
- <em>size_t </em><code>size</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>const void *</em><code>value1</code></td>
- <td>IN: The value of the first property to compare</td></tr>
- <tr>
- <td><em>const void *</em><code>value2</code></td>
- <td>IN: The value of the second property to compare</td></tr>
- <tr>
- <td><em>size_t </em><code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- </table></ul>
- The <code>compare</code> routine may <EM>not</EM> modify the values.
- The <code>compare</code> routine should return a positive value if
- <code>value1</code> is greater than <code>value2</code>, a negative value
- if <code>value2</code> is greater than <code>value1</code> and zero if
- <code>value1</code> and <code>value2</code> are equal.
- </P>
-
- <P>The <code>close</code> routine is called when a property list
- with this property is being closed.
- The <code>H5P_prp_close_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_close_func_t</code>)(
- <em>hid_t</em> <code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><code>hid_t</em> <code>prop_id</em></td>
- <td>IN: The ID of the property list being closed</td></tr>
- <tr>
- <td><code>const char *</code><em>name</em></td>
- <td>IN: The name of the property in the list</td></tr>
- <tr>
- <td><code>size_t </code> <em>size</em></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><code>void *</code><em>value</em></td>
- <td>IN: The value for the property being closed</td></tr>
- </table></ul>
- The <code>close</code> routine may modify the value passed in, the value
- is not used by the library when the <code>close</code> routine returns.
- If the <code>close</code> routine returns a negative value, the
- property list close routine returns an error value but the property list
- is still closed.
-
- <p>
- <strong>Note:</strong>
- There is no <code>create</code> callback routine for temporary property
- list objects; the initial value is assumed to have any necessary setup
- already performed on it.
-
-<!-- NEW PAGE -->
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><code>hid_t</code> <code>plid</em></td>
- <td>IN: Property list identifier to create temporary property
- within</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: Name of property to create</td></tr>
- <tr>
- <td><em>size_t</em> <code>size</code></td>
- <td>IN: Size of property in bytes</td></tr>
- <tr>
- <td><em>void *</em><code>value</code></td>
- <td>IN: Initial value for the property</td></tr>
- <tr>
- <td><em>H5P_prp_set_func_t</em> <code>set</code></td>
- <td>IN: Callback routine called before a new value is copied into
- the property's value</td></tr>
- <tr>
- <td><em>H5P_prp_get_func_t</em> <code>get</code></td>
- <td>IN: Callback routine called when a property value is retrieved
- from the property</td></tr>
- <tr>
- <td><em>H5P_prp_delete_func_t</em>&nbsp;<code>delete&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Callback routine called when a property is deleted from
- a property list</td></tr>
- <tr>
- <td><em>H5P_prp_copy_func_t</em> <code>copy</code></td>
- <td>IN: Callback routine called when a property is copied from
- an existing property list</td></tr>
- <tr>
- <td><em>H5P_prp_compare_func_t</em> <code>compare</code></td>
- <td>IN: Callback routine called when a property is compared with
- another property list</td></tr>
- <tr>
- <td><em>H5P_prp_close_func_t</em> <code>close</code></td>
- <td>IN: Callback routine called when a property list is being closed
- and the property value will be disposed of</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pinsert_f
- <dd>
- <pre>
-SUBROUTINE h5pinsert_f
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist ! Property list class identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to insert
- INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value
- TYPE, INTENT(IN) :: value ! Property value
- ! Supported types are:
- ! INTEGER
- ! REAL
- ! DOUBLE PRECISION
- ! CHARACTER(LEN=*)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pinsert_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pisa_class" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-IsAClass">H5Pisa_class</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>htri_t</em> <code>H5Pisa_class</code>(
- <em>hid_t</em> <code>plist</code>,
- <em>hid_t</em> <code>pclass</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Determines whether a property list is a member of a class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pisa_class</code> checks to determine whether a property list
- is a member of the specified class.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>plist</code></td>
- <td>IN: Identifier of the property list</td></tr>
- <tr>
- <td><code>hid_t</code>&nbsp;<em>pclass&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td>IN: Identifier of the property class</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: TRUE (positive) if equal; FALSE (zero) if unequal
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pisa_class_f
- <dd>
- <pre>
-SUBROUTINE h5pisa_class_f(plist, pclass, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist ! Property list identifier
- INTEGER(HID_T), INTENT(IN) :: pclass ! Class identifier
- LOGICAL, INTENT(OUT) :: flag ! Logical flag
- ! .TRUE. if a member
- ! .FALSE. otherwise
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pisa_class_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Piterate" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Iterate">H5Piterate</a>
-
- <dt><strong>Purpose:</strong>
- <dd>Iterates over properties in a property class or list.
-
- <dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Piterate</code>(
- <em>hid_t</em> <code>id</code>,
- <em>int *</em> <code>idx</code>,
- <em>H5P_iterate_t</em> <code>iter_func</code>,
- <em>void *</em> <code>iter_data</code>
- )
-
- <dt><strong>Description:</strong>
- <p><code>H5Piterate</code> iterates over the properties in the
- property object specified in <code>id</code>, which may be either a
- property list or a property class, performing a specified
- operation on each property in turn.
-
- <p>
- For each property in the object, <code>iter_func</code> and
- the additional information specified below are passed to the
- <code>H5P_iterate_t</code> operator function.
-
- <b><i>(NOTE: <code>iter_func</code> was changed to
- <code>H5P_iterate_t</code> in the preceding sentence.
- Is this correct?)</i></b>
-
- <p>
- The iteration begins with the <code>idx</code>-th property in
- the object; the next element to be processed by the operator
- is returned in <code>idx</code>.
- If <code>idx</code> is NULL, the iterator starts at the first
- property; since no stopping point is returned in this case,
- the iterator cannot be restarted if one of the calls to its
- operator returns non-zero.
- </p>
-
- The prototype for the <code>H5P_iterate_t</code> operator is
- as follows:
- <ul> <dl>
- <dt><em>typedef herr_t</em> (*<code>H5P_iterate_t</code>)(
- <em>hid_t</em> <code>id</code>,
- <em>const char *</em><code>>name</code>,
- <em>void *</em><code>iter_data</code>
- )
- </dl> </ul>
- The operation receives the property list or class identifier for
- the object being iterated over, <code>id</code>,
- the name of the current property within the object, <code>name</code>,
- and the pointer to the operator data passed in to
- <code>H5Piterate</code>, <code>iter_data</code>.
- </p>
-
- The valid return values from an operator are as follows:
- <ul><table>
- <tr>
- <td valign=top>Zero</td>
- <td>Causes the iterator to continue, returning zero when all
- properties have been processed</td></tr>
- <tr>
- <td valign=top>Positive</td>
- <td>Causes the iterator to immediately return that positive
- value, indicating short-circuit success. The iterator can
- be restarted at the index of the next property</td></tr>
- <tr>
- <td valign=top>Negative</td>
- <td>Causes the iterator to immediately return that value,
- indicating failure. The iterator can be restarted at the
- index of the next property</td></tr>
- </table></ul>
-
- <P>
- <code>H5Piterate</code> assumes that the properties in the object
- identified by <code>id</code> remain unchanged through the iteration.
- If the membership changes during the iteration, the function's behavior
- is undefined.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>id</code></td>
- <td>IN: Identifier of property object to iterate over</td></tr>
- <tr>
- <td><em>int *</em> <code>idx</code></td>
- <td>IN/OUT: Index of the property to begin with</td></tr>
- <tr>
- <td><em>H5P_iterate_t</em>&nbsp;<code>iter_func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Function pointer to function to be called with each
- property iterated over</td></tr>
- <tr>
- <td><em>void *</em> <code>iter_data</code></td>
- <td>IN/OUT: Pointer to iteration data from user</td></tr>
- </table></ul>
-
-<dt><strong>Returns:</strong>
- <dd>Success: the return value of the last call to
- <code>iter_func</code> if it was non-zero;
- zero if all properties have been processed
- <dd>Failure: a negative value
- </table></ul>
-
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pmodify_filter" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-ModifyFilter">H5Pmodify_filter</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pmodify_filter</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5Z_filter_t</em> <code>filter</code>,
- <em>unsigned int</em> <code>flags</code>,
- <em>size_t</em> <code>cd_nelmts</code>,
- <em>const unsigned int</em> <code>cd_values[]</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Modifies a filter in the filter pipeline.
- <dt><strong>Description:</strong>
- <dd><code>H5Pmodify_filter</code> modifies the specified
- <code>filter</code> in the filter pipeline.
- <code>plist</code> must be a dataset creation property list
- and the modified filter will be in a permanent filter pipeline.
- <p>
- The <code>filter</code>, <code>flags</code>
- <code>cd_nelmts[]</code>, and <code>cd_values</code> parameters
- are used in the same manner and accept the same values as described
- in the discussion of <a href="#Property-SetFilter">H5Pset_filter</a>.
- <dt><strong>Note:</strong>
- <dd>This function currently supports only the permanent filter
- pipeline; <code>plist_id</code> must be a dataset creation
- property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5Z_filter_t</em> <code>filter</code></td>
- <td valign="top">IN: Filter to be modified.</td></tr>
- <tr>
- <td valign="top"><em>unsigned int</em> <code>flags</code></td>
- <td valign="top">IN: Bit vector specifying certain general properties
- of the filter.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>cd_nelmts</code></td>
- <td valign="top">IN: Number of elements in <code>cd_values</code>.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;unsigned&nbsp;int</em>&nbsp;<code>cd_values[]&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Auxiliary data for the filter.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-
- <dt><strong>Fortran90 Interface:</strong> h5pmodify_filter_f
- <dd>
- <pre>
-SUBROUTINE h5pmodify_filter_f(prp_id, filter, flags, cd_nelmts, &amp;
- cd_values, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: filter ! Filter to be modified
- INTEGER, INTENT(IN) :: flags ! Bit vector specifying certain
- ! general properties of the filter
- INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts ! Number of elements in cd_values
- INTEGER, DIMENSION(*), INTENT(IN) :: cd_values
- ! Auxiliary data for the filter
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pmodify_filter_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pregister" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Register">H5Pregister</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pregister</code>(
- <em>hid_t</em> <code>class</code>,
- <em>const char *</em> <code>name</code>,
- <em>size_t</em> <code>size</code>,
- <em>void *</em> <code>default</code>,
- <em>H5P_prp_create_func_t</em> <code>create</code>,
- <em>H5P_prp_set_func_t</em> <code>set</code>,
- <em>H5P_prp_get_func_t</em> <code>get</code>,
- <em>H5P_prp_delete_func_t</em> <code>delete</code>,
- <em>H5P_prp_copy_func_t</em> <code>copy</code>,
- <em>H5P_prp_compare_func_t</em> <code>compare</code>,
- <em>H5P_prp_close_func_t</em> <code>close</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Registers a permanent property with a property list class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pregister</code> registers a new property with a
- property list class.
- The property will exist in all property list objects of
- <code>class</code> created after this routine finishes. The name
- of the property must not already exist, or this routine will fail.
- The default property value must be provided and all new property
- lists created with this property will have the property value set
- to the default value. Any of the callback routines may be set to
- NULL if they are not needed.
-
- <P>
- Zero-sized properties are allowed and do not store any data in the
- property list. These may be used as flags to indicate the presence
- or absence of a particular piece of information. The default pointer
- for a zero-sized property may be set to NULL.
- The property <code>create</code> and <code>close</code> callbacks
- are called for zero-sized properties, but the <code>set</code> and
- <code>get</code> callbacks are never called.
- </P>
-
- <P>
- The <code>create</code> routine is called when a new property list
- with this property is being created.
- The <code>H5P_prp_create_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_create_func_t</code>)(
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>initial_value</code>);
- </ul>
- The parameters to this callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property being modified</td></tr>
- <tr>
- <td><em>size_t</em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em><code>initial_value</code></td>
- <td>IN/OUT: The default value for the property being created,
- which will be passed to <code>H5Pregister</code></td></tr>
- </table></ul>
- The <code>create</code> routine may modify the value to be set and
- those changes will be stored as the initial value of the property.
- If the <code>create</code> routine returns a negative value,
- the new property value is not copied into the property and the
- create routine returns an error value.
- </P>
-
- <P>
- The <code>set</code> routine is called before a new value is copied
- into the property.
- The <code>H5P_prp_set_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*H5P_prp_set_func_t)(
- <em>hid_t </em><code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>new_value</code>);
- </ul>
- The parameters to this callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being modified</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property being modified</td></tr>
- <tr>
- <td><em>size_t </em><code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void **</em><code>new_value</code></td>
- <td>IN/OUT: Pointer to new value pointer for the property being
- modified</td></tr>
- </table></ul>
- The <code>set</code> routine may modify the value pointer to be set
- and those changes will be used when setting the property's value.
- If the <code>set</code> routine returns a negative value, the new
- property value is not copied into the property and the
- <code>set</code> routine returns an error value.
- The <code>set</code> routine will not be called for the initial
- value, only the <code>create</code> routine will be called.
- <p>
- <strong>Note:</strong>
- The <code>set</code> callback function may be useful
- to range check the value being set for the property
- or may perform some transformation or translation of the
- value set. The <code>get</code> callback would then
- reverse the
- <!-- NEW PAGE -->
- transformation or translation.
- A single <code>get</code> or <code>set</code> callback
- could handle multiple properties by
- performing different actions based on the
- property name or other properties in the property list.
-
- <p>
- The <code>get</code> routine is called when a value is retrieved
- from a property value.
- The <code>H5P_prp_get_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_get_func_t</code>)(
- <em>hid_t </em><code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being queried</td></tr>
- <tr>
- <td><em>const char *</em> <code>name</code></td>
- <td>IN: The name of the property being queried</td></tr>
- <tr>
- <td><em>size_t </em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em> <code>value</code></td>
- <td>IN/OUT: The value of the property being returned</td></tr>
- </table></ul>
- The <code>get</code> routine may modify the value to be returned from
- the query and those changes will be returned to the calling routine.
- If the <code>set</code> routine returns a negative value, the query
- routine returns an error value.
- </P>
-
- <P>
- The <code>delete</code> routine is called when a property is being
- deleted from a property list.
- The <code>H5P_prp_delete_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_delete_func_t</code>)(
- <em>hid_t </em><code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list the property is being
- deleted from</td></tr>
- <tr>
- <td><em>const char *</em> <code>name</code></td>
- <td>IN: The name of the property in the list</td></tr>
- <tr>
- <td><em>size_t </em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em> <code>value</code></td>
- <td>IN: The value for the property being deleted</td></tr>
- </table></ul>
- The <code>delete</code> routine may modify the value passed in,
- but the value is not used by the library when the <code>delete</code>
- routine returns. If the <code>delete</code> routine returns
- a negative value, the property list delete routine returns
- an error value but the property is still deleted.
- </P>
-
- <P>
- The <code>copy</code> routine is called when a new property list with
- this property is being created through a copy operation.
- The <code>H5P_prp_copy_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_copy_func_t</code>)(
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property being copied</td></tr>
- <tr>
- <td><em>size_t </em><code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em><code>value</code></td>
- <td>IN/OUT: The value for the property being copied</td></tr>
- </table></ul>
- The <code>copy</code> routine may modify the value to be set and
- those changes will be stored as the new value of the property.
- If the <code>copy</code> routine returns a negative value,
- the new property value is not copied into the property and
- the copy routine returns an error value.
- </P>
-
- <P>
- The <code>compare</code> routine is called when a property list with
- this property is compared to another property list with the same property.
- The <code>H5P_prp_compare_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef int</em> (*<code>H5P_prp_compare_func_t</code>)(
- <em>const void *</em><code>value1</code>,
- <em>const void *</em><code>value2</code>,
- <em>size_t </em><code>size</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>const void *</em><code>value1</code></td>
- <td>IN: The value of the first property to compare</td></tr>
- <tr>
- <td><em>const void *</em><code>value2</code></td>
- <td>IN: The value of the second property to compare</td></tr>
- <tr>
- <td><em>size_t </em><code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- </table></ul>
- The <code>compare</code> routine may <EM>not</EM> modify the values.
- The <code>compare</code> routine should return a positive value if
- <code>value1</code> is greater than <code>value2</code>, a negative value
- if <code>value2</code> is greater than <code>value1</code> and zero if
- <code>value1</code> and <code>value2</code> are equal.
- </P>
-
- <P>
- The <code>close</code> routine is called when a property list with
- this property is being closed.
- The <code>H5P_prp_close_func_t</code> callback function is defined
- as follows:
- <ul><em>typedef herr_t</em> (*<code>H5P_prp_close_func_t</code>)(
- <em>hid_t </em><code>prop_id</code>,
- <em>const char *</em><code>name</code>,
- <em>size_t </em><code>size</code>,
- <em>void *</em><code>value</code>);
- </ul>
- The parameters to the callback function are defined as follows:
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>prop_id</code></td>
- <td>IN: The identifier of the property list being
- closed</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: The name of the property in the list</td></tr>
- <tr>
- <td><em>size_t</em> <code>size</code></td>
- <td>IN: The size of the property in bytes</td></tr>
- <tr>
- <td><em>void *</em><code>value</code></td>
- <td>IN: The value for the property being closed</td></tr>
- </table></ul>
- The <code>close</code> routine may modify the value passed in,
- but the value is not used by the library when the
- <code>close</code> routine returns.
- If the <code>close</code> routine returns a negative value,
- the property list close routine returns an error value but
- the property list is still closed.
- </P>
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>hid_t</code> <em>class</em></td>
- <td valign="top">IN: Property list class to register permanent property
- within</td></tr>
- <tr>
- <td valign="top"><code>const char *</code> <em>name</em></td>
- <td valign="top">IN: Name of property to register</td></tr>
- <tr>
- <td valign="top"><code>size_t</code> <em>size</em></td>
- <td valign="top">IN: Size of property in bytes</td></tr>
- <tr>
- <td valign="top"><code>void *</code> <em>default</em></td>
- <td valign="top">IN: Default value for property in newly created property
- lists</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_create_func_t</code>&nbsp;<em>create&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">IN: Callback routine called when a property list is being
- created and the property value will be initialized</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_set_func_t</code> <em>set</em></td>
- <td valign="top">IN: Callback routine called before a new value is copied
- into the property's value</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_get_func_t</code> <em>get</em></td>
- <td valign="top">IN: Callback routine called when a property value is
- retrieved from the property</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_delete_func_t</code> <em>delete</em></td>
- <td valign="top">IN: Callback routine called when a property is deleted from
- a property list</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_copy_func_t</code> <em>copy</em></td>
- <td valign="top">IN: Callback routine called when a property is copied from
- a property list</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_compare_func_t</code> <em>compare</em></td>
- <td valign="top">IN: Callback routine called when a property is compared with
- another property list</td></tr>
- <tr>
- <td valign="top"><code>H5P_prp_close_func_t</code> <em>close</em></td>
- <td valign="top">IN: Callback routine called when a property list is being
- closed and the property value will be disposed of</td></tr>
- </table></ul>
-
-<dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pregister_f
- <dd>
- <pre>
-SUBROUTINE h5pregister_f
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to register
- INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the property value
- TYPE, INTENT(IN) :: value ! Property value
- ! Supported types are:
- ! INTEGER
- ! REAL
- ! DOUBLE PRECISION
- ! CHARACTER(LEN=*)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pregister_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Premove" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Remove">H5Premove</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Premove</code>(
- <em>hid_t</em> <code>plid</code>;
- <em>const char *</em><code>name</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Removes a property from a property list.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Premove</code> removes a property from a property list.
-
- <p>
- Both properties which were in existence when the property list
- was created (i.e. properties registered with <code>H5Pregister</code>)
- and properties added to the list after it was created (i.e. added
- with <code>H5Pinsert</code>) may be removed from a property list.
- Properties do not need to be removed from a property list before the
- list itself is closed; they will be released automatically when
- <code>H5Pclose</code> is called.
-
- <p>
- If a <code>close</code> callback exists for the removed property,
- it will be called before the property is released.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>plid</code></td>
- <td>IN: Identifier of the property list to modify</td></tr>
- <tr>
- <td><em>const&nbsp;char&nbsp;*</em><code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Name of property to remove</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5premove_f
- <dd>
- <pre>
-SUBROUTINE h5premove_f(plid, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plid ! Property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to remove
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5premove_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Set">H5Pset</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset</code>(
- <em>hid_t</em> <code>plid</code>,
- <em>const char *</em><code>name</code>,
- <em>void *</em><code>value</code>)
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Sets a property list value.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Pset</code> sets a new value for a property in a
- property list. If there is a <code>set</code> callback
- routine registered for this property, the <code>value</code> will be
- passed to that routine and any changes to the <code>value</code>
- will be used when setting the property value.
- The information pointed to by the <code>value</code> pointer
- (possibly modified by the <code>set</code> callback) is copied into
- the property list value and may be changed by the application making
- the <code>H5Pset</code> call without affecting the property value.
-
- <P>
- The property name must exist or this routine will fail.
-
- <P>
- If the <code>set</code> callback routine returns an error, the
- property value will not be modified.
-
- <P>
- This routine may not be called for zero-sized properties
- and will return an error in that case.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>hid_t</em> <code>plid</code>;
- <td>IN: Property list identifier to modify</td></tr>
- <tr>
- <td><em>const&nbsp;char&nbsp;*</em><code>name;&nbsp;&nbsp;&nbsp;&nbsp;</code>
- <td>IN: Name of property to modify</td></tr>
- <tr>
- <td><em>void *</em><code>value</code>;
- <td>IN: Pointer to value to set the property to</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
-
- <dt><strong>Fortran90 Interface:</strong> h5pset_f
- <dd>
- <pre>
-SUBROUTINE h5pset_f(plid, name, value, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plid ! Property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to set
- TYPE, INTENT(IN) :: value ! Property value
- ! Supported types are:
- ! INTEGER
- ! REAL
- ! DOUBLE PRECISION
- ! CHARACTER(LEN=*)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_alignment" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetAlignment">H5Pset_alignment</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_alignment</code>(<em>hid_t</em> <code>plist</code>,
- <em>hsize_t</em> <code>threshold</code>,
- <em>hsize_t</em> <code>alignment</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets alignment properties of a file access property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_alignment</code> sets the alignment properties
- of a file access property list
- so that any file object greater than or equal in size to
- <code>threshold</code> bytes will be aligned on an address
- which is a multiple of <code>alignment</code>. The addresses
- are relative to the end of the user block; the alignment is
- calculated by subtracting the user block size from the
- absolute file address and then adjusting the address to be a
- multiple of <code>alignment</code>.
- <p>
- Default values for <code>threshold</code> and
- <code>alignment</code> are one, implying
- no alignment. Generally the default values will result in
- the best performance for single-process access to the file.
- For MPI-IO and other parallel systems, choose an alignment
- which is a multiple of the disk block size.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for a file access property list.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em>&nbsp;<code>threshold&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Threshold value.
- Note that setting the threshold value to 0 (zero) has
- the effect of a special case, forcing everything
- to be aligned.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>alignment</code></td>
- <td valign="top">IN: Alignment value.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_alignment_f
- <dd>
- <pre>
-SUBROUTINE h5pset_alignment_f(prp_id, threshold, alignment, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: threshold ! Threshold value
- INTEGER(HSIZE_T), INTENT(IN) :: alignment ! Alignment value
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_alignment_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_alloc_time" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetAllocTime">H5Pset_alloc_time</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_alloc_time</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_alloc_time_t</em> <code>alloc_time</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the timing for storage space allocation.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_alloc_time</code> sets up the timing for the allocation of
- storage space for a dataset's raw data.
- This property is set in the dataset creation property list
- <code>plist_id</code>.
- <p>
- Timing is specified in <code>fill_time</code> with one of the
- following values:
- <table border=0 >
- <tr valign="top"><td rowspan="4">&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5D_ALLOC_TIME_DEFAULT</code>&nbsp;&nbsp;
- </td><td>
- Allocate dataset storage space at the default time.<br>
- (Defaults differ by storage method.)
- </td></tr><tr valign="top"><td>
- <code>H5D_ALLOC_TIME_EARLY</code>
- </td><td>
- Allocate all space when the dataset is created.<br>
- (Default for compact datasets.)
- </td></tr><tr valign="top"><td>
- <code>H5D_ALLOC_TIME_INCR</code>&nbsp;&nbsp;
- </td><td>
- Allocate space incrementally, as data is written to the dataset.<br>
- (Default for chunked storage datasets.)
- <li>Chunked datasets:
- Storage space allocation for each chunk is deferred until data
- is written to the chunk.
- <li>Contiguous datasets:
- Incremental storage space allocation for contiguous data
- is treated as late allocation.
- <li>Compact datasets:
- Incremental allocation is not allowed with compact datasets;
- </em><code>H5Pset_alloc_time</code> will return an error.
- </td></tr><tr valign="top"><td>
- <code>H5D_ALLOC_TIME_LATE</code>
- </td><td>
- Allocate all space when data is first written to the dataset.<br>
- (Default for contiguous datasets.)
- </td></tr></table>
- <dt><strong>Note:</strong>
- <dd><code>H5Pset_alloc_time</code> is designed to work in concert
- with the dataset fill value and fill value write time properties,
- set with the functions
- <code>H5Pset_fill_value</code> and <code>H5Pset_fill_time</code>.
- <p>
- <p>
- See <a href="RM_H5D.html#Dataset-Create">H5Dcreate</a> for
- further cross-references.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5D_alloc_time_t</em>&nbsp;<code>alloc_time&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: When to allocate dataset storage space.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_alloc_time_f
- <dd>
- <pre>
-SUBROUTINE h5pset_alloc_time_f(plist_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property
- ! list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: flag ! Allocation time flag
- ! Possible values are:
- ! H5D_ALLOC_TIME_ERROR_F
- ! H5D_ALLOC_TIME_DEFAULT_F
- ! H5D_ALLOC_TIME_EARLY_F
- ! H5D_ALLOC_TIME_LATE_F
- ! H5D_ALLOC_TIME_INCR_F</pre>
-<!-- NEW PAGE -->
-<pre>
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_alloc_time_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_btree_ratios" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetBTreeRatios">H5Pset_btree_ratios</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_btree_ratios</code>(<em>hid_t</em> <code>plist</code>,
- <em>double</em> <code>left</code>,
- <em>double</em> <code>middle</code>,
- <em>double</em> <code>right</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets B-tree split ratios for a dataset transfer property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_btree_ratios</code> sets the B-tree split ratios
- for a dataset transfer property list. The split ratios determine
- what percent of children go in the first node when a node splits.
- <p>
- The ratio <code>left</code> is used when the splitting node is
- the left-most node at its level in the tree;
- the ratio <code>right</code> is used when the splitting node is
- the right-most node at its level;
- and the ratio <code>middle</code> is used for all other cases.
- <p>
- A node which is the only node at its level in the tree uses
- the ratio <code>right</code> when it splits.
- <p>
- All ratios are real numbers between 0 and 1, inclusive.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: The dataset transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>left</code></td>
- <td valign="top">IN: The B-tree split ratio for left-most nodes.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>right</code></td>
- <td valign="top">IN: The B-tree split ratio for right-most nodes and lone nodes.</td></tr>
- <tr>
- <td valign="top"><em>double</em>&nbsp;<code>middle&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The B-tree split ratio for all other nodes.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_btree_ratios_f
- <dd>
- <pre>
-SUBROUTINE h5pset_btree_ratios_f(prp_id, left, middle, right, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- ! Property list identifier
- REAL, INTENT(IN) :: left ! The B-tree split ratio for left-most nodes
- REAL, INTENT(IN) :: middle ! The B-tree split ratio for all other nodes
- REAL, INTENT(IN) :: right ! The B-tree split ratio for right-most
- ! nodes and lone nodes.
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_btree_ratios_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_buffer" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetBuffer">H5Pset_buffer</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_buffer</code>(<em>hid_t</em> <code>plist</code>,
- <em>hsize_t</em> <code>size</code>,
- <em>void</em> <code>*tconv</code>,
- <em>void</em> <code>*bkg</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets type conversion and background buffers.
- <dt><strong>Description:</strong>
- <dd> Given a dataset transfer property list, <code>H5Pset_buffer</code>
- sets the maximum size
- for the type conversion buffer and background buffer and
- optionally supplies pointers to application-allocated buffers.
- If the buffer size is smaller than the entire amount of data
- being transferred between the application and the file, and a type
- conversion buffer or background buffer is required, then
- strip mining will be used.
- <p>
- Note that there are minimum size requirements for the buffer.
- Strip mining can only break the data up along the first dimension,
- so the buffer must be large enough to accommodate a complete slice
- that encompasses all of the remaining dimensions.
- For example, when strip mining a 100x200x300 hyperslab
- of a simple data space, the buffer must be large enough to
- hold 1x200x300 data elements.
- When strip mining a 100x200x300x150 hyperslab of a simple data space,
- the buffer must be large enough to hold 1x200x300x150 data elements.
- <p>
- If <code>tconv</code> and/or <code>bkg</code> are null pointers,
- then buffers will be allocated and freed during the data transfer.
- <p>
- The default value for the maximum buffer is 1 Mb.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for the dataset transfer property list.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em>&nbsp;<code>size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Size, in bytes, of the type conversion and background buffers.</td></tr>
- <tr>
- <td valign="top"><em>void</em> <code>tconv</code></td>
- <td valign="top">IN: Pointer to application-allocated type conversion buffer.</td></tr>
- <tr>
- <td valign="top"><em>void</em> <code>bkg</code></td>
- <td valign="top">IN: Pointer to application-allocated background buffer.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_buffer_f
- <dd>
- <pre>
-SUBROUTINE h5pset_buffer_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property
- ! list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: size ! Conversion buffer size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_buffer_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_cache" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetCache">H5Pset_cache</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_cache</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>int</em> <code>mdc_nelmts</code>,
- <em>int</em> <code>rdcc_nelmts</code>,
- <em>size_t</em> <code>rdcc_nbytes</code>,
- <em>double</em> <code>rdcc_w0</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the meta data cache and raw data chunk cache parameters.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_cache</code> sets
- the number of elements (objects) in the meta data cache and
- the number of elements, the total number of bytes, and
- the preemption policy value in the raw data chunk cache.
- <p>
- The <em>plist_id</em> is a file access property list.
- The number of elements (objects) in the meta data cache
- and the raw data chunk cache are <em>mdc_nelmts</em> and
- <em>rdcc_nelmts</em>, respectively.
- The total size of the raw data chunk cache and the preemption policy
- are <em>rdcc_nbytes</em> and <em>rdcc_w0</em>.
- <p>
- Any (or all) of the <code>H5Pget_cache</code> pointer arguments
- may be null pointers.
- <p>
- The <em>rdcc_w0</em> value should be between 0 and 1 inclusive and
- indicates how much chunks that have been fully read are
- favored for preemption. A value of zero means fully read
- chunks are treated no differently than other chunks (the
- preemption is strictly LRU) while a value of one means fully
- read chunks are always preempted before other chunks.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Identifier of the file access property list.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>mdc_nelmts</code></td>
- <td valign="top">IN: Number of elements (objects) in the meta data cache.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>rdcc_nelmts</code></td>
- <td valign="top">IN: Number of elements (objects) in the raw data chunk cache.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>rdcc_nbytes&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Total size of the raw data chunk cache, in bytes.</td></tr>
- <tr>
- <td valign="top"><em>double</em> <code>rdcc_w0</code></td>
- <td valign="top">IN: Preemption policy.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_cache_f
- <dd>
- <pre>
-SUBROUTINE h5pset_cache_f(prp_id, mdc_nelmts,rdcc_nelmts, rdcc_nbytes, rdcc_w0, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: mdc_nelmts ! Number of elements (objects)
- ! in the meta data cache
- INTEGER(SIZE_T), INTENT(IN) :: rdcc_nelmts ! Number of elements (objects)
- ! in the meta data cache
- INTEGER(SIZE_T), INTENT(IN) :: rdcc_nbytes ! Total size of the raw data
- ! chunk cache, in bytes
- REAL, INTENT(IN) :: rdcc_w0 ! Preemption policy
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_cache_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_chunk" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetChunk">H5Pset_chunk</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_chunk</code>(<em>hid_t</em> <code>plist</code>,
- <em>int</em> <code>ndims</code>,
- <em>const hsize_t *</em> <code>dim</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the size of the chunks used to store a chunked layout dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_chunk</code> sets the size of the chunks used to
- store a chunked layout dataset. This function is only valid
- for dataset creation property lists.
- <p>
- The <code>ndims</code> parameter currently must be the same size
- as the rank of the dataset.
- <p>
- The values of the <code>dim</code>
- array define the size of the chunks to store the dataset's raw data.
- The unit of measure for <code>dim</code> values is
- <em>dataset elements</em>.
- <p>
- As a side-effect of this function, the layout of the dataset is
- changed to <code>H5D_CHUNKED</code>, if it is not already so set.
- (See <a href="#Property-SetLayout"><code>H5Pset_layout</code></a>.)
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for property list to query.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>ndims</code></td>
- <td valign="top">IN: The number of dimensions of each chunk.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hsize_t&nbsp;*</em>&nbsp;<code>dim&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: An array defining the size, in dataset elements,
- of each chunk.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_chunk_f
- <dd>
- <pre>
-SUBROUTINE h5pset_chunk_f(prp_id, ndims, dims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: ndims ! Number of chunk dimensions
- INTEGER(HSIZE_T), DIMENSION(ndims), INTENT(IN) :: dims
- ! Array containing sizes of
- ! chunk dimensions
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_chunk_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_data_transform" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetDataTransform">H5Pset_data_transform</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_data_transform</code>
- (<em>hid_t</em> <code>plist_id</code>,
- <em>const char</em> *<code>expression</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets a data transform expression.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_data_transform</code> sets the data transform to
- be used for reading and writing data.
- This function operates on the dataset transfer property lists
- plist_id.
- <p>
- The expression parameter is a string containing an algebraic
- expression, such as <code>(5/9.0)*(x-32)</code>
- or <code>x*(x-5)</code>.
- When a dataset is read or written with this property list,
- the transform expression is applied with the <code>x</code>
- being replaced by the values in the dataset.
- When reading data, the values in the file are not changed
- and the transformed data is returned to the user.
- <p>
- Data transforms can only be applied to integer or floating-point
- datasets. Order of operations is obeyed and the only supported
- operations are +, -, *, and /. Parentheses can be nested arbitrarily
- and can be used to change precedence.
- <p>
- When writing data back to the dataset, the transformed data is
- written to the file and there is no way to recover the original
- values to which the transform was applied.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Identifier of the property list or class</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;*<code>expression&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Pointer to the null-terminated data transform expression
- </td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_deflate" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetDeflate">H5Pset_deflate</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_deflate</code>(<em>hid_t</em> <code>plist</code>,
- <em>int</em> <code>level</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets compression method and compression level.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_deflate</code> sets the compression method for a
- dataset creation property list to <code>H5D_COMPRESS_DEFLATE</code>
- and the compression level to <code>level</code>, which should
- be a value from zero to nine, inclusive.
- Lower compression levels are faster but result in less compression.
- This is the same algorithm as used by the GNU gzip program.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier for the dataset creation property list.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>level</code></td>
- <td valign="top">IN: Compression level.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_deflate_f
- <dd>
- <pre>
-SUBROUTINE h5pset_deflate_f(prp_id, level, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: level ! Compression level
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_deflate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- ********** MOVED TO TechNotes/VFLfunc.html **********
-
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetDriver">H5Pset_driver</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_driver</code>(
- <em>hid_t</em> <code>plist_id</code>,
- <em>hid_t</em> <code>driver_id</code>,
- <em>const void *</em> <code>driver_info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the file driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_driver</code> sets the file driver,
- <code>driver_id</code>, for a file access or data transfer
- property list, <code>plist_id</code>, and supplies an
- optional struct containing the driver-specific properties,
- <code>driver_info</code>.
- <p>
- <font color=red><b><i>Need <code>driver_info</code> struct definition.</i></b></font>
- <p>
- The driver properties will be copied into the property list
- and the reference count on the driver will be incremented,
- allowing the caller to close the driver identifier but still use
- the property list.
- <dt><strong>Parameters:</strong>
- <dl>
- <dt><em>hid_t</em> <code>plist_id</code>
- <dd>IN: File access or data transfer property list identifier.
- <dt><em>hid_t</em> <code>driver_id</code>
- <dd>IN: Driver identifier.
- <dt><em>const void *</em> <code>driver_info</code>
- <dd>IN: Optional struct containing driver properties.
- </dl>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Non-C API(s):</strong>
- <dd><a href="fortran/h5p_FORTRAN.html#h5pxxx_f"
- target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a>
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
-</dl>
-
--->
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_dxpl_mpio" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetDxplMpio">H5Pset_dxpl_mpio</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_dxpl_mpio</code>(
- <em>hid_t</em> <code>dxpl_id</code>,
- <em>H5FD_mpio_xfer_t</em> <code>xfer_mode</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets data transfer mode.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_dxpl_mpio</code> sets the data transfer property list
- <code>dxpl_id</code> to use transfer mode <code>xfer_mode</code>.
- The property list can then be used to control the I/O transfer mode
- during data I/O operations.
- <p>
- Valid transfer modes are as follows:
- <dir>
- <dl>
- <dt><code>H5FD_MPIO_INDEPENDENT</code>
- <dd>Use independent I/O access (default).
- <dt><code>H5FD_MPIO_COLLECTIVE</code>
- <dd>Use collective I/O access.
- </dl>
- </dir></p>
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dxpl_id</code></td>
- <td valign="top">IN: Data transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5FD_mpio_xfer_t</em>&nbsp;<code>xfer_mode&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Transfer mode.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>
- <pre>
-SUBROUTINE h5pset_dxpl_mpio_f(prp_id, data_xfer_mode, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: data_xfer_mode ! Data transfer mode
- ! Possible values are:
- ! H5FD_MPIO_INDEPENDENT_F
- ! H5FD_MPIO_COLLECTIVE_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_dxpl_mpio_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_dxpl_multi" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetDxplMulti">H5Pset_dxpl_multi</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_dxpl_multi</code>(
- <em>hid_t</em> <code>dxpl_id</code>,
- <em>const hid_t *</em><code>memb_dxpl</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the data transfer property list for the multi-file driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_dxpl_multi</code> sets the data transfer property list
- <code>dxpl_id</code> to use the multi-file driver for each
- memory usage type <code>memb_dxpl[]</code>.
- <p>
- <code>H5Pset_dxpl_multi</code> can only be used after
- the member map has been set with <code>H5Pset_fapl_multi</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dxpl_id</code>,</td>
- <td valign="top">IN: Data transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hid_t&nbsp;*</em><code>memb_dxpl&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Array of data access property lists.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_edc_check" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetEdcCheck">H5Pset_edc_check</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_edc_check</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5Z_EDC_t</em> <code>check</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets whether to enable error-detection when reading a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_edc_check</code> sets the dataset transfer property
- list <code>plist</code> to enable or disable error detection
- when reading data.
- <p>
- Whether error detection is enabled or disabled is specified
- in the <code>check</code> parameter.
- Valid values are as follows:
- <table border="0">
- <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5Z_ENABLE_EDC</code> &nbsp; (default)
- <br>
- <code>H5Z_DISABLE_EDC</code>
- </td></tr>
- </table>
- <p>
- The error detection algorithm used is the algorithm previously
- specified in the corresponding dataset creation property list.  
- <p>
- This function does not affect the use of error detection when
- writing data.  
- <dt><strong>Note:</strong>
- <dd>The initial error detection implementation, Fletcher32 checksum,
- supports error detection for chunked datasets only.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Dataset transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5Z_EDC_t</em>&nbsp;<code>check&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Specifies whether error checking is enabled or disabled
- for dataset read operations.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_edc_check_f
- <dd>
- <pre>
-SUBROUTINE h5pset_edc_check_f(prp_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property
- ! list identifier
- INTEGER, INTENT(IN) :: flag ! EDC flag; possible values
- ! H5Z_DISABLE_EDC_F
- ! H5Z_ENABLE_EDC_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-
-END SUBROUTINE h5pset_edc_check_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_external" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetExternal">H5Pset_external</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_external</code>(<em>hid_t</em> <code>plist</code>,
- <em>const char</em> <code>*name</code>,
- <em>off_t</em> <code>offset</code>,
- <em>hsize_t</em> <code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Adds an external file to the list of external files.
- <dt><strong>Description:</strong>
- <dd>The first call to <code>H5Pset_external</code> sets the
- <i>external storage</i> property in the property list,
- thus designating that the dataset will be stored in
- one or more non-HDF5 file(s) external to the HDF5 file.
- This call also adds the file <code>name</code> as the
- first file in the list of external files.
- Subsequent calls to the function add the named file as
- the next file in the list.
- <p>
- If a dataset is split across multiple files, then the files
- should be defined in order. The total size of the dataset is
- the sum of the <code>size</code> arguments for all the external files.
- If the total size is larger than the size of a dataset then the
- dataset can be extended (provided the data space also allows
- the extending).
- <p>
- The <code>size</code> argument specifies the number of bytes reserved
- for data in the external file.
- If <code>size</code> is set to <code>H5F_UNLIMITED</code>, the
- external file can be of unlimited size and no more files can be added
- to the external files list.
- <p>
- All of the external files for a given dataset must be
- specified with <code>H5Pset_external</code>
- <i>before</i> <code>H5Dcreate</code> is called to create
- the dataset.
- If one these files does not exist on the system when
- <code>H5Dwrite</code> is called to write data to it,
- the library will create the file.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of a dataset creation property list.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;<code>*name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of an external file.</td></tr>
- <tr>
- <td valign="top"><em>off_t</em> <code>offset</code></td>
- <td valign="top">IN: Offset, in bytes, from the beginning of the file
- to the location in the file where the data starts.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>size</code></td>
- <td valign="top">IN: Number of bytes reserved in the file for the data.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_external_f
- <dd>
- <pre>
-SUBROUTINE h5pset_external_f(prp_id, name, offset,bytes, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of an external file
- INTEGER, INTENT(IN) :: offset ! Offset, in bytes, from the
- ! beginning of the file to the
- ! location in the file where
- ! the data starts
- INTEGER(HSIZE_T), INTENT(IN) :: bytes ! Number of bytes reserved in
- ! the file for the data
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_external_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_family_offset" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFamilyOffset">H5Pset_family_offset</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_family_offset</code> (
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t</em> <code>offset</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets offset property for low-level access to a file in a family of files.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_family_offset</code> sets the offset property in the
- file access property list <code>fapl_id</code> so that the user application
- can retrieve a file handle for low-level access to a particular member
- of a family of files. The file handle is retrieved with a separate call
- to <a href="RM_H5F.html#File-GetVfdHandle"><code>H5Fget_vfd_handle</code></a>
- (or, in special circumstances, to <code>H5FDget_vfd_handle</code>;
- see <cite>Virtual File Layer</cite> and <cite>List of VFL Functions</cite>
- in <a href="TechNotes.html"><cite>HDF5 Technical Notes</cite></a>).
- <p>
- The value of <code>offset</code> is an offset in bytes from the
- beginning of the HDF5 file, identifying a user-determined location
- within the HDF5 file. The file handle the user application is seeking
- is for the specific member-file in the associated family of files
- to which this offset is mapped.
- <p>
- Use of this function is only appropriate for an HDF5 file written as a
- family of files with the <code>FAMILY</code> file driver.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em>&nbsp;<code>offset&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Offset in bytes within the HDF5 file.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_family_offset_f
- <dd>
- <pre>
-SUBROUTINE h5pset_family_offset_f(prp_id, offset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: offset ! Offset in bytes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-
-END SUBROUTINE h5pset_family_offset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_core" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplCore">H5Pset_fapl_core</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_core</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>size_t</em> <code>increment</code>,
- <em>hbool_t</em> <code>backing_store</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Modifies the file access property list to use the
- <code>H5FD_CORE</code> driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_core</code> modifies the file access property list
- to use the <code>H5FD_CORE</code> driver.
- <p>
- The <code>H5FD_CORE</code> driver enables an application to work
- with a file in memory, speeding reads and writes as no disk access
- is made. File contents are stored only in memory until the file
- is closed. The <code>backing_store</code> parameter determines
- whether file contents are ever written to disk.
- <p>
- <code>increment</code> specifies the increment by which allocated
- memory is to be increased each time more memory is required.
- <p>
- If <code>backing_store</code> is set to <code>1</code>
- (<code>TRUE</code>), the file contents are flushed to a file
- with the same name as this core file when the file is closed
- or access to the file is terminated in memory.
- <dt><strong>Note:</strong>
- <dd>There is currently no means for reading a file from disk then
- using the <code>H5FD_CORE</code> driver to manipulate the file.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>increment</code></td>
- <td valign="top">IN: Size, in bytes, of memory increments.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em>&nbsp;<code>backing_store&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Boolean flag indicating whether to write the file
- contents to disk when the file is closed.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_core_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_core_f(prp_id, increment, backing_store, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(SIZE_T), INTENT(IN) :: increment ! File block size in bytes
- LOGICAL, INTENT(IN) :: backing_store ! Flag to indicate that entire
- ! file contents are flushed to
- ! a file with the same name as
- ! this core file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_core_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_family" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplFamily">H5Pset_fapl_family</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_family</code> (
- <em>hid_t</em> <code>fapl_id</code>,
- <em> hsize_t</em> <code>memb_size</code>,
- <em>hid_t</em> <code>memb_fapl_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the file access property list to use the family driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_family</code> sets the file access property list
- identifier, <code>fapl_id</code>, to use the family driver.
- <p>
- <code>memb_size</code> is the size in bytes of each file member. This size
- will be saved in the file when the property list <code>fapl_id</code> is used
- to create a new file. If <code>fapl_id</code> is used to open an existing
- file, <code>memb_size</code> has to be equal to the original size saved in
- the file. A failure with an errror message indicating the correct member
- size will be returned if <code>memb_size</code> does not match the size saved.
- If any user does not know the original size, <code>H5F_FAMILY_DEFAULT</code>
- can be passed in. The library will retrieve the correct size saved in the file.
- <p>
- <code>memb_fapl_id</code> is the identifier of the
- file access property list to be used for each family member.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em> hsize_t</em> <code>memb_size</code></td>
- <td valign="top">IN: Size in bytes of each file member.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>memb_fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of file access property list for each
- family member.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_family_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_family_f(prp_id, imemb_size, memb_plist, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: memb_size ! Logical size, in bytes,
- ! of each family member
- INTEGER(HID_T), INTENT(IN) :: memb_plist ! Identifier of the file
- ! access property list to be
- ! used for each family member
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_family_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_gass" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplGass">H5Pset_fapl_gass</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_gass</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>GASS_Info</em> <code>info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Stores user-supplied GASS information.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_gass</code> stores user-supplied GASS information,
- the <em>GASS_Info</em> struct data as passed in <code>info</code>,
- to the file access property list <code>fapl_id</code>.
- <code>fapl_id</code> can then be used to create and/or open the file.
- <p>
- The <em>GASS_Info</em> object, <code>info</code>, is used for
- file open operations when using GASS in the Globus environment.
- <p>
- Any modification to <code>info</code> after this function call
- returns may have undetermined effect to the access property list.
- Users must call <code>H5Pset_fapl_gass</code> again to setup
- the property list.
- <dt><strong>Note:</strong>
- <dd><code>H5Pset_fapl_gass</code> is an experimental function.
- It is designed for use only when accessing files via the
- GASS facility of the Globus environment.
- For further information, see
- <a href="http://www.globus.org/">http//www.globus.org/</a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code>,</td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>GASS_Info</em>&nbsp;<code>info&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Pointer to the GASS information structure.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_log" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplLog">H5Pset_fapl_log</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_log</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>const char *</em><code>logfile</code>,
- <em>unsigned int</em> <code>flags</code>,
- <em>size_t</em> <code>buf_size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets up the use of the logging driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_log</code> modifies the
- file access property list to use the logging driver
- <code>H5FD_LOG</code>.
- <p>
- <code>logfile</code> is the name of the file in which the
- logging entries are to be recorded.
- <p>
- The actions to be logged are specified in the parameter <code>flags</code>
- using the pre-defined constants described in the following table.
- Multiple flags can be set through the use of an logical OR contained
- in parentheses. For example, logging read and write locations would
- be specified as <code>(H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE)</code>.
- <!--The <code>flags</code> parameter contains a 2-byte hexadecimal value
- which is computed from the following elements:-->
- <center>
- <table width=100%>
- <tr valign=top align=left><td>
- <hr>
- <b>Flag</b>
- <!--</td><td width="20%">
- <hr>
- <b>Hex value</b>-->
- </td><td>
- <hr>
- <b>Description</b>
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_LOC_READ</code>
- <!--</td><td>
- <code>0x0001</code>-->
- </td><td rowspan="3">
- <hr>
- Track the location and length of every read, write, or seek operation.
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_LOC_WRITE&nbsp;&nbsp;</code>
- <!--</td><td>
- <code>0x0002&nbsp;&nbsp;</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_LOC_SEEK</code>
- <!--</td><td>
- <code>0x0004</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_LOC_IO</code>
- <!--</td><td>
- <code>0x0007</code>-->
- </td><td>
- Track all I/O locations and lengths.
- The logical equivalent of the following:
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;</code>
- </td><td>
- <code>(H5FD_LOG_LOC_READ | H5FD_LOG_LOC_WRITE | H5FD_LOG_LOC_SEEK)</code>
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_FILE_READ</code>
- <!--</td><td>
- <code>0x0008</code>-->
- </td><td rowspan="2">
- <hr>
- Track the number of times each byte is read or written.
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_FILE_WRITE&nbsp;&nbsp;</code>
- <!--</td><td>
- <code>0x0010</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_FILE_IO</code>
- <!--</td><td>
- <code>0x0018</code>-->
- </td><td>
- Track the number of times each byte is read and written.
- The logical equivalent of the following:
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;</code>
- </td><td>
- <code>(H5FD_LOG_FILE_READ | H5FD_LOG_FILE_WRITE)</code>
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_FLAVOR</code>
- <!--</td><td>
- <code>0x0020</code>-->
- </td><td>
- <hr>
- Track the type, or flavor, of information stored at each byte.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_NUM_READ</code>
- <!--</td><td>
- <code>0x0040</code>-->
- </td><td rowspan="3">
- <hr>
- Track the total number of read, write, or seek operations that occur.
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_NUM_WRITE</code>
- <!--</td><td>
- <code>0x0080</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_NUM_SEEK</code>
- <!--</td><td>
- <code>0x0100</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_NUM_IO</code>
- <!--</td><td>
- <code>0x01C0</code>-->
- </td><td>
- Track the total number of all types of I/O operations.
- The logical equivalent of the following:
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;</code>
- </td><td>
- <code>(H5FD_LOG_NUM_READ | H5FD_LOG_NUM_WRITE | H5FD_LOG_NUM_SEEK)</code>
- </td></tr>
-
-<!-- NEW PAGE -->
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_TIME_OPEN</code>
- <!--</td><td>
- <code>0x0200</code>-->
- </td><td rowspan="5">
- <hr>
- Track the time spent in open, read, write, seek, or close operations.
- <dir>
- <span class="termEmphasis"><i>
- Not implemented in this release: open and read
- <br>
- Partially implemented: write and seek
- <br>
- Fully implemented: close</i></span>
- </dir>
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_TIME_READ</code>
- <!--</td><td>
- <code>0x0400</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_TIME_WRITE</code>
- <!--</td><td>
- <code>0x0800</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_TIME_SEEK</code>
- <!--</td><td>
- <code>0x1000</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_TIME_CLOSE</code>
- <!--</td><td>
- <code>0x2000</code>-->
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5FD_LOG_TIME_IO</code>
- <!--</td><td>
- <code>0x3E00</code>-->
- </td><td>
- Track the time spent in each of the above operations.
- The logical equivalent of the following:
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;</code>
- </td><td>
- <code>(H5FD_LOG_TIME_OPEN | H5FD_LOG_TIME_READ | H5FD_LOG_TIME_WRITE
- | H5FD_LOG_TIME_SEEK | H5FD_LOG_TIME_CLOSE)</code>
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_ALLOC</code>
- <!--</td><td>
- <code>0x4000</code>-->
- </td><td>
- <hr>
- Track the allocation of space in the file.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- <code>H5FD_LOG_ALL</code>
- <!--</td><td>
- <code>0xFFFF -- all possible
- <br>0x8FFF -- all current at r1.6</code>-->
- </td><td>
- <hr>
- Track everything.
- The logical equivalent of the following:
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;</code>
- </td><td>
- <code>(H5FD_LOG_ALLOC | H5FD_LOG_TIME_IO | H5FD_LOG_NUM_IO | H5FD_LOG_FLAVOR
- |H5FD_LOG_FILE_IO | H5FD_LOG_LOC_IO)</code>
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr>
- </td><td>
- <hr>
- </td></tr>
-
- </table>
- </center>
-
- <p>
- The logging driver can track the number of times
- each byte in the file is read from or written to
- (using <code>H5FD_LOG_FILE_READ</code> and <code>H5FD_LOG_FILE_WRITE</code>)
- and what kind of data is at that location
- (e.g., meta data, raw data; using <code>H5FD_LOG_FLAVOR</code>).
- This information is tracked in a buffer of size <code>buf_size</code>,
- which must be at least the size in bytes of the file to be logged.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>char *</em><code>logfile</code></td>
- <td valign="top">IN: Name of the log file.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;int</em>&nbsp;<code>flags&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Flags specifying the types of logging activity.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>buf_size</code></td>
- <td valign="top">IN: The size of the logging buffer.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns non-negative if successful.
- Otherwise returns negative.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_mpio" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplMpio">H5Pset_fapl_mpio</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_mpio</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>MPI_Comm</em> <code>comm</code>,
- <em>MPI_Info</em> <code>info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Stores MPI IO communicator information to the file access property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_mpio</code> stores the user-supplied
- MPI IO parameters <code>comm</code>, for communicator, and
- <code>info</code>, for information, in
- the file access property list <code>fapl_id</code>.
- That property list can then be used to create and/or open the file.
- <p>
- <code>H5Pset_fapl_mpio</code> is available only in the
- parallel HDF5 library and is not a collective function.
- <p>
- <code>comm</code> is the MPI communicator to be used for
- file open as defined in <code>MPI_FILE_OPEN</code> of MPI-2.
- This function does not create a duplicated communicator.
- Modifications to <code>comm</code> after this function call
- returns may have an undetermined effect on the access property list.
- Users should not modify the communicator while it is defined
- in a property list.
- <p>
- <code>info</code> is the MPI info object to be used for
- file open as defined in <code>MPI_FILE_OPEN</code> of MPI-2.
- This function does not create a duplicated info object.
- Any modification to the info object after this function call
- returns may have an undetermined effect on the access property list.
- Users should not modify the info while it is defined
- in a property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>MPI_Comm</em>&nbsp;<code>comm&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: MPI-2 communicator.</td></tr>
- <tr>
- <td valign="top"><em>MPI_Info</em> <code>info</code></td>
- <td valign="top">IN: MPI-2 info object.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_mpio_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_mpio_f(prp_id, comm, info, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: comm ! MPI communicator to be used for
- ! file open as defined in
- ! MPI_FILE_OPEN of MPI-2
- INTEGER, INTENT(IN) :: info ! MPI info object to be used for
- ! file open as defined in
- ! MPI_FILE_OPEN of MPI-2
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_mpio_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pget_fapl_mpio" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplMpiPosix">H5Pset_fapl_mpiposix</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_mpiposix</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>MPI_Comm</em> <code>comm</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Stores MPI IO communicator information to a file access property list.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_mpiposix</code> stores the user-supplied
- MPI IO parameter <code>comm</code>, for communicator,
- in the file access property list <code>fapl_id</code>.
- That property list can then be used to create and/or open the file.
- <p>
- <code>H5Pset_fapl_mpiposix</code> is available only in the
- parallel HDF5 library and is not a collective function.
- <p>
- <code>comm</code> is the MPI communicator to be used for
- file open as defined in <code>MPI_FILE_OPEN</code> of MPI-2.
- This function does not create a duplicated communicator.
- Modifications to <code>comm</code> after this function call
- returns may have an undetermined effect on the access property list.
- Users should not modify the communicator while it is defined
- in a property list.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>MPI_Comm</em>&nbsp;<code>comm&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: MPI-2 communicator.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_mpiposix_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_mpiposix_f(prp_id, comm, use_gpfs, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: comm ! MPI communicator to be used
- ! for file open as defined in
- ! MPI_FILE_OPEN of MPI-2
- LOGICAL, INTENT(IN) :: use_gpfs
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5pset_fapl_mpiposix_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_multi" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplMulti">H5Pset_fapl_multi</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_multi</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>const H5FD_mem_t *</em><code>memb_map</code>,
- <em>const hid_t *</em><code>memb_fapl</code>,
- <em>const char * const *</em><code>memb_name</code>,
- <em>const haddr_t *</em><code>memb_addr</code>,
- <em>hbool_t</em> <code>relax</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets up use of the multi-file driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_multi</code> sets the file access property list
- <code>fapl_id</code> to use the multi-file driver.
- <p>
- The multi-file driver enables different types of HDF5 data and
- metadata to be written to separate files. These files are viewed
- by the HDF5 library and the application as a single virtual HDF5 file
- with a single HDF5 file address space.
- The types of data that can be broken out into separate files include
- raw data, the superblock, B-tree data, global heap data,
- local heap data, and object headers.
- At the programmer's discretion, two or more types of data can be
- written to the same file while other types of data are written to
- separate files.
- <p>
- The array <code>memb_map</code> maps memory usage types to other
- memory usage types and is the mechanism that allows the caller
- to specify how many files are created.
- The array contains <code>H5FD_MEM_NTYPES</code> entries,
- which are either the value <code>H5FD_MEM_DEFAULT</code>
- or a memory usage type.
- The number of unique values determines the number of files
- that are opened.
- <p>
- The array <code>memb_fapl</code> contains a property list
- for each memory usage type that will be associated with a file.
- <p>
- The array <code>memb_name</code> should be a name generator
- (a printf-style format with a %s which will be replaced with the
- name passed to <code>H5FDopen</code>, usually from
- <code>H5Fcreate</code> or <code>H5Fopen</code>).
- <p>
- The array <code>memb_addr</code> specifies the offsets within the
- virtual address space, from <code>0</code> (zero) to
- <code>HADDR_MAX</code>, at which each type of data storage begins.
- <p>
- If <code>relax</code> is set to <code>TRUE</code> (or <code>1</code>),
- then opening an existing file for read-only access will not fail
- if some file members are missing.
- This allows a file to be accessed in a limited sense if just the
- meta data is available.
- <p>
- Default values for each of the optional arguments are as follows:
- <dir>
- <dl>
- <dt><code>memb_map</code>
- <dd>The default member map contains the value
- <code>H5FD_MEM_DEFAULT</code> for each element.
- <dt><code>memb_fapl</code>
- <dd>The default value is <code>H5P_DEFAULT</code> for each element.
- <dt><code>memb_name</code>
- <dd>The default string is &nbsp; <code>%s-<i>X</i>.h5</code> &nbsp;
- where &nbsp; <code><i>X</i></code> &nbsp; is one of the
- following letters:
- <dir>
- <code>s</code> &nbsp;&nbsp; for <code>H5FD_MEM_SUPER</code>
- <br>
- <code>b</code> &nbsp;&nbsp; for <code>H5FD_MEM_BTREE</code>
- <br>
- <code>r</code> &nbsp;&nbsp; for <code>H5FD_MEM_DRAW</code>
- <br>
- <code>g</code> &nbsp;&nbsp; for <code>H5FD_MEM_GHEAP</code>
- <br>
- <code>l</code> &nbsp;&nbsp; for <code>H5FD_MEM_LHEAP</code>
- <br>
- <code>o</code> &nbsp;&nbsp; for <code>H5FD_MEM_OHDR</code>
- </dir></dd></dt>
-<!-- NEW PAGE -->
- <dt><code>memb_addr</code>
- <dd>The default value is <code>HADDR_UNDEF</code> for each element.
- </dl>
- </dir>
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;H5FD_mem_t&nbsp;*</em><code>memb_map&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Maps memory usage types to other memory usage types.</td></tr>
- <tr>
- <td valign="top"><em>const hid_t *</em><code>memb_fapl</code></td>
- <td valign="top">IN: Property list for each memory usage type.</td></tr>
- <tr>
- <td valign="top"><em>const char * const *</em><code>memb_name</code></td>
- <td valign="top">IN: Name generator for names of member files.</td></tr>
- <tr>
- <td valign="top"><em>const haddr_t *</em><code>memb_addr</code></td>
- <td valign="top">IN: The offsets within the virtual address space,
- from <code>0</code> (zero) to <code>HADDR_MAX</code>,
- at which each type of data storage begins.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em> <code>relax</code></td>
- <td valign="top">IN: Allows read-only access to incomplete file sets
- when <code>TRUE</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Example:</strong>
- <dd>The following code sample sets up a multi-file access property list
- that partitions data into meta and raw files, each being
- one-half of the address:
- <pre>
- H5FD_mem_t mt, memb_map[H5FD_MEM_NTYPES];
- hid_t memb_fapl[H5FD_MEM_NTYPES];
- const char *memb[H5FD_MEM_NTYPES];
- haddr_t memb_addr[H5FD_MEM_NTYPES];
-
- // The mapping...
- for (mt=0; mt&lt;H5FD_MEM_NTYPES; mt++) {
- memb_map[mt] = H5FD_MEM_SUPER;
- }
- memb_map[H5FD_MEM_DRAW] = H5FD_MEM_DRAW;
-
- // Member information
- memb_fapl[H5FD_MEM_SUPER] = H5P_DEFAULT;
- memb_name[H5FD_MEM_SUPER] = "%s.meta";
- memb_addr[H5FD_MEM_SUPER] = 0;
-
- memb_fapl[H5FD_MEM_DRAW] = H5P_DEFAULT;
- memb_name[H5FD_MEM_DRAW] = "%s.raw";
- memb_addr[H5FD_MEM_DRAW] = HADDR_MAX/2;
-
- hid_t fapl = H5Pcreate(H5P_FILE_ACCESS);
- H5Pset_fapl_multi(fapl, memb_map, memb_fapl,
- memb_name, memb_addr, TRUE);
- </pre>
-
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_multi_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_multi_f(prp_id, memb_map, memb_fapl, memb_name,
- memb_addr, relax, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T),INTENT(IN) :: prp_id ! Property list identifier
-
- INTEGER,DIMENSION(0:H5FD_MEM_NTYPES_F-1),INTENT(IN) :: memb_map
- INTEGER(HID_T),DIMENSION(0:H5FD_MEM_NTYPES_F-1),INTENT(IN) :: memb_fapl
- CHARACTER(LEN=*),DIMENSION(0:H5FD_MEM_NTYPES_F-1),INTENT(IN) :: memb_name
- REAL, DIMENSION(0:H5FD_MEM_NTYPES_F-1), INTENT(IN) :: memb_addr
- ! Numbers in the interval [0,1) (e.g. 0.0 0.1 0.5 0.2 0.3 0.4)
- ! real address in the file will be calculated as X*HADDR_MAX
-
- LOGICAL, INTENT(IN) :: relax
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_multi_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_sec2" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplSec2">H5Pset_fapl_sec2</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_sec2</code>(
- <em>hid_t</em> <code>fapl_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the sec2 driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_sec2</code> modifies the file access property list
- to use the <code>H5FD_SEC2</code> driver.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_sec2_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_sec2_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_sec2_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_split" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplSplit">H5Pset_fapl_split</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_split</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>const char *</em><code>meta_ext</code>,
- <em>hid_t</em> <code>meta_plist_id</code>,
- <em>const char *</em><code>raw_ext</code>,
- <em>hid_t</em> <code>raw_plist_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Emulates the old split file driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_split</code> is a compatibility function that
- enables the multi-file driver to emulate the split driver from
- HDF5 Releases 1.0 and 1.2.
- The split file driver stored metadata and raw data in separate files
- but provided no mechanism for separating types of metadata.
- <p>
- <code>fapl_id</code> is a file access property list identifier.
- <p>
- <code>meta_ext</code> is the filename extension for the metadata file.
- The extension is appended to the name passed to <code>H5FDopen</code>,
- usually from <code>H5Fcreate</code> or <code>H5Fopen</code>,
- to form the name of the metadata file.
- If the string %s is used in the extension, it works like the
- name generator as in <code>H5Pset_fapl_multi</code>.
- <p>
- <code>meta_plist_id</code> is the file access property list identifier
- for the metadata file.
- <p>
- <code>raw_ext</code> is the filename extension for the raw data file.
- The extension is appended to the name passed to <code>H5FDopen</code>,
- usually from <code>H5Fcreate</code> or <code>H5Fopen</code>,
- to form the name of the rawdata file.
- If the string %s is used in the extension, it works like the
- name generator as in <code>H5Pset_fapl_multi</code>.
- <p>
- <code>raw_plist_id</code> is the file access property list identifier
- for the raw data file.
- <p>
- If a user wishes to check to see whether this driver is in use,
- the user must call <code>H5Pget_driver</code> and compare the
- returned value to the string <code>H5FD_MULTI</code>.
- A positive match will confirm that the multi driver is in use;
- HDF5 provides no mechanism to determine whether it was called
- as the special case invoked by <code>H5Pset_fapl_split</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code>,</td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em><code>meta_ext,&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Metadata filename extension.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>meta_plist_id</code>,</td>
- <td valign="top">IN: File access property list identifier for the metadata file.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>raw_ext</code>,</td>
- <td valign="top">IN: Raw data filename extension.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>raw_plist_id</code></td>
- <td valign="top">IN: File access property list identifier for the raw data file.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Example:</strong>
- <dd>
- <pre>
-/* Example 1: Both metadata and rawdata files are in the same */
-/* directory. Use Station1-m.h5 and Station1-r.h5 as */
-/* the metadata and rawdata files. */
-hid_t fapl, fid;
-fapl = H5Pcreate(H5P_FILE_ACCESS);
-H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "-r.h5", H5P_DEFAULT);
-fid=H5Fcreate("Station1",H5F_ACC_TRUNC,H5P_DEFAULT,fapl);
-
-/* Example 2: metadata and rawdata files are in different */
-/* directories. Use PointA-m.h5 and /pfs/PointA-r.h5 as */
-/* the metadata and rawdata files. */
-hid_t fapl, fid;
-fapl = H5Pcreate(H5P_FILE_ACCESS);
-H5Pset_fapl_split(fapl, "-m.h5", H5P_DEFAULT, "/pfs/%s-r.h5", H5P_DEFAULT);
-fid=H5Fcreate("PointA",H5F_ACC_TRUNC,H5P_DEFAULT,fapl);</pre>
- </dt>
-
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_split_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_split_f(prp_id, meta_ext, meta_plist, raw_ext, &
- raw_plist, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T),INTENT(IN) :: prp_id ! Property list identifier
- CHARACTER(LEN=*),INTENT(IN) :: meta_ext ! Name of the extension for
- ! the metafile filename
- INTEGER(HID_T),INTENT(IN) :: meta_plist ! Identifier of the meta file
- ! access property list
- CHARACTER(LEN=*),INTENT(IN) :: raw_ext ! Name extension for the raw
- ! file filename
- INTEGER(HID_T),INTENT(IN) :: raw_plist ! Identifier of the raw file
- ! access property list
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_split_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_srb" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplSrb">H5Pset_fapl_srb</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_srb</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>SRB_Info</em> <code>info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Saves SRB connection handler and sets SRB settings.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_srb</code> stores the SRB client-to-server
- connection handler <code>SRB_CONN</code> after the connection
- is established and other user-supplied SRB information.
- <p>
- The user-supplied SRB information is contained in the
- <em>SRB_Info</em> struct pointed to by <code>info</code>
- and is stored in the file access property list <code>fapl_id</code>.
- This information can then be used to create or open a file.
- <dt><strong>Note:</strong>
- <dd><code>H5Pset_fapl_gass</code> is an experimental function.
- It is designed for use only when accessing files via the
- Storage Resource Broker (SRB). For further information, see
- <a href="http://www.npaci.edu/Research/DI/srb/">http//www.npaci.edu/Research/DI/srb/</a>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>SRB_Info</em> <code>info</code></td>
- <td valign="top">IN: Pointer to the SRB information structure.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_stdio" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplStdio">H5Pset_fapl_stdio</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_stdio</code>(
- <em>hid_t</em> <code>fapl_id</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the standard I/O driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_stdio</code> modifies the file access property list
- to use the standard I/O driver, <code>H5FD_STDIO</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fapl_stdio_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fapl_stdio_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fapl_stdio_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fapl_stream" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFaplStream">H5Pset_fapl_stream</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fapl_stream</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>H5FD_stream_fapl_t *</em><code>fapl</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets up the use of the streaming I/O driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fapl_stream</code> sets up the use of the
- streaming I/O driver.
- <p>
- <code>fapl_id</code> is the identifier for the
- file access property list currently in use.
- <p>
- <code>fapl</code> is the file access property list.
- <p>
- The <code>H5FD_stream_fapl_t</code> struct contains the following
- elements:
- <dir>
- <table border=0>
- <tr align=left>
- <td><em>size_t</em></td>
- <td><code>increment</code></td></tr>
- <tr align=left>
- <td><em><font size=-1>H5FD_STREAM_SOCKET_TYPE</font></em></td>
- <td><code>socket</code></td></tr>
- <tr align=left>
- <td><em>hbool_t</em></td>
- <td><code>do_socket_io</code></td></tr>
- <tr align=left>
- <td><em>unsigned int</em></td>
- <td><code>backlog</code></td></tr>
- <tr align=left>
- <td><em><font size=-1>H5FD</font>_stream_broadcast_t</em></td>
- <td><code>broadcast_fn</code></td></tr>
- <tr align=left>
- <td><em>void *</em></td>
- <td><code>broadcast_arg</code></td></tr>
- </table>
- <ul>
- <li><code>increment</code> specifies how much memory to allocate
- each time additional memory is required.
- <li><code>socket</code> is an external socket descriptor;
- if a valid socket argument is provided, that socket will be used.
- <li><code>do_socket_io</code> is a boolean value specifying whether
- to perform I/O on <code>socket</code>.
- <li><code>backlog</code> is the argument for the
- <code>listen</code> call.
- <li><code>broadcast_fn</code> is the broadcast callback function.
- <li><code>broadcast_arg</code> is the user argument to
- the broadcast callback function.
- </ul>
- </dir>
- <p>
- <code>H5Pset_fapl_stream</code> and <code>H5Pget_fapl_stream</code>
- are not intended for use in a parallel environment.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5FD_stream_fapl_t&nbsp;*</em><code>fapl&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The streaming I/O file access property list.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fclose_degree" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFcloseDegree">H5Pset_fclose_degree</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fclose_degree</code>(<em>hid_t</em> <code>fapl_id</code>,
- <em>H5F_close_degree_t</em> <code>fc_degree</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets the file close degree.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fclose_degree</code> sets the file close degree property <code>fc_degree</code>
- in the file access property list <code>fapl_id</code>. 
- <p> The value of <code>fc_degree</code> determines how aggressively <code>H5Fclose</code>
- deals with objects within a file that remain open when <code>H5Fclose</code>
- is called to close that file.  <code>fc_degree</code> can have any one of
- four valid values:
- <div align="center">
- <table width="75%" border="1" cellpadding="3">
- <tr>
- <th valign="top">Degree name</th>
- <th valign="top"><code>H5Fclose</code> behavior with no open object
- in file</th>
- <th valign="top"><code>H5Fclose</code> behavior with open object(s)
- in file</th>
- </tr>
- <tr>
- <td valign="top"><code>H5F_CLOSE_WEAK</code></td>
- <td valign="top">Actual file is closed.</td>
- <td valign="top">Access to file identifier is terminated; actual file
- close is delayed until all objects in file are closed</td>
- </tr>
- <tr>
- <td valign="top"><code>H5F_CLOSE_SEMI</code></td>
- <td valign="top">Actual file is closed.</td>
- <td valign="top">Function returns FAILURE</td>
- </tr>
- <tr>
- <td valign="top"><code>H5F_CLOSE_STRONG</code></td>
- <td valign="top">Actual file is closed.</td>
- <td valign="top">All open objects remaining in the file are closed then
- file is closed</td>
- </tr>
- <tr>
- <td valign="top"><code>H5F_CLOSE_DEFAULT</code></td>
- <td colspan="2" valign="top">The VFL driver chooses the behavior.  Currently,
- all VFL drivers set this value to <code>H5F_CLOSE_WEAK</code>, except
- for the MPI-I/O driver, which sets it to <code>H5F_CLOSE_SEMI</code>.
- </td>
- </tr>
- </table>
- </div>
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5F_close_degree_t</em>&nbsp;<code>fc_degree&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Pointer to a location containing the file close degree property,
- the value of <code>fc_degree</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful. Otherwise returns a negative
- value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fclose_degree_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fclose_degree_f(fapl_id, degree, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: fapl_id ! File access property list identifier
- INTEGER, INTENT(IN) :: degree ! Info about file close behavior
- ! Possible values:
- ! H5F_CLOSE_DEFAULT_F
- ! H5F_CLOSE_WEAK_F
- ! H5F_CLOSE_SEMI_F
- ! H5F_CLOSE_STRONG_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fclose_degree_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- HEADER RIGHT "H5Pset_fill_time" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFillTime">H5Pset_fill_time</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_fill_time</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>H5D_fill_time_t</em> <code>fill_time</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the time when fill values are written to a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fill_time</code> sets up the timing for writing fill values
- to a dataset.
- This property is set in the dataset creation property list <code>plist_id</code>.
- <p>
- Timing is specified in <code>fill_time</code> with one of the following values:
- <table border=0 >
- <tr valign="top"><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5D_FILL_TIME_IFSET</code>&nbsp;&nbsp;
- </td><td>
- Write fill values to the dataset when storage space is allocated
- only if there is a user-defined fill value, i.e., one set with
- <a href="#Property-SetFillValue">H5Pset_fill_value</a>.
- &nbsp;&nbsp;(Default)
- </td></tr><tr valign="top"><td>&nbsp;</td><td>
- <code>H5D_FILL_TIME_ALLOC</code>
- </td><td>
- Write fill values to the dataset when storage space is allocated.
- </td></tr><tr valign="top"><td>&nbsp;</td><td>
- <code>H5D_FILL_TIME_NEVER</code>
- </td><td>
- Never write fill values to the dataset.
- </td></tr></table>
- <dt><strong>Note:</strong>
- <dd><code>H5Pset_fill_time</code> is designed for coordination
- with the dataset fill value and
- dataset storage allocation time properties, set with the functions
- <code>H5Pset_fill_value</code> and <code>H5Pset_alloc_time</code>.
- <p>
- See <a href="RM_H5D.html#Dataset-Create">H5Dcreate</a> for
- further cross-references.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5D_fill_time_t</em>&nbsp;<code>fill_time&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: When to write fill values to a dataset.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fill_time_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fill_time_f(plist_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset creation property
- ! list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: flag ! File time flag
- ! Possible values are:
- ! H5D_FILL_TIME_ERROR_F
- ! H5D_FILL_TIME_ALLOC_F
- ! H5D_FILL_TIME_NEVER_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fill_time_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fill_value" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFillValue">H5Pset_fill_value</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fill_value</code>(<em>hid_t</em> <code>plist_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>const void *</em><code>value</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the fill value for a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fill_value</code> sets the fill value for
- a dataset in the dataset creation property list.
- <p>
- <code>value</code> is interpreted as being of datatype
- <code>type_id</code>. This datatype may differ from that of
- the dataset, but the HDF5 library must be able to convert
- <code>value</code> to the dataset datatype when the dataset
- is created.
- <p>
- The default fill value is <code>0</code> (zero), which is
- interpreted according to the actual dataset datatype.
- <p>
- Setting <code>value</code> to <code>NULL</code> indicates
- that the fill value is to be undefined.
- <dt><strong>Notes:</strong>
- <dd> Applications sometimes write data only to portions of
- an allocated dataset. It is often useful in such cases
- to fill the unused space with a known
- <span class="termEmphasis">fill value</span>.
- This function allows the user application to set that fill value;
- the functions
- <a href="RM_H5D.html#Dataset-Fill">H5Dfill</a> and
- <a href="RM_H5P.html#Property-SetFillTime">H5Pset_fill_time</a>,
- respectively, provide the ability
- to apply the fill value on demand or
- to set up its automatic application.
- <p>
- A fill value should be defined so that it is appropriate for
- the application. While the HDF5 default fill value is
- <code>0</code> (zero), it is often appropriate to use another value.
- It might be useful, for example, to use a value that is
- known to be impossible for the application to legitimately generate.
- <p>
- <code>H5Pset_fill_value</code> is designed to work in
- concert with <code>H5Pset_alloc_time</code> and
- <code>H5Pset_fill_time</code>.
- <code>H5Pset_alloc_time</code> and <code>H5Pset_fill_time</code>
- govern the timing of dataset storage allocation and fill value
- write operations and can be important in tuning application
- performance.
- <p>
- See <a href="RM_H5D.html#Dataset-Create">H5Dcreate</a> for
- further cross-references.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code>,</td>
- <td valign="top">IN: Datatype of <code>value</code>.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;void&nbsp;*</em><code>value&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Pointer to buffer containing value to use as fill value.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fill_value_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fill_value_f(prp_id, type_id, fillvalue, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of fill
- ! value datatype (in memory)
- TYPE(VOID), INTENT(IN) :: fillvalue ! Fillvalue
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fill_value_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_filter" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFilter">H5Pset_filter</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_filter</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5Z_filter_t</em> <code>filter</code>,
- <em>unsigned int</em> <code>flags</code>,
- <em>size_t</em> <code>cd_nelmts</code>,
- <em>const unsigned int</em> <code>cd_values[]</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Adds a filter to the filter pipeline.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_filter</code> adds the specified
- <code>filter</code> and corresponding properties to the
- end of an output filter pipeline.
- If <code>plist</code> is a dataset creation property list,
- the filter is added to the permanent filter pipeline;
- if <code>plist</code> is a dataset transfer property list,
- the filter is added to the transient filter pipeline.
- <p>
- The array <code>cd_values</code> contains
- <code>cd_nelmts</code> integers which are auxiliary data
- for the filter. The integer values will be stored in the
- dataset object header as part of the filter information.
- <p>
- The <code>flags</code> argument is a bit vector with
- the following fields specifying certain general properties
- of the filter:
- <center>
- <table align=center width="75%">
- <tr valign=top>
- <td valign=top><code>H5Z_FLAG_OPTIONAL</code>&nbsp;&nbsp;</td>
- <td valign=top>If this bit is set then the filter is
- optional. If the filter fails (see below) during an
- <code>H5Dwrite</code> operation then the filter is
- just excluded from the pipeline for the chunk for which
- it failed; the filter will not participate in the
- pipeline during an <code>H5Dread</code> of the chunk.
- This is commonly used for compression filters: if the
- filter result would be larger than the input, then
- the compression filter returns failure and the
- uncompressed data is stored in the file. If this bit is
- clear and a filter fails, then <code>H5Dwrite</code>
- or <code>H5Dread</code> also fails.
- <p>
- This flag should not be set for the Fletcher32 checksum
- filter as it will bypass the checksum filter without
- reporting checksum errors to an application.</td>
- </tr>
- </table>
- </center>
- <p>
- The <code>filter</code> parameter specifies the filter to be set.
- Valid filter identifiers are as follows:
-
- <center>
- <table width=75%>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_DEFLATE</code>
- </td><td>
- Data compression filter, employing the gzip algorithm
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_SHUFFLE</code>
- </td><td>
- Data shuffling filter
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_FLETCHER32&nbsp;&nbsp;</code>
- </td><td>
- Error detection filter, employing the Fletcher32 checksum algorithm
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5Z_FILTER_SZIP</code>
- </td><td>
- Data compression filter, employing the SZIP algorithm
- </td></tr>
- </table>
- </center>
- <p>
- Also see <a href="#Property-SetEdcCheck">H5Pset_edc_check</a> and
- <a href="Property-SetFilterCallback">H5Pset_filter_callback</a>.
-
- <dt><strong>Notes:</strong>
- <dd>This function currently supports only the permanent filter
- pipeline; <code>plist</code> must be a dataset creation
- property list.
- <p>
- If multiple filters are set for a property list, they will be
- applied to each chunk in the order in which they were set.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5Z_filter_t</em> <code>filter</code></td>
- <td valign="top">IN: Filter identifier for the filter
- to be added to the pipeline.</td></tr>
- <tr>
- <td valign="top"><em>unsigned int</em> <code>flags</code></td>
- <td valign="top">IN: Bit vector specifying certain general properties
- of the filter.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>cd_nelmts</code></td>
- <td valign="top">IN: Number of elements in <code>cd_values</code>.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;unsigned&nbsp;int</em>&nbsp;<code>cd_values[]&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Auxiliary data for the filter.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_filter_f
- <dd>
- <pre>
-SUBROUTINE h5pset_filter_f(prp_id, filter, flags, cd_nelmts, cd_values, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: filter ! Filter to be added to the pipeline
- INTEGER, INTENT(IN) :: flags ! Bit vector specifying certain
- ! general properties of the filter
- INTEGER(SIZE_T), INTENT(IN) :: cd_nelmts
- ! Number of elements in cd_values
- INTEGER, DIMENSION(*), INTENT(IN) :: cd_values
- ! Auxiliary data for the filter
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_filter_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_filter_callback" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFilterCallback">H5Pset_filter_callback</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_filter_callback</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5Z_filter_func_t</em> <code>func</code>,
- <em>void *</em><code>op_data</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets user-defined filter callback function.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_filter_callback</code> sets the user-defined
- filter callback function <code>func</code> in the
- dataset transfer property list <code>plist</code>.
- <p>
- The parameter <code>op_data</code> is a pointer to user-defined
- input data for the callback function and will be passed through
- to the callback function.
- <p>
- The callback function <code>func</code> defines the actions
- an application is to take when a filter fails.
- The function prototype is as follows:
- <dir>
- <code>typedef</code> <em>H5Z_cb_return_t</em> (<code>H5Z_filter_func_t</code>)
- (<em>H5Z_filter_t</em> <code>filter</code>,
- <em>void *</em><code>buf</code>,
- <em>size_t</em> <code>buf_size</code>,
- <em>void *</em><code>op_data</code>)
- </dir>
- <p>
- where <code>filter</code> indicates which filter has failed,
- <code>buf</code> and <code>buf_size</code> are used to pass in
- the failed data,
- and <code>op_data</code> is the required input data for this
- callback function.
- <p>
- Valid callback function return values are
- <code>H5Z_CB_FAIL</code> and <code>H5Z_CB_CONT</code>.  
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Dataset transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5Z_filter_func_t</em>&nbsp;<code>func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: User-defined filter callback function.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>op_data</code></td>
- <td valign="top">IN: User-defined input data for the callback function.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_fletcher32" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetFletcher32">H5Pset_fletcher32</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_fletcher32</code>(<em>hid_t</em> <code>plist</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets up use of the Fletcher32 checksum filter.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_fletcher32</code> sets the Fletcher32 checksum filter
- in the dataset creation property list <code>plist</code>.  
- <dt><strong>Note:</strong>
- <dd>The initial error detection implementation supports
- error detection for chunked datasets only.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_fletcher32_f
- <dd>
- <pre>
-SUBROUTINE h5pset_fletcher32_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset creation property list
- ! identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_fletcher32_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_gc_references" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetGCReferences">H5Pset_gc_references</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_gc_reference</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned</em> <code>gc_ref</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets garbage collecting references flag.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_gc_references</code> sets the flag for
- garbage collecting references for the file.
- <p>
- Dataset region references and other reference types use space
- in an HDF5 file's global heap. If garbage collection is on
- and the user passes in an uninitialized value in a reference structure,
- the heap might get corrupted. When garbage collection is off, however,
- and the user re-uses a reference, the previous heap block will be
- orphaned and not returned to the free heap space.
- <p>
- When garbage collection is on, the user must initialize the
- reference structures to 0 or risk heap corruption.
- <p>
- The default value for garbage collecting references is off.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em>&nbsp;<code>gc_ref&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Flag setting reference garbage collection to
- on (<code>1</code>) or off (<code>0</code>).</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_gc_references_f
- <dd>
- <pre>
-SUBROUTINE h5pset_gc_references_f (prp_id, gc_reference, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: gc_reference ! Flag for garbage collecting
- ! references for the file
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_gc_references_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_hyper_vector_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetHyperVectorSize">H5Pset_hyper_vector_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_hyper_vector_size</code>(<em>hid_t</em> <code>dxpl_id</code>,
- <em>size_t</em> <code>vector_size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets number of I/O vectors to be read/written in hyperslab I/O.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_hyper_vector_size</code> sets the number of
- I/O vectors to be accumulated in memory before being issued
- to the lower levels of the HDF5 library for reading or writing the
- actual data.
- <p>
- The <em>I/O vectors</em> are hyperslab offset and length pairs
- and are generated during hyperslab I/O.
- <p>
- The number of I/O vectors is passed in <code>vector_size</code>
- to be set in the dataset transfer property list <code>dxpl_id</code>.
- <code>vector_size</code> must be greater than <code>1</code> (one).
- <p>
- <code>H5Pset_hyper_vector_size</code> is an I/O optimization function;
- increasing <code>vector_size</code> should provide better performance,
- but the library will use more memory during hyperslab I/O.
- The default value of <code>vector_size</code> is <code>1024</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dxpl_id</code></td>
- <td valign="top">IN: Dataset transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>vector_size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Number of I/O vectors to accumulate in memory for I/O operations.
- Must be greater than <code>1</code> (one). Default value: <code>1024</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_hyper_vector_size_f
- <dd>
- <pre>
-SUBROUTINE h5pset_hyper_vector_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! Dataset transfer property list
- ! identifier
- INTEGER(SIZE_T), INTENT(IN) :: size ! Vector size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_hyper_vector_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_istore_k" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetIstoreK">H5Pset_istore_k</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_istore_k</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned</em> <code>ik</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the size of the parameter used to control the
- B-trees for indexing chunked datasets.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_istore_k</code> sets the size of the parameter
- used to control the B-trees for indexing chunked datasets.
- This function is only valid for file creation property lists.
- <p>
- <code>ik</code> is one half the rank of a tree that stores
- chunked raw data. On average, such a tree will be 75% full,
- or have an average rank of 1.5 times the value of
- <code>ik</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of property list to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>ik</code></td>
- <td valign="top">IN: 1/2 rank of chunked storage B-tree.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_istore_k_f
- <dd>
- <pre>
-SUBROUTINE h5pset_istore_k_f (prp_id, ik, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: ik ! 1/2 rank of chunked storage B-tree
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_istore_k_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_layout" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetLayout">H5Pset_layout</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_layout</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5D_layout_t</em> <code>layout</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the type of storage used to store the raw data for a dataset.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_layout</code> sets the type of storage used to store the
- raw data for a dataset.
- This function is only valid for dataset creation property lists.
- <p>
- Valid values for <code>layout</code> are:
- <ul><dl>
- <dt>H5D_COMPACT
- <dd>Store raw data in the dataset object header in file.
- This should only be used for very small amounts of raw
- data.
- The current limit is approximately 64K (HDF5 Release 1.6).
- <dt>H5D_CONTIGUOUS
- <dd>Store raw data separately from the object header in one
- large chunk in the file.
- <dt>H5D_CHUNKED
- <dd>Store raw data separately from the object header as
- chunks of data in separate locations in the file.
- </dl></ul>
- <p>
- Note that a compact storage layout may affect writing data to
- the dataset with parallel applications. See note in
- <a href="RM_H5D.html#Dataset-Write">H5Dwrite</a>
- documentation for details.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of property list to query.</td></tr>
- <tr>
- <td valign="top"><em>H5D_layout_t</em>&nbsp;<code>layout&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Type of storage layout for raw data.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_layout_f
- <dd>
- <pre>
-SUBROUTINE h5pset_layout_f (prp_id, layout, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: layout ! Type of storage layout for raw data
- ! Possible values are:
- ! H5D_COMPACT_F
- ! H5D_CONTIGUOUS_F
- ! H5D_CHUNKED_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_layout_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_mdc_config" -->
-<!--
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetMdcConfig">H5Pset_mdc_config</a>
- <dt><strong>Signature:</strong>
- <dt><strong>Purpose:</strong>
- <dt><strong>Description:</strong>
- <dt><strong>Parameters:</strong>
- <dt><strong>Returns:</strong>
- <dt><strong>Fortran90 Interface:</strong>
-</dl>
--->
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_meta_block_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetMetaBlockSize">H5Pset_meta_block_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_meta_block_size</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t</em> <code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the minimum metadata block size.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_meta_block_size</code> sets the
- minimum size, in bytes, of metadata block allocations when
- <code>H5FD_FEAT_AGGREGATE_METADATA</code> is set by a VFL driver.
- <p>
- Each <i>raw</i> metadata block is initially allocated to be of the
- given size. Specific metadata objects (e.g., object headers,
- local heaps, B-trees) are then sub-allocated from this block.
- <p>
- The default setting is 2048 bytes, meaning that the library
- will attempt to aggregate metadata in at least 2K blocks in the file.
- Setting the value to <code>0</code> (zero) with this function
- will turn off metadata aggregation, even if the VFL driver attempts
- to use the metadata aggregation strategy.
- <p>
- Metadata aggregation reduces the number of small data objects
- in the file that would otherwise be required for metadata.
- The aggregated block of metadata is usually written in a
- single write action and always in a contiguous block,
- potentially significantly improving library and application
- performance.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>size</code></td>
- <td valign="top">IN: Minimum size, in bytes, of metadata block allocations.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_meta_block_size_f
- <dd>
- <pre>
-SUBROUTINE h5pset_meta_block_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list
- ! identifier
- INTEGER(HSIZE_T), INTENT(IN) :: size ! Metadata block size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_meta_block_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_multi_type" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetMultiType">H5Pset_multi_type</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_multi_type</code> (
- <em>hid_t</em> <code>fapl_id</code>,
- <em>H5FD_mem_t</em> <code>type</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets data type property for <code>MULTI</code> driver.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_multi_type</code> sets the data type property in the
- file access or data transfer property list <code>fapl_id</code>.
- This enables a user application to specify the type of data the
- application wishes to access so that the application
- can retrieve a file handle for low-level access to the particular member
- of a set of <code>MULTI</code> files in which that type of data is stored.
- The file handle is retrieved with a separate call
- to <a href="RM_H5F.html#File-GetVfdHandle"><code>H5Fget_vfd_handle</code></a>
- (or, in special circumstances, to <code>H5FDget_vfd_handle</code>;
- see <cite>Virtual File Layer</cite> and <cite>List of VFL Functions</cite>
- in <a href="TechNotes.html"><cite>HDF5 Technical Notes</cite></a>).
- <p>
- The type of data specified in <code>type</code> may be one of the following:
- <table border=0>
- <tr valign=top align=left><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5FD_MEM_DEFAULT</code>&nbsp;&nbsp;
- </td><td>
- Need description....
- </td></tr>
- <tr valign=top align=left><td>&nbsp;</td><td>
- <code>H5FD_MEM_SUPER</code>
- </td><td>
- Super block ... need description....
- </td></tr>
- <tr valign=top align=left><td>&nbsp;</td><td>
- <code>H5FD_MEM_BTREE</code>
- </td><td>
- Btree ... need description....
- </td></tr>
- <tr valign=top align=left><td>&nbsp;</td><td>
- <code>H5FD_MEM_DRAW</code>
- </td><td>
- Need description....
- </td></tr>
- <tr valign=top align=left><td>&nbsp;</td><td>
- <code>H5FD_MEM_GHEAP</code>
- </td><td>
- Global heap ... need description....
- </td></tr>
- <tr valign=top align=left><td>&nbsp;</td><td>
- <code>H5FD_MEM_LHEAP</code>
- </td><td>
- Local Heap ... need description....
- </td></tr>
- <tr valign=top align=left><td>&nbsp;</td><td>
- <code>H5FD_MEM_OHDR</code>
- </td><td>
- Need description....
- </td></tr>
- </table>
- <p>
- Use of this function is only appropriate for an HDF5 file written
- as a set of files with the <code>MULTI</code> file driver.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>fapl_id</code></td>
- <td valign="top">IN: File access property list or data transfer property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5FD_mem_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Type of data.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_preserve" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetPreserve">H5Pset_preserve</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_preserve</code>(<em>hid_t</em> <code>plist</code>,
- <em>hbool_t</em> <code>status</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the dataset transfer property list status to TRUE or FALSE.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_preserve</code> sets the
- dataset transfer property list status to TRUE or FALSE.
- <p>
- When reading or writing compound data types and the
- destination is partially initialized and the read/write is
- intended to initialize the other members, one must set this
- property to TRUE. Otherwise the I/O pipeline treats the
- destination datapoints as completely uninitialized.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for the dataset transfer property list.</td></tr>
- <tr>
- <td valign="top"><em>hbool_t</em>&nbsp;<code>status&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Status of for the dataset transfer property list
- (TRUE/FALSE).</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_preserve_f
- <dd>
- <pre>
-SUBROUTINE h5pset_preserve_f(prp_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Dataset transfer property
- ! list identifier
- LOGICAL, INTENT(IN) :: flag ! Status for the dataset
- ! transfer property list
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_preserve_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_shuffle" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetShuffle">H5Pset_shuffle</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_shuffle</code>(<em>hid_t</em> <code>plist_id</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets up use of the shuffle filter.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_shuffle</code> sets the shuffle filter,
- <code>H5Z_FILTER_SHUFFLE</code>,
- in the dataset creation property list <code>plist_id</code>.  
- <p>
- The shuffle filter <span class=termEmphasis>de-interlaces</span>
- a block of data by reordering the bytes.
- All the bytes from one consistent byte position of
- each data element are placed together in one block;
- all bytes from a second consistent byte position of
- each data element are placed together a second block; etc.
- For example, given three data elements of a 4-byte datatype
- stored as <code>012301230123</code>,
- shuffling will re-order data as <code>000111222333</code>.
- This can be a valuable step in an effective compression
- algorithm because the bytes in each byte position are often
- closely related to each other and putting them together
- can increase the compression ratio.
- <p>
- As implied above, the primary value of the shuffle filter
- lies in its coordinated use with a compression filter;
- it does not provide data compression when used alone.
- When the shuffle filter is applied to a dataset
- immediately prior to the use of a compression filter,
- the compression ratio achieved is often superior to that
- achieved by the use of a compression filter without
- the shuffle filter.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Dataset creation property list identifier.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_shuffle_f
- <dd>
- <pre>
-SUBROUTINE h5pset_shuffle_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_shuffle_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_sieve_buf_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetSieveBufSize">H5Pset_sieve_buf_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_sieve_buf_size</code>(
- <em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t</em> <code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the maximum size of the data sieve buffer.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_sieve_buf_size</code> sets <code>size</code>,
- the maximum size in bytes of the data sieve buffer, which is
- used by file drivers that are capable of using data sieving.
- <p>
- The data sieve buffer is used when performing I/O on datasets
- in the file. Using a buffer which is large enough to hold
- several pieces of the dataset being read in for
- hyperslab selections boosts performance by quite a bit.
- <p>
- The default value is set to 64KB, indicating that file I/O for
- raw data reads and writes will occur in at least 64KB blocks.
- Setting the value to 0 with this API function will turn off the
- data sieving, even if the VFL driver attempts to use that strategy.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>size</code></td>
- <td valign="top">IN: Maximum size, in bytes, of data sieve buffer.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_sieve_buf_size_f
- <dd>
- <pre>
-SUBROUTINE h5pset_sieve_buf_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! File access property list
- ! identifier
- INTEGER(SIZE_T), INTENT(IN) :: size ! Sieve buffer size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_sieve_buf_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_sizes" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetSizes">H5Pset_sizes</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_sizes</code>(<em>hid_t</em> <code>plist</code>,
- <em>size_t</em> <code>sizeof_addr</code>,
- <em>size_t</em> <code>sizeof_size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the byte size of the offsets and lengths used to address objects
- in an HDF5 file.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_sizes</code> sets the byte size of the offsets
- and lengths used to address objects in an HDF5 file.
- This function is only valid for file creation property lists.
- Passing in a value of 0 for one of the <code>sizeof_...</code>
- parameters retains the current value.
- The default value for both values is the same as
- <code>sizeof(hsize_t)</code> in the library (normally 8 bytes).
- Valid values currently are 2, 4, 8 and 16.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of property list to modify.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>sizeof_addr&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Size of an object offset in bytes.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>sizeof_size</code></td>
- <td valign="top">IN: Size of an object length in bytes.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_sizes_f
- <dd>
- <pre>
-SUBROUTINE h5pset_sizes_f (prp_id, sizeof_addr, sizeof_size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(SIZE_T), INTENT(IN) :: sizeof_addr ! Size of an object offset
- ! in bytes
- INTEGER(SIZE_T), INTENT(IN) :: sizeof_size ! Size of an object length
- ! in bytes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_sizes_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_small_data_block_size" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetSmallData">H5Pset_small_data_block_size</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_small_data_block_size</code>(<em>hid_t</em> <code>fapl_id</code>,
- <em>hsize_t</em> <code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the size of a contiguous block reserved for small data.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_small_data_block_size</code> reserves blocks of
- <code>size</code> bytes for the contiguous storage of the raw data
- portion of <em>small</em> datasets.
- The HDF5 library then writes the raw data from small datasets
- to this reserved space, thus reducing unnecessary discontinuities
- within blocks of meta data and improving IO performance.
- <p>
- A small data block is actually allocated the first time a
- qualifying small dataset is written to the file.
- Space for the raw data portion of this small dataset is suballocated
- within the small data block.
- The raw data from each subsequent small dataset is also written to
- the small data block until it is filled; additional small data blocks
- are allocated as required.
- <p>
- The HDF5 library employs an algorithm that determines whether
- IO performance is likely to benefit from the use of this mechanism
- with each dataset as storage space is allocated in the file.
- A larger <code>size</code> will result in this mechanism being
- employed with larger datasets.
- <p>
- The small data block size is set as an allocation property in the
- file access property list identified by <code>fapl_id</code>.
- <p>
- Setting <code>size</code> to zero (<code>0</code>) disables the
- small data block mechanism.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>fapl_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: File access property list identifier.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em> <code>size</code></td>
- <td valign="top">IN: Maximum size, in bytes, of the small data block.
- <br>
- The default size is <code>2048</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_small_data_block_size_f
- <dd>
- <pre>
-SUBROUTINE h5pset_small_data_block_size_f(plist_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: plist_id ! File access
- ! property list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: size ! Small raw data block size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_small_data_block_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_sym_k" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetSymK">H5Pset_sym_k</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_sym_k</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned</em> <code>ik</code>,
- <em>unsigned</em> <code>lk</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the size of parameters used to control the symbol table nodes.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_sym_k</code> sets the size of parameters used to
- control the symbol table nodes. This function is only valid
- for file creation property lists. Passing in a value of 0 for
- one of the parameters retains the current value.
- <p>
- <code>ik</code> is one half the rank of a tree that stores a symbol
- table for a group. Internal nodes of the symbol table are on
- average 75% full. That is, the average rank of the tree is
- 1.5 times the value of <code>ik</code>.
- <p>
- <code>lk</code> is one half of the number of symbols that can
- be stored in a symbol table node. A symbol table node is the
- leaf of a symbol table tree which is used to store a group.
- When symbols are inserted randomly into a group, the group's
- symbol table nodes are 75% full on average. That is, they
- contain 1.5 times the number of symbols specified by
- <code>lk</code>.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>plist&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier for property list to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>ik</code></td>
- <td valign="top">IN: Symbol table tree rank.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>lk</code></td>
- <td valign="top">IN: Symbol table node size.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_sym_k_f
- <dd>
- <pre>
-SUBROUTINE h5pset_sym_k_f (prp_id, ik, lk, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER, INTENT(IN) :: ik ! Symbol table tree rank
- INTEGER, INTENT(IN) :: lk ! Symbol table node size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_sym_k_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_szip" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetSzip">H5Pset_szip</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_szip</code>(<em>hid_t</em> <code>plist</code>,
- <em>unsigned int</em> <code>options_mask</code>,
- <em>unsigned int</em> <code>pixels_per_block</code>)
- <dt><strong>Purpose:</strong>
- <dd>Sets up use of the SZIP compression filter.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_szip</code> sets an SZIP compression filter,
- <code>H5Z_FILTER_SZIP</code>, for a dataset.
- SZIP is a compression method designed for use with scientific data.
- <p>
- Before proceeding, be aware that there are factors that affect
- your rights and ability to use SZIP compression.
- See the documents at
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc_resource/SZIP/index.html"
- target="External">SZIP Compression in HDF5</a>
- for <em>important information regarding terms of use and
- the SZIP copyright notice</em>,
- for further discussion of SZIP compression in HDF5,
- and for a list of SZIP-related references.
-
- <p>
- In the text below, the term <em>pixel</em> refers to
- an HDF5 data element.
- This terminology derives from SZIP compression's use with image data,
- where pixel referred to an image pixel.
- <p>
- The SZIP <code>bits_per_pixel</code> value (see <b>Notes</b>, below)
- is automatically set, based on the HDF5 datatype.
- SZIP can be used with atomic datatypes that may have size
- of 8, 16, 32, or 64 bits.
- Specifically, a dataset with a datatype that is
- 8-, 16-, 32-, or 64-bit
- signed or unsigned integer;
- char; or
- 32- or 64-bit float
- can be compressed with SZIP.
- See <b>Notes</b>, below, for further discussion of the
- the SZIP <code>bits_per_pixel</code> setting.
-
- <p>
- SZIP compression cannot be applied to
- compound datatypes,
- array datatypes,
- variable-length datatypes,
- enumerations, or
- any other user-defined datatypes.
- If an SZIP filter is set up for a dataset containing a non-allowed
- datatype, <code>H5Pset_szip</code> will succeed but the subsequent call
- to <a href="RM_H5D.html#Dataset-Create"><code>H5Dcreate</code></a>
- will fail;
- the conflict is detected only when the property list is used.
-
-
- <p>
- SZIP options are passed in an options mask, <code>options_mask</code>,
- as follows.
- <center>
- <table>
- <tr valign=top align=left><td>
- <hr>
- <b>Option</b>
- </td><td>
- <hr>
- <b>Description</b>
- <br>
- <font size=-1>(Mutually exclusive; select one.)</font>
- </td></tr>
- <tr valign=top align=left><td>
- <hr>
- <code>H5_SZIP_EC_OPTION_MASK&nbsp;&nbsp;</code>
- </td><td>
- <hr>
- Selects entropy coding method.
- </td></tr>
- <tr valign=top align=left><td>
- <code>H5_SZIP_NN_OPTION_MASK</code>
- </td><td>
- Selects nearest neighbor coding method.
- </td></tr>
- <tr valign=top align=left><td>
- <hr>
- </td><td>
- <hr>
- </td></tr>
- </table>
- </center>
- The following guidelines can be used in determining
- which option to select:
- <ul>
- <li>The entropy coding method, the EC option specified by
- <code>H5_SZIP_EC_OPTION_MASK</code>, is best suited for
- data that has been processed.
- The EC method works best for small numbers.
- <li>The nearest neighbor coding method, the NN option
- specified by <code>H5_SZIP_NN_OPTION_MASK</code>,
- preprocesses the data then the applies EC method as above.
- </ul>
- Other factors may affect results, but the above criteria
- provides a good starting point for optimizing data compression.
-
- <p>
- SZIP compresses data block by block, with a user-tunable block size.
- This block size is passed in the parameter
- <code>pixels_per_block</code> and must be even and not greater than 32,
- with typical values being <code>8</code>, <code>10</code>,
- <code>16</code>, or <code>32</code>.
- This parameter affects compression ratio;
- the more pixel values vary, the smaller this number should be to
- achieve better performance.
- <p>
- In HDF5, compression can be applied only to chunked datasets.
- If <code>pixels_per_block</code> is bigger than the total
- number of elements in a dataset chunk,
- <code>H5Pset_szip</code> will succeed but the subsequent call to
- <a href="RM_H5D.html#Dataset-Create"><code>H5Dcreate</code></a>
- will fail; the conflict is detected only when the property list
- is used.
- <p>
- To achieve optimal performance for SZIP compression,
- it is recommended that a chunk's fastest-changing dimension
- be equal to <em>N</em> times <code>pixels_per_block</code>
- where <em>N</em> is the maximum number of blocks per scan line
- allowed by the SZIP library.
- In the current version of SZIP, <em>N</em> is set to 128.
- <p>
- <code>H5Pset_szip</code> will fail if SZIP encoding is
- disabled in the available copy of the SZIP library.
- <a href="RM_H5Z.html#Compression-GetFilterInfo">
- <code>H5Zget_filter_info</code></a> can be employed
- to avoid such a failure.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Dataset creation property list
- identifier.</td></tr>
- <tr>
- <td valign="top"><em>unsigned int</em> <code>options_mask</code></td>
- <td valign="top">IN: A bit-mask conveying the desired SZIP options.
- Valid values are <code>H5_SZIP_EC_OPTION_MASK</code>
- and <code>H5_SZIP_NN_OPTION_MASK</code>.</td></tr>
- <tr>
- <td valign="top"><em>unsigned&nbsp;int</em>&nbsp;<code>pixels_per_block&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The number of pixels or data elements in each data block.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Notes:</strong>
- <dd>The following notes are of interest primarily to those who have
- used SZIP compression outside of the HDF5 context.
- <p>
- In non-HDF5 applications, SZIP typically requires that the
- user application supply additional parameters:
- <ul>
- <li><code>pixels_in_object</code>,
- the number of pixels in the object to be compressed
- <li><code>bits_per_pixel</code>,
- the number of bits per pixel
- <li><code>pixels_per_scanline</code>,
- the number of pixels per scan line
- </ul>
- <p>
- These values need not be independently supplied in the HDF5
- environment as they are derived from the datatype and dataspace,
- which are already known.
- In particular, HDF5 sets
- <code>pixels_in_object</code> to the number of elements in a chunk
- and <code>bits_per_pixel</code> to the size of the element or
- pixel datatype.
- The following algorithm is used to set
- <code>pixels_per_scanline</code>:
- <ul>
- <li>If the size of a chunk's fastest-changing dimension,
- <em>size</em>, is greater than 4K,
- set <code>pixels_per_scanline</code> to
- 128 times <code>pixels_per_block</code>.
- <li>If <em>size</em> is less than 4K
- but greater than <code>pixels_per_block</code>,
- set <code>pixels_per_scanline</code> to the minimum of
- <em>size</em> and 128 times <code>pixels_per_block</code>.
- <li>If <em>size</em> is less than <code>pixels_per_block</code>
- but greater than the number elements in the chunk,
- set <code>pixels_per_scanline</code> to the minimum of
- the number elements in the chunk and
- 128 times <code>pixels_per_block</code>.
- </ul>
-
- <p>
- The HDF5 datatype may have precision that is less than the
- full size of the data element, e.g., an 11-bit integer can be
- defined using
- <a href="RM_H5T.html#Datatype-SetPrecision"><code>H5Tset_precision</code></a>.
- To a certain extent, SZIP can take advantage of the
- precision of the datatype to improve compression:
- <ul><li>
- If the HDF5 datatype size is 24-bit or less and
- the offset of the bits in the HDF5 datatype is zero
- (see <a href="RM_H5T.html#Datatype-SetOffset"><code>H5Tset_offset</code></a>
- or <a href="RM_H5T.html#Datatype-GetOffset"><code>H5Tget_offset</code></a>),
- the data is the in lowest N bits of the data element.
- In this case, the SZIP <code>bits_per_pixel</code>
- is set to the precision
- of the HDF5 datatype.
- <li>
- If the offset is not zero, the SZIP <code>bits_per_pixel</code>
- will be set to the number of bits in the full size of the data
- element.
- <li>
- If the HDF5 datatype precision is 25-bit to 32-bit,
- the SZIP <code>bits_per_pixel</code> will be set to 32.
- <li>
- If the HDF5 datatype precision is 33-bit to 64-bit,
- the SZIP <code>bits_per_pixel</code> will be set to 64.
- </ul>
-
- <p>
- HDF5 always modifies the options mask provided by the user
- to set up usage of <code>RAW_OPTION_MASK</code>,
- <code>ALLOW_K13_OPTION_MASK</code>, and one of
- <code>LSB_OPTION_MASK</code> or <code>MSB_OPTION_MASK</code>,
- depending on endianness of the datatype.
-
- <dt><strong>Fortran90 Interface:</strong> h5pset_szip_f
- <dd>
- <pre>
-SUBROUTINE h5pset_szip_f(prp_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id
- ! Dataset creation property list identifier
- INTEGER, INTENT(IN) :: options_mask
- ! A bit-mask conveying the desired
- ! SZIP options
- ! Current valid values in Fortran are:
- ! H5_SZIP_EC_OM_F
- ! H5_SZIP_NN_OM_F
- INTEGER, INTENT(IN) :: pixels_per_block
- ! The number of pixels or data elements
- ! in each data block
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_szip_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-
-<!--
- <p>
- <dt><strong>References:</strong>
- (This material will appear in a separate file in the final release documents.)
- <ul>
- <li>J. Venbrux, P.S. Yeh, G. Zweigle, J. Vesel,
- "A VLSI Chip Solution for Lossless Medical Imagery Compression,"
- <cite>SPIE conference on Medical Imaging 1994</cite>.
- Vol. 2164, pp. 561-572, February 13-14, 1994,
- Newport Beach, California.
-
- <li>J. Venbrux, J. Gambles, D. Wiseman, G. Zweigle, W.H. Miller, P.S. Yeh,
- "A VLSI Chip Set Development for Lossless Data Compression,"
- <cite>AIAA Computing in Aerospace 9 Conference</cite>.
- October 1993, San Diego, California.
-
- <li>J. Venbrux, G. Zweigle, J. Gambles, D.Wiseman, W. Miller, P. Yeh,
- "An Adaptive, Lossless Data Compression Algorithm and VLSI
- Implementations,"
- <cite>NASA Symposium on VLSI Design</cite>.
- Pp 1.2.1-1.2.16, November 1993.
-
- <li>J. Venbrux, P.S. Yeh, and M. N. Liu,
- "A VLSI Chip Set for High Speed Lossless Data Compression,"
- <cite>IEEE Transactions on Circuits and Systems for Video
- Technology</cite>.
- Pp. 381-391, December 1992.
-
- <li>CCSDS 120.0-G-1.
- <cite>Lossless Data Compression</cite>.
- Green Book. Issue 1, May 1997.
- This Report presents a summary of the key operational concepts and
- rationale underlying the requirements for the CCSDS Recommendation,
- Lossless Data Compression. Supporting performance information along
- with illustrations are also included. This Report also provides a
- broad tutorial overview of the CCSDS Lossless Data Compression
- algorithm and is aimed at helping first-time readers
- to understand the Recommendation.
- <br>
- Appears In: CCSDS Publications TGannett 02/04/2003 387K Services
- Check Out View
-
- <li>CCSDS 121.0-B-1.
- <cite>Lossless Data Compression</cite>.
- Blue Book. Issue 1, May 1997.
- This Recommendation defines a source-coding data-compression
- algorithm and specifies how data compressed using the algorithm
- are inserted into source packets for retrieval and decoding.
- <br>
- Appears In: CCSDS Publications
-
- </ul>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_userblock" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetUserblock">H5Pset_userblock</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Pset_userblock</code>(<em>hid_t</em> <code>plist</code>,
- <em>hsize_t</em> <code>size</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets user block size.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_userblock</code> sets the user block size of a
- file creation property list.
- The default user block size is 0; it may be set to any
- power of 2 equal to 512 or greater (512, 1024, 2048, etc.).
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier of property list to modify.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t</em>&nbsp;<code>size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Size of the user-block in bytes.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5pset_userblock_f
- <dd>
- <pre>
-SUBROUTINE h5pset_userblock_f (prp_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: prp_id ! Property list identifier
- INTEGER(HSIZE_T), INTENT(IN) :: size ! Size of the user-block in bytes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5pset_userblock_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Pset_vlen_mem_manager" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-SetVLMemManager">H5Pset_vlen_mem_manager</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Pset_vlen_mem_manager</code>(<em>hid_t</em> <code>plist</code>,
- <em>H5MM_allocate_t</em> <code>alloc</code>,
- <em>void</em> *<code>alloc_info</code>,
- <em>H5MM_free_t</em> <code>free</code>,
- <em>void</em> *<code>free_info</code>
- )
- <dt><strong>Purpose:</strong>
- <dd>Sets the memory manager for variable-length datatype allocation in
- <code>H5Dread</code> and <code>H5Dvlen_reclaim</code>.
- <dt><strong>Description:</strong>
- <dd><code>H5Pset_vlen_mem_manager</code> sets the memory manager for
- variable-length datatype allocation in <code>H5Dread</code>
- and free in <code>H5Dvlen_reclaim</code>.
- <p>
- The <code>alloc</code> and <code>free</code> parameters
- identify the memory management routines to be used.
- If the user has defined custom memory management routines,
- <code>alloc</code> and/or <code>free</code> should be set to make
- those routine calls (i.e., the name of the routine is used as
- the value of the parameter);
- if the user prefers to use the system's <code> malloc</code>
- and/or <code>free</code>, the <code>alloc</code> and
- <code>free</code> parameters, respectively, should be set to
- <code> NULL</code>
- <p>
- The prototypes for these user-defined functions would appear as follows:
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <em>typedef void</em> *(*<code>H5MM_allocate_t</code>)(<em>size_t</em> <code>size</code>,
- <em>void</em> *<code>alloc_info</code>) ;
-
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <em>typedef void</em> (*<code>H5MM_free_t</code>)(<em>void</em> *<code>mem</code>,
- <em>void</em> *<code>free_info</code>) ;
- <br>
- The <code>alloc_info</code> and <code>free_info</code> parameters
- can be used to pass along any required information to
- the user's memory management routines.
- <p>
- In summary, if the user has defined custom memory management
- routines, the name(s) of the routines are passed in the
- <code>alloc</code> and <code>free</code> parameters and the
- custom routines' parameters are passed in the
- <code>alloc_info</code> and <code>free_info</code> parameters.
- If the user wishes to use the system <code> malloc</code> and
- <code>free</code> functions, the <code>alloc</code> and/or
- <code>free</code> parameters are set to <code> NULL</code>
- and the <code>alloc_info</code> and <code>free_info</code>
- parameters are ignored.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist</code></td>
- <td valign="top">IN: Identifier for the dataset transfer property list.</td></tr>
- <tr>
- <td valign="top"><em>H5MM_allocate_t</em>&nbsp;<code>alloc&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: User's allocate routine, or &nbsp; <code> NULL</code>
- for system &nbsp; <code> malloc</code>.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>alloc_info</code></td>
- <td valign="top">IN: Extra parameter for user's allocation routine.
- <br>
- Contents are ignored if preceding parameter is &nbsp;
- <code> NULL</code>.</td></tr>
- <tr>
- <td valign="top"><em>H5MM_free_t</em> <code>free</code></td>
- <td valign="top">IN: User's free routine, or &nbsp; <code> NULL</code>
- for system <code>free</code>.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>free_info</code></td>
- <td valign="top">IN: Extra parameter for user's free routine.
- <br>
- Contents are ignored if preceding parameter is &nbsp;
- <code> NULL</code>.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Punregister" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Property-Unregister">H5Punregister</a>
-
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Punregister</code>(
- <em>H5P_class_t</em> <code>class</code>,
- <em>const char *</em><code>name</code>
- )
-
- <dt><strong>Purpose:</strong>
- <dd>Removes a property from a property list class.
-
- <dt><strong>Description:</strong>
- <dd><code>H5Punregister</code> removes a property from a
- property list class.
-
- <p>
- Future property lists created of that class will not contain
- this property;
- existing property lists containing this property are not affected.
-
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td><em>H5P_class_t</em>&nbsp;<code>class&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td>IN: Property list class from which to remove
- permanent property</td></tr>
- <tr>
- <td><em>const char *</em><code>name</code></td>
- <td>IN: Name of property to remove</td></tr>
- </table></ul>
-
- <dt><strong>Returns:</strong>
- <dd>Success: a non-negative value
- <dd>Failure: a negative value
- <dt><strong>Fortran90 Interface:</strong> h5punregister_f
- <dd>
- <pre>
-SUBROUTINE h5punregister_f(class, name, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: class ! Property list class identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of property to remove
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5punregister_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 23 June 2005");
--->
-</SCRIPT>
-
-</body>
-</html>
-
diff --git a/doc/html/RM_H5R.html b/doc/html/RM_H5R.html
deleted file mode 100644
index 2113732..0000000
--- a/doc/html/RM_H5R.html
+++ /dev/null
@@ -1,543 +0,0 @@
-<html>
-<head><title>
-HDF5/H5R API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5R: Reference Interface</h1>
-</center>
-
-<h2>Reference API Functions</h2>
-
-The Reference interface allows the user to create references
-to specific objects and data regions in an HDF5 file.
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0 width=80%>
-<tr><td valign=top width=40%>
-<ul>
- <li><a href="#Reference-Create">H5Rcreate</a>
- <li><a href="#Reference-Dereference">H5Rdereference</a>
-</ul>
-</td><td valign=top width=40%>
-<ul>
- <li><a href="#Reference-GetRegion">H5Rget_region</a>
- <li><a href="#Reference-GetObjType">H5Rget_obj_type</a>
-</ul>
-</td><td valign=top width=20%>
-<ul>
- &nbsp;
-</ul>
-</td></tr>
-</table>
-
-<p>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <ul>
- <li><a href="#Reference-Create">H5Rcreate</a>
- <li><a href="#Reference-Dereference">H5Rdereference</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Reference-GetObjType">H5Rget_obj_type</a>
- </ul>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <ul>
- <li><a href="#Reference-GetRegion">H5Rget_region</a>
- </ul>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0 width=80%>
-<tr><td valign=top width=40%>
-<ul>
- <li><a href="#Reference-Create">h5rcreate_f</a>
- <li><a href="#Reference-Dereference">h5rdereference_f</a>
-</ul>
-</td><td valign=top width=40%>
-<ul>
- <li><a href="#Reference-GetRegion">h5rget_region_f</a>
- <li><a href="#Reference-GetObjType">h5rget_object_type_f</a>
-</ul>
-</td><td valign=top width=20%>
-<ul>
-
-</ul>
-</td></tr>
-</table>
-
-
-<p>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Rcreate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Reference-Create">H5Rcreate</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Rcreate</code>(<em>void *</em><code>ref</code>,
- <em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em><code>name</code>,
- <em>H5R_type_t</em> <code>ref_type</code>,
- <em>hid_t</em> <code>space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a reference.
-<dt><strong>Description:</strong>
- <dd><code>H5Rcreate</code> creates the reference, <code>ref</code>,
- of the type specified in <code>ref_type</code>, pointing to
- the object <code>name</code> located at <code>loc_id</code>.
- <p>
- The HDF5 library maps the <em>void</em> type specified above
- for <code>ref</code> to the type specified in <code>ref_type</code>,
- which will be one of those appearing in the first column of
- the following table.
- The second column of the table lists the HDF5 constant associated
- with each reference type.
- <dir>
- <table border=0>
- <tr><td><em>hdset_reg_ref_t</em>&nbsp;&nbsp;</td>
- <td><code>H5R_DATASET_REGION</code>&nbsp;&nbsp;</td>
- <td>Dataset region reference</td></tr>
- <tr><td><em>hobj_ref_t</em></td>
- <td><code>H5R_OBJECT</code></td>
- <td>Object reference</td></tr>
- </table>
- </dir>
- <p>
- The parameters <code>loc_id</code> and <code>name</code> are
- used to locate the object.
- <p>
- The parameter <code>space_id</code> identifies the region
- to be pointed to for a dataset region reference.
- This parameter is unused with object references.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>void *</em><code>ref</code></td>
- <td valign="top">OUT: Reference created by the function call.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: Location identifier used to locate the object being
- pointed to.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em><code>name</code></td>
- <td valign="top">IN: Name of object at location <code>loc_id</code>.</td></tr>
- <tr>
- <td valign="top"><em>H5R_type_t</em>&nbsp;<code>ref_type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Type of reference.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Dataspace identifier with selection.
- Used for dataset region references.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5rcreate_f
-
- <p><strong>To create an object reference</strong>
- <dd>
- <pre>
-SUBROUTINE h5rcreate_f(loc_id, name, ref, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the object at location
- ! specified by loc_id identifier
- TYPE(hobj_ref_t_f), INTENT(OUT) :: ref ! Object reference
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5rcreate_f
- </pre></dt>
-
-<!-- NEW PAGE -->
-<dt><strong>To create a region reference</strong>
- <dd>
- <pre>
-SUBROUTINE h5rcreate_f(loc_id, name, space_id, ref, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! Location identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset at location
- ! specified by loc_id identifier
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataset's dataspace identifier
- TYPE(hdset_reg_ref_t_f), INTENT(OUT) :: ref ! Dataset region reference
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5rcreate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Rdereference" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Reference-Dereference">H5Rdereference</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Rdereference</code>(<em>hid_t</em> <code>dataset</code>,
- <em>H5R_type_t</em> <code>ref_type</code>,
- <em>void *</em><code>ref</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Opens the HDF5 object referenced.
-<dt><strong>Description:</strong>
- <dd>Given a reference to some object, <code>H5Rdereference</code>
- opens that object and returns an identifier.
- <p>
- The parameter <code>ref_type</code> specifies the reference type
- of <code>ref</code>.
- <code>ref_type</code> may contain either of the following values:
- <ul>
- <li><code>H5R_OBJECT</code> (<code>0</code>)
- <li><code>H5R_DATASET_REGION</code> (<code>1</code>)
- </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dataset</code></td>
- <td valign="top">IN: Dataset containing reference object.</td></tr>
- <tr>
- <td valign="top"><em>H5R_type_t</em>&nbsp;<code>ref_type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The reference type of <code>ref</code>.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>ref</code></td>
- <td valign="top">IN: Reference to open.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns valid identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5rdereference_f
-
- <p><strong>To dereference an object</strong>
- <dd>
- <pre>
-SUBROUTINE h5rdereference_f(dset_id, ref, obj_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference
- INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5rdereference_f
- </pre>
-</dt>
-
-<dt><strong>To dereference a region</strong>
- <dd>
- <pre>
-SUBROUTINE h5rdereference_f(dset_id, ref, obj_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Object reference
- INTEGER(HID_T), INTENT(OUT) :: obj_id ! Object identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5rdereference_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Rget_obj_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Reference-GetObjType">H5Rget_obj_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5G_obj_t</em> <code>H5Rget_obj_type</code>(<em>hid_t</em> <code>id</code>,
- <em>H5R_type_t</em> <code>ref_type</code>,
- <em>void *</em><code>ref</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the type of object that an object reference points to.
-<dt><strong>Description:</strong>
- <dd>Given type of object reference, <code>ref_type</code>,
- and a reference to an object, <code>ref</code>,
- <code>H5Rget_obj_type</code>
- returns the type of the referenced object.
- <p>
- Valid object reference types, to pass in as <code>ref_type</code>,
- include the following:
- <table border="0">
- <tr align=left valign=top><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5R_OBJECT</code></td><td>
- Reference is an object reference.
- </td></tr>
- <tr align=left valign=top><td>&nbsp;</td><td>
- <code>H5R_DATASET_REGION&nbsp;&nbsp;</code></td><td>
- Reference is a dataset region reference.
- </td></tr>
- </table>
- <p>
- Valid object type return values include the following:
- <table border="0">
- <tr align=left valign=top><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5G_LINK</code></td><td>
- Object is a symbolic link.
- </td></tr>
- <tr align=left valign=top><td>&nbsp;</td><td>
- <code>H5G_GROUP</code></td><td>
- Object is a group.
- </td></tr>
- <tr align=left valign=top><td>&nbsp;</td><td>
- <code>H5G_DATASET&nbsp;&nbsp;</code></td><td>
- Object is a dataset.
- </td></tr>
- <tr align=left valign=top><td>&nbsp;</td><td>
- <code>H5G_TYPE</code></td><td>
- Object is a named datatype.
- </td></tr>
- </table>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>id</code>,</td>
- <td valign="top">IN: The dataset containing the reference object or
- the location identifier of the object that the
- dataset is located within.</td></tr>
- <tr>
- <td valign="top"><em>H5R_type_t</em>&nbsp;<code>ref_type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Type of reference to query.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>ref</code></td>
- <td valign="top">IN: Reference to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns an object type as defined in <code>H5Gpublic.h</code> if successful;
- otherwise returns <code>H5G_UNKNOWN</code>.
-<dt><strong>Fortran90 Interface:</strong> h5rget_object_type_f
- <dd>
- <pre>
-SUBROUTINE h5rget_object_type_f(dset_id, ref, obj_type, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- TYPE(hobj_ref_t_f), INTENT(IN) :: ref ! Object reference
- INTEGER, INTENT(OUT) :: obj_type ! Object type
- ! H5G_UNKNOWN_F (-1)
- ! H5G_LINK_F 0
- ! H5G_GROUP_F 1
- ! H5G_DATASET_F 2
- ! H5G_TYPE_F 3
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5rget_object_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Rget_region" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Reference-GetRegion">H5Rget_region</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Rget_region</code>(<em>hid_t</em> <code>dataset</code>,
- <em>H5R_type_t</em> <code>ref_type</code>,
- <em>void *</em><code>ref</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves a dataspace with the specified region selected.
-<dt><strong>Description:</strong>
- <dd>Given a reference to an object <code>ref</code>,
- <code>H5Rget_region</code> creates a copy of the dataspace
- of the dataset pointed to and defines a selection in the copy
- which is the region pointed to.
- <p>
- The parameter <code>ref_type</code> specifies the reference type
- of <code>ref</code>.
- <code>ref_type</code> may contain the following value:
- <ul>
- <li><code>H5R_DATASET_REGION</code> (<code>1</code>)
- </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dataset</code></td>
- <td valign="top">IN: Dataset containing reference object.</td></tr>
- <tr>
- <td valign="top"><em>H5R_type_t</em>&nbsp;<code>ref_type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The reference type of <code>ref</code>.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>ref</code></td>
- <td valign="top">IN: Reference to open.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5rget_region_f
- <dd>
- <pre>
-SUBROUTINE h5rget_region_f(dset_id, ref, space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier
- TYPE(hdset_reg_ref_t_f), INTENT(IN) :: ref ! Dataset region reference
- INTEGER(HID_T), INTENT(OUT) :: space_id ! Space identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5rget_region_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 February 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5S.html b/doc/html/RM_H5S.html
deleted file mode 100644
index 6f8aaba..0000000
--- a/doc/html/RM_H5S.html
+++ /dev/null
@@ -1,1884 +0,0 @@
-<html>
-<head><title>
-HDF5/H5S API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5S: Dataspace Interface</h1>
-</center>
-
-<h2>Dataspace Object API Functions</h2>
-
-These functions create and manipulate the dataspace in which to store the
-elements of a dataset.
-
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
- <li><a href="#Dataspace-Create">H5Screate</a>
- <li><a href="#Dataspace-Copy">H5Scopy</a>
- <li><a href="#Dataspace-Close">H5Sclose</a>
- <li><a href="#Dataspace-CreateSimple">H5Screate_simple</a>
- <li><a href="#Dataspace-IsSimple">H5Sis_simple</a>
- <li><a href="#Dataspace-OffsetSimple">H5Soffset_simple</a>
- <li><a href="#Dataspace-ExtentDims">H5Sget_simple_extent_dims</a>
- <li><a href="#Dataspace-ExtentNdims">H5Sget_simple_extent_ndims</a>
-
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
- <li><a href="#Dataspace-ExtentNpoints">H5Sget_simple_extent_npoints</a>
- <li><a href="#Dataspace-ExtentType">H5Sget_simple_extent_type</a>
-<!-- NOT YET IMPLEMENTED (R1.2 -- 9908)
- <li><a href="#Dataspace-ExtentClass">H5Sextent_class</a>
--->
- <li><a href="#Dataspace-ExtentCopy">H5Sextent_copy</a>
- <li><a href="#Dataspace-SetExtentSimple">H5Sset_extent_simple</a>
- <li><a href="#Dataspace-SetExtentNone">H5Sset_extent_none</a>
- <li><a href="#Dataspace-GetSelectType">H5Sget_select_type</a>
- <li><a href="#Dataspace-SelectNpoints">H5Sget_select_npoints</a>
- <li><a href="#Dataspace-SelectHyperNBlocks">H5Sget_select_hyper_nblocks</a>
- <li><a href="#Dataspace-SelectHyperBlockList">H5Sget_select_hyper_blocklist</a>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
- <li><a href="#Dataspace-SelectElemNPoints">H5Sget_select_elem_npoints</a>
- <li><a href="#Dataspace-SelectElemPointList">H5Sget_select_elem_pointlist</a>
- <li><a href="#Dataspace-SelectBounds">H5Sget_select_bounds</a>
- <li><a href="#Dataspace-SelectElements">H5Sselect_elements</a>
- <li><a href="#Dataspace-SelectAll">H5Sselect_all</a>
- <li><a href="#Dataspace-SelectNone">H5Sselect_none</a>
- <li><a href="#Dataspace-SelectValid">H5Sselect_valid</a>
- <li><a href="#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a>
-<!--<li><a href="#Dataspace-CombineHyperslab">H5Scombine_hyperslab</a> -->
-<!--<li><a href="#Dataspace-CombineSelect">H5Scombine_select</a> -->
-<!--<li><a href="#Dataspace-SelectSelect">H5Sselect_select</a> -->
-</td></tr>
-</table>
-<br>
-
-<i>Alphabetical Listing</i>
-
-<table border="0">
- <tr>
- <td valign="top">
- <li><a href="#Dataspace-Close">H5Sclose</a>
- <li><a href="#Dataspace-Copy">H5Scopy</a>
- <li><a href="#Dataspace-Create">H5Screate</a>
- <li><a href="#Dataspace-CreateSimple">H5Screate_simple</a>
- <li><a href="#Dataspace-ExtentCopy">H5Sextent_copy</a>
- <li><a href="#Dataspace-SelectBounds">H5Sget_select_bounds</a>
- <li><a href="#Dataspace-SelectElemNPoints">H5Sget_select_elem_npoints</a>
- <li><a href="#Dataspace-SelectElemPointList">H5Sget_select_elem_pointlist</a>
- <li><a href="#Dataspace-SelectHyperBlockList">H5Sget_select_hyper_blocklist</a>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <li><a href="#Dataspace-SelectHyperNBlocks">H5Sget_select_hyper_nblocks</a>
- <li><a href="#Dataspace-SelectNpoints">H5Sget_select_npoints</a>
- <li><a href="#Dataspace-GetSelectType">H5Sget_select_type</a>
- <li><a href="#Dataspace-ExtentDims">H5Sget_simple_extent_dims</a>
- <li><a href="#Dataspace-ExtentNdims">H5Sget_simple_extent_ndims</a>
- <li><a href="#Dataspace-ExtentNpoints">H5Sget_simple_extent_npoints</a>
- <li><a href="#Dataspace-ExtentType">H5Sget_simple_extent_type</a>
- <li><a href="#Dataspace-IsSimple">H5Sis_simple</a>
- <li><a href="#Dataspace-OffsetSimple">H5Soffset_simple</a>
- </td>
-
- <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
-
- <li><a href="#Dataspace-SelectAll">H5Sselect_all</a>
- <li><a href="#Dataspace-SelectElements">H5Sselect_elements</a>
- <li><a href="#Dataspace-SelectHyperslab">H5Sselect_hyperslab</a>
- <li><a href="#Dataspace-SelectNone">H5Sselect_none</a>
- <li><a href="#Dataspace-SelectValid">H5Sselect_valid</a>
- <li><a href="#Dataspace-SetExtentNone">H5Sset_extent_none</a>
- <li><a href="#Dataspace-SetExtentSimple">H5Sset_extent_simple</a>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top>
- <li><a href="#Dataspace-Create">h5screate_f</a>
- <li><a href="#Dataspace-Copy">h5scopy_f</a>
- <li><a href="#Dataspace-Close">h5sclose_f</a>
- <li><a href="#Dataspace-CreateSimple">h5screate_simple_f</a>
- <li><a href="#Dataspace-IsSimple">h5sis_simple_f</a>
- <li><a href="#Dataspace-OffsetSimple">h5soffset_simple_f</a>
- <li><a href="#Dataspace-ExtentDims">h5sget_simple_extent_dims_f</a>
- <li><a href="#Dataspace-ExtentNdims">h5sget_simple_extent_ndims_f</a>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
- <li><a href="#Dataspace-ExtentNpoints">h5sget_simple_extent_npoints_f</a>
- <li><a href="#Dataspace-ExtentType">h5sget_simple_extent_type_f</a>
-<!-- NOT YET IMPLEMENTED (R1.2 -- 9908)
- <li><a href="#Dataspace-ExtentClass">h5sextent_class_f</a> -->
- <li><a href="#Dataspace-ExtentCopy">h5sextent_copy_f</a>
- <li><a href="#Dataspace-SetExtentSimple">h5sset_extent_simple_f</a>
- <li><a href="#Dataspace-SetExtentNone">h5sset_extent_none_f</a>
- <li><a href="#Dataspace-GetSelectType">h5sget_select_type_f</a>
- <li><a href="#Dataspace-SelectNpoints">h5sget_select_npoints_f</a>
- <li><a href="#Dataspace-SelectHyperNBlocks">h5sget_select_hyper_nblocks_f</a>
- <li><a href="#Dataspace-SelectHyperBlockList">h5sget_select_hyper_blocklist_f</a>
-<!--<li><a href="#Dataspace-SelectBounds">h5sget_select_bounds_f</a> -->
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
- <li><a href="#Dataspace-SelectElemNPoints">h5sget_select_elem_npoints_f</a>
- <li><a href="#Dataspace-SelectElemPointList">h5sget_select_elem_pointlist_f</a>
- <li><a href="#Dataspace-SelectElements">h5sselect_elements_f</a>
- <li><a href="#Dataspace-SelectAll">h5sselect_all_f</a>
- <li><a href="#Dataspace-SelectNone">h5sselect_none_f</a>
- <li><a href="#Dataspace-SelectValid">h5sselect_valid_f</a>
- <li><a href="#Dataspace-SelectHyperslab">h5sselect_hyperslab_f</a>
-<!--<li><a href="#Dataspace-CombineHyperslab">h5scombine_hyperslab_f</a> -->
-<!--<li><a href="#Dataspace-CombineSelect">h5scombine_select_f</a> -->
-<!--<li><a href="#Dataspace-SelectSelect">h5sselect_select_f</a> -->
-</td></tr>
-</table>
-
-
-<!-- Unimplemented functions
-<p>
-The following H5S functions are included in the HDF5 specification,
-but have not yet been implemented. They are described in the
-<a href="Dataspaces.html">The Dataspace Interface (H5S)</a> section
-of the <cite>HDF5 User's Guide.</cite>.
-<table border=0>
-<tr><td valign=top>
-<ul>
- <li>H5Scommit
- <li>H5Sis_subspace
- <li>H5Slock
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li>H5Sopen
- <li>H5Sselect_op
- <li>H5Sselect_order
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<ul>
- <li>H5Ssubspace
- <li>H5Ssubspace_name
- <li>H5Ssubspace_location
-</ul>
-</td></tr>
-</table>
--->
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sclose" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-Close">H5Sclose</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Sclose</code>(<em>hid_t </em><code>space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Releases and terminates access to a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sclose</code> releases a dataspace.
- Further access through the dataspace identifier is illegal.
- Failure to release a dataspace with this call will
- result in resource leaks.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of dataspace to release.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sclose_f
- <dd>
- <pre>
-SUBROUTINE h5sclose_f(space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Scopy" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-Copy">H5Scopy</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Scopy</code>(<em>hid_t </em><code>space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates an exact copy of a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Scopy</code> creates a new dataspace which is an exact
- copy of the dataspace identified by <code>space_id</code>.
- The dataspace identifier returned from this function should be
- released with <code>H5Sclose</code> or resource leaks will occur.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of dataspace to copy.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5scopy_f
- <dd>
- <pre>
-SUBROUTINE h5scopy_f(space_id, new_space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HID_T), INTENT(OUT) :: new_space_id ! Identifier of dataspace copy
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5scopy_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Screate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-Create">H5Screate</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Screate</code>(<em>H5S_class_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Creates a new dataspace of a specified type.
-<dt><strong>Description:</strong>
- <dd><code>H5Screate</code> creates a new dataspace of a particular
- <code>type</code>.
- The types currently supported are <code>H5S_SCALAR</code> and
- <code>H5S_SIMPLE</code>;
- others are planned to be added later.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5S_class_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">The type of dataspace to be created.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5screate_f
- <dd>
- <pre>
-SUBROUTINE h5screate_f(classtype, space_id, hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: classtype ! The type of the dataspace
- ! to be created. Possible values
- ! are:
- ! H5S_SCALAR_F
- ! H5S_SIMPLE_F
- INTEGER(HID_T), INTENT(OUT) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5screate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Screate_simple" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-CreateSimple">H5Screate_simple</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Screate_simple</code>(<em>int</em> <code>rank</code>,
- <em>const hsize_t *</em> <code>dims</code>,
- <em>const hsize_t *</em> <code>maxdims</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a new simple dataspace and opens it for access.
-<dt><strong>Description:</strong>
-
- <dd><code>H5Screate_simple</code> creates a new simple dataspace
- and opens it for access.
- <p>
- <code>rank</code> is the number of dimensions used in the dataspace.
- <p>
- <code>dims</code> is an array specifying the size of each dimension
- of the dataset while
- <code>maxdims</code> is an array specifying the upper limit on
- the size of each dimension.
- <code>maxdims</code> may be the null pointer, in which case the
- upper limit is the same as <code>dims</code>.
- <p>
- If an element of <code>maxdims</code> is
- <code>H5S_UNLIMITED</code>, (<code>-1</code>),
- the maximum size of the corresponding dimension is unlimited.
- Otherwise, no element of <code>maxdims</code> should be
- smaller than the corresponding element of <code>dims</code>.
- <p>
- The dataspace identifier returned from this function must be
- released with <code>H5Sclose</code> or resource leaks will occur.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>int</em> <code>rank</code></td>
- <td valign="top">Number of dimensions of dataspace.</td></tr>
- <tr>
- <td valign="top"><em>const hsize_t *</em> <code>dims</code></td>
- <td valign="top">An array of the size of each dimension.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hsize_t&nbsp;*</em>&nbsp;<code>maxdims&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">An array of the maximum size of each dimension.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5screate_simple_f
- <dd>
- <pre>
-SUBROUTINE h5screate_simple_f(rank, dims, space_id, hdferr, maxdims)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: rank ! Number of dataspace dimensions
- INTEGER(HSIZE_T), INTENT(IN) :: dims(*) ! Array with the dimension sizes
- INTEGER(HID_T), INTENT(OUT) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HSIZE_T), OPTIONAL, INTENT(IN) :: maxdims(*)
- ! Array with the maximum
- ! dimension sizes
-END SUBROUTINE h5screate_simple_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sextent_copy" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-ExtentCopy">H5Sextent_copy</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sextent_copy</code>(<em>hid_t</em> <code>dest_space_id</code>,
- <em>hid_t</em> <code>source_space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Copies the extent of a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sextent_copy</code> copies the extent from
- <code>source_space_id</code> to <code>dest_space_id</code>.
- This action may change the type of the dataspace.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dest_space_id</code></td>
- <td valign="top">IN: The identifier for the dataspace to which
- the extent is copied.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>source_space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier for the dataspace from which
- the extent is copied.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sextent_copy_f
- <dd>
- <pre>
-SUBROUTINE h5sextent_copy_f(dest_space_id, source_space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: dest_space_id ! Identifier of destination
- ! dataspace
- INTEGER(HID_T), INTENT(IN) :: source_space_id ! Identifier of source
- ! dataspace
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sextent_copy_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_bounds" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectBounds">H5Sget_select_bounds</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Sget_select_bounds</code>(<em>hid_t </em><code>space_id</code>,
- <em>hsize_t *</em><code>start</code>,
- <em>hsize_t *</em><code>end</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Gets the bounding box containing the current selection.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_bounds</code> retrieves the coordinates of
- the bounding box containing the current selection and places
- them into user-supplied buffers.
- <p>
- The <code>start</code> and <code>end</code> buffers must be large
- enough to hold the dataspace rank number of coordinates.
- <p>
- The bounding box exactly contains the selection.
- I.e., if a 2-dimensional element selection is currently
- defined as containing the points (4,5), (6,8), and (10,7),
- then the bounding box will be (4, 5), (10, 8).
- <p>
- The bounding box calculation includes the current offset of the
- selection within the dataspace extent.
- <p>
- Calling this function on a <code>none</code> selection will
- return <code>FAIL</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of dataspace to query.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>start</code></td>
- <td valign="top">OUT: Starting coordinates of the bounding box.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>end</code></td>
- <td valign="top">OUT: Ending coordinates of the bounding box,
- i.e., the coordinates of the diagonally opposite corner.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>
- <pre>
-SUBROUTINE h5sget_select_bounds_f(space_id, start, end, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id
- ! Dataspace identifier
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: start
- ! Starting coordinates of the bounding box
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: end
- ! Ending coordinates of the bounding box,
- ! i.e., the coordinates of the diagonally
- ! opposite corner
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5sget_select_bounds_f
- </pre>
-
-<!--<dt><strong>Non-C API(s):</strong>
- <dd>
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_elem_npoints" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectElemNPoints">H5Sget_select_elem_npoints</a>
-<dt><strong>Signature:</strong>
- <dd><em>hssize_t </em><code>H5Sget_select_elem_npoints</code>(<em>hid_t </em><code>space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Gets the number of element points in the current selection.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_elem_npoints</code> returns
- the number of element points in the current dataspace selection.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of dataspace to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of element points in the current dataspace selection if successful.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_select_elem_npoints_f
- <dd>
- <pre>
-SUBROUTINE h5sget_select_elem_npoints_f(space_id, num_points, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: num_points ! Number of points in
- ! the current elements selection
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5sget_select_elem_npoints_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_elem_pointlist" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectElemPointList">H5Sget_select_elem_pointlist</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Sget_select_elem_pointlist</code>(<em>hid_t </em><code>space_id</code>,
- <em>hsize_t </em><code>startpoint</code>,
- <em>hsize_t </em><code>numpoints</code>,
- <em>hsize_t *</em><code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Gets the list of element points currently selected.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_elem_pointlist</code> returns the list of
- element points in the current dataspace selection. Starting with
- the <code>startpoint</code>-th point in the list of points,
- <code>numpoints</code> points are put into the user's buffer.
- If the user's buffer fills up before <code>numpoints</code>
- points are inserted, the buffer will contain only as many
- points as fit.
- <p>
- The element point coordinates have the same dimensionality (rank)
- as the dataspace they are located within. The list of element points
- is formatted as follows:
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- &lt;coordinate&gt;, followed by
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- the next coordinate,
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- etc.
- <br>
- until all of the selected element points have been listed.
- <p>
- The points are returned in the order they will be iterated through
- when the selection is read/written from/to disk.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Dataspace identifier of selection to query.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t&nbsp;</em><code>startpoint&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Element point to start with.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t </em><code>numpoints</code></td>
- <td valign="top">IN: Number of element points to get.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>buf</code></td>
- <td valign="top">OUT: List of element points selected.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_select_elem_pointlist_f
- <dd>
- <pre>
-SUBROUTINE h5sget_select_elem_pointlist_f(space_id, startpoint, num_points,
- buf, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HSIZE_T), INTENT(IN) :: startpoint ! Element point to start with
- INTEGER, INTENT(OUT) :: num_points ! Number of points to get in
- ! the current element selection
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf
- ! List of points selected
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5sget_select_elem_pointlist_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_hyper_blocklist" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectHyperBlockList">H5Sget_select_hyper_blocklist</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Sget_select_hyper_blocklist</code>(<em>hid_t </em><code>space_id</code>,
- <em>hsize_t </em><code>startblock</code>,
- <em>hsize_t </em><code>numblocks</code>,
- <em>hsize_t *</em><code>buf</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Gets the list of hyperslab blocks currently selected.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_hyper_blocklist</code> returns a list of
- the hyperslab blocks currently selected. Starting with the
- <code>startblock</code>-th block in the list of blocks,
- <code>numblocks</code> blocks are put into the user's buffer.
- If the user's buffer fills up before <code>numblocks</code>
- blocks are inserted, the buffer will contain only as many
- blocks as fit.
- <p>
- The block coordinates have the same dimensionality (rank)
- as the dataspace they are located within. The list of blocks
- is formatted as follows:
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- &lt;"start" coordinate&gt;, immediately followed by
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- &lt;"opposite" corner coordinate&gt;, followed by
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- the next "start" and "opposite" coordinates,
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- etc.
- <br>
- until all of the selected blocks have been listed.
- <p>
- No guarantee is implied as the order in which blocks are listed.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Dataspace identifier of selection to query.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t&nbsp;</em><code>startblock&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Hyperslab block to start with.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t </em><code>numblocks</code></td>
- <td valign="top">IN: Number of hyperslab blocks to get.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>buf</code></td>
- <td valign="top">OUT: List of hyperslab blocks selected.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_select_hyper_blocklist_f
- <dd>
- <pre>
-SUBROUTINE h5sget_select_hyper_blocklist_f(space_id, startblock, num_blocks,
- buf, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HSIZE_T), INTENT(IN) :: startblock ! Hyperslab block to start with
- INTEGER, INTENT(OUT) :: num_blocks ! Number of hyperslab blocks to
- ! get in the current hyperslab
- ! selection
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: buf
- ! List of hyperslab blocks selected
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5sget_select_hyper_blocklist_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_hyper_nblocks" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectHyperNBlocks">H5Sget_select_hyper_nblocks</a>
-<dt><strong>Signature:</strong>
- <dd><em>hssize_t </em><code>H5Sget_select_hyper_nblocks</code>(<em>hid_t </em><code>space_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Get number of hyperslab blocks.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_hyper_nblocks</code> returns the
- number of hyperslab blocks in the current dataspace selection.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of dataspace to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of hyperslab blocks in
- the current dataspace selection if successful.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_select_hyper_nblocks_f
- <dd>
- <pre>
-SUBROUTINE h5sget_select_hyper_nblocks_f(space_id, num_blocks, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: num_blocks ! Number of hyperslab blocks in
- ! the current hyperslab selection
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5sget_select_hyper_nblocks_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_npoints" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectNpoints">H5Sget_select_npoints</a>
-<dt><strong>Signature:</strong>
- <dd><em>hssize_t</em> <code>H5Sget_select_npoints</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines the number of elements in a dataspace selection.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_npoints</code> determines the number of elements
- in the current selection of a dataspace.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Dataspace identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of elements in the selection if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_select_npoints_f
- <dd>
- <pre>
-SUBROUTINE h5sget_select_npoints_f(space_id, npoints, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HSSIZE_T), INTENT(OUT) :: npoints ! Number of elements in the
- ! selection
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sget_select_npoints_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_select_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-GetSelectType">H5Sget_select_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5S_sel_type</em> <code>H5Sget_select_type</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines the type of the dataspace selection.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_select_type</code> retrieves the
- type of selection currently defined for the dataspace
- <code>space_id</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Dataspace identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the dataspace selection type, a value of
- the enumerated datatype <code>H5S_sel_type</code>,
- if successful.
- Valid return values are as follows:
- <center>
- <table width=90% border=0>
- <tr><td valign=top>
- <code>H5S_SEL_NONE</code>
- </td><td valign=top>
- No selection is defined.
- </td></tr><tr><td valign=top>
- <code>H5S_SEL_POINTS</code>
- </td><td valign=top>
- A sequence of points is selected.
- </td></tr><tr><td valign=top>
- <code>H5S_SEL_HYPERSLABS</code>
- </td><td valign=top>
- A hyperslab or compound hyperslab is selected.
- </td></tr><tr><td valign=top>
- <code>H5S_SEL_ALL</code>
- </td><td valign=top>
- The entire dataset is selected.
- </td></tr>
- </table>
- </center>
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_select_type_f
- <dd>
- <pre>
-SUBROUTINE h5sget_select_type_f(space_id, type, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: type ! Selection type
- ! Valid values are:
- ! H5S_SEL_ERROR_F
- ! H5S_SEL_NONE_F
- ! H5S_SEL_POINTS_F
- ! H5S_SEL_HYPERSLABS_F
- ! H5S_SEL_ALL_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5sget_select_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_simple_extent_dims" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-ExtentDims">H5Sget_simple_extent_dims</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Sget_simple_extent_dims</code>(<em>hid_t</em> <code>space_id</code>,
- <em>hsize_t *</em><code>dims</code>,
- <em>hsize_t *</em><code>maxdims</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves dataspace dimension size and maximum size.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_simple_extent_dims</code> returns the size and maximum sizes
- of each dimension of a dataspace through the <code>dims</code>
- and <code>maxdims</code> parameters.
- <p>
- Either or both of <code>dims</code> and <code>maxdims</code>
- may be NULL.
- <p>
- If a value in the returned array <code>maxdims</code> is
- <code>H5S_UNLIMITED</code> (</code>-1</code>),
- the maximum size of that dimension is unlimited.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Identifier of the dataspace object to query</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>dims</code></td>
- <td valign="top">OUT: Pointer to array to store the size of each dimension.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t&nbsp;*</em><code>maxdims&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to array to store the maximum size of each dimension.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of dimensions in the dataspace if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_simple_extent_dims_f
- <dd>
- <pre>
-SUBROUTINE h5sget_simple_extent_dims_f(space_id, dims, maxdims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims
- ! Array to store dimension sizes
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: maxdims
- ! Array to store max dimension sizes
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! Dataspace rank on success
- ! and -1 on failure
-END SUBROUTINE h5sget_simple_extent_dims_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_simple_extent_ndims" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-ExtentNdims">H5Sget_simple_extent_ndims</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Sget_simple_extent_ndims</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines the dimensionality of a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_simple_extent_ndims</code> determines the dimensionality (or rank)
- of a dataspace.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of the dataspace</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of dimensions in the dataspace if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sget_simple_extent_ndims_f
- <dd>
- <pre>
-SUBROUTINE h5sget_simple_extent_ndims_f(space_id, rank, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: rank ! Number of dimensions
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sget_simple_extent_ndims_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_simple_extent_npoints" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-ExtentNpoints">H5Sget_simple_extent_npoints</a>
-<dt><strong>Signature:</strong>
- <dd><em>hssize_t</em> <code>H5Sget_simple_extent_npoints</code>(<em>hid_t </em><code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines the number of elements in a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_simple_extent_npoints</code> determines the number of elements
- in a dataspace. For example, a simple 3-dimensional dataspace
- with dimensions 2, 3, and 4 would have 24 elements.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">ID of the dataspace object to query</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of elements in the dataspace if successful;
- otherwise returns 0.
-<dt><strong>Fortran90 Interface:</strong> h5sget_simple_extent_npoints_f
- <dd>
- <pre>
-SUBROUTINE h5sget_simple_extent_npoints_f(space_id, npoints, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HSIZE_T), INTENT(OUT) :: npoints ! Number of elements in dataspace
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sget_simple_extent_npoints_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sget_simple_extent_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-ExtentType">H5Sget_simple_extent_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5S_class_t</em> <code>H5Sget_simple_extent_type</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determine the current class of a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sget_simple_extent_type</code> queries a dataspace to determine the
- current class of a dataspace.
- <p>
- The function returns a class name, one of the following:
- <code>H5S_SCALAR</code>,
- <code>H5S_SIMPLE</code>, or
- <code>H5S_NONE</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Dataspace identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace class name if successful;
- otherwise H5S_NO_CLASS (-1).
-<dt><strong>Fortran90 Interface:</strong> h5sget_simple_extent_type_f
- <dd>
- <pre>
-SUBROUTINE h5sget_simple_extent_type_f(space_id, classtype, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: classtype ! Class type
- ! Possible values are:
- ! H5S_NO_CLASS_F
- ! H5S_SCALAR_F
- ! H5S_SIMPLE_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sget_simple_extent_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sis_simple" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-IsSimple">H5Sis_simple</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t </em><code>H5Sis_simple</code>(<em>hid_t </em><code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines whether a dataspace is a simple dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sis_simple</code> determines whether a dataspace is
- a simple dataspace. [Currently, all dataspace objects are simple
- dataspaces, complex dataspace support will be added in the future]
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of the dataspace to query</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>When successful, returns a positive value, for <code>TRUE</code>,
- or <code>0</code> (zero), for <code>FALSE</code>.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sis_simple_f
- <dd>
- <pre>
-SUBROUTINE h5sis_simple_f(space_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- LOGICAL, INTENT(OUT) :: flag ! Flag, indicates if dataspace
- ! is simple or not:
- ! TRUE or FALSE
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sis_simple_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Soffset_simple" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-OffsetSimple">H5Soffset_simple</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Soffset_simple</code>(<em>hid_t</em> <code>space_id</code>,
- <em>const hssize_t *</em><code>offset</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the offset of a simple dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Soffset_simple</code> sets the offset of a
- simple dataspace <code>space_id</code>. The <code>offset</code>
- array must be the same number of elements as the number of
- dimensions for the dataspace. If the <code>offset</code>
- array is set to <TT>NULL</TT>, the offset for the dataspace
- is reset to 0.
- <p>
- This function allows the same shaped selection to be moved
- to different locations within a dataspace without requiring it
- to be redefined.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: The identifier for the dataspace object to reset.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hssize_t&nbsp;*</em><code>offset&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The offset at which to position the selection.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5soffset_simple_f
- <dd>
- <pre>
-SUBROUTINE h5soffset_simple_f(space_id, offset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER(HSSIZE_T), DIMENSION(*), INTENT(IN) :: offset
- ! The offset at which to position
- ! the selection
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5soffset_simple_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sselect_all" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectAll">H5Sselect_all</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sselect_all</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Selects the entire dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sselect_all</code> selects the entire extent
- of the dataspace <code>space_id</code>.
- <p>
- More specifically, <code>H5Sselect_all</code> selects
- the special <tt>5S_SELECT_ALL</tt> region for the dataspace
- <code>space_id</code>. <tt>H5S_SELECT_ALL</tt> selects the
- entire dataspace for any dataspace it is applied to.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier for the dataspace in which the
- selection is being made.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sselect_all_f
- <dd>
- <pre>
-SUBROUTINE h5sselect_all_f(space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sselect_all_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sselect_elements" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectElements">H5Sselect_elements</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sselect_elements</code>(<em>hid_t </em><code>space_id</code>,
- <em>H5S_seloper_t</em> <code>op</code>,
- <em>const size_t</em> <code>num_elements</code>,
- <em>const hsize_t *</em><code>coord</code>[ ]
- )
-<dt><strong>Purpose:</strong>
- <dd>Selects array elements to be included in the selection for a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sselect_elements</code> selects array elements to be
- included in the selection for the <code>space_id</code> dataspace.
- <p>
- The number of elements selected is set in the
- <code>num_elements</code> parameter.
- <p>
- The <code>coord</code> array is a two-dimensional array of
- size <code><i>dataspace_rank</i></code> by <code>num_elements</code>
- containing a list of of zero-based values specifying the
- coordinates in the dataset of the selected elements.
- The order of the element coordinates in the
- <code>coord</code> array specifies the order in which
- the array elements are iterated through when I/O is performed.
- Duplicate coordinate locations are not checked for.
- <p>
- The selection operator <code>op</code> determines how the
- new selection is to be combined with the previously existing
- selection for the dataspace.
- The following operators are supported:
- <center>
- <table width=90% border=0>
- <tr><td valign=top>
- <code>H5S_SELECT_SET</code>
- </td><td valign=top>
- Replaces the existing selection with the parameters from
- this call.
- Overlapping blocks are not supported with this operator.
-<!-- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_OR</code>
- </td><td valign=top>
---> Adds the new selection to the existing selection.
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_APPEND</code>
- </td><td valign=top>
- Adds the new selection following the last element of the
- existing selection.
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_PREPEND&nbsp;&nbsp;</code>
- </td><td valign=top>
- Adds the new selection preceding the first element of the
- existing selection.
- </td></tr>
- </table>
- </center>
-<!-- When operator <code>H5S_SELECT_OR</code>
- is used to combine a new selection with an existing selection,
- the selection ordering is reset to C array ordering.
--->
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">Identifier of the dataspace.</td></tr>
- <tr>
- <td valign="top"><em>H5S_seloper_t</em> <code>op</code></td>
- <td valign="top">Operator specifying how the new selection is to be
- combined with the existing selection for the dataspace.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;size_t</em>&nbsp;<code>num_elements&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Number of elements to be selected.</td></tr>
- <tr>
- <td valign="top"><em>const hsize_t *</em><code>coord</code>[ ]</td>
- <td valign="top">A 2-dimensional array of 0-based values specifying the
- coordinates of the elements being selected.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sselect_elements_f
- <dd>
- <pre>
-SUBROUTINE h5sselect_elements_f(space_id, operator, num_elements,
- coord, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(IN) :: op ! Flag, valid values are:
- ! H5S_SELECT_SET_F
- ! H5S_SELECT_OR_F
- INTEGER, INTENT(IN) :: num_elements ! Number of elements to be selected
- INTEGER(HSIZE_T), DIMENSION(*,*), INTENT(IN) :: coord
- ! Array with the coordinates
- ! of the selected elements:
- ! coord(num_elements, rank)</pre>
-<!-- NEW PAGE -->
-<pre>
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sselect_elements_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sselect_hyperslab" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectHyperslab">H5Sselect_hyperslab</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sselect_hyperslab</code>(<em>hid_t</em> <code>space_id</code>,
- <em>H5S_seloper_t</em> <code>op</code>,
- <em>const hsize_t *</em><code>start</code>,
- <em>const hsize_t *</em><code>stride</code>,
- <em>const hsize_t *</em><code>count</code>,
- <em>const hsize_t *</em><code>block</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Selects a hyperslab region to add to the current selected region.
-<dt><strong>Description:</strong>
- <dd><code>H5Sselect_hyperslab</code> selects a hyperslab region
- to add to the current selected region for the dataspace
- specified by <code>space_id</code>.
- <p>
- The <code>start</code>, <code>stride</code>, <code>count</code>,
- and <code>block</code> arrays must be the same size as the rank
- of the dataspace.
- <p>
- The selection operator <code>op</code> determines how the new
- selection is to be combined with the already existing selection
- for the dataspace.
- The following operators are supported:
- <center>
- <table width=90% border=0>
- <tr><td valign=top>
- <code>H5S_SELECT_SET</code>
- </td><td valign=top>
- Replaces the existing selection with the parameters from this call.
- Overlapping blocks are not supported with this operator.
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_OR</code>
- </td><td valign=top>
- Adds the new selection to the existing selection.
- &nbsp;&nbsp;
- (Binary OR)
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_AND</code>
- </td><td valign=top>
- Retains only the overlapping portions of the new selection and
- the existing selection.
- &nbsp;&nbsp;
- (Binary AND)
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_XOR</code>
- </td><td valign=top>
- Retains only the elements that are members of the new selection or
- the existing selection, excluding elements that are members of
- both selections.
- &nbsp;&nbsp;
- (Binary exclusive-OR, XOR)
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_NOTB&nbsp;&nbsp;</code>
- </td><td valign=top>
- Retains only elements of the existing selection that are not in
- the new selection.
- </td></tr><tr><td valign=top>
- <code>H5S_SELECT_NOTA</code>
- </td><td valign=top>
- Retains only elements of the new selection that are not in
- the existing selection.
- </td></tr>
- </table>
- </center>
-
- <p>
- The <code>start</code> array determines the starting coordinates
- of the hyperslab to select.
- <p>
- The <code>stride</code> array chooses array locations
- from the dataspace with each value in the <code>stride</code>
- array determining how many elements to move in each dimension.
- Setting a value in the <code>stride</code> array to 1 moves to
- each element in that dimension of the dataspace; setting a value
- of <code>2</code> in alocation in the <code>stride</code> array
- moves to every other element in that dimension of the dataspace.
- In other words, the <code>stride</code> determines the
- number of elements to move from the <code>start</code> location
- in each dimension.
- Stride values of <code>0</code> are not allowed.
- If the <code>stride</code> parameter is <code>NULL</code>,
- a contiguous hyperslab is selected (as if each value in the
- <code>stride</code> array were set to all 1's).
- <p>
- The <code>count</code> array determines how many blocks to
- select from the dataspace, in each dimension.
- <p>
- The <code>block</code> array determines
- the size of the element block selected from the dataspace.
- If the <code>block</code> parameter is set to <code>NULL</code>,
- the block size defaults to a single element in each dimension
- (as if the <code>block</code> array were set to all
- <code>1</code>'s).
- <p>
- For example, in a 2-dimensional dataspace, setting
- <code>start</code> to [1,1],
- <code>stride</code> to [4,4],
- <code>count</code> to [3,7], and
- <code>block</code> to [2,2]
- selects 21 2x2 blocks of array elements starting with
- location (1,1) and selecting blocks at locations
- (1,1), (5,1), (9,1), (1,5), (5,5), etc.
- <p>
- Regions selected with this function call default to C order
- iteration when I/O is performed.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">IN: Identifier of dataspace selection to modify</td></tr>
- <tr>
- <td valign="top"><em>H5S_seloper_t</em> <code>op</code></td>
- <td valign="top">IN: Operation to perform on current selection.</td></tr>
- <tr>
- <td valign="top"><em>const hsize_t *</em><code>start</code></td>
- <td valign="top">IN: Offset of start of hyperslab</td></tr>
- <tr>
- <td valign="top"><em>const hsize_t *</em><code>count</code></td>
- <td valign="top">IN: Number of blocks included in hyperslab.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hsize_t&nbsp;*</em><code>stride&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Hyperslab stride.</td></tr>
- <tr>
- <td valign="top"><em>const hsize_t *</em><code>block</code></td>
- <td valign="top">IN: Size of block in hyperslab.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sselect_hyperslab_f
- <dd>
- <pre>
-SUBROUTINE h5sselect_hyperslab_f(space_id, operator, start, count,
- hdferr, stride, block)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(IN) :: op ! Flag, valid values are:
- ! H5S_SELECT_SET_F
- ! H5S_SELECT_OR_F
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: start
- ! Starting coordinates of hyperslab
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: count
- ! Number of blocks to select
- ! from dataspace
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
- INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: stride
- ! Array of how many elements to
- ! move in each direction
- INTEGER(HSIZE_T), DIMENSION(*), OPTIONAL, INTENT(IN) :: block
- ! Size of the element block
-END SUBROUTINE h5sselect_hyperslab_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sselect_none" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectNone">H5Sselect_none</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sselect_none</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Resets the selection region to include no elements.
-<dt><strong>Description:</strong>
- <dd><code>H5Sselect_none</code> resets the selection region
- for the dataspace <code>space_id</code> to include no elements.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: The identifier for the dataspace in which the
- selection is being reset.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sselect_none_f
- <dd>
- <pre>
-SUBROUTINE h5sselect_none_f(space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sselect_none_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sselect_valid" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectValid">H5Sselect_valid</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t</em> <code>H5Sselect_valid</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Verifies that the selection is within the extent of the dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sselect_valid</code> verifies that the selection
- for the dataspace <code>space_id</code> is within the extent
- of the dataspace if the current offset for the dataspace is used.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">The identifier for the dataspace being queried.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a positive value, for <code>TRUE</code>,
- if the selection is contained within the extent
- or <code>0</code> (zero), for <code>FALSE</code>, if it is not.
- Returns a negative value on error conditions
- such as the selection or extent not being defined.
-<dt><strong>Fortran90 Interface:</strong> h5sselect_valid_f
- <dd>
- <pre>
-SUBROUTINE h5sselect_valid_f(space_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- LOGICAL, INTENT(OUT) :: flag ! TRUE if the selection is
- ! contained within the extent,
- ! FALSE otherwise.
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sselect_valid_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sset_extent_none" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SetExtentNone">H5Sset_extent_none</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sset_extent_none</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Removes the extent from a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sset_extent_none</code> removes the extent from
- a dataspace and sets the type to <tt>H5S_NO_CLASS</tt>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>space_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">The identifier for the dataspace from which
- the extent is to be removed.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sset_extent_none_f
- <dd>
- <pre>
-SUBROUTINE h5sset_extent_none_f(space_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sset_extent_none_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Sset_extent_simple" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SetExtentSimple">H5Sset_extent_simple</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Sset_extent_simple</code>(<em>hid_t</em> <code>space_id</code>,
- <em>int</em> <code>rank</code>,
- <em>const hsize_t *</em><code>current_size</code>,
- <em>const hsize_t *</em><code>maximum_size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets or resets the size of an existing dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sset_extent_simple</code> sets or resets the size of
- an existing dataspace.
- <p>
- <code>rank</code> is the dimensionality, or number of
- dimensions, of the dataspace.
- <p>
- <code>current_size</code> is an array of size <code>rank</code>
- which contains the new size of each dimension in the dataspace.
- <code>maximum_size</code> is an array of size <code>rank</code>
- which contains the maximum size of each dimension in the
- dataspace.
- <p>
- Any previous extent is removed from the dataspace, the dataspace
- type is set to <code>H5S_SIMPLE</code>, and the extent is set as
- specified.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>space_id</code></td>
- <td valign="top">Dataspace identifier.</td>
- <tr>
- <td valign="top"><em>int</em> <code>rank</code></td>
- <td valign="top">Rank, or dimensionality, of the dataspace.</td>
- <tr>
- <td valign="top"><em>const&nbsp;hsize_t&nbsp;*</em><code>current_size&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Array containing current size of dataspace.</td>
- <tr>
- <td valign="top"><em>const hsize_t *</em><code>maximum_size</code></td>
- <td valign="top">Array containing maximum size of dataspace.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5sset_extent_simple_f
- <dd>
- <pre>
-SUBROUTINE h5sset_extent_simple_f(space_id, rank, current_size,
- maximum_size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier
- INTEGER, INTENT(IN) :: rank ! Dataspace rank
- INTEGER(HSIZE_T), DIMENSION(rank), INTENT(IN) :: current_size
- ! Array with the new sizes
- ! of dimensions
- INTEGER(HSIZE_T), DIMENSION(rank), INTENT(IN) ::
- ! Array with the new maximum
- ! sizes of dimensions
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5sset_extent_simple_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NOT YET IMPLEMENTED (R1.2 -- 9908)
-
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-ExtentClass">H5Sextent_class</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5S_class_t</em> <code>H5Sextent_class</code>(<em>hid_t</em> <code>space_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determine the current class of a dataspace.
-<dt><strong>Description:</strong>
- <dd><code>H5Sextent_class</code> queries a dataspace to determine the
- current class of a dataspace.
- <p>
- The function returns a class name, one of the following:
- <code>H5S_SCALAR</code>,
- <code>H5S_SIMPLE</code>.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt><em>hid_t</em> <code>space_id</code>
- <dd>Dataspace identifier.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a dataspace class name if successful;
- otherwise H5S_NO_CLASS (-1).
-<dt><strong>Non-C API(s):</strong>
- <dd><a href="fortran/h5s_FORTRAN.html#h5sextent_class_f"
- target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a>
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
-</dl>
-
--->
-
-
-<!--<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-CombineHyperslab">H5Scombine_hyperslab</a>
-
-
-
-
-<dt><strong>Non-C API(s):</strong>
- <dd><a href="fortran/h5s_FORTRAN.html#h5scombine_hyperslab_f"
- target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a>
- --> <!--
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-<!--</dl>
--->
-
-
-<!--<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-CombineSelect">H5Scombine_select</a>
-
-<dt><strong>Non-C API(s):</strong>
- <dd><a href="fortran/h5s_FORTRAN.html#h5scombine_select_f"
- target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a>
---> <!--
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-<!--</dl>
--->
-
-
-<!--<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Dataspace-SelectSelect">H5Sselect_select</a>
-
-<dt><strong>Non-C API(s):</strong>
- <dd><a href="fortran/h5s_FORTRAN.html#h5sselect_select_f"
- target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a>
---> <!--
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-<!--</dl>
--->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 15 March 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5T.html b/doc/html/RM_H5T.html
deleted file mode 100644
index 2323aae..0000000
--- a/doc/html/RM_H5T.html
+++ /dev/null
@@ -1,4001 +0,0 @@
-<html>
-<head><title>
-HDF5/H5T API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5T: Datatype Interface</h1>
-</center>
-
-<h2>Datatype Object API Functions</h2>
-
-These functions create and manipulate the datatype which describes elements
-of a dataset.
-
-
-<p>
-<strong>The C Interfaces:</strong>
-
-<table border=0>
-<tr><td valign=top>
-<i>General Datatype Operations</i>
- <li><a href="#Datatype-Create">H5Tcreate</a>
- <li><a href="#Datatype-Open">H5Topen</a>
- <li><a href="#Datatype-Commit">H5Tcommit</a>
- <li><a href="#Datatype-Committed">H5Tcommitted</a>
- <li><a href="#Datatype-Copy">H5Tcopy</a>
- <li><a href="#Datatype-Equal">H5Tequal</a>
- <li><a href="#Datatype-Lock">H5Tlock</a>
- <li><a href="#Datatype-GetClass">H5Tget_class</a>
- <li><a href="#Datatype-GetSize">H5Tget_size</a>
- <li><a href="#Datatype-GetSuper">H5Tget_super</a>
- <li><a href="#Datatype-GetNativeType">H5Tget_native_type</a>
- <li><a href="#Datatype-DetectClass">H5Tdetect_class</a>
- <li><a href="#Datatype-Close">H5Tclose</a>
-<br><br>
-<i>Conversion Functions</i>
- <li><a href="#Datatype-Convert">H5Tconvert</a>
- <li><a href="#Datatype-Find">H5Tfind</a>
- <li><a href="#Datatype-SetOverflow">H5Tset_overflow</a>
- <li><a href="#Datatype-GetOverflow">H5Tget_overflow</a>
- <li><a href="#Datatype-Register">H5Tregister</a>
- <li><a href="#Datatype-Unregister">H5Tunregister</a>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<i>Atomic Datatype Properties</i>
- <table><tr><td valign=top>
- <li><a href="#Datatype-SetSize">H5Tset_size</a>
- <li><a href="#Datatype-GetOrder">H5Tget_order</a>
- <li><a href="#Datatype-SetOrder">H5Tset_order</a>
- <li><a href="#Datatype-GetPrecision">H5Tget_precision</a>
- <li><a href="#Datatype-SetPrecision">H5Tset_precision</a>
- <li><a href="#Datatype-GetOffset">H5Tget_offset</a>
- <li><a href="#Datatype-SetOffset">H5Tset_offset</a>
- <li><a href="#Datatype-GetPad">H5Tget_pad</a>
- <li><a href="#Datatype-SetPad">H5Tset_pad</a>
- <li><a href="#Datatype-GetSign">H5Tget_sign</a>
- <li><a href="#Datatype-SetSign">H5Tset_sign</a>
- </td><td valign=top>
- <li><a href="#Datatype-GetFields">H5Tget_fields</a>
- <li><a href="#Datatype-SetFields">H5Tset_fields</a>
- <li><a href="#Datatype-GetEbias">H5Tget_ebias</a>
- <li><a href="#Datatype-SetEbias">H5Tset_ebias</a>
- <li><a href="#Datatype-GetNorm">H5Tget_norm</a>
- <li><a href="#Datatype-SetNorm">H5Tset_norm</a>
- <li><a href="#Datatype-GetInpad">H5Tget_inpad</a>
- <li><a href="#Datatype-SetInpad">H5Tset_inpad</a>
- <li><a href="#Datatype-GetCset">H5Tget_cset</a>
- <li><a href="#Datatype-SetCset">H5Tset_cset</a>
- <li><a href="#Datatype-GetStrpad">H5Tget_strpad</a>
- <li><a href="#Datatype-SetStrpad">H5Tset_strpad</a>
- </td></tr></table>
-<br><br>
-<i>Enumeration Datatypes</i>
- <li><a href="#Datatype-EnumCreate">H5Tenum_create</a>
- <li><a href="#Datatype-EnumInsert">H5Tenum_insert</a>
- <li><a href="#Datatype-EnumNameOf">H5Tenum_nameof</a>
- <li><a href="#Datatype-EnumValueOf">H5Tenum_valueof</a>
- <li><a href="#Datatype-GetMemberValue">H5Tget_member_value</a>
- <li><a href="#Datatype-GetNmembers">H5Tget_nmembers</a>
- <li><a href="#Datatype-GetMemberName">H5Tget_member_name</a>
- <li><a href="#Datatype-GetMemberIndex">H5Tget_member_index</a>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
-<i>Compound Datatype Properties</i>
- <li><a href="#Datatype-GetNmembers">H5Tget_nmembers</a>
- <li><a href="#Datatype-GetMemberClass">H5Tget_member_class</a>
- <li><a href="#Datatype-GetMemberName">H5Tget_member_name</a>
- <li><a href="#Datatype-GetMemberIndex">H5Tget_member_index</a>
- <li><a href="#Datatype-GetMemberOffset">H5Tget_member_offset</a>
- <li><a href="#Datatype-GetMemberType">H5Tget_member_type</a>
- <li><a href="#Datatype-Insert">H5Tinsert</a>
- <li><a href="#Datatype-Pack">H5Tpack</a>
-<br><br>
-<i>Array Datatypes</i>
- <li><a href="#Datatype-ArrayCreate">H5Tarray_create</a>
- <li><a href="#Datatype-GetArrayNdims">H5Tget_array_ndims</a>
- <li><a href="#Datatype-GetArrayDims">H5Tget_array_dims</a>
-<br><br>
-<i>Variable-length Datatypes</i>
- <li><a href="#Datatype-VLCreate">H5Tvlen_create</a>
- <li><a href="#Datatype-IsVariableString">H5Tis_variable_str</a>
-<br><br>
-<i>Opaque Datatypes</i>
- <li><a href="#Datatype-SetTag">H5Tset_tag</a>
- <li><a href="#Datatype-GetTag">H5Tget_tag</a>
-</td></tr>
-</table>
-
-<br>
-
-<!-- NEW PAGE -->
-<i>Alphabetical Listing</i>
-<table border="0" width=100%>
- <tr>
- <td valign="top" width=30%>
- <li><a href="#Datatype-ArrayCreate">H5Tarray_create</a>
- <li><a href="#Datatype-Close">H5Tclose</a>
- <li><a href="#Datatype-Commit">H5Tcommit</a>
- <li><a href="#Datatype-Committed">H5Tcommitted</a>
- <li><a href="#Datatype-Convert">H5Tconvert</a>
- <li><a href="#Datatype-Copy">H5Tcopy</a>
- <li><a href="#Datatype-Create">H5Tcreate</a>
- <li><a href="#Datatype-DetectClass">H5Tdetect_class</a>
- <li><a href="#Datatype-EnumCreate">H5Tenum_create</a>
- <li><a href="#Datatype-EnumInsert">H5Tenum_insert</a>
- <li><a href="#Datatype-EnumNameOf">H5Tenum_nameof</a>
- <li><a href="#Datatype-EnumValueOf">H5Tenum_valueof</a>
- <li><a href="#Datatype-Equal">H5Tequal</a>
- <li><a href="#Datatype-Find">H5Tfind</a>
- <li><a href="#Datatype-GetArrayDims">H5Tget_array_dims</a>
- <li><a href="#Datatype-GetArrayNdims">H5Tget_array_ndims</a>
- <li><a href="#Datatype-GetClass">H5Tget_class</a>
- <li><a href="#Datatype-GetCset">H5Tget_cset</a>
- <li><a href="#Datatype-GetEbias">H5Tget_ebias</a>
- <li><a href="#Datatype-GetFields">H5Tget_fields</a>
- <li><a href="#Datatype-GetInpad">H5Tget_inpad</a>
- </td>
-
- <td width=3%>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top" width=30%>
- <li><a href="#Datatype-GetMemberClass">H5Tget_member_class</a>
- <li><a href="#Datatype-GetMemberIndex">H5Tget_member_index</a>
- <li><a href="#Datatype-GetMemberName">H5Tget_member_name</a>
- <li><a href="#Datatype-GetMemberOffset">H5Tget_member_offset</a>
- <li><a href="#Datatype-GetMemberType">H5Tget_member_type</a>
- <li><a href="#Datatype-GetMemberValue">H5Tget_member_value</a>
- <li><a href="#Datatype-GetNativeType">H5Tget_native_type</a>
- <li><a href="#Datatype-GetNmembers">H5Tget_nmembers</a>
- <li><a href="#Datatype-GetNorm">H5Tget_norm</a>
- <li><a href="#Datatype-GetOffset">H5Tget_offset</a>
- <li><a href="#Datatype-GetOrder">H5Tget_order</a>
- <li><a href="#Datatype-GetOverflow">H5Tget_overflow</a>
- <li><a href="#Datatype-GetPad">H5Tget_pad</a>
- <li><a href="#Datatype-GetPrecision">H5Tget_precision</a>
- <li><a href="#Datatype-GetSign">H5Tget_sign</a>
- <li><a href="#Datatype-GetSize">H5Tget_size</a>
- <li><a href="#Datatype-GetStrpad">H5Tget_strpad</a>
- <li><a href="#Datatype-GetSuper">H5Tget_super</a>
- <li><a href="#Datatype-GetTag">H5Tget_tag</a>
- <li><a href="#Datatype-Insert">H5Tinsert</a>
- <li><a href="#Datatype-IsVariableString">H5Tis_variable_str</a>
- </td>
-
- <td width=3%>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
-
- <td valign="top">
- <li><a href="#Datatype-Lock">H5Tlock</a>
- <li><a href="#Datatype-Open">H5Topen</a>
- <li><a href="#Datatype-Pack">H5Tpack</a>
- <li><a href="#Datatype-Register">H5Tregister</a>
- <li><a href="#Datatype-SetCset">H5Tset_cset</a>
- <li><a href="#Datatype-SetEbias">H5Tset_ebias</a>
- <li><a href="#Datatype-SetFields">H5Tset_fields</a>
- <li><a href="#Datatype-SetInpad">H5Tset_inpad</a>
- <li><a href="#Datatype-SetNorm">H5Tset_norm</a>
- <li><a href="#Datatype-SetOffset">H5Tset_offset</a>
- <li><a href="#Datatype-SetOrder">H5Tset_order</a>
- <li><a href="#Datatype-SetOverflow">H5Tset_overflow</a>
- <li><a href="#Datatype-SetPad">H5Tset_pad</a>
- <li><a href="#Datatype-SetPrecision">H5Tset_precision</a>
- <li><a href="#Datatype-SetSign">H5Tset_sign</a>
- <li><a href="#Datatype-SetSize">H5Tset_size</a>
- <li><a href="#Datatype-SetStrpad">H5Tset_strpad</a>
- <li><a href="#Datatype-SetTag">H5Tset_tag</a>
- <li><a href="#Datatype-Unregister">H5Tunregister</a>
- <li><a href="#Datatype-VLCreate">H5Tvlen_create</a>
- </td>
- </tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0>
-<tr><td valign=top width=32%>
-<i>General Datatype Operations</i>
- <li><a href="#Datatype-Create">h5tcreate_f</a>
- <li><a href="#Datatype-Open">h5topen_f</a>
- <li><a href="#Datatype-Commit">h5tcommit_f</a>
- <li><a href="#Datatype-Committed">h5tcommitted_f</a>
- <li><a href="#Datatype-Copy">h5tcopy_f</a>
- <li><a href="#Datatype-Equal">h5tequal_f</a>
-<!--<li><a href="#Datatype-Lock">h5tlock_f</a> -->
- <li><a href="#Datatype-GetClass">h5tget_class_f</a>
- <li><a href="#Datatype-GetSize">h5tget_size_f</a>
- <li><a href="#Datatype-GetSuper">h5tget_super_f</a>
-<!--<li><a href="#Datatype-GetNativeType">h5tget_native_type_f</a> -->
-<!--<li><a href="#Datatype-DetectClass">h5tdetect_class_f</a> -->
- <li><a href="#Datatype-Close">h5tclose_f</a>
-<!--<br><br> -->
-<!--<i>Conversion Functions</i> -->
-<!--<li><a href="#Datatype-Convert">h5tconvert_f</a> -->
-<!--<li><a href="#Datatype-Find">h5tfind_f</a> -->
-<!--<li><a href="#Datatype-SetOverflow">h5tset_overflow_f</a> -->
-<!--<li><a href="#Datatype-GetOverflow">h5tget_overflow_f</a> -->
-<!--<li><a href="#Datatype-Register">h5tregister_f</a> -->
-<!--<li><a href="#Datatype-Unregister">h5tunregister_f</a> -->
- <br><br>
- <i>Enumeration Datatypes</i>
- <li><a href="#Datatype-EnumCreate">h5tenum_create_f</a>
- <li><a href="#Datatype-EnumInsert">h5tenum_insert_f</a>
- <li><a href="#Datatype-EnumNameOf">h5tenum_nameof_f</a>
- <li><a href="#Datatype-EnumValueOf">h5tenum_valueof_f</a>
- <li><a href="#Datatype-GetMemberValue">h5tget_member_value_f</a>
- <li><a href="#Datatype-GetNmembers">h5tget_nmembers_f</a>
- <li><a href="#Datatype-GetMemberName">h5tget_member_name_f</a>
- <li><a href="#Datatype-GetMemberIndex">h5tget_member_index_f</a>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top width=32%>
-<i>Atomic Datatype Properties</i>
- <li><a href="#Datatype-SetSize">h5tset_size_f</a>
- <li><a href="#Datatype-GetOrder">h5tget_order_f</a>
- <li><a href="#Datatype-SetOrder">h5tset_order_f</a>
- <li><a href="#Datatype-GetPrecision">h5tget_precision_f</a>
- <li><a href="#Datatype-SetPrecision">h5tset_precision_f</a>
- <li><a href="#Datatype-GetOffset">h5tget_offset_f</a>
- <li><a href="#Datatype-SetOffset">h5tset_offset_f</a>
- <li><a href="#Datatype-GetPad">h5tget_pad_f</a>
- <li><a href="#Datatype-SetPad">h5tset_pad_f</a>
- <li><a href="#Datatype-GetSign">h5tget_sign_f</a>
- <li><a href="#Datatype-SetSign">h5tset_sign_f</a>
- <li><a href="#Datatype-GetFields">h5tget_fields_f</a>
- <li><a href="#Datatype-SetFields">h5tset_fields_f</a>
- <li><a href="#Datatype-GetEbias">h5tget_ebiass_f</a>
- <li><a href="#Datatype-SetEbias">h5tset_ebiass_f</a>
- <li><a href="#Datatype-GetNorm">h5tget_norm_f</a>
- <li><a href="#Datatype-SetNorm">h5tset_norm_f</a>
- <li><a href="#Datatype-GetInpad">h5tget_inpad_f</a>
- <li><a href="#Datatype-SetInpad">h5tset_inpad_f</a>
- <li><a href="#Datatype-GetCset">h5tget_cset_f</a>
- <li><a href="#Datatype-SetCset">h5tset_cset_f</a>
- <li><a href="#Datatype-GetStrpad">h5tget_strpad_f</a>
- <li><a href="#Datatype-SetStrpad">h5tset_strpad_f</a>
-<!--<br><br> -->
-<!--<i>Variable-length Datatypes</i> -->
-<!--<li><a href="#Datatype-VLCreate">h5tvlen_create_f</a> -->
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top width=32%>
- <i>Array Datatypes</i>
- <li><a href="#Datatype-ArrayCreate">h5tarray_create_f</a>
- <li><a href="#Datatype-GetArrayNdims">h5tget_array_ndims_f</a>
- <li><a href="#Datatype-GetArrayDims">h5tget_array_dims_f</a>
- <br><br>
- <i>Compound Datatype Properties</i>
- <li><a href="#Datatype-GetNmembers">h5tget_nmembers_f</a>
- <li><a href="#Datatype-GetMemberClass">h5tget_member_class_f</a>
- <li><a href="#Datatype-GetMemberName">h5tget_member_name_f</a>
- <li><a href="#Datatype-GetMemberIndex">h5tget_member_index_f</a>
- <li><a href="#Datatype-GetMemberOffset">h5tget_member_offset_f</a>
-<!--<li><a href="#Datatype-GetMemberDims">h5tget_member_dims_f</a> -->
- <li><a href="#Datatype-GetMemberType">h5tget_member_type_f</a>
- <li><a href="#Datatype-Insert">h5tinsert_f</a>
- <li><a href="#Datatype-Pack">h5tpack_f</a>
-<!--<li><a href="#Datatype-InsertArray">h5tinsert_array_f</a> -->
- <br><br>
- <i>Variable-length Datatypes</i>
- <li><a href="#Datatype-VLCreate">h5tvlen_create_f</a>
- <li><a href="#Datatype-IsVariableString">h5tis_variable_str_f</a>
- <br><br>
- <i>Opaque Datatypes</i>
- <li><a href="#Datatype-SetTag">h5tset_tag_f</a>
- <li><a href="#Datatype-GetTag">h5tget_tag_f</a>
-</td></tr>
-</table>
-
-
-<p>
-The Datatype interface, H5T, provides a mechanism to describe the
- storage format of individual data points of a data set and is
- hopefully designed in such a way as to allow new features to be
- easily added without disrupting applications that use the data
- type interface. A dataset (the H5D interface) is composed of a
- collection or raw data points of homogeneous type organized
- according to the data space (the H5S interface).
-
-<p>
-A datatype is a collection of datatype properties, all of
- which can be stored on disk, and which when taken as a whole,
- provide complete information for data conversion to or from that
- datatype. The interface provides functions to set and query
- properties of a datatype.
-
-<p>
-A <em>data point</em> is an instance of a <em>datatype</em>,
- which is an instance of a <em>type class</em>. We have defined
- a set of type classes and properties which can be extended at a
- later time. The atomic type classes are those which describe
- types which cannot be decomposed at the datatype interface
- level; all other classes are compound.
-
-<p>
-See <a href="Datatypes.html"><cite>The Datatype Interface (H5T)</cite></a>
-in the <cite>HDF5 User's Guide</cite> for further information, including a complete list of all supported datatypes.
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tarray_create" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-ArrayCreate">H5Tarray_create</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Tarray_create</code>(
- <em>hid_t</em> <code>base</code>,
- <em>int</em> <code>rank</code>,
- <em>const hsize_t</em> <code>dims[/*rank*/]</code>,
- <em>const int</em> <code>perm[/*rank*/]</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates an array datatype object.
-<dt><strong>Description:</strong>
- <dd><code>H5Tarray_create</code> creates a new array datatype object.
- <p>
- <code>base</code> is the datatype of every element of the array,
- i.e., of the number at each position in the array.
- <p>
- <code>rank</code> is the number of dimensions and the
- size of each dimension is specified in the array <code>dims</code>.
- The value of <code>rank</code> is currently limited to
- <code>H5S_MAX_RANK</code> and must be greater than <code>0</code>
- (zero).
- All dimension sizes specified in <code>dims</code> must be greater
- than <code>0</code> (zero).
- <p>
- The array <code>perm</code> is designed to contain the dimension
- permutation, i.e. C versus FORTRAN array order.
- &nbsp;
- <b><i>(The parameter </i><code>perm</code><i> is currently unused and is not yet implemented.)</i></b>
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>base</code></td>
- <td valign="top">IN: Datatype identifier for the array base datatype.</td></tr>
- <tr>
- <td valign="top"><em>int</em> <code>rank</code></td>
- <td valign="top">IN: Rank of the array.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;hsize_t</em>&nbsp;<code>dims[/*rank*/]&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Size of each array dimension.</td></tr>
- <tr>
- <td valign="top"><em>const int</em> <code>perm[/*rank*/]</code></td>
- <td valign="top">IN: Dimension permutation.
- &nbsp;
- <b><i>(Currently not implemented.)</i></b></td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tarray_create_f
- <dd>
- <pre>
-SUBROUTINE h5tarray_create_f(base_id, rank, dims, type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: base_id ! Identifier of array base datatype
- INTEGER, INTENT(IN) :: rank ! Rank of the array
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: dims
- ! Sizes of each array dimension
- INTEGER(HID_T), INTENT(OUT) :: type_id ! Identifier of the array datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tarray_create_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tclose" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Close">H5Tclose</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tclose</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Releases a datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tclose</code> releases a datatype. Further access
- through the datatype identifier is illegal. Failure to release
- a datatype with this call will result in resource leaks.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to release.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tclose_f
- <dd>
- <pre>
-SUBROUTINE h5tclose_f(type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tclose_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tcommit" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Commit">H5Tcommit</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em><code>H5Tcommit</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em> <code>name</code>,
- <em>hid_t</em> <code>type</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Commits a transient datatype to a file, creating a new named datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tcommit</code> commits a transient datatype
- (not immutable) to a file, turned it into a named datatype.
- The <code>loc_id</code> is either a file or group identifier
- which, when combined with <code>name</code>, refers to a new
- named datatype.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: A file or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: A datatype name.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type</code></td>
- <td valign="top">IN: A datatype identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tcommit_f
- <dd>
- <pre>
-SUBROUTINE h5tcommit_f(loc_id, name, type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Datatype name within file or group
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tcommit_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tcommitted" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Committed">H5Tcommitted</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t</em><code>H5Tcommitted</code>(<em>hid_t</em> <code>type</code>)
-<dt><strong>Purpose:</strong>
- <dd>Determines whether a datatype is a named type or a transient type.
-<dt><strong>Description:</strong>
- <dd><code>H5Tcommitted</code> queries a type to determine whether
- the type specified by the <code>type</code> identifier
- is a named type or a transient type. If this function returns
- a positive value, then the type is named (that is, it has been
- committed, perhaps by some other application). Datasets which
- return committed datatypes with <code>H5Dget_type()</code> are
- able to share the datatype with other datasets in the same file.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Datatype identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>When successful, returns a positive value, for <code>TRUE</code>,
- if the datatype has been committed, or <code>0</code> (zero),
- for <code>FALSE</code>, if the datatype has not been committed.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tcommitted_f
- <dd>
- <pre>
-SUBROUTINE h5tcommitted_f(type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tcommitted_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tconvert" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Convert">H5Tconvert</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tconvert</code>(<em>hid_t</em> <code>src_id</code>,
- <em>hid_t</em> <code>dst_id</code>,
- <em>size_t</em> <code>nelmts</code>,
- <em>void *</em><code>buf</code>,
- <em>void *</em><code>background</code>,
- <em>hid_t</em> <code>plist_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Converts data from between specified datatypes.
-<dt><strong>Description:</strong>
- <dd><code>H5Tconvert</code> converts <code>nelmts</code> elements
- from the type specified by the <code>src_id</code> identifier
- to type <code>dst_id</code>.
- The source elements are packed in <code>buf</code> and on return
- the destination will be packed in <code>buf</code>.
- That is, the conversion is performed in place.
- The optional background buffer is an array of <code>nelmts</code>
- values of destination type which are merged with the converted
- values to fill in cracks (for instance, <code>background</code>
- might be an array of structs with the <code>a</code> and
- <code>b</code> fields already initialized and the conversion
- of <code>buf</code> supplies the <code>c</code> and <code>d</code>
- field values).
- <p>
- The parameter <code>plist_id</code> contains the dataset transfer
- property list identifier which is passed to the conversion functions.
- As of Release 1.2, this parameter is only used to pass along the
- variable-length datatype custom allocation information.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>src_id</code></td>
- <td valign="top">Identifier for the source datatype.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dst_id</code></td>
- <td valign="top">Identifier for the destination datatype.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>nelmts</code></td>
- <td valign="top">Size of array <code>buf</code>.</td></tr>
- <tr>
- <td valign="top"><em>void *</em><code>buf</code></td>
- <td valign="top">Array containing pre- and post-conversion values.</td></tr>
- <tr>
- <td valign="top"><em>void&nbsp;*</em><code>background&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Optional background buffer.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>plist_id</code></td>
- <td valign="top">Dataset transfer property list identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tcopy" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Copy">H5Tcopy</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Tcopy</code>(<em>hid_t </em><code>type_id</code>)
-<dt><strong>Purpose:</strong>
- <dd>Copies an existing datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tcopy</code> copies an existing datatype.
- The returned type is always transient and unlocked.
- <p>
- The <code>type_id</code> argument can be either a datatype
- identifier, a predefined datatype (defined in
- <code>H5Tpublic.h</code>), or a dataset identifier.
- If <code>type_id</code> is a dataset identifier instead of a
- datatype identifier, then this function returns a transient,
- modifiable datatype which is a copy of the dataset's datatype.
- <p>
- The datatype identifier returned should be released with
- <code>H5Tclose</code> or resource leaks will occur.
-<!--
- <p>
- Native datatypes supported by the library are:
- <ul> <dl>
- <dt>H5T_NATIVE_CHAR
- <dd> Native character type, declare dataset array as 'char'
- <dt>H5T_NATIVE_UCHAR
- <dd> Native unsigned character type, declare dataset array as 'unsigned char'
- <dt>H5T_NATIVE_SHORT
- <dd> Native short type, declare dataset array as 'short'
- <dt>H5T_NATIVE_USHORT
- <dd> Native unsigned short type, declare dataset array as 'unsigned short'
- <dt>H5T_NATIVE_INT
- <dd> Native int type, declare dataset array as 'int'
- <dt>H5T_NATIVE_UINT
- <dd> Native unsigned int type, declare dataset array as 'unsigned int'
- <dt>H5T_NATIVE_LONG
- <dd> Native long type, declare dataset array as 'unsigned long'
- <dt>H5T_NATIVE_ULONG
- <dd> Native unsigned long type, declare dataset array as 'unsigned long'
- <dt>H5T_NATIVE_LLONG
- <dd> Native long long type, declare dataset array as 'unsigned long long'
- <dt>H5T_NATIVE_ULLONG
- <dd> Native unsigned long long type, declare dataset array as 'unsigned long long'
- <dt>H5T_NATIVE_INT8
- <dd> Native signed 8-bit type, declare dataset array as 'int8'
- <dt>H5T_NATIVE_UINT8
- <dd> Native unsigned 8-bit type, declare dataset array as 'uint8'
- <dt>H5T_NATIVE_INT16
- <dd> Native signed 16-bit type, declare dataset array as 'int16'
- <dt>H5T_NATIVE_UINT16
- <dd> Native unsigned 16-bit type, declare dataset array as 'uint16'
- <dt>H5T_NATIVE_INT32
- <dd> Native signed 32-bit type, declare dataset array as 'int32'
- <dt>H5T_NATIVE_UINT32
- <dd> Native unsigned 32-bit type, declare dataset array as 'uint32'
- <dt>H5T_NATIVE_INT64
- <dd> Native signed 64-bit type, declare dataset array as 'uint64'
- <dt>H5T_NATIVE_UINT64
- <dd> Native unsigned 64-bit type, declare dataset array as 'uint64'
- <dt>H5T_NATIVE_FLOAT
- <dd> Native single-precision float type, declare dataset array as 'float'
- <dt>H5T_NATIVE_DOUBLE
- <dd> Native double-precision float type, declare dataset array as 'double'
- <dt>H5T_NATIVE_HSIZE
- <dd> Native size_t type, declare dataset array as 'hsize_t'
- <dt>H5T_NATIVE_HSSIZE
- <dd> Native signed size_t type, declare dataset array as 'hssize_t'
- <dt>H5T_NATIVE_HERR
- <dd> Native error type, declare dataset array as 'herr_t'
- <dt>H5T_NATIVE_HBOOL
- <dd> Native boolean type, declare dataset array as 'hbool_t'
- </dl> </ul>
--->
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to copy. Can be a datatype
- identifier, a predefined datatype (defined in
- <code>H5Tpublic.h</code>), or a dataset identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a datatype identifier if successful;
- otherwise returns a negative value
-<dt><strong>Fortran90 Interface:</strong> h5tcopy_f
- <dd>
- <pre>
-SUBROUTINE h5tcopy_f(type_id, new_type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(HID_T), INTENT(OUT) :: new_type_id ! Identifier of datatype's copy
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tcopy_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tcreate" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Create">H5Tcreate</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Tcreate</code>(<em>H5T_class_t </em><code>class</code>,
- <em>size_t</em><code>size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a new datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tcreate</code> creates a new datatype of the specified
- class with the specified number of bytes.
- <p>
- The following datatype classes are supported with this function:
- <ul>
- <li><code>H5T_COMPOUND</code>
- <li><code>H5T_OPAQUE</code>
- <li><code>H5T_ENUM</code>
- </ul>
- <p>
- Use <code>H5Tcopy</code> to create integer or floating-point datatypes.
- <p>
- The datatype identifier returned from this function should be
- released with <code>H5Tclose</code> or resource leaks will result.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5T_class_t</em>&nbsp;<code>class&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Class of datatype to create.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>size</code></td>
- <td valign="top">The number of bytes in the datatype to create.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns datatype identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tcreate_f
- <dd>
- <pre>
-SUBROUTINE h5tcreate_f(class, size, type_id, hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: class ! Datatype class can be one of
- ! H5T_COMPOUND_F (6)
- ! H5T_ENUM_F (8)
- ! H5T_OPAQUE_F (9)
- INTEGER(SIZE_T), INTENT(IN) :: size ! Size of the datatype
- INTEGER(HID_T), INTENT(OUT) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tcreate_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tdetect_class" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-DetectClass">H5Tdetect_class</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t </em><code>H5Tdetect_class</code>(<em>hid_t</em> <code>dtype_id</code>,
- <em>H5T_class_t</em><code>dtype_class</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Determines whether a datatype contains any datatypes of the
- given datatype class.
-<dt><strong>Description:</strong>
- <dd><code>H5Tdetect_class</code> determines whether the datatype
- specified in <code>dtype_id</code> contains any datatypes of the
- datatype class specified in <code>dtype_class</code>.
- <p>
- This function is useful primarily in recursively examining
- all the fields and/or base types
- of compound, array, and variable-length datatypes.
- <p>
- Valid class identifiers are as defined in
- <a href="#Datatype-GetClass"><code>H5Tget_class</code></a>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dtype_id</code></td>
- <td valign="top">Datatype identifier.</td></tr>
- <tr>
- <td valign="top"><em>H5T_class_t</em>&nbsp;<code>dtype_class&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Datatype class.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns <code>TRUE</code> or <code>FALSE</code> if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
-
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tenum_create" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-EnumCreate">H5Tenum_create</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Tenum_create</code>(<em>hid_t</em> <code>parent_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a new enumeration datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tenum_create</code> creates a new enumeration datatype
- based on the specified base datatype, <code>parent_id</code>,
- which must be an integer type.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>parent_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Datatype identifier for the base datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the datatype identifier for the new enumeration datatype if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tenum_create_f
- <dd>
- <pre>
-SUBROUTINE h5tenum_create_f(parent_id, new_type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: parent_id ! Datatype identifier for
- ! the base datatype
- INTEGER(HID_T), INTENT(OUT) :: new_type_id ! Datatype identifier for the
- ! new enumeration datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tenum_create_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tenum_insert" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-EnumInsert">H5Tenum_insert</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tenum_insert</code>(<em>hid_t</em> <code>type</code>,
- <em>const char</em> *<code>name</code>,
- <em>void</em> *<code>value</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Inserts a new enumeration datatype member.
-<dt><strong>Description:</strong>
- <dd><code>H5Tenum_insert</code> inserts a
- new enumeration datatype member into an enumeration datatype.
- <p>
- <code>type</code> is the enumeration datatype,
- <code>name</code> is the name of the new member, and
- <code>value</code> points to the value of the new member.
- <p>
- <code>name</code> and <code>value</code> must both
- be unique within <code>type</code>.
- <p>
- <code>value</code> points to data which is of the
- datatype defined when the enumeration datatype was created.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type</code></td>
- <td valign="top">IN: Datatype identifier for the enumeration datatype.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;*<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Name of the new member.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>value</code></td>
- <td valign="top">IN: Pointer to the value of the new member.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tenum_insert_f
- <dd>
- <pre>
-SUBROUTINE h5tenum_insert_f(type_id, name, value, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the new member
- INTEGER, INTENT(IN) :: value ! Value of the new member
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tenum_insert_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tenum_nameof" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-EnumNameOf">H5Tenum_nameof</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tenum_nameof</code>(<em>hid_t</em> <code>type</code>
- <em>void</em> *<code>value</code>,
- <em>char</em> *<code>name</code>,
- <em>size_t</em> <code>size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the symbol name corresponding to a specified member of an enumeration datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tenum_nameof</code> finds the symbol name that
- corresponds to the specified <code>value</code>
- of the enumeration datatype <code>type</code>.
- <p>
- At most <code>size</code> characters of the symbol
- name are copied into the <code>name</code> buffer.
- If the entire symbol name and null terminator
- do not fit in the <code>name</code> buffer, then as
- many characters as possible are copied
- (not null terminated) and the function fails.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type</code></td>
- <td valign="top">IN: Enumeration datatype identifier.</td></tr>
- <tr>
- <td valign="top"><em>void</em>&nbsp;*<code>value,&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Value of the enumeration datatype.</td></tr>
- <tr>
- <td valign="top"><em>char</em> *<code>name</code>,</td>
- <td valign="top">OUT: Buffer for output of the symbol name.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>size</code></td>
- <td valign="top">IN: Anticipated size of the symbol name, in bytes (characters).</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful.
- Otherwise returns a negative value
- and, if <code>size</code> allows it,
- the first character of <code>name</code> is
- set to <code>NULL</code>.
-<dt><strong>Fortran90 Interface:</strong> h5tenum_nameof_f
- <dd>
- <pre>
-SUBROUTINE h5tenum_nameof_f(type_id, name, namelen, value, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(OUT) :: name ! Name of the enumeration datatype
- INTEGER(SIZE_T), INTENT(IN) :: namelen ! Length of the name
- INTEGER, INTENT(IN) :: value ! Value of the enumeration datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tenum_nameof_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tenum_valueof" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-EnumValueOf">H5Tenum_valueof</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tenum_valueof</code>(<em>hid_t</em> <code>type</code>
- <em>char</em> *<code>name</code>,
- <em>void</em> *<code>value</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the value corresponding to a specified member of an enumeration datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tenum_valueof</code> finds the value that
- corresponds to the specified <code>name</code>
- of the enumeration datatype <code>type</code>.
- <p>
- The <code>value</code> argument should be at least
- as large as the value of <code>H5Tget_size(type)</code>
- in order to hold the result.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type</code></td>
- <td valign="top">IN: Enumeration datatype identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;*<code>name,&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Symbol name of the enumeration datatype.</td></tr>
- <tr>
- <td valign="top"><em>void</em> *<code>value</code>,</td>
- <td valign="top">OUT: Buffer for output of the value of the enumeration datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tenum_valueof_f
- <dd>
- <pre>
-SUBROUTINE h5tenum_valueof_f(type_id, name, value, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the enumeration datatype
- INTEGER, INTENT(OUT) :: value ! Value of the enumeration datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tenum_valueof_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tequal" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Equal">H5Tequal</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t </em><code>H5Tequal</code>(<em>hid_t </em><code>type_id1</code>,
- <em>hid_t</em><code>type_id2</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Determines whether two datatype identifiers refer to the same datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tequal</code> determines whether two datatype identifiers
- refer to the same datatype.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id1&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to compare.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id2</code></td>
- <td valign="top">Identifier of datatype to compare.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>When successful, returns a positive value, for <code>TRUE</code>,
- if the datatype identifiers refer to the same datatype,
- or <code>0</code> (zero), for <code>FALSE</code>.
- Otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tequal_f
- <dd>
- <pre>
-SUBROUTINE h5tequal_f(type1_id, type2_id, flag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type1_id ! Datatype identifier
- INTEGER(HID_T), INTENT(IN) :: type2_id ! Datatype identifier
- LOGICAL, INTENT(OUT) :: flag ! TRUE/FALSE flag to indicate
- ! if two datatypes are equal
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tequal_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tfind" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Find">H5Tfind</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_conv_t</em> <code>H5Tfind</code>(<em>hid_t</em> <code>src_id</code>,
- <em>hid_t</em> <code>dst_id</code>,
- <em>H5T_cdata_t **</em><code>pcdata</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Finds a conversion function.
-<dt><strong>Description:</strong>
- <dd><code>H5Tfind</code> finds a conversion function that can
- handle a conversion from type <code>src_id</code> to type
- <code>dst_id</code>.
- The <code>pcdata</code> argument is a pointer to a pointer
- to type conversion data which was created and initialized
- by the soft type conversion function of this path when the
- conversion function was installed on the path.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>src_id</code></td>
- <td valign="top">IN: Identifier for the source datatype.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dst_id</code></td>
- <td valign="top">IN: Identifier for the destination datatype.</td></tr>
- <tr>
- <td valign="top"><em>H5T_cdata_t&nbsp;**</em><code>pcdata&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to type conversion data.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a pointer to a suitable conversion function if successful.
- Otherwise returns NULL.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_array_dims" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetArrayDims">H5Tget_array_dims</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Tget_array_dims</code>(
- <em>hid_t</em> <code>adtype_id</code>,
- <em>hsize_t *</em><code>dims[]</code>,
- <em>int *</em><code>perm[]</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves sizes of array dimensions and dimension permutations.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_array_dims</code> returns the sizes of the dimensions
- and the dimension permutations of the specified array datatype object.
- <p>
- The sizes of the dimensions are returned in the array <code>dims</code>.
- The dimension permutations, i.e., C versus FORTRAN array order,
- are returned in the array <code>perm</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>adtype_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Datatype identifier of array object.</td></tr>
- <tr>
- <td valign="top"><em>hsize_t *</em><code>dims[]</code></td>
- <td valign="top">OUT: Sizes of array dimensions.</td></tr>
- <tr>
- <td valign="top"><em>int *</em><code>perm[]</code></td>
- <td valign="top">OUT: Dimension permutations.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the non-negative number of dimensions of the array type if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_array_dims_f
- <dd>
- <pre>
-SUBROUTINE h5tget_array_dims_f(type_id, dims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Identifier of the array datatype
- INTEGER(HSIZE_T), DIMENSION(*), INTENT(OUT) :: dims
- ! Buffer to store array datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_array_dims_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_array_ndims" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetArrayNdims">H5Tget_array_ndims</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Tget_array_ndims</code>(
- <em>hid_t</em> <code>adtype_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the rank of an array datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_array_ndims</code> returns the rank,
- the number of dimensions, of an array datatype object.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>adtype_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Datatype identifier of array object.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the rank of the array if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_array_ndims_f
- <dd>
- <pre>
-SUBROUTINE h5tget_array_ndims_f(type_id, ndims, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Identifier of the array datatype
- INTEGER, INTENT(OUT) :: ndims ! Number of array dimensions
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_array_ndims_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_class" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetClass">H5Tget_class</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_class_t </em><code>H5Tget_class</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the datatype class identifier.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_class</code> returns the datatype class identifier.
- <p>
- Valid class identifiers, as defined in <code>H5Tpublic.h</code>, are:
- <ul><li><code>H5T_INTEGER</code>
- <li><code>H5T_FLOAT</code>
- <li><code>H5T_TIME</code>
- <li><code>H5T_STRING</code>
- <li><code>H5T_BITFIELD</code>
- <li><code>H5T_OPAQUE</code>
- <li><code>H5T_COMPOUND</code>
- <li><code>H5T_REFERENCE</code>
- <li><code>H5T_ENUM</code>
- <li><code>H5T_VLEN</code>
- <li><code>H5T_ARRAY</code>
- </ul>
- <p>
- Note that the library returns <code>H5T_STRING</code>
- for both fixed-length and variable-length strings.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns datatype class identifier if successful;
- otherwise <code>H5T_NO_CLASS</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_class_f
- <dd>
- <pre>
-SUBROUTINE h5tget_class_f(type_id, class, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: class ! Datatype class, possible values are:
- ! H5T_NO_CLASS_F
- ! H5T_INTEGER_F
- ! H5T_FLOAT_F
- ! H5T_TIME_F
- ! H5T_STRING_F
- ! H5T_BITFIELD_F
- ! H5T_OPAQUE_F
- ! H5T_COMPOUND_F
- ! H5T_REFERENCE_F
- ! H5T_ENUM_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tget_class_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_cset" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetCset">H5Tget_cset</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_cset_t </em><code>H5Tget_cset</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the character set type of a string datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_cset</code> retrieves the character set type
- of a string datatype. Valid character set types are:
- <dl><ul>
- <dt>H5T_CSET_ASCII (<code>0</code>)
- <dd>Character set is US ASCII
- </ul></dl>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid character set type if successful;
- otherwise <code>H5T_CSET_ERROR</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_cset_f
- <dd>
- <pre>
-SUBROUTINE h5tget_cset_f(type_id, cset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: cset ! Character set type of a string
- ! datatype
- ! Possible values of padding type are:
- ! H5T_CSET_ASCII_F = 0
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_cset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_ebias" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetEbias">H5Tget_ebias</a>
-<dt><strong>Signature:</strong>
- <dd><em>size_t </em><code>H5Tget_ebias</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the exponent bias of a floating-point type.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_ebias</code> retrieves the exponent bias of a floating-point type.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the bias if successful;
- otherwise 0.
-<dt><strong>Fortran90 Interface:</strong> h5tget_ebias_f
- <dd>
- <pre>
-SUBROUTINE h5tget_ebias_f(type_id, ebias, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: ebias ! Datatype exponent bias
- ! of a floating-point type
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_ebias_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_fields" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetFields">H5Tget_fields</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tget_fields</code>(<em>hid_t </em><code>type_id</code>,
- <em>size_t *</em><code>spos</code>,
- <em>size_t *</em><code>epos</code>,
- <em>size_t *</em><code>esize</code>,
- <em>size_t *</em><code>mpos</code>,
- <em>size_t *</em><code>msize</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves floating point datatype bit field information.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_fields</code> retrieves information about the locations of the various
- bit fields of a floating point datatype. The field positions are bit
- positions in the significant region of the datatype. Bits are
- numbered with the least significant bit number zero.
- Any (or even all) of the arguments can be null pointers.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of datatype to query.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>spos</code></td>
- <td valign="top">OUT: Pointer to location to return floating-point sign bit.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>epos</code></td>
- <td valign="top">OUT: Pointer to location to return exponent bit-position.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>esize</code></td>
- <td valign="top">OUT: Pointer to location to return size of exponent in bits.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>mpos</code></td>
- <td valign="top">OUT: Pointer to location to return mantissa bit-position.</td></tr>
- <tr>
- <td valign="top"><em>size_t *</em><code>msize</code></td>
- <td valign="top">OUT: Pointer to location to return size of mantissa in bits.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_fields_f
- <dd>
- <pre>
-SUBROUTINE h5tget_fields_f(type_id, epos, esize, mpos, msize, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: epos ! Exponent bit-position
- INTEGER, INTENT(OUT) :: esize ! Size of exponent in bits
- INTEGER, INTENT(OUT) :: mpos ! Mantissa bit-position
- INTEGER, INTENT(OUT) :: msize ! Size of mantissa in bits
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_fields_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_inpad" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetInpad">H5Tget_inpad</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_pad_t </em><code>H5Tget_inpad</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the internal padding type for unused bits in floating-point datatypes.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_inpad</code> retrieves the internal padding type for
- unused bits in floating-point datatypes.
- Valid padding types are:
- <ul> <dl>
- <dt>H5T_PAD_ZERO (<code>0</code>)
- <dd>Set background to zeros.
- <dt>H5T_PAD_ONE (<code>1</code>)
- <dd>Set background to ones.
- <dt>H5T_PAD_BACKGROUND (<code>2</code>)
- <dd>Leave background alone.
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid padding type if successful;
- otherwise <code>H5T_PAD_ERROR</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_inpad_f
- <dd>
- <pre>
-SUBROUTINE h5tget_inpad_f(type_id, padtype, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: padtype ! Padding type for unused bits
- ! in floating-point datatypes
- ! Possible values of padding type are:
- ! H5T_PAD_ZERO_F = 0
- ! H5T_PAD_ONE_F = 1
- ! H5T_PAD_BACKGROUND_F = 2
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_inpad_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_member_class" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetMemberClass">H5Tget_member_class</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_class_t</em> <code>H5Tget_member_class</code>(
- <em>hid_t</em> <code>cdtype_id</code>,
- <em>unsigned </em><code>member_no</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns datatype class of compound datatype member.
-<dt><strong>Description:</strong>
- <dd>Given a compound datatype, <code>cdtype_id</code>, the function
- <code>H5Tget_member_class</code> returns the datatype class of
- the compound datatype member specified by <code>member_no</code>.
- <p>
- Valid class identifiers are as defined in
- <a href="#Datatype-GetClass"><code>H5Tget_class</code></a>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>cdtype_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Datatype identifier of compound object.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>member_no</code></td>
- <td valign="top">IN: Compound object member number.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the datatype class, a non-negative value, if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_member_class_f
- <dd>
- <pre>
-SUBROUTINE h5tget_member_class_f(type_id, member_no, class, hdferr)
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: member_no ! Member number
- INTEGER, INTENT(OUT) :: class ! Member class
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_member_class_f
- </pre>
- <!--
- <dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_member_index" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetMemberIndex">H5Tget_member_index</a>
-<dt><strong>Signature:</strong>
- <dd><em>int</em> <code>H5Tget_member_index</code>(<em>hid_t </em><code>type_id</code>,
- <em>const char *</em> <code>field_name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the index of a compound or enumeration datatype member.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_member_index</code> retrieves the index of a field
- of a compound datatype or an element of an enumeration datatype.
- <p>
- The name of the target field or element is specified in
- <code>field_name</code>.
- <p>
- Fields are stored in no particular order
- with index values of 0 through <em>N</em>-1, where <em>N</em> is
- the value returned by <code>H5Tget_nmembers</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>field_name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Name of the field or member whose index is to be retrieved.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid field or member index if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_member_index_f
- <dd>
- <pre>
-SUBROUTINE h5tget_member_index_f(type_id, name, index, hdferr)
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Member name
- INTEGER, INTENT(OUT) :: index ! Member index
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_member_index_f
- </pre>
- <!--
- <dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_member_name" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetMemberName">H5Tget_member_name</a>
-<dt><strong>Signature:</strong>
- <dd><em>char *</em> <code>H5Tget_member_name</code>(<em>hid_t </em><code>type_id</code>,
- <em>unsigned</em> <code>field_idx</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the name of a compound or enumeration datatype member.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_member_name</code> retrieves the name of a field
- of a compound datatype or an element of an enumeration datatype.
- <p>
- The index of the target field or element is specified in
- <code>field_idx</code>.
- Compound datatype fields and enumeration datatype elements
- are stored in no particular order
- with index values of 0 through <em>N</em>-1, where <em>N</em>
- is the value returned by <code>H5Tget_nmembers</code>.
- <p>
- A buffer to receive the name of the field is
- allocated with <code>malloc()</code> and the caller is responsible
- for freeing the memory used.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>field_idx</code></td>
- <td valign="top">Zero-based index of the field or element whose name
- is to be retrieved.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid pointer to a string allocated with
- <code>malloc()</code> if successful;
- otherwise returns NULL.
-<dt><strong>Fortran90 Interface:</strong> h5tget_member_name_f
- <dd>
- <pre>
-SUBROUTINE h5tget_member_name_f(type_id,index, member_name, namelen, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: index ! Field index (0-based) of
- ! the field name to retrieve
- CHARACTER(LEN=*), INTENT(OUT) :: member_name ! Name of a field of
- ! a compound datatype
- INTEGER, INTENT(OUT) :: namelen ! Length of the name
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_member_name_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_member_offset" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetMemberOffset">H5Tget_member_offset</a>
-<dt><strong>Signature:</strong>
- <dd><em>size_t</em> <code>H5Tget_member_offset</code>(<em>hid_t </em><code>type_id</code>,
- <em>unsigned</em> <code>memb_no</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the offset of a field of a compound datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_member_offset</code> retrieves the
- byte offset of the beginning of a field within a
- compound datatype with respect to the beginning
- of the compound data type datum.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>memb_no</code></td>
- <td valign="top">Number of the field whose offset is requested.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the byte offset of the field if successful;
- otherwise returns <code>0</code> (zero).
- Note that zero is a valid offset and that this function
- will fail only if a call to <code>H5Tget_member_class()</code>
- fails with the same arguments.
-<dt><strong>Fortran90 Interface:</strong> h5tget_member_offset_f
- <dd>
- <pre>
-SUBROUTINE h5tget_member_offset_f(type_id, member_no, offset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: member_no ! Number of the field
- ! whose offset is requested
- INTEGER(SIZE_T), INTENT(OUT) :: offset ! Byte offset of the the
- ! beginning of the field
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_member_offset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_member_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetMemberType">H5Tget_member_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Tget_member_type</code>(<em>hid_t </em><code>type_id</code>,
- <em>unsigned</em> <code>field_idx</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the datatype of the specified member.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_member_type</code> returns the datatype of the specified member. The caller
- should invoke H5Tclose() to release resources associated with the type.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>field_idx</code></td>
- <td valign="top">Field index (0-based) of the field type to retrieve.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the identifier of a copy of the datatype of the field
- if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_member_type_f
- <dd>
- <pre>
-SUBROUTINE h5tget_member_type_f(type_id, field_idx, datatype, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: field_idx ! Field index (0-based) of the
- ! field type to retrieve
- INTEGER(HID_T), INTENT(OUT) :: datatype ! Identifier of a copy of
- ! the datatype of the field
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_member_type_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_member_value" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetMemberValue">H5Tget_member_value</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tget_member_value</code>(<em>hid_t</em> <code>type</code>
- <em>unsigned</em> <code>memb_no</code>,
- <em>void</em> *<code>value</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the value of an enumeration datatype member.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_member_value</code> returns the value of
- the enumeration datatype member <code>memb_no</code>.
- <p>
- The member value is returned in a user-supplied buffer
- pointed to by <code>value</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type</code></td>
- <td valign="top">IN: Datatype identifier for the enumeration datatype.</td></tr>
- <tr>
- <td valign="top"><em>unsigned</em> <code>memb_no</code>,</td>
- <td valign="top">IN: Number of the enumeration datatype member.</td></tr>
- <tr>
- <td valign="top"><em>void</em>&nbsp;*<code>value&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to a buffer for output of the
- value of the enumeration datatype member.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_member_value_f
- <dd>
- <pre>
-SUBROUTINE h5tget_member_value_f(type_id, member_no, value, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: member_no ! Number of the enumeration
- ! datatype member
- INTEGER, INTENT(OUT) :: value ! Value of the enumeration datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_member_value_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_native_type" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetNativeType">H5Tget_native_type</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Tget_native_type</code>(<em>hid_t</em> <code>type_id</code>,
- <em>H5T_direction_t</em> <code>direction</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the native datatype of a specified datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_native_type</code> returns the equivalent native datatype
- for the datatype specified in <code>type_id</code>.
- <p>
- <code>H5Tget_native_type</code> is a high-level function designed
- primarily to facilitate use of the <code>H5Dread</code> function,
- for which users otherwise must undertake a multi-step process to
- determine the native datatype of a dataset prior to reading it
- into memory.
- It can be used not only to determine
- the native datatype for atomic datatypes,
- but also to determine the native datatypes of the individual components of
- a compound datatype, an enumerated datatype, an array datatype, or
- a variable-length datatype.
- <p>
- <code>H5Tget_native_type</code> selects the matching native datatype
- from the following list:
- <pre> H5T_NATIVE_CHAR
- H5T_NATIVE_SHORT
- H5T_NATIVE_INT
- H5T_NATIVE_LONG
- H5T_NATIVE_LLONG
-
- H5T_NATIVE_UCHAR
- H5T_NATIVE_USHORT
- H5T_NATIVE_UINT
- H5T_NATIVE_ULONG
- H5T_NATIVE_ULLONG
-
- H5T_NATIVE_FLOAT
- H5T_NATIVE_DOUBLE
- H5T_NATIVE_LDOUBLE</pre>
- <p>
- The <code>direction</code> parameter indicates the order
- in which the library searches for a native datatype match.
- Valid values for <code>direction</code> are as follows:
- <table border=0>
- <tr valign=top><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>H5T_DIR_ASCEND</code></td><td>
- Searches the above list in ascending size of the datatype,<br>
- i.e., from top to bottom. (Default)
- </td></tr>
- <tr valign=top><td>&nbsp;</td><td>
- <code>H5T_DIR_DESCEND</code>&nbsp;&nbsp;</td><td>
- Searches the above list in descending size of the datatype,<br>
- i.e., from bottom to top.
- </td></tr>
- </table>
- <p>
- <code>H5Tget_native_type</code> is designed primarily for
- use with intenger and floating point datatypes.
- Time, bifield, opaque, and reference datatypes are returned
- as a copy of <code>type_id</code>.
- <p>
- The identifier returned by <code>H5Tget_native_type</code>
- should eventually be closed by calling <code>H5Tclose</code>
- to release resources.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Datatype identifier for the dataset datatype.</td></tr>
- <tr>
- <td valign="top"><em>H5T_direction_t</em>&nbsp;<code>direction&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Direction of search.</td></tr>
- </table></ul>
-<!-- NEW PAGE -->
-<dt><strong>Returns:</strong>
- <dd>Returns the native datatype identifier for the
- specified dataset datatype if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_nmembers" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetNmembers">H5Tget_nmembers</a>
-<dt><strong>Signature:</strong>
- <dd><em>int </em><code>H5Tget_nmembers</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the number of elements in a compound or enumeration datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_nmembers</code> retrieves
- the number of fields in a compound datatype or
- the number of members of an enumeration datatype.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of elements if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_nmembers_f
- <dd>
- <pre>
-SUBROUTINE h5tget_nmembers_f(type_id, num_members, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: num_members ! Number of fields in a
- ! compound datatype
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_nmembers_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_norm" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetNorm">H5Tget_norm</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_norm_t </em><code>H5Tget_norm</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves mantissa normalization of a floating-point datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_norm</code> retrieves the mantissa normalization of
- a floating-point datatype. Valid normalization types are:
- <ul> <dl>
- <dt>H5T_NORM_IMPLIED (<code>0</code>)
- <dd>MSB of mantissa is not stored, always 1
- <dt>H5T_NORM_MSBSET (<code>1</code>)
- <dd>MSB of mantissa is always 1
- <dt>H5T_NORM_NONE (<code>2</code>)
- <dd>Mantissa is not normalized
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid normalization type if successful;
- otherwise <code>H5T_NORM_ERROR</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_norm_f
- <dd>
- <pre>
-SUBROUTINE h5tget_norm_f(type_id, norm, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(OUT) :: norm ! Mantissa normalization of a
- ! floating-point datatype
- ! Valid normalization types are:
- ! H5T_NORM_IMPLIED_F(0)
- ! MSB of mantissa is not
- ! stored, always 1
- ! H5T_NORM_MSBSET_F(1)
- ! MSB of mantissa is always 1
- ! H5T_NORM_NONE_F(2)
- ! Mantissa is not normalized
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_norm_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_offset" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetOffset">H5Tget_offset</a>
-<dt><strong>Signature:</strong>
- <dd><em>int </em><code>H5Tget_offset</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the bit offset of the first significant bit.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_offset</code> retrieves the bit offset of the first significant bit.
- The significant bits of an atomic datum can be offset from the beginning
- of the memory for that datum by an amount of padding. The `offset'
- property specifies the number of bits of padding that appear to the
- "right of" the value. That is, if we have a 32-bit datum with 16-bits
- of precision having the value 0x1122 then it will be laid out in
- memory as (from small byte address toward larger byte addresses):
- <br>
- <br>
-
- <table border align=center cellpadding=4 width="80%">
- <tr align=center>
- <th width="20%">Byte Position</th>
- <th width="20%">Big-Endian Offset=0</th>
- <th width="20%">Big-Endian Offset=16</th>
- <th width="20%">Little-Endian Offset=0</th>
- <th width="20%">Little-Endian Offset=16</th>
- </tr>
- <tr align=center>
- <td>0:</td>
- <td>[ pad]</td>
- <td>[0x11]</td>
- <td>[0x22]</td>
- <td>[ pad]</td>
- </tr>
- <tr align=center>
- <td>1:</td>
- <td>[ pad]</td>
- <td>[0x22]</td>
- <td>[0x11]</td>
- <td>[ pad]</td>
- </tr>
- <tr align=center>
- <td>2:</td>
- <td>[0x11]</td>
- <td>[ pad]</td>
- <td>[ pad]</td>
- <td>[0x22]</td>
- </tr>
- <tr align=center>
- <td>3:</td>
- <td>[0x22]</td>
- <td>[ pad]</td>
- <td>[ pad]</td>
- <td>[0x11]</td>
- </tr>
- </table>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns an offset value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_offset_f
- <dd>
- <pre>
-SUBROUTINE h5tget_offset_f(type_id, offset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: offset ! Datatype bit offset of the
- ! first significant bit
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_offset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_order" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetOrder">H5Tget_order</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_order_t </em><code>H5Tget_order</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the byte order of an atomic datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_order</code> returns the byte order of an
- atomic datatype.
- <p>
- Possible return values are:
- <ul><dl>
- <dt><code>H5T_ORDER_LE</code> (<code>0</code>)
- <dd>Little endian byte ordering (default).
- <dt><code>H5T_ORDER_BE</code> (<code>1</code>)
- <dd>Big endian byte ordering.
- <dt><code>H5T_ORDER_VAX</code> (<code>2</code>)
- <dd>VAX mixed byte ordering (not currently supported).
- </dl></ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a byte order constant if successful;
- otherwise <code>H5T_ORDER_ERROR</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_order_f
- <dd>
- <pre>
-SUBROUTINE h5tget_order_f(type_id, order, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: order ! Datatype byte order
- ! Possible values are:
- ! H5T_ORDER_LE_F
- ! H5T_ORDER_BE_F
- ! H5T_ORDER_VAX_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tget_order_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_overflow" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetOverflow">H5Tget_overflow</a>
-<dt><strong>Signature:</strong>
-
-
-H5Tget_overflow ()
- <dd><em>H5T_overflow_t</em> <code>H5Tget_overflow</code>(<code>void</code>)
-<dt><strong>Purpose:</strong>
- <dd>Returns a pointer to the current global overflow function.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_overflow</code> returns a pointer
- to the current global overflow function.
- This is an application-defined function that is called whenever a
- datatype conversion causes an overflow.
-<dt><strong>Parameters:</strong>
- <dl>
- <dt>None.
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a pointer to an application-defined function if successful.
- Otherwise returns NULL; this can happen if no overflow handling
- function is registered.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_pad" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetPad">H5Tget_pad</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tget_pad</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_pad_t *</em> <code>lsb</code>,
- <em>H5T_pad_t *</em> <code>msb</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the padding type of the least and most-significant bit padding.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_pad</code> retrieves the padding type of the least and most-significant
- bit padding. Valid types are:
- <ul> <dl>
- <dt>H5T_PAD_ZERO (<code>0</code>)
- <dd>Set background to zeros.
- <dt>H5T_PAD_ONE (<code>1</code>)
- <dd>Set background to ones.
- <dt>H5T_PAD_BACKGROUND (<code>2</code>)
- <dd>Leave background alone.
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">IN: Identifier of datatype to query.</td></tr>
- <tr>
- <td valign="top"><em>H5T_pad_t&nbsp;*</em>&nbsp;<code>lsb&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">OUT: Pointer to location to return least-significant
- bit padding type.</td></tr>
- <tr>
- <td valign="top"><em>H5T_pad_t *</em> <code>msb</code></td>
- <td valign="top">OUT: Pointer to location to return most-significant
- bit padding type.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_pad_f
- <dd>
- <pre>
-SUBROUTINE h5tget_pad_f(type_id, lsbpad, msbpad, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: lsbpad ! Padding type of the
- ! least significant bit
- INTEGER, INTENT(OUT) :: msbpad ! Padding type of the
- ! most significant bit
- ! Possible values of
- ! padding type are:
- ! H5T_PAD_ZERO_F = 0
- ! H5T_PAD_ONE_F = 1
- ! H5T_PAD_BACKGROUND_F = 2
- ! H5T_PAD_ERROR_F = -1
- ! H5T_PAD_NPAD_F = 3
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_pad_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_precision" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetPrecision">H5Tget_precision</a>
-<dt><strong>Signature:</strong>
- <dd><em>size_t </em><code>H5Tget_precision</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the precision of an atomic datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_precision</code> returns the precision of an atomic datatype. The
- precision is the number of significant bits which, unless padding is
- present, is 8 times larger than the value returned by H5Tget_size().
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the number of significant bits if successful;
- otherwise 0.
-<dt><strong>Fortran90 Interface:</strong> h5tget_precision_f
- <dd>
- <pre>
-SUBROUTINE h5tget_precision_f(type_id, precision, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: precision ! Datatype precision
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_precision_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_sign" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetSign">H5Tget_sign</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_sign_t </em><code>H5Tget_sign</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the sign type for an integer type.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_sign</code> retrieves the sign type for an integer type.
- Valid types are:
- <ul> <dl>
- <dt>H5T_SGN_NONE (<code>0</code>)
- <dd>Unsigned integer type.
- <dt>H5T_SGN_2 (<code>1</code>)
- <dd>Two's complement signed integer type.
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid sign type if successful;
- otherwise <code>H5T_SGN_ERROR</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_sign_f
- <dd>
- <pre>
-SUBROUTINE h5tget_sign_f(type_id, sign, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: sign ! Sign type for an integer type
- ! Possible values are:
- ! Unsigned integer type
- ! H5T_SGN_NONE_F = 0
- ! Two's complement signed
- ! integer type
- ! H5T_SGN_2_F = 1
- ! or error value
- ! H5T_SGN_ERROR_F = -1
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_sign_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_size" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetSize">H5Tget_size</a>
-<dt><strong>Signature:</strong>
- <dd><em>size_t </em><code>H5Tget_size</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the size of a datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_size</code> returns the size of a datatype in bytes.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the size of the datatype in bytes if successful;
- otherwise 0.
-<dt><strong>Fortran90 Interface:</strong> h5tget_size_f
- <dd>
- <pre>
-SUBROUTINE h5tget_size_f(type_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(SIZE_T), INTENT(OUT) :: size ! Datatype size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tget_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_strpad" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetStrpad">H5Tget_strpad</a>
-<dt><strong>Signature:</strong>
- <dd><em>H5T_str_t </em><code>H5Tget_strpad</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves the storage mechanism for a string datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_strpad</code> retrieves the storage mechanism
- for a string datatype, as defined in
- <a href="#Datatype-SetStrpad"><code>H5Tset_strpad</code></a>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to query.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a valid string storage mechanism if successful;
- otherwise <code>H5T_STR_ERROR</code> (-1).
-<dt><strong>Fortran90 Interface:</strong> h5tget_strpad_f
- <dd>
- <pre>
-SUBROUTINE h5tget_strpad_f(type_id, strpad, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(OUT) :: strpad ! String padding method for a string datatype
- ! Possible values of padding type are:
- ! Pad with zeros (as C does):
- ! H5T_STR_NULLPAD_F(0)
- ! Pad with spaces (as FORTRAN does):
- ! H5T_STR_SPACEPAD_F(1)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_strpad_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_super" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetSuper">H5Tget_super</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em> <code>H5Tget_super</code>(<em>hid_t</em> <code>type</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Returns the base datatype from which a datatype is derived.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_super</code> returns the base datatype from which the
- datatype <code>type</code> is derived.
- <P>
- In the case of an enumeration type, the return value is an integer type.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Datatype identifier for the derived datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns the datatype identifier for the base datatype if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tget_super_f
- <dd>
- <pre>
-SUBROUTINE h5tget_super_f(type_id, base_type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(HID_T), INTENT(OUT) :: type_id ! Base datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_super_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tget_tag" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-GetTag">H5Tget_tag</a>
-<dt><strong>Signature:</strong>
- <dd><em>char</em> *<code>H5Tget_tag</code>(<em>hid_t</em> <code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Gets the tag associated with an opaque datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tget_tag</code> returns the tag associated with
- the opaque datatype <code>type_id</code>.
- <P>
- The tag is returned via a pointer to an
- allocated string, which the caller must free.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Datatype identifier for the opaque datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a pointer to an allocated string if successful;
- otherwise returns <code>NULL</code>.
-<dt><strong>Fortran90 Interface:</strong> h5tget_tag_f
- <dd>
- <pre>
-SUBROUTINE h5tget_tag_f(type_id, tag,taglen, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(OUT) :: tag ! Unique ASCII string with which the
- ! opaque datatype is to be tagged
- INTEGER, INTENT(OUT) :: taglen ! Length of tag
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tget_tag_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tinsert" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Insert">H5Tinsert</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tinsert</code>(<em>hid_t </em><code>type_id</code>,
- <em>const char *</em> <code>name</code>,
- <em>size_t</em> <code>offset</code>,
- <em>hid_t</em> <code>field_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Adds a new member to a compound datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tinsert</code> adds another member to the compound datatype
- <code>type_id</code>. The new member has a <code>name</code> which
- must be unique within the compound datatype.
- The <code>offset</code> argument defines the start of the member
- in an instance of the compound datatype, and <code>field_id</code>
- is the datatype identifier of the new member.
- <P>
- Note: Members of a compound datatype do not have to be atomic datatypes;
- a compound datatype can have a member which is a compound datatype.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of compound datatype to modify.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Name of the field to insert.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>offset</code></td>
- <td valign="top">Offset in memory structure of the field to insert.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>field_id</code></td>
- <td valign="top">Datatype identifier of the field to insert.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tinsert_f
- <dd>
- <pre>
-SUBROUTINE h5tinsert_f(type_id, name, offset, field_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the field to insert
- INTEGER(SIZE_T), INTENT(IN) :: offset ! Offset in memory structure
- ! of the field to insert
- INTEGER(HID_T), INTENT(IN) :: field_id ! Datatype identifier of the
- ! new member
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tinsert_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tis_variable_str" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-IsVariableString">H5Tis_variable_str</a>
-<dt><strong>Signature:</strong>
- <dd><em>htri_t </em><code>H5Tis_variable_str</code>(<em>hid_t </em><code>dtype_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Determines whether datatype is a variable-length string.
-<dt><strong>Description:</strong>
- <dd><code>H5Tvlen_create</code> determines whether the datatype
- identified in <code>dtype_id</code> is a variable-length string.
- <p>
- This function can be used to distinguish between
- fixed and variable-length string datatypes.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>dtype_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Datatype identifier.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns <code>TRUE</code> or <code>FALSE</code> if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tis_variable_str_f
- <dd>
- <pre>
-SUBROUTINE h5tis_variable_str_f(type_id, status, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- LOGICAL, INTENT(OUT) :: status ! Logical flag:
- ! .TRUE. if datatype is a
- ! varibale string
- ! .FALSE. otherwise
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tis_variable_str_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tlock" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Lock">H5Tlock</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tlock</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Locks a datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tlock</code> locks the datatype specified by the
- <code>type_id</code> identifier, making it read-only and
- non-destructible. This is normally done by the library for
- predefined datatypes so the application does not
- inadvertently change or delete a predefined type.
- Once a datatype is locked it can never be unlocked.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to lock.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Topen" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Open">H5Topen</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t</em><code>H5Topen</code>(<em>hid_t</em> <code>loc_id</code>,
- <em>const char *</em> <code>name</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Opens a named datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Topen</code> opens a named datatype at the location
- specified by <code>loc_id</code> and returns an identifier
- for the datatype. <code>loc_id</code> is either a file or
- group identifier. The identifier should eventually be closed
- by calling <code>H5Tclose</code> to release resources.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>loc_id</code></td>
- <td valign="top">IN: A file or group identifier.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char&nbsp;*</em>&nbsp;<code>name&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: A datatype name, defined within the file
- or group identified by <code>loc_id</code>.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a named datatype identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5topen_f
- <dd>
- <pre>
-SUBROUTINE h5topen_f(loc_id, name, type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier
- CHARACTER(LEN=*), INTENT(IN) :: name ! Datatype name within file or
- ! group
- INTEGER(HID_T), INTENT(out) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5topen_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tpack" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Pack">H5Tpack</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tpack</code>(<em>hid_t </em><code>type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Recursively removes padding from within a compound datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tpack</code> recursively removes padding from within a compound
- datatype to make it more efficient (space-wise) to store that data.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to modify.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tpack_f
- <dd>
- <pre>
-SUBROUTINE h5tpack_f(type_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tpack_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tregister" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Register">H5Tregister</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tregister</code>(<em>H5T_pers_t</em> <code>pers</code>,
- <em>const char *</em> <code>name</code>,
- <em>hid_t </em><code>src_id</code>,
- <em>hid_t</em> <code>dst_id</code>,
- <em>H5T_conv_t</em> <code>func</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Registers a conversion function.
-<dt><strong>Description:</strong>
- <dd><code>H5Tregister</code> registers a hard or soft conversion function
- for a datatype conversion path.
- <p>
- The parameter <code>pers</code> indicates whether a conversion function
- is <em>hard</em> (<code>H5T_PERS_HARD</code>)
- or <em>soft</em> (<code>H5T_PERS_SOFT</code>).
- <p>
- A conversion path can have only one hard function.
- When <code>pers</code> is <code>H5T_PERS_HARD</code>,
- <code>func</code> replaces any previous hard function.
- If <code>pers</code> is <code>H5T_PERS_HARD</code> and
- <code>func</code> is the null pointer, then any hard function
- registered for this path is removed.
- <p>
- When <code>pers</code> is <code>H5T_PERS_SOFT</code>,
- <code>H5Tregister</code>
- adds the function to the end of the master soft list and replaces
- the soft function in all applicable existing conversion paths.
- Soft functions are used when determining which conversion function
- is appropriate for this path.
- <p>
- The <code>name</code> is used only for debugging and should be a
- short identifier for the function.
- <p>
- The path is specified by the source and destination datatypes
- <code>src_id</code> and <code>dst_id</code>.
- For soft conversion functions, only the class of these types is important.
- <p>
- The type of the conversion function pointer is declared as:
- <dir>
-<pre><code>typedef</code> <em>herr_t </em>(<code>*H5T_conv_t</code>) (<em>hid_t </em><code>src_id</code>,
- <em>hid_t </em><code>dst_id</code>,
- <em>H5T_cdata_t *</em><code>cdata</code>,
- <em>size_t </em><code>nelmts</code>,
- <em>size_t </em><code>buf_stride</code>,
- <em>size_t </em><code>bkg_stride</code>,
- <em>void *</em><code>buf</code>,
- <em>void *</em><code>bkg</code>,
- <em>hid_t </em><code>dset_xfer_plist</code>)</pre>
- </dir>
- <p>
- The <code>H5T_cdata_t</code> struct is declared as:
- <dir>
-<pre><code>typedef</code> <em>struct </em><code>*H5T_cdata_t</code> (<em>H5T_cmd_t </em><code>command</code>,
- <em>H5T_bkg_t </em><code>need_bkg</code>,
- <em>hbool_t *</em><code>recalc</code>,
- <em>void *</em><code>priv</code>)</pre>
- </dir>
- <p>
- The <code>H5T_conv_t</code> parameters and
- the elements of the <code>H5T_cdata_t</code> struct
- are described more fully in the
- &ldquo;<a href="Datatypes.html#Datatypes-DataConversion"
- target="WinUG">Data Conversion</a>&rdquo;
- section of&nbsp; &ldquo;The Datatype Interface (H5T)&rdquo;
- in the <cite>HDF5 User's Guide</cite>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5T_pers_t</em> <code>pers</code></td>
- <td valign="top"><code>H5T_PERS_HARD</code> for hard conversion functions;
- <code>H5T_PERS_SOFT</code> for soft conversion functions.</td></tr>
- <tr>
- <td valign="top"><em>const char *</em> <code>name</code></td>
- <td valign="top">Name displayed in diagnostic output.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>src_id</code></td>
- <td valign="top">Identifier of source datatype.</td></tr>
- <tr>
- <td valign="top"><em>hid_t</em> <code>dst_id</code></td>
- <td valign="top">Identifier of destination datatype.</td></tr>
- <tr>
- <td valign="top"><em>H5T_conv_t</em>&nbsp;<code>func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Function to convert between source and destination datatypes.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_cset" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetCset">H5Tset_cset</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_cset</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_cset_t</em> <code>cset</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets character set to be used.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_cset</code> the character set to be used.
- <p>
- HDF5 is able to distinguish between character sets of different
- nationalities and to convert between them to the extent possible.
- Valid character set types are:
- <ul> <dl>
- <dt>H5T_CSET_ASCII (<code>0</code>)
- <dd>Character set is US ASCII.
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to modify.</td></tr>
- <tr>
- <td valign="top"><em>H5T_cset_t</em>&nbsp;<code>cset&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Character set type.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_cset_f
- <dd>
- <pre>
-SUBROUTINE h5tset_cset_f(type_id, cset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(IN) :: cset ! Character set type of a string datatype
- ! Possible values of padding type are:
- ! H5T_CSET_ASCII_F = 0
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_cset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_ebias" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetEbias">H5Tset_ebias</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_ebias</code>(<em>hid_t </em><code>type_id</code>,
- <em>size_t</em> <code>ebias</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the exponent bias of a floating-point type.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_ebias</code> sets the exponent bias of a floating-point type.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>ebias</code></td>
- <td valign="top">Exponent bias value.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_ebias_f
- <dd>
- <pre>
-SUBROUTINE h5tset_ebias_f(type_id, ebias, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: ebias ! Datatype exponent bias
- ! of a floating-point type,
- ! which cannot be 0
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_ebias_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_fields" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetFields">H5Tset_fields</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_fields</code>(<em>hid_t </em><code>type_id</code>,
- <em>size_t</em> <code>spos</code>,
- <em>size_t</em> <code>epos</code>,
- <em>size_t</em> <code>esize</code>,
- <em>size_t</em> <code>mpos</code>,
- <em>size_t</em> <code>msize</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets locations and sizes of floating point bit fields.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_fields</code> sets the locations and sizes of the various
- floating-point bit fields. The field positions are bit positions in the
- significant region of the datatype. Bits are numbered with the least
- significant bit number zero.
-
- <P>Fields are not allowed to extend beyond the number of bits of
- precision, nor are they allowed to overlap with one another.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>spos</code></td>
- <td valign="top">Sign position, i.e., the bit offset of the floating-point
- sign bit.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>epos</code></td>
- <td valign="top">Exponent bit position.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>esize</code></td>
- <td valign="top">Size of exponent in bits.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>mpos</code></td>
- <td valign="top">Mantissa bit position.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>msize</code></td>
- <td valign="top">Size of mantissa in bits.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_fields_f
- <dd>
- <pre>
-SUBROUTINE h5tset_fields_f(type_id, epos, esize, mpos, msize, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: epos ! Exponent bit-position
- INTEGER, INTENT(IN) :: esize ! Size of exponent in bits
- INTEGER, INTENT(IN) :: mpos ! Mantissa bit-position
- INTEGER, INTENT(IN) :: msize ! Size of mantissa in bits
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_fields_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_inpad" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetInpad">H5Tset_inpad</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_inpad</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_pad_t</em> <code>inpad</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Fills unused internal floating point bits.
-<dt><strong>Description:</strong>
- <dd>If any internal bits of a floating point type are unused
- (that is, those significant bits which are not part of the
- sign, exponent, or mantissa), then <code>H5Tset_inpad</code> will be filled
- according to the value of the padding value property <code>inpad</code>.
- Valid padding types are:
- <ul> <dl>
- <dt>H5T_PAD_ZERO (<code>0</code>)
- <dd>Set background to zeros.
- <dt>H5T_PAD_ONE (<code>1</code>)
- <dd>Set background to ones.
- <dt>H5T_PAD_BACKGROUND (<code>2</code>)
- <dd>Leave background alone.
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to modify.</td></tr>
- <tr>
- <td valign="top"><em>H5T_pad_t</em>&nbsp;<code>pad&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Padding type.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_inpad_f
- <dd>
- <pre>
-SUBROUTINE h5tset_inpad_f(type_id, padtype, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(IN) :: padtype ! Padding type for unused bits
- ! in floating-point datatypes.
- ! Possible values of padding type are:
- ! H5T_PAD_ZERO_F = 0
- ! H5T_PAD_ONE_F = 1
- ! H5T_PAD_BACKGROUND_F = 2
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_inpad_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_norm" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetNorm">H5Tset_norm</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_norm</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_norm_t</em> <code>norm</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the mantissa normalization of a floating-point datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_norm</code> sets the mantissa normalization of
- a floating-point datatype. Valid normalization types are:
- <ul> <dl>
- <dt>H5T_NORM_IMPLIED (<code>0</code>)
- <dd>MSB of mantissa is not stored, always 1
- <dt>H5T_NORM_MSBSET (<code>1</code>)
- <dd>MSB of mantissa is always 1
- <dt>H5T_NORM_NONE (<code>2</code>)
- <dd>Mantissa is not normalized
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>H5T_norm_t</em>&nbsp;<code>norm&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Mantissa normalization type.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_norm_f
- <dd>
- <pre>
-SUBROUTINE h5tset_norm_f(type_id, norm, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(IN) :: norm ! Mantissa normalization of a
- ! floating-point datatype
- ! Valid normalization types are:
- ! H5T_NORM_IMPLIED_F(0)
- ! MSB of mantissa is not stored,
- ! always 1
- ! H5T_NORM_MSBSET_F(1)
- ! MSB of mantissa is always 1
- ! H5T_NORM_NONE_F(2)
- ! Mantissa is not normalized
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_norm_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_offset" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetOffset">H5Tset_offset</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_offset</code>(<em>hid_t </em><code>type_id</code>,
- <em>size_t</em> <code>offset</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the bit offset of the first significant bit.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_offset</code> sets the bit offset of the first significant bit. The
- significant bits of an atomic datum can be offset from the beginning of
- the memory for that datum by an amount of padding. The `offset'
- property specifies the number of bits of padding that appear to the
- "right of" the value. That is, if we have a 32-bit datum with 16-bits
- of precision having the value 0x1122 then it will be laid out in
- memory as (from small byte address toward larger byte addresses):
- <br>
- <br>
-
- <table border align=center cellpadding=4 width="80%">
- <tr align=center>
- <th width="20%">Byte Position</th>
- <th width="20%">Big-Endian Offset=0</th>
- <th width="20%">Big-Endian Offset=16</th>
- <th width="20%">Little-Endian Offset=0</th>
- <th width="20%">Little-Endian Offset=16</th>
- </tr>
- <tr align=center>
- <td>0:</td>
- <td>[ pad]</td>
- <td>[0x11]</td>
- <td>[0x22]</td>
- <td>[ pad]</td>
- </tr>
- <tr align=center>
- <td>1:</td>
- <td>[ pad]</td>
- <td>[0x22]</td>
- <td>[0x11]</td>
- <td>[ pad]</td>
- </tr>
- <tr align=center>
- <td>2:</td>
- <td>[0x11]</td>
- <td>[ pad]</td>
- <td>[ pad]</td>
- <td>[0x22]</td>
- </tr>
- <tr align=center>
- <td>3:</td>
- <td>[0x22]</td>
- <td>[ pad]</td>
- <td>[ pad]</td>
- <td>[0x11]</td>
- </tr>
- </table>
-
-<P>If the offset is incremented then the total size is
-incremented also if necessary to prevent significant bits of
-the value from hanging over the edge of the datatype.
-
-<P>The offset of an H5T_STRING cannot be set to anything but
-zero.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>offset</code></td>
- <td valign="top">Offset of first significant bit.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_offset_f
- <dd>
- <pre>
-SUBROUTINE h5tset_offset_f(type_id, offset, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: offset ! Datatype bit offset of
- ! the first significant bit
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_offset_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_order" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetOrder">H5Tset_order</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_order</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_order_t</em><code>order</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the byte ordering of an atomic datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_order</code> sets the byte ordering of an atomic datatype.
- Byte orderings currently supported are:
- <ul> <dl>
- <dt>H5T_ORDER_LE (<code>0</code>)
- <dd> Little-endian byte ordering (default).
- <dt>H5T_ORDER_BE (<code>1</code>)
- <dd> Big-endian byte ordering.
- <dt>H5T_ORDER_VAX (<code>2</code>)
- <dd>VAX mixed byte ordering (not currently supported).
- </dl> </ul>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>H5T_order_t</em>&nbsp;<code>order&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Byte ordering constant.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_order_f
- <dd>
- <pre>
-SUBROUTINE h5tset_order_f(type_id, order, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: order ! Datatype byte order
- ! Possible values are:
- ! H5T_ORDER_LE_F
- ! H5T_ORDER_BE_F
- ! H5T_ORDER_VAX_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tset_order_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_overflow" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetOverflow">H5Tset_overflow</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tset_overflow</code>(<em>H5T_overflow_t</em> <code>func</code>)
-<dt><strong>Purpose:</strong>
- <dd>Sets the overflow handler to a specified function.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_overflow</code> sets the overflow handler
- to be the function specified by <code>func</code>.
- <code>func</code> will be called for all datatype conversions that
- result in an overflow.
- <p>
- See the definition of <code>H5T_overflow_t</code> in
- <code>H5Tpublic.h</code> for documentation
- of arguments and return values.
- The prototype for <code>H5T_overflow_t</code> is as follows:<br>
- <code>herr_t (*H5T_overflow_t)(hid_t src_id, hid_t dst_id,
- void *src_buf, void *dst_buf);
- </code>
- <p>
- The NULL pointer may be passed to remove the overflow handler.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5T_overflow_t</em>&nbsp;<code>func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Overflow function.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_pad" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetPad">H5Tset_pad</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_pad</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_pad_t</em> <code>lsb</code>,
- <em>H5T_pad_t</em> <code>msb</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the least and most-significant bits padding types.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_pad</code> sets the least and most-significant bits padding types.
- <dl> <ul>
- <dt>H5T_PAD_ZERO (<code>0</code>)
- <dd>Set background to zeros.
- <dt>H5T_PAD_ONE (<code>1</code>)
- <dd>Set background to ones.
- <dt>H5T_PAD_BACKGROUND (<code>2</code>)
- <dd>Leave background alone.
- </ul> </dl>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>H5T_pad_t</em>&nbsp;<code>lsb&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Padding type for least-significant bits.</td></tr>
- <tr>
- <td valign="top"><em>H5T_pad_t</em> <code>msb</code></td>
- <td valign="top">Padding type for most-significant bits.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_pad_f
- <dd>
- <pre>
-SUBROUTINE h5tset_pad_f(type_id, lsbpad, msbpad, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: lsbpad ! Padding type of the
- ! least significant bit
- INTEGER, INTENT(IN) :: msbpad ! Padding type of the
- ! most significant bit
- ! Possible values of padding
- ! type are:
- ! H5T_PAD_ZERO_F = 0
- ! H5T_PAD_ONE_F = 1
- ! H5T_PAD_BACKGROUND_F = 2
- ! H5T_PAD_ERROR_F = -1
- ! H5T_PAD_NPAD_F = 3
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_pad_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_precision" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetPrecision">H5Tset_precision</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_precision</code>(<em>hid_t </em><code>type_id</code>,
- <em>size_t</em><code>precision</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the precision of an atomic datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_precision</code> sets the precision of an atomic datatype.
- The precision is the number of significant bits which, unless padding
- is present, is 8 times larger than the value returned by H5Tget_size().
- <P>If the precision is increased then the offset is decreased and then
- the size is increased to insure that significant bits do not "hang
- over" the edge of the datatype.
- <P>Changing the precision of an H5T_STRING automatically changes the
- size as well. The precision must be a multiple of 8.
- <P>When decreasing the precision of a floating point type, set the
- locations and sizes of the sign, mantissa, and exponent fields
- first.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em>&nbsp;<code>precision&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Number of bits of precision for datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_precision_f
- <dd>
- <pre>
-SUBROUTINE h5tset_precision_f(type_id, precision, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER, INTENT(IN) :: precision ! Datatype precision
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_precision_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_sign" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetSign">H5Tset_sign</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_sign</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_sign_t</em> <code>sign</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the sign property for an integer type.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_sign</code> sets the sign property for an integer type.
- <dl>
- <dt>H5T_SGN_NONE (<code>0</code>)
- <dd>Unsigned integer type.
- <dt>H5T_SGN_2 (<code>1</code>)
- <dd>Two's complement signed integer type.
- </dl>
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to set.</td></tr>
- <tr>
- <td valign="top"><em>H5T_sign_t</em>&nbsp;<code>sign&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Sign type.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_sign_f
- <dd>
- <pre>
-SUBROUTINE h5tset_sign_f(type_id, sign, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(IN) :: sign ! Sign type for an integer type
- ! Possible values are:
- ! Unsigned integer type
- ! H5T_SGN_NONE_F = 0
- ! Two's complement signed integer type
- ! H5T_SGN_2_F = 1
- ! or error value
- ! H5T_SGN_ERROR_F=-1
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_sign_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_size" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetSize">H5Tset_size</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_size</code>(<em>hid_t </em><code>type_id</code>,
- <em>size_t</em><code>size</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Sets the total size for an atomic datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_size</code> sets the total size in bytes,
- <code>size</code>, for a datatype. If the datatype is atomic and size
- is decreased so that the significant bits of the datatype extend beyond
- the edge of the new size, then the `offset' property is decreased
- toward zero. If the `offset' becomes zero and the significant
- bits of the datatype still hang over the edge of the new size, then
- the number of significant bits is decreased.
- The size set for a string should include space for the null-terminator
- character, otherwise it will not be stored on (or retrieved from) disk.
- Adjusting the size of a string automatically sets the precision
- to 8*<code>size</code>. A compound datatype may increase in size,
- but may not shrink. All datatypes must have a positive size.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Identifier of datatype to change size.</td></tr>
- <tr>
- <td valign="top"><em>size_t</em> <code>size</code></td>
- <td valign="top">Size in bytes to modify datatype.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_size_f
- <dd>
- <pre>
-SUBROUTINE h5tset_size_f(type_id, size, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- INTEGER(SIZE_T), INTENT(IN) :: size ! Datatype size
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success and -1 on failure
-END SUBROUTINE h5tset_size_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_strpad" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetStrpad">H5Tset_strpad</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t </em><code>H5Tset_strpad</code>(<em>hid_t </em><code>type_id</code>,
- <em>H5T_str_t</em> <code>strpad</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Defines the storage mechanism for character strings.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_strpad</code> defines the storage mechanism for the string.
- <p>
- The method used to store character strings differs with the
- programming language:
- <ul>
- <li>C usually null terminates strings while
- <li>Fortran left-justifies and space-pads strings.
- </ul>
- Valid string padding values, as passed in the parameter
- <code>strpad</code>, are as follows:
- <ul> <dl>
- <dt>H5T_STR_NULLTERM (<code>0</code>)
- <dd>Null terminate (as C does)
- <dt>H5T_STR_NULLPAD (<code>1</code>)
- <dd>Pad with zeros
- <dt>H5T_STR_SPACEPAD (<code>2</code>)
- <dd>Pad with spaces (as FORTRAN does)
- </dl> </ul>
- <p>
- When converting from a longer string to a shorter string,
- the behavior is as follows.
- If the short string is <code>H5T_STR_NULLPAD</code> or
- <code>H5T_STR_SPACEPAD</code>, then the string is simply truncated.
- If the short string is <code>H5T_STR_NULLTERM</code>, it is
- truncated and a null terminator is appended.
- <p>
- When converting from a shorter string to a longer string,
- the long string is padded on the end by appending nulls or spaces.
-
-
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">Identifier of datatype to modify.</td></tr>
- <tr>
- <td valign="top"><em>H5T_str_t</em>&nbsp;<code>strpad&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">String padding type.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_strpad_f
- <dd>
- <pre>
-SUBROUTINE h5tset_strpad_f(type_id, strpad, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id
- ! Datatype identifier
- INTEGER, INTENT(IN) :: strpad ! String padding method for a string datatype
- ! Possible values of padding type are:
- ! Pad with zeros (as C does):
- ! H5T_STR_NULLPAD_F(0)
- ! Pad with spaces (as FORTRAN does):
- ! H5T_STR_SPACEPAD_F(1)
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_strpad_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tset_tag" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-SetTag">H5Tset_tag</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tset_tag</code>(<em>hid_t</em> <code>type_id</code>
- <em>const char</em> *<code>tag</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Tags an opaque datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tset_tag</code> tags an opaque datatype <code>type_id</code>
- with a descriptive ASCII identifier,<code> tag</code>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em> <code>type_id</code></td>
- <td valign="top">IN: Datatype identifier for the opaque datatype to be tagged.</td></tr>
- <tr>
- <td valign="top"><em>const&nbsp;char</em>&nbsp;*<code>tag&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Descriptive ASCII string with which the
- opaque datatype is to be tagged.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tset_tag_f
- <dd>
- <pre>
-SUBROUTINE h5tset_tag_f(type_id, tag, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier
- CHARACTER(LEN=*), INTENT(IN) :: tag ! Unique ASCII string with which the
- ! opaque datatype is to be tagged
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tset_tag_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tunregister" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-Unregister">H5Tunregister</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Tunregister</code>(<em>H5T_conv_t</em> <code>func</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Removes a conversion function from all conversion paths.
-<dt><strong>Description:</strong>
- <dd><code>H5Tunregister</code> removes a conversion function from all conversion paths.
- <P>
- The conversion function pointer type declaration is described in
- <a href="#Datatype-Register">H5Tregister</a>.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5T_conv_t</em>&nbsp;<code>func&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Function to remove from conversion paths.</td>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-SUBROUTINE
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Tvlen_create" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Datatype-VLCreate">H5Tvlen_create</a>
-<dt><strong>Signature:</strong>
- <dd><em>hid_t </em><code>H5Tvlen_create</code>(<em>hid_t </em><code>base_type_id</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Creates a new variable-length datatype.
-<dt><strong>Description:</strong>
- <dd><code>H5Tvlen_create</code> creates a new variable-length (VL) datatype.
- <p>
- The base datatype will be the datatype that the sequence is composed of,
- characters for character strings, vertex coordinates for polygon lists, etc.
- The base type specified for the VL datatype can be of any HDF5 datatype,
- including another VL datatype, a compound datatype or an atomic datatype.
- <p>
- When necessary, use <code>H5Tget_super</code> to determine the base type
- of the VL datatype.
- <p>
- The datatype identifier returned from this function should be
- released with <code>H5Tclose</code> or resource leaks will result.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>hid_t</em>&nbsp;<code>base_type_id&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Base type of datatype to create.</td></tr>
- </table></ul>
-<dt><strong>See Also:</strong>
- <dd><a href="RM_H5D.html#Dataset-GetVLBuf">H5Dget_vlen_buf_size</a>
- <dd><a href="RM_H5D.html#Dataset-VLReclaim">H5Dvlen_reclaim</a>
-<dt><strong>Returns:</strong>
- <dd>Returns datatype identifier if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong> h5tvlen_create_f
- <dd>
- <pre>
-SUBROUTINE h5tvlen_create_f(type_id, vltype_id, hdferr)
- IMPLICIT NONE
- INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier of base type
- ! Base type can only be atomic
- INTEGER(HID_T), INTENT(OUT) :: vltype_id ! VL datatype identifier
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-END SUBROUTINE h5tvlen_create_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 27 April 2005");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/RM_H5Z.html b/doc/html/RM_H5Z.html
deleted file mode 100644
index 0d46864..0000000
--- a/doc/html/RM_H5Z.html
+++ /dev/null
@@ -1,655 +0,0 @@
-<html>
-<head>
-<title>
-HDF5/H5Z API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>H5Z: Filter and Compression Interface</h1>
-</center>
-
-<h2>Filter and Compression API Functions</h2>
-
-These functions enable the user to configure new filters
-for the local environment.
-
-<table border=0 width=80%>
-<tr><td valign=top width="30%">
-<ul>
- <li><a href="#Compression-FilterAvail">H5Zfilter_avail</a><br>
- <li><a href="#Compression-GetFilterInfo">H5Zget_filter_info</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top width="30%">
-<ul>
- <li><a href="#Compression-Register">H5Zregister</a>
-</ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top width="30%">
-<ul>
- <li><a href="#Compression-Unregister">H5Zunregister</a>
-</ul>
-</td></tr>
-</table>
-
-<br>
-<strong>The FORTRAN90 Interfaces:</strong>
-<br>
-In general, each FORTRAN90 subroutine performs exactly the same task
-as the corresponding C function.
-<br>
-
-<table border=0 width=80%>
-<tr><td valign=top width="30%">
- <ul>
- <li><a href="#Compression-FilterAvail">h5zfilter_avail_f</a>
- </ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top width="30%">
- <ul>
-<!--<li><a href="#Compression-Register">h5zregister_f</a><br> -->
- <li><a href="#Compression-GetFilterInfo">h5zget_filter_info_f</a>
- </ul>
-</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top width="30%">
- <ul>
- <li><a href="#Compression-Unregister">h5zunregister_f</a>
- </ul>
-</td></tr>
-</table>
-
-<p>
-HDF5 supports a filter pipeline that provides the capability for standard
-and customized raw data processing during I/O operations.
-HDF5 is distributed with a small set of standard filters such as
-compression (gzip, SZIP, and a shuffling algorithm) and
-error checking (Fletcher32 checksum).
-For further flexibility, the library allows a
-user application to extend the pipeline through the
-creation and registration of customized filters.
-<p>
-The flexibility of the filter pipeline implementation enables the
-definition of additional filters by a user application.
-A filter
- <ul>
- <li>is associated with a dataset when the dataset is created,
- <li>can be used only with chunked data
- <br>(i.e., datasets stored in the <code>H5D_CHUNKED</code>
- storage layout), and
- <li>is applied independently to each chunk of the dataset.
- </ul>
-<p>
-The HDF5 library does not support filters for contiguous datasets
-because of the difficulty of implementing random access for partial I/O.
-Compact dataset filters are not supported because it would not produce
-significant results.
-<p>
-Filter identifiers for the filters distributed with the HDF5 Library
-are as follows:
-<table align=center border=0>
- <tr valign=top align=left>
- <td>
- <code>H5Z_FILTER_DEFLATE</code></td><td>The gzip compression,
- or deflation, filter
- </td></tr><tr><td>
- <code>H5Z_FILTER_SZIP</code></td><td>The SZIP compression filter
- </td></tr><tr><td>
- <code>H5Z_FILTER_SHUFFLE</code></td><td>The shuffle algorithm filter
- </td></tr><tr><td>
- <code>H5Z_FILTER_FLETCHER32&nbsp;&nbsp;</code></td><td>The Fletcher32 checksum,
- or error checking, filter
- </td></tr>
-</table>
-Custom filters that have been registered with the library will have
-additional unique identifiers.
-<p>
-See <a href="Datasets.html"><cite>The Dataset Interface (H5D)</cite></a>
-in the <cite>HDF5 User's Guide</cite> for further information regarding
-data compression.
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT " " -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Zfilter_avail" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Compression-FilterAvail">H5Zfilter_avail</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Zfilter_avail</code>(<em>H5Z_filter_t</em> <code>filter</code>)
- <dt><strong>Purpose:</strong>
- <dd>Determines whether a filter is available.
- <dt><strong>Description:</strong>
- <dd><code>H5Zfilter_avail</code> determines whether the filter
- specified in <code>filter</code> is available to the application.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5Z_filter_t</em>&nbsp;<code>filter&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Filter identifier.
- See the introduction to this section of the reference manual
- for a list of valid filter identifiers.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5zfilter_avail_f
- <dd>
- <pre>
-SUBROUTINE h5zfilter_avail_f(filter, status, hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: filter ! Filter
- ! Valid values are:
- ! H5Z_FILTER_DEFLATE_F
- ! H5Z_FILTER_SHUFFLE_F
- ! H5Z_FILTER_FLETCHER32_F
- ! H5Z_FILTER_SZIP_F
- LOGICAL, INTENT(OUT) :: status ! Flag indicating whether
- ! filter is available:
- ! .TRUE.
- ! .FALSE.
-END SUBROUTINE h5zfilter_avail_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Zget_filter_info" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Compression-GetFilterInfo">H5Zget_filter_info</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em>
- <code>H5Zget_filter_info</code>(
- <em>H5Z_filter_t</em> <code>filter</code>,
- <em>unsigned int *</em><code>filter_config_flags</code>
- )
-<dt><strong>Purpose:</strong>
- <dd>Retrieves information about a filter.
-<dt><strong>Description:</strong>
- <dd>
- <code>H5Zget_filter_info</code> retrieves information about a filter.
- At present, this means that the function retrieves a
- filter's configuration flags, indicating whether the filter is
- configured to decode data, to encode data, neither, or both.
- <p>
- If <code>filter_config_flags</code> is not set to <small>NULL</small>
- prior to the function call, the returned parameter contains a
- bit field specifying the available filter configuration.
- The configuration flag values can then be determined through
- a series of bitwise <small>AND</small> operations, as described below.
- <p>
- Valid filter configuration flags include the following:
- <table>
- <tr><td><code>&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td><code>H5Z_FILTER_CONFIG_ENCODE_ENABLED</code></td>
- <td>Encoding is enabled for this filter
- </td></tr>
- <tr><td>&nbsp;</td>
- <td><code>H5Z_FILTER_CONFIG_DECODE_ENABLED</code>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td>Decoding is enabled for this filter
- </td></tr>
- <tr><td>&nbsp;</td>
- <td colspan="2" align="right"><small>(These flags
- are defined in the HDF5 Library source code file
- <code>H5Zpublic.h</code>.)</small>
- </td></tr>
- </table>
- A bitwise <small>AND</small> of the returned
- <code>filter_config_flags</code> and a valid
- filter configuration flag will reveal whether
- the related configuration option is available.
- For example, if the value of
- <br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- H5Z_FILTER_CONFIG_ENCODE_ENABLED
- &amp;
- filter_config_flags</code>
- <br>
- is true, i.e., greater than <code>0</code> (zero),
- the queried filter is configured to encode data;
- if the value is <code>FALSE</code>,
- i.e., equal to <code>0</code> (zero),
- the filter is not so configured.
- <p>
- If a filter is not encode-enabled, the corresponding
- <code>H5Pset_*</code> function will return an error if the
- filter is added to a dataset creation property list (which is
- required if the filter is to be used to encode that dataset).
- For example, if the <code>H5Z_FILTER_CONFIG_ENCODE_ENABLED</code>
- flag is not returned for the SZIP filter,
- <code>H5Z_FILTER_SZIP</code>, a call to <code>H5Pset_szip</code>
- will fail.
- <p>
- If a filter is not decode-enabled, the application will not be
- able to read an existing file encoded with that filter.
- <p>
- This function should be called, and the returned
- <code>filter_config_flags</code> analyzed, before calling
- any other function, such as <code>H5Pset_szip</code>,
- that might require a particular filter configuration.
-
-<dt><strong>Parameters:</strong>
- <dl>
- <dt><em>H5Z_filter_t</em> <code>filter</code>
- <dd>IN: Identifier of the filter to query.
- See the introduction to this section of the reference manual
- for a list of valid filter identifiers.
- <dt><em>unsigned int *</em><code>filter_config_flags</code>
- <dd>OUT: A bit field encoding the returned filter information
- </dl>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value on success,
- a negative value on failure.
-
-<!-- NEW PAGE -->
-<dt><strong>Fortran90 Interface:</strong>
- <dd>
- <pre>
-SUBROUTINE h5zget_filter_info_f(filter, config_flags, hdferr)
-
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: filter ! Filter, may be one of the
- ! following:
- ! H5Z_FILTER_DEFLATE_F
- ! H5Z_FILTER_SHUFFLE_F
- ! H5Z_FILTER_FLETCHER32_F
- ! H5Z_FILTER_SZIP_F
- INTEGER, INTENT(OUT) :: config_flags ! Bit field indicating whether
- ! a filter's encoder and/or
- ! decoder are available
- INTEGER, INTENT(OUT) :: hdferr ! Error code
-
-END SUBROUTINE h5zfilter_avail_f
- </pre>
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Zregister" -->
-<hr>
-<dl>
-<dt><strong>Name:</strong> <a name="Compression-Register">H5Zregister</a>
-<dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Zregister</code>(<em>const H5Z_class_t</em> <code>filter_class</code>)
- )
-<dt><strong>Purpose:</strong>
- <dd>Registers new filter.
-<dt><strong>Description:</strong>
- <dd><code>H5Zregister</code> registers a new filter with the
- HDF5 library.
- <p>
- Making a new filter available to an application is a two-step
- process. The first step is to write
- the three filter callback functions described below:
- <code>can_apply_func</code>, <code>set_local_func</code>, and
- <code>filter_func</code>.
- This call to <code>H5Zregister</code>,
- <span class="termEmphasis">registering</span> the filter with the
- library, is the second step.
- The <code>can_apply_func</code> and <code>set_local_func</code>
- fields can be set to <code>NULL</code>
- if they are not required for the filter being registered.
- <p>
- <code>H5Zregister</code> accepts a single parameter,
- the <code>filter_class</code> data structure,
- which is defined as follows:
- <pre>
- &nbsp; typedef struct H5Z_class_t {
- &nbsp; H5Z_filter_t filter_id;
- &nbsp; const char *comment;
- &nbsp; H5Z_can_apply_func_t can_apply_func;
- &nbsp; H5Z_set_local_func_t set_local_func;
- &nbsp; H5Z_func_t filter_func;
- &nbsp; } H5Z_class_t;
- </pre>
-
- <p>
- <code>filter_id</code> is the identifier for the new filter.
- This is a user-defined value between
- <code>H5Z_FILTER_RESERVED</code> and <code>H5Z_FILTER_MAX</code>,
- both of which are defined in the HDF5 source file
- <code>H5Zpublic.h</code>.
- <p>
- <code>comment</code> is used for debugging,
- may contain a descriptive name for the filter,
- and may be the null pointer.
- <p>
- <code>can_apply_func</code>, described in detail below,
- is a user-defined callback function which determines whether
- the combination of the dataset creation property list values,
- the datatype, and the dataspace represent a valid combination
- to apply this filter to.
- <p>
- <code>set_local_func</code>, described in detail below,
- is a user-defined callback function which sets any parameters that
- are specific to this dataset, based on the combination of the
- dataset creation property list values, the datatype, and the
- dataspace.
- <p>
- <code>filter_func</code>, described in detail below,
- is a user-defined callback function which performs the action
- of the filter.
- <p>
- The statistics associated with a filter are not reset
- by this function; they accumulate over the life of the library.
-
- <p>
- <strong>The callback functions</strong>
- <br>
- Before <code>H5Zregister</code> can link a filter into an
- application, three callback functions must be defined
- as described in the HDF5 Library header file <code>H5Zpublic.h</code>.
-
- <p>
- <u>The <i>can apply</i> callback function</u> is defined as follows:<br>
- <dir>
- <em>typedef herr_t</em> (*<code>H5Z_can_apply_func_t</code>)
- (<em>hid_t</em> <code>dcpl_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>)
- </dir>
- <p>
- Before a dataset is created, the <i>can apply</i> callbacks for
- any filters used in the dataset creation property list are called
- with the dataset's dataset creation property list, <code>dcpl_id</code>,
- the dataset's datatype, <code>type_id</code>, and
- a dataspace describing a chunk, <code>space_id</code>,
- (for chunked dataset storage).
- <p>
- This callback must determine whether the combination of the
- dataset creation property list settings, the datatype, and the
- dataspace represent a valid combination to which to apply this filter.
- For example, an invalid combination may involve
- the filter not operating correctly on certain datatypes,
- on certain datatype sizes, or on certain sizes of the chunk dataspace.
- <p>
- This callback can be the <code>NULL</code> pointer, in which case
- the library will assume that the filter can be applied to a dataset with
- any combination of dataset creation property list values, datatypes,
- and dataspaces.
- <p>
- The <i>can apply</i> callback function must return
- a positive value for a valid combination,
- zero for an invalid combination, and
- a negative value for an error.
-
- <p>
- <u>The <i>set local</i> callback function</u> is defined as follows:<br>
- <dir>
- <em>typedef herr_t</em> (*<code>H5Z_set_local_func_t</code>)
- (<em>hid_t</em> <code>dcpl_id</code>,
- <em>hid_t</em> <code>type_id</code>,
- <em>hid_t</em> <code>space_id</code>)
- </dir>
- <p>
- After the <i>can apply</i> callbacks are checked for a new dataset,
- the <i>set local</i> callback functions for any filters used in the
- dataset creation property list are called.
- These callbacks receive
- <code>dcpl_id</code>, the dataset's private copy of the dataset
- creation property list passed in to <code>H5Dcreate</code>
- (i.e. not the actual property list passed in to <code>H5Dcreate</code>);
- <code>type_id</code>, the datatype identifier passed in to
- <code>H5Dcreate</code>,
- which is not copied and should not be modified; and
- <code>space_id</code>, a dataspace describing the chunk
- (for chunked dataset storage), which should also not be modified.
- <p>
- The <i>set local</i> callback must set any filter parameters that are
- specific to this dataset, based on the combination of the
- dataset creation property list values, the datatype, and the dataspace.
- For example, some filters perform different actions based on
- different datatypes, datatype sizes, numbers of dimensions,
- or dataspace sizes.
- <p>
- The <i>set local</i> callback may be the <code>NULL</code> pointer,
- in which case, the library will assume that there are
- no dataset-specific settings for this filter.
- <p>
- The <i>set local</i> callback function must return
- a non-negative value on success and
- a negative value for an error.
-
- <p>
- <u>The <i>filter operation</i> callback function</u>,
- defining the filter's operation on the data, is defined as follows:
- <dir>
- <em>typedef size_t</em> (*<code>H5Z_func_t</code>)
- (<em>unsigned int</em> <code>flags</code>,
- <em>size_t</em> <code>cd_nelmts</code>,
- <em>const unsigned int</em> <code>cd_values[]</code>,
- <em>size_t</em> <code>nbytes</code>,
- <em>size_t *</em><code>buf_size</code>,
- <em>void **</em><code>buf</code>)
- </dir>
-
- <p>
- The parameters <code>flags</code>, <code>cd_nelmts</code>,
- and <code>cd_values</code> are the same as for the function
- <a href="RM_H5P.html#Property-SetFilter"><code>H5Pset_filter</code></a>.
- The one exception is that an additional flag,
- <code>H5Z_FLAG_REVERSE</code>, is set when
- the filter is called as part of the input pipeline.
- <p>
- The parameter <code>*buf</code> points to the input buffer
- which has a size of <code>*buf_size</code> bytes,
- <code>nbytes</code> of which are valid data.
- <p>
- The filter should perform the transformation in place if
- possible. If the transformation cannot be done in place,
- then the filter should allocate a new buffer with
- <code>malloc()</code> and assign it to <code>*buf</code>,
- assigning the allocated size of that buffer to
- <code>*buf_size</code>.
- The old buffer should be freed by calling <code>free()</code>.
- <p>
- If successful, the <i>filter operation</i> callback function
- returns the number of valid bytes of data contained in <code>*buf</code>.
- In the case of failure, the return value is <code>0</code> (zero)
- and all pointer arguments are left unchanged.
-<dt><strong>Note:</strong>
- <dd>The <code>H5Zregister</code> interface is substantially revised
- from the HDF5 Release 1.4.x series.
- The <code>H5Z_class_t</code> struct and
- the <i>set local</i> and <i>can apply</i> callback functions
- first appeared in HDF5 Release 1.6.
-<dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>const&nbsp;H5Z_class_t</em>&nbsp;<code>filter_class&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Struct containing filter-definition information.</td></tr>
- </table></ul>
-<dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
-<dt><strong>Fortran90 Interface:</strong>
- <dd>None.
-<!--
- <pre>
-
- </pre>
--->
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "H5Zunregister" -->
-<hr>
-<dl>
- <dt><strong>Name:</strong> <a name="Compression-Unregister">H5Zunregister</a>
- <dt><strong>Signature:</strong>
- <dd><em>herr_t</em> <code>H5Zunregister</code>(<em>H5Z_filter_t</em> <code>filter</code>)
- <dt><strong>Purpose:</strong>
- <dd>Unregisters a filter.
- <dt><strong>Description:</strong>
- <dd><code>H5Zunregister</code> unregisters the filter
- specified in <code>filter</code>.  
- <p>
- After a call to <code>H5Zunregister</code>, the filter
- specified in <code>filter</code> will no longer be
- available to the application.
- <dt><strong>Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>H5Z_filter_t</em>&nbsp;<code>filter&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">IN: Identifier of the filter to be unregistered.
- See the introduction to this section of the reference manual
- for a list of identifiers for standard filters
- distributed with the HDF5 Library.</td></tr>
- </table></ul>
- <dt><strong>Returns:</strong>
- <dd>Returns a non-negative value if successful;
- otherwise returns a negative value.
- <dt><strong>Fortran90 Interface:</strong> h5zunregister_f
- <dd>
- <pre>
-SUBROUTINE h5zunregister_f(filter, hdferr)
- IMPLICIT NONE
- INTEGER, INTENT(IN) :: filter ! Filter; one of the possible values:
- ! H5Z_FILTER_DEFLATE_F
- ! H5Z_FILTER_SHUFFLE_F
- ! H5Z_FILTER_FLETCHER32_F
- ! H5Z_FILTER_SZIP_F
- INTEGER, INTENT(OUT) :: hdferr ! Error code
- ! 0 on success, and -1 on failure
-END SUBROUTINE h5zunregister_f
- </pre>
-
- <!--<dt><strong>Non-C API(s):</strong>
- <dd>
-
- <img src="Graphics/Java.gif">
- <img src="Graphics/C++.gif">
- -->
-</dl>
-
-<!-- HEADER RIGHT " " -->
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 2 September 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/References.html b/doc/html/References.html
deleted file mode 100644
index 766b92c..0000000
--- a/doc/html/References.html
+++ /dev/null
@@ -1,651 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<title>Reference (H5R) and Identifier Interfaces (H5I)</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_UG.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/UGelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><h1>The Reference Interface (H5R) and <br> the Identifier Interface (H5I)</h1>
-
-<h2>1. Introduction</h2>
-
-This document discusses the kinds of references implemented
-(and planned) in HDF5 and the functions implemented (and planned)
-to support them.
-
-
-<h2>2. References</h2>
-
-This section contains an overview of the kinds of references
-implemented, or planned for implementation, in HDF5.
-
-<p>
-
-<dl>
- <dt>Object reference
- <dd>Reference to an entire object in the current HDF5 file.
- <p>
- An object reference points to an entire object in the
- current HDF5 file by storing the relative file address
- (OID) of the object header for the object pointed to.
- The relative file address of an object header is
- constant for the life of the object.
- An object reference is of a fixed size in the file.
- <p>
- <dt>Dataset region reference
- <dd>Reference to a specific dataset region.
- <p>
- A dataset region reference points to a region of a
- dataset in the current HDF5 file by storing the OID
- of the dataset and the global heap offset of the
- region referenced. The region referenced is located
- by retrieving the coordinates of the areas in the
- region from the global heap. A dataset region
- reference is of a variable size in the file.
-</dl>
-
-
-<b>Note:</b> All references are treated as soft links for the
-purposes of reference counting. The library does not keep track of
-reference links and they may dangle if the object they refer to
-is deleted, moved, or not yet available.
-
-
-<h2>3. Reference Types</h2>
-
-Valid HDF5 reference types for use in the H5R functions
-are as follows:
-
-<center>
-<table>
-<tr><th align=left>Reference Type</th><th align=left>Value&nbsp;&nbsp;</th><th align=left>Description</th></tr>
-<!-- NOT USER-LEVEL INFORMATION; DELETED FROM HDF5 USER'S GUIDE
-<tr><td><code>H5R_BADTYPE</code></td>
- <td align=right><code>-1&nbsp;&nbsp;</code></td>
- <td>Invalid reference type</td></tr>
--->
-<tr><td><code>H5R_OBJECT</code></td>
- <td align=right><code>0&nbsp;&nbsp;</code></td>
- <td>Object reference</td></tr>
-<tr><td><code>H5R_DATASET_REGION</code></td>
- <td align=right><code>1&nbsp;&nbsp;</code></td>
- <td>Dataset region reference</td></tr>
-</table>
-</center>
-
-
-<h2>4. Functions</h2>
-
-Five functions, four in the H5R interface and one in the
-H5I interface, have been implemented to support references.
-The H5I function is also useful outside the context of references.
-<p>
-<dl>
- <dt><em>herr_t</em> <code>H5Rcreate(</code><em>void *</em><code>reference,</code>
- <em>hid_t</em> <code>loc_id,</code>
- <em>const char *</em><code>name,</code>
- <em>H5R_type_t</em> <code>type,</code>
- <em>hid_t</em> <code>space_id)</code>
- <dd><code>H5Rcreate</code> creates an object which is a
- particular type of reference (specified with the
- <code>type</code> parameter) to some file object and/or
- location specified with the <code>space_id</code> parameter.
- For dataset region references, the selection specified
- in the dataspace is the portion of the dataset which
- will be referred to.
- <p>
-
- <dt><em>hid_t</em> <code>H5Rdereference(</code><em>hid_t</em> <code>dset,</code>
- <em>H5R_type_t</em> <code>rtype,</code>
- <em>void *</em><code>reference)</code>
- <dd><code>H5Rdereference</code> opens the object referenced
- and returns an identifier for that object.
- The parameter <code>reference</code> specifies a reference of
- type <code>rtype</code> that is stored in the dataset
- <code>dset</code>.
- <p>
-
- <dt><em>int</em> <code>H5Rget_object_type(</code><em>hid_t</em> <code>obj_id,</code>
- <em>void *</em><code>reference)</code>
- <dd><code>H5Rget_object_type</code> retrieves the type of object
- that an object reference points to.
- The parameter <code>obj_id</code> specifies the dataset
- containing the reference object or the location identifier
- of the object that the dataset is located within.
- The parameter <code>reference</code> specifies the
- reference being queried.
- <p>
-
- <dt><em>H5S_t</em> <code>H5Rget_region(</code><em>H5D_t</em> <code>dataset,</code>
- <em>H5R_type_t</em> <code>type,</code>
- <em>void *</em><code>reference)</code>
- <dd><code>H5Rget_region</code> creates a copy of dataspace of
- the dataset that is pointed to and defines a selection in
- the copy which is the location (or region) pointed to.
- The parameter <code>ref</code> specifies a reference of
- type <code>rtype</code> that is stored in the dataset
- <code>dset</code>.
- <p>
-
- <dt><em>H5I_type_t</em> <code>H5Iget_type(</code><em>hid_t</em> <code>id)</code>
- <dd>Returns the type of object referred to by the
- identifier <code>id</code>. Valid return values appear
- in the following list:
- <center>
- <table>
- <tr valign=bottom><td><code>H5I_FILE</code></td>
- <td>File objects</td></tr>
- <tr valign=bottom><td><code>H5I_GROUP</code></td>
- <td>Group objects</td></tr>
- <tr valign=bottom><td><code>H5I_DATATYPE</code></td>
- <td>Datatype objects</td></tr>
- <tr valign=bottom><td><code>H5I_DATASPACE</code></td>
- <td>Dataspace objects</td></tr>
- <tr valign=bottom><td><code>H5I_DATASET</code></td>
- <td>Dataset objects</td></tr>
- <tr valign=bottom><td><code>H5I_ATTR</code></td>
- <td>Attribute objects</td></tr>
- </table>
- </center>
- <p>
- This function was inspired by the need of users to figure
- out which type of object closing function
- (<code>H5Dclose</code>, <code>H5Gclose</code>, etc.)
- to call after a call to <code>H5Rdereference</code>,
- but it is also of general use.
- <p>
-</dl>
-
-
-
-<h2>5. Examples</h2>
-
-<b>Object Reference Writing Example</b>
-<br>
-Create a dataset which has links to other datasets as part
-of its raw data and write the dataset to the file.
-<p>
-
-<pre>
-{
- hid_t file1;
- hid_t dataset1;
- hid_t datatype, dataspace;
- char buf[128];
- hobj_ref_t link;
- hobj_ref_t data[10][10];
- int rank;
- size_t dimsf[2];
- int i, j;
-
- /* Open the file */
- file1=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);
-
- /* Describe the size of the array and create the data space */
- rank=2;
- dimsf[0] = 10;
- dimsf[1] = 10;
- dataspace = H5Screate_simple(rank, dimsf, NULL);
-
- /* Define datatype */
- datatype = H5Tcopy(H5T_STD_REF_OBJ);
-
- /* Create a dataset */
- dataset1=H5Dcreate(file1,"Dataset One",datatype,dataspace,H5P_DEFAULT);
-
- /* Construct array of OIDs for other datasets in the file */
- /* somewhat hokey and artificial, but demonstrates the point */
- for(i=0; i<10; i++)
- for(j=0; j<10; j++)
- {
- sprintf(buf,"/Group/Linked Set %d-%d",i,j);
- if(H5Rcreate(&link,file1,buf,H5R_OBJECT,-1)>0)
- data[i][j]=link;
- } /* end for */
-
- /* Write the data to the dataset using default transfer properties. */
- H5Dwrite(dataset, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
-
- /* Close everything */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Dclose(dataset1);
- H5Fclose(file1);
-}
-</pre>
-
-
-<b>Object Reference Reading Example</b>
-<br>
-Open a dataset which has links to other datasets as part of
-its raw data and read in those links.
-<p>
-
-<pre>
-{
- hid_t file1;
- hid_t dataset1, tmp_dset;
- href_t data[10][10];
- int i, j;
-
- /* Open the file */
- file1=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);
-
- /* Open the dataset */
- dataset1=H5Dopen(file1,"Dataset One",H5P_DEFAULT);
-
- /*
- * Read the data to the dataset using default transfer properties.
- * (we are assuming the dataset is the same and not querying the
- * dimensions, etc.)
- */
- H5Dread(dataset, H5T_STD_REF_OBJ, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
-
- /* Analyze array of OIDs of linked datasets in the file */
- /* somewhat hokey and artificial, but demonstrates the point */
- for(i=0; i<10; i++)
- for(j=0; j<10; i++)
- {
- if((tmp_dset=H5Rdereference(dataset, H5T_STD_REF_OBJ, data[i][j]))>0)
- {
- <perform operations on linked dataset>
- } /* end if */
- H5Dclose(tmp_dset);
- } /* end for */
-
-
- /* Close everything */
- H5Dclose(dataset1);
- H5Fclose(file1);
-}
-</pre>
-
-
-<b>Dataset Region Reference Writing Example</b>
-<br>
-Create a dataset which has links to other dataset regions
-(single elements in this case) as part of its raw data and
-write the dataset to the file.
-<p>
-
-<pre>
-{
- hid_t file1;
- hid_t dataset1, dataset2;
- hid_t datatype, dataspace1, dataspace2;
- char buf[128];
- href_t link;
- href_t data[10][10]; /* HDF5 reference type */
- int rank;
- size_t dimsf[2];
- hsize_t start[3],count[3];
- int i, j;
-
- /* Open the file */
- file1=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);
-
- /* Describe the size of the array and create the data space */
- rank=2;
- dimsf[0] = 10;
- dimsf[1] = 10;
- dataspace1 = H5Screate_simple(rank, dimsf, NULL);
-
- /* Define Dataset Region Reference datatype */
- datatype = H5Tcopy(H5T_STD_REF_DATAREG);
-
- /* Create a dataset */
- dataset1=H5Dcreate(file1,"Dataset One",datatype,dataspace1,H5P_DEFAULT);
-
- /* Construct array of OIDs for other datasets in the file */
- /* (somewhat artificial, but demonstrates the point) */
- for(i=0; i<10; i++)
- for(j=0; j<10; i++)
- {
- sprintf(buf,"/Group/Linked Set %d-%d",i,j);
-
- /* Get the dataspace for the object to point to */
- dataset2=H5Dopen(file1,buf,H5P_DEFAULT);
- dataspace2=H5Dget_space(dataspace2);
-
- /* Select the region to point to */
- /* (could be different region for each pointer) */
- start[0]=5; start[1]=4; start[2]=3;
- count[0]=2; count[1]=4; count[2]=1;
- H5Sselect_hyperslab(dataspace2,H5S_SELECT_SET,start,NULL,count,NULL);
-
- if(H5Rcreate(&link,file1,buf,H5R_REF_DATAREG,dataspace2)>0)
- /* Store the reference */
- data[i][j]=link;
-
- H5Sclose(dataspace2);
- H5Dclose(dataspace2);
- } /* end for */
-
- /* Write the data to the dataset using default transfer properties. */
- H5Dwrite(dataset, H5T_STD_REF_DATAREG, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
-
- /* Close everything */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Dclose(dataset1);
- H5Fclose(file1);
-}
-</pre>
-
-
-<b>Dataset Region Reference Reading Example</b>
-<br>
-Open a dataset which has links to other datasets regions
-(single elements in this case) as part of its raw data and
-read in those links.
-<p>
-
-<pre>
-{
- hid_t file1;
- hid_t dataset1, tmp_dset;
- hid_t dataspace;
- href_t data[10][10]; /* HDF5 reference type */
- int i, j;
-
- /* Open the file */
- file1=H5Fopen("example.h5", H5F_ACC_RDWR, H5P_DEFAULT);
-
- /* Open the dataset */
- dataset1=H5Dopen(file1,"Dataset One",H5P_DEFAULT);
-
- /*
- * Read the data to the dataset using default transfer properties.
- * (we are assuming the dataset is the same and not querying the
- * dimensions, etc.)
- */
- H5Dread(dataset, H5T_STD_REF_DATAREG, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);
-
- /* Analyze array of OIDs of linked datasets in the file */
- /* (somewhat artificial, but demonstrates the point) */
- for(i=0; i<10; i++)
- for(j=0; j<10; i++)
- {
- if((tmp_dset=H5Rdereference(dataset, H5D_STD_REF_DATAREG,data[i][j]))>0)
- {
- /* Get the dataspace with the pointed to region selected */
- dataspace=H5Rget_space(data[i][j]);
-
- <perform operation on linked dataset region>
-
- H5Sclose(dataspace);
- } /* end if */
- H5Dclose(tmp_dset);
- } /* end for */
-
-
- /* Close everything */
- H5Dclose(dataset1);
- H5Fclose(file1);
-}
-</pre>
-<!--
-
-<h1>Material to Be Omitted!!!</h1>
-
-Additional material above will also need to be deleted or
-commented out.
-<p>
-
-<h2>"Kinds of Reference" Information</h2>
-
-<dl>
- <dt>Dataset Offset Reference
- <dd>Reference to a specific byte sequence in a dataset (3)
- <dt>Disk Offset Reference
- <dd>Reference to a specific byte sequence in a file (3)
- <dt>External Object Reference
- <dd>Reference to an entire object in another HDF5 file (3)
- <dt>External Dataset Region Reference
- <dd>Reference an a specific dataset region in another HDF5 file (3)
- <dt>External Dataset Offset Reference
- <dd>Reference to a specific byte sequence in a dataset in
- another HDF5 file (3)
- <dt>External Disk Offset Reference
- <dd>Reference to a specific byte sequence in another HDF5 file (3)
- <dt>Generic Reference
- <dd>A reference which may be any of the types defined above. (3)
-</dl>
-
-Notes:
-<ul>
- <li>1 - Planned for in final release.
- <li>2 - Most useful reference types to tackle next
- <li>3 - Optional reference types.
-</ul>
-
-<h2>Comments</h2>
-<pre>
- Reference types are atomic types and may be included as fields in compound
- datatypes.
-
- There are (at least) three levels of reference strength:
- Weak - We allow the user to store any type of reference in an array
- of references. (u.e., the array of references in the example above
- could be a mix of Object, Dataset Region and Internal references)
- Medium - We force the user to stick with a particular type of
- reference within a dataset, but the datasets pointed to (with
- Object and Dataset Region references) may be of any datatype
- or dataspace.
- Strong - We force the user to stick with a particular type of
- reference and Object and Dataset Region references must point to
- datasets with the same datatype.
- Extra Strong - We force the user to stick with a particular type of
- reference and Object and Dataset Region references must point to
- datasets with the same datatype <i>and</i> dataspace.
-
- The library is currently implemented with "medium" strength references.
-</pre>
-
-
-<h2>Reference Type</h2>
-
-<center>
-<table>
-<tr><td><code>H5R_MAXTYPE</code></td>
- <td align=right><code>3&nbsp;&nbsp;</code></td>
- <td>Highest type in group (invalid as true type)</td></tr>
-</table>
-</center>
-
-
-<h2>Information Regarding Specific Kinds of References</h2>
-
-<dl>
-<dt>Dataset Offset Reference
- <dd>Points to a sequence of bytes within a dataset in
- the current HDF5 file by storing the OID of the dataset and the byte
- length and offset of the sequence within the dataset. The offset is
- the logical byte offset within the dataset, meaning that the data is
- de-compressed before returning the sequence of bytes requested. No
- interpretation of the data at that location is provided. However,
- if the dataset is extendible and the size of the dimensions are changed,
- the element(s) that the sequence is located within may vary. Fixed size
- in file.
-
-<dt>Disk Offset Reference
- <dd>Points to a sequence of bytes in the current
- HDF5 file by storing the byte length and offset of the sequence within
- the file, relative to the super block (as are all the other high-level
- addresses used in the file). The offset is the absolute byte offset
- within the file, no interpretation of the data at that location is
- provided. Fixed size in file.
-
-<dt>External Object Reference
- <dd>Points to an entire object in another HDF5 file by
- storing a global heap offset which points to the URL of the external
- file and the OID of the object pointed to. Variable size in file.
-
-<dt>External Dataset Region Reference
- <dd>Points to a region of a dataset in
- another HDF5 file by storing a global heap offset which points to the
- URL of the external file, OID of the dataset and the coordinates of the
- region. Variable size in file.
-
-<dt>External Dataset Offset Reference
- <dd>Points to a sequence of bytes within a
- dataset in another HDF5 file by storing a global heap offset which
- points to the URL of the external file, the OID of the dataset and the
- byte length and offset of the sequence within the dataset. The offset
- is the logical byte offset within the dataset, meaning that the data is
- de-compressed before returning the sequence of bytes requested.
- However, if the dataset is not stored contiguously and the size of the
- dimensions are changed, the element(s) that the sequence is located
- within may vary. Variable size in file.
-
-<dt>External Disk Offset Reference
- <dd>Points to a sequence of bytes in another
- HDF5 file by storing a global heap reference which points to the URL
- of the external file and the byte length and offset of the sequence
- within the file. The offset is the absolute byte offset within the
- file, no interpretation of the data at that location is provided.
- Variable size in file.
-
-<dt>Generic Reference
- <dd>A reference which may contain any of the other
- references defined above. (Mostly useful for implementing "weak"
- strength pointers within the medium strength model we are using)
- Variable size in file.
-
-</dl>
-
-<h2>Implementation Details</h2>
-
-<dl>
-<dt>File Storage
- <dd>In order to efficiently index an array, each element must be the
- same size when stored in the dataset on disk. Fixed-sized references
- will be stored directly in the dataset array on disk; variable-sized
- references will have a fixed-size head offset stored in the array on
- disk with a file heap used to store the actual variable-sized
- information stored in the heap.
-
-<dt>Memory Storage
- <dd>Each <code>href_t</code> object in memory is a struct containing
- a pointer type and union of information required for each
- pointer type.
- Information in this structure is not designed for users to view.
- Non-C APIs may have to mangle this structure in some way, in order
- to provide users with access to references in a language-appropriate
- way.
-</dl>
-
--->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_UG.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
- <a href="index.html">HDF5 documents and links</a>&nbsp;<br>
- <a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
- <a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide for Release 1.6</a>&nbsp;<br>
- <!--
- <a href="Glossary.html">Glossary</a><br>
- -->
-</td>
-<td valign=top align=right>
- And in this document, the
- <a href="H5.user.html"><strong>HDF5 User's Guide from Release 1.4.5:</strong></a>&nbsp;&nbsp;&nbsp;&nbsp;
- <br>
- <a href="Files.html">Files</a>&nbsp;&nbsp;
- <a href="Datasets.html">Datasets</a>&nbsp;&nbsp;
- <a href="Datatypes.html">Datatypes</a>&nbsp;&nbsp;
- <a href="Dataspaces.html">Dataspaces</a>&nbsp;&nbsp;
- <a href="Groups.html">Groups</a>&nbsp;&nbsp;
- <br>
- <a href="References.html">References</a>&nbsp;&nbsp;
- <a href="Attributes.html">Attributes</a>&nbsp;&nbsp;
- <a href="Properties.html">Property Lists</a>&nbsp;&nbsp;
- <a href="Errors.html">Error Handling</a>&nbsp;&nbsp;
- <br>
- <a href="Filters.html">Filters</a>&nbsp;&nbsp;
- <a href="Caching.html">Caching</a>&nbsp;&nbsp;
- <a href="Chunking.html">Chunking</a>&nbsp;&nbsp;
- <a href="MountingFiles.html">Mounting Files</a>&nbsp;&nbsp;
- <br>
- <a href="Performance.html">Performance</a>&nbsp;&nbsp;
- <a href="Debugging.html">Debugging</a>&nbsp;&nbsp;
- <a href="Environment.html">Environment</a>&nbsp;&nbsp;
- <a href="ddl.html">DDL</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.4.5, February 2003
-</address><!-- #EndLibraryItem -->
-
-Last modified: 2 August 2004
-
-</body>
-</html>
diff --git a/doc/html/TechNotes.html b/doc/html/TechNotes.html
deleted file mode 100644
index 28825ef..0000000
--- a/doc/html/TechNotes.html
+++ /dev/null
@@ -1,319 +0,0 @@
-<html>
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<head><title>
-HDF5 Technical Notes
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_Gen.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/GenElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_TechN.lbi" --><hr>
-<center>
-<table cellspacing=0 cellpadding=0 border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-
-<td valign=top align=right>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
-<a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
-
-<!--
-And in this document,
-HDF5 Technical Notes&nbsp;&nbsp;
-<br>
-<a href="TechNotes/FreeLists.html">Memory Management and Free Lists</a>&nbsp;&nbsp;
--->
-
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><br>
-<br>
-
-<center>
-<h1>HDF5 Technical Notes</h1>
-<h3>Technical Notes for HDF5 Library and Driver Developers</h3>
-</center>
-
-
-<center>
-<table border=0 width=85%>
-
-<tr><td valign=top colspan=3>
- This informal volume of technical notes is of interest to
- those who develop and maintain the HDF5 library and
- related, closely-coupled drivers.
- These notes are not generally of interest to applications developers
- and certainly not of interest to users.
- (Some of these documents may be somewhat out of date as they were
- working papers for the design process.)
- <br>
- <br>
-</td></tr>
-
-<tr><td valign=top width=40%><a href="TechNotes/MemoryMgmt.html">
- Memory Management</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of memory management issues in HDF5
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/FreeLists.html">
- Memory Management and</a>
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="TechNotes/FreeLists.html">Free Lists</a>
- </td><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td valign=top>
- Notes regarding the implementation of free lists and memory management
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/HeapMgmt.html">Heap Management</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of the H5H heap management fuctions
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/RawDStorage.html">Raw Data Storage</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of the storage of raw HDF5 data
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/VFL.html">Virtual File Layer</a>
- </td><td>&nbsp;</td><td valign=top>
- A description of the HDF5 virtual file layer (VFL),
- a public API for the implementation of custom I/O drivers
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/VFLfunc.html">List of VFL Functions</a>
- </td><td>&nbsp;</td><td valign=top>
- A list of the VFL functions, <code>H5FD*</code>
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/IOPipe.html">I/O Pipeline</a>
- </td><td>&nbsp;</td><td valign=top>
- A description of the raw data I/O pipeline
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/BigDataSmMach.html">
- Large Datasets on Small</a>
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="TechNotes/BigDataSmMach.html">Machines</a>
- </td><td>&nbsp;</td><td valign=top>
- A guide to accessing large datasets on small computers
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/MoveDStruct.html">
- Relocating a File Data</a>
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="TechNotes/MoveDStruct.html">Structure</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of the issues involved in moving file data structures once
- they have been cached in memory
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/ExternalFiles.html">
- Working with External Files</a>
- </td><td>&nbsp;</td><td valign=top>
- A guide to the use of multiple files with HDF5
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/ObjectHeader.html">Object Headers</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of the H5O object header functions
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/SymbolTables.html">
- Symbol Table Caching Issues</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of issues involving caching of object header messages in
- symbol table entries
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/H4-H5Compat.html">
- HDF4/HDF5 Compatibility</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of compatibility issues between HDF4 and HDF5
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/ChunkingStudy.html">
- Testing the Chunked Layout</a>
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="TechNotes/ChunkingStudy.html">of HDF5</a>
- </td><td>&nbsp;</td><td valign=top>
- A white paper discussing the motivation to implement raw data chunking
- in the HDF5 library
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/LibMaint.html">Library Maintenance</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of HDF5 library maintenance issues
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/CodeReview.html">Code Review</a>
- </td><td>&nbsp;</td><td valign=top>
- Code Review 1 and 2
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/Version.html">
- Release Version Numbers</a>
- </td><td>&nbsp;</td><td valign=top>
- A description of HDF5 release version numbers
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/NamingScheme.html">Naming Schemes</a>
- </td><td>&nbsp;</td><td valign=top>
- A discussion of naming schemes for HDF5 library modules, functions,
- datatypes, etc.
-</td></tr>
-
-<tr><td valign=top>
-<a href="TechNotes/ThreadSafeLibrary.html">Thread Safe HDF5 Library</a>
- <br>&nbsp;&nbsp;&nbsp;&nbsp;
- <a href="TechNotes/ThreadSafeLibrary.html">Implementation</a>
- </td><td>&nbsp;</td><td valign=top>
- A report on the implementation of a thread safe HDF5 library.
-</td></tr>
-
-<tr><td valign=top>
-<a href="TechNotes/openmp-hdf5.html">Using HDF5 with OpenMP</a>
- </td><td>&nbsp;</td><td valign=top>
- A short report on using HDF5 with OpenMP.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/SWControls.html">HDF5 Software Controls</a>
- </td><td>&nbsp;</td><td valign=top>
- Descriptions of the HDF5 knobs and controls, such as the
- environment variables and settings that control the functionality
- of the HDF5 libraries and tools.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/Daily_Test_Explained.htm">Daily Test Explained</a>
- </td><td>&nbsp;</td><td valign=top>
- An explanation of the Daily Testing for HDF software conducted.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/TestReview.html">Test Review</a>
- </td><td>&nbsp;</td><td valign=top>
- Results of reviewing tests for API functions.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/Basic_perform.html">Basic Performance Tools</a>
- </td><td>&nbsp;</td><td valign=top>
- A description of the three basic performance tools (chunk, iopipe, overhead).
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/VLTypes.html">Variable-Length Datatype Info</a>
- </td><td>&nbsp;</td><td valign=top>
- Description of various aspects of using variable-length datatypes in HDF5.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/ReservedFileSpace.html">Reserved File Address Space</a>
- </td><td>&nbsp;</td><td valign=top>
- Description of HDF5's internal system for ensuring that files stay within their address space.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/DataTransformReport.htm">Data Transform Report</a>
- </td><td>&nbsp;</td><td valign=top>
- Report of the Data Transform implementation.
-</td></tr>
-
-<tr><td valign=top><a href="TechNotes/Automake.html">Automake Use Cases</a>
- </td><td>&nbsp;</td><td valign=top>
- Simple explanations of how to make some common changes to HDF5's Automake-generated Makefiles.am.
-</td></tr>
-
-</table>
-</center>
-
-<br>
-<br>
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_TechN.lbi" --><hr>
-<center>
-<table cellspacing=0 cellpadding=0 border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-
-<td valign=top align=right>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User's Guide</a>&nbsp;<br>
-<a href="ADGuide.html">HDF5 Application Developer's Guide</a>&nbsp;<br>
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;<br>
-
-<!--
-And in this document,
-HDF5 Technical Notes&nbsp;&nbsp;
-<br>
-<a href="TechNotes/FreeLists.html">Memory Management and Free Lists</a>&nbsp;&nbsp;
--->
-
-</td></tr>
-</table>
-</center>
-<hr>
-<!-- #EndLibraryItem --><address>
-<table width=100% border=0>
-<tr><td align=left valign=top>
-
-<!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem -->
-
-Last modified: 15 December 2004
-
-</td>
-<td align=right valign=top>
-<a href="Copyright.html">Copyright</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-
-
-</body>
-</html>
diff --git a/doc/html/TechNotes/Automake.html b/doc/html/TechNotes/Automake.html
deleted file mode 100644
index c6dfc41..0000000
--- a/doc/html/TechNotes/Automake.html
+++ /dev/null
@@ -1,223 +0,0 @@
-<html>
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=utf-8">
-<title>An Automake Primer for HDF5</title>
-</head>
-
-<h2>An Automake Primer for HDF5</h2>
-<h4>James Laird - May 2005</h4><br>
-
-<p><h2><u>How to:</u><h2></p>
-
-<p><h3>Change a Makefile</h3></p>
-
-<p><h3>Add a source file to an existing program or library</h3></p>
-
-<p><h3>Add a simple test</h3></p>
-
-<p><h3>Add a test with multiple sources</h3></p>
-
-<p><h3>Add a new directory</h3></p>
-
-<p><h3>Add a program that is only compiled in parallel</h3></p>
-
-<p><h3>Change a program's name when it is compiled in parallel</h3></p>
-
-<p><h3>Add a new library</h3></p>
-
-<p><h3>Change the library's API</h3></p>
-<br>
-
-<p><h4>Changing a Makefile</h4></p>
-
-<p>Suppose you need to make a minor change to the Makefile in the test directory
-(<code>hdf5/test/Makefile</code>). You have checked out hdf5 from the CVS repository into
-<code>~/scratch/hdf5</code>. You want to build the library in a directory named
-<code>~/scratch/build</code>.<br>
-First, edit the Makefile.am in the source tree. You must make any changes in the Makefile.am,
-not the Makefile, since the Makefile is automatically generated.</p>
-
-<p><code>cd ~/scratch/hdf5/test<br>
-vi Makefile.am</code></p>
-
-<p>Now, go to the root of the source tree and run the reconfigure script, which updates the
-source tree. It will create a new Makefile.in in the test directory with your changes.</p>
-
-<p><code>cd ~/scratch/hdf5<br>
-./bin/reconfigure</code></p>
-
-<p>After running <code>bin/reconfigure</code>, you will want to test your change. Go to
-<code>~/scratch/build</code> and run <code>configure</code>.</p>
-
-<p><code>cd ~/scratch/build<br>
-
-../hdf5/configure<br>
-
-make check</code></p>
-
-<p>Configure generates Makefiles from the Makefiles.in in the source tree. The dependencies are:</p>
-
-<p><code>Makefile.am -&gt; (bin/reconfigure) -&gt; Makefile.in -&gt; (configure) -&gt; Makefile</code></p>
-
-<p>Reconfigure should also be used when any change is made to configure.in.</p>
-<br>
-
-<p><h4>Adding a source file to an existing program or library</h4></p>
-
-<p>Suppose you want to add the source file <code>h5testfoo.c</code> to the HDF5 test
-library in the test directory. You open up <code>test/Makefile.am</code> in your
-favorite text editor and scroll down until you see the line:</p>
-
-<p><code>libh5test_la_SOURCES=h5test.c testframe.c</code></p>
-
-<p>Just add <code>h5testfoo.c</code> to the list of sources. You're done!<br>
-Now run <code>bin/reconfigure</code> to create a new Makefile.in from the Makefile.am you just
-edited.</p>
-<br>
-
-<p><h4>Adding a simple test</h4></p>
-
-<p>Suppose you want to create a new test executable named <code>newtest</code> with one
-source file, <code>newtest.c</code>. You open up <code>test/Makefile.am</code> and find
-the line</p>
-
-<p><code>TEST_PROG=testhdf5 lheap ohdr ...</code></p>
-
-<p>Just add <code>newtest</code> to the list of programs. That's it!  Automake will by
-default guess that your program <code>newtest</code> has one source file named
-<code>newtest.c</code>.<br>
-Now run <code>bin/reconfigure</code> to update the Makefile.in.</p>
-<br>
-
-<p><h4>Adding a slightly more complicated test</h4></p>
-
-<p>Suppose you want to create a new test executable named <code>newertest</code> with
-several source files. You open up <code>test/Makefile.am</code> as before and find the line</p>
-
-<p><code>TEST_PROG=testhdf5 lheap ohdr ...</code></p>
-
-<p>Add <code>newertest</code> to the list of programs.<br>
-Now you need to tell Automake how to build newertest. Add a new line below
-<code>TEST_PROG</code>:</p>
-
-<p><code>newtest_SOURCES = source1.c source2.c source3.c</code></p>
-
-<p>You don't need to mention header files, as these will be automatically detected.<br>
-Now run <code>bin/reconfigure</code> to update the Makefile.in.</p>
-<br>
-
-<p><h4>Adding a directory</h4></p>
-
-<p>To add the directory for a new tool, <code>h5merge</code>, go to the Makefile.am
-in the tools directory (the parent directory of the directory you want to add).
-Find the line that reads</p>
-
-<p><code>SUBDIRS=lib h5dump...</code></p>
-
-<p>Add <code>h5merge</code> to this list of subdirectories.<br>
-Now you probably want to create a Makefile.am in the h5merge directory. A good starting
-point for this Makefile.am might be the sample Makefile.am in the config directory
-(<code>config/Makefile.am.blank</code>). Alternately, you could copy the Makefile.am
-from another directory.<br>
-Once you have your new Makefile.am in place, edit <code>configure.in</code> in the root
-directory. Near the end of the file is a list of files generated by configure.
-Add <code>tools/h5merge/Makefile.in</code> to this list.<br>
-Now run <code>bin/reconfigure</code>. This will update configure and generate a Makefile.in in the
-<code>tools/h5merge</code> directory. Don't forget to add both the Makefile.am and the Makefile.in to
-CVS, and to update the manifest!.</p>
-<br>
-
-<p><h4>Adding a program that is only compiled in parallel</h4></p>
-
-<p>Suppose you only want to compile a program when HDF5 is configured to run in
-parallel--for example, a parallel version of h5repack called <code>h5prepack</code>.
-Open up the h5repack Makefile.am<br>
-The simple solution is:</p>
-
-<p><code>if BUILD_PARALLEL_CONDITIONAL<br>
-&nbsp;&nbsp;&nbsp;H5PREPACK=h5prepack<br>
-endif</code></p>
-
-<p>Now the variable <code>$H5PREPACK</code> will be &quot;h5prepack&quot; if parallel is
-enabled and &quot;&quot; if parallel is disabled. Add <code>$H5PREPACK</code> to the list of
-programs to be built:</p>
-
-<p><code>bin_PROGRAMS=h5repack $(H5PREPACK)</code></p>
-
-<p>Add sources for this program as usual:</p>
-
-<p><code>h5prepack_SOURCES=...</code></p>
-
-<p>Don't forget to run <code>bin/reconfigure</code> when you're done!</p>
-<br>
-
-<p><h4>Changing a program's name when it is compiled in parallel</h4></p>
-
-<p>Automake conditionals can be a very powerful tool. Suppose that instead of building
-two versions of h5repack during a parallel build, you want to change the name of
-the tool depending on whether or not HDF5 is configured to run in parallel--you
-want to create either h5repack or h5prepack, but not both.<br>
-Open up the h5repack Makefile.am and use an automake conditional:</p>
-
-<p><code>if BUILD_PARALLEL_CONDITIONAL<br>
-&nbsp;&nbsp;&nbsp;H5REPACK_NAME=h5prepack<br>
-else<br>
-&nbsp;&nbsp;&nbsp;H5REPACK_NAME=h5repack<br>
-endif<br>
-bin_PROGRAMS=$(H5REPACK_NAME)</p>
-
-<p>Now you only build one program, but the name of that program changes. You still need
-to define sources for both h5repack and h5prepack, but you needn't type them out twice if
-they are the same:</p>
-
-<p><code>h5repack_SOURCES=...<br>
-h5prepack_SOURCES=$(h5repack_SOURCES)</code></p>
-
-<p>Don't forget to run <code>bin/reconfigure</code> when you're done!</p>
-<br>
-
-<p><h4>Adding a new library</h4></p>
-
-<p>Suppose you want to add a new library to the HDF5 build tree, libfoo. The procedure for
-building libraries is very similar to that for building programs:</p>
-
-<p><code>lib_LTLIBRARIES=libfoo.la<br>
-libfoo_la_SOURCES=sourcefoo.c sourcefootwo.c </code></p>
-
-<p>This library will be installed in the lib directory when a user types
-"<code>make install</code>".<br>
-You might instead be building a convenience library for testing purposes (like
-<code>libh5test.la</code>) and not want it to be installed. If this is the case, you
-would type</p>
-
-<p><code>check_LTLIBRARIES=libfoo.la</code><br>
-instead of<br>
-<code>lib_LTLIBRARIES=libfoo.la</code></p>
-
-<p>To make it easier for other directories to link to your library,
-you might want to assign its path to a variable in all HDF5 Makefiles. You can
-make changes to all Makefiles by editing <code>config/commence.am</code> and adding a line
-like</p>
-
-<p><code>LIBFOO=$(top_builddir)/foo/src/libfoo.la</code></p>
-
-<p><code>config/commence.am</code> is textually included in all Makefiles.am when automake
-processes them.<br>
-As always, if you change a Makefile.am or <code>config/commence.am</code>, don't forget to run
-<code>bin/reconfigure</code>.</p>
-<br>
-
-<p><h4>Changing HDF5's API</h4></p>
-
-<p>If you have added or removed a function from HDF5, or if you have changed a function
-signature, you must indicate this by updating the file <code>lt_vers.am</code> located in
-the <code>config</code> directory.<br>
-If you have changed the API at all, increment <code>LT_VERS_INTERFACE</code> and set
-<code>LT_VERS_REVISION</code> to zero.<br>
-If you have added functions but not altered or removed existing ones, also increment
-<code>LT_VERS_AGE</code>.<br>
-If instead you have altered or removed any functions, reset <code>LT_VERS_AGE</code> to
-zero.</p>
-</body>
-</html>
diff --git a/doc/html/TechNotes/Basic_perform.html b/doc/html/TechNotes/Basic_perform.html
deleted file mode 100644
index 2a622fc..0000000
--- a/doc/html/TechNotes/Basic_perform.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Description of the three basic performance tools</title>
- </head>
-
- <body>
- <h1>Description of the three basic performance tools</h1>
-
- <h2>iopipe</h2>
- <p>Times reads and writes to an HDF5 2-d dataset and compares that with
- reads and writes using POSIX I/O. Reports seven measurements in
- terms of CPU user time, CPU system time, elapsed time, and
- bandwidth:
-
-
-<DL>
-<DD>fill raw: time it takes to memset() a buffer.</DD>
-<DD> fill hdf5: time it takes to read from a dataset never written</DD>
-<DD>out raw: time it takes to write using POSIX I/O</DD>
-<DD>out hdf5: time it takes to write using H5Dwrite()</DD>
-<DD>in raw: time it takes to read data just written using POSIX I/O</DD>
-<DD>in hdf5: time it takes to H5Dread() data written with H5Dwrite()</DD>
-<DD>in hdf5 partial: time it takes to H5Dread() the "center" area.</DD>
-</DL>
-
-
- <p>This is a pretty stupid performance test. It accesses the same area
- of file and memory over and over and the file size is way too
- small. But it is good at showing how much overhead there is in the
- library itself.
-
-
- <h2>chunk</h2>
- <p>Determines how efficient the raw data cache is for various access
- patterns of a chunked dataset, both reading and writing. The access
- pattern is either (a) we access the entire dataset by moving a window
- across and down a 2-d dataset in row-major order a full window
- height and width at a time, or (b) we access part of a dataset by moving
- the window diagonally from the (0,0) corner to the opposite corner
- by half the window height and width at a time. The window is
- measured in terms of the chunk size.
-
-
- <p>The result is:
- <br>A table written to stdout that contains the window size as a
- fraction of the chunk size and the efficiencey of the cache (i.e.,
- number of bytes accessed by H5Dread() or H5Dwrite() divided by the
- number of bytes of the dataset actually read or written by lower
- layers.
-
-
- <p>A gnuplot script and data files which can be displayed by running
- gnuplot and typing the command `load "x-gnuplot"'.
-
-
- <h2>overhead</h2>
- <p>Measures the overhead used by the B-tree for indexing chunked
- datasets. As data is written to a chunked dataset the B-tree
- grows and its nodes get split. When a node splits one of three
- ratios are used to determine how many items from the original node
- go into the new left and right nodes, and these ratios affect the
- total size of the B-tree in a way that depends on the order that
- data is written to the dataset.
-
-
- <p>Invoke as `overhead usage' for more information.
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Tue Mar 17 11:13:35 EST 1998 -->
-<!-- hhmts start -->
-Last modified: Jun 4, 2003
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/BigDataSmMach.html b/doc/html/TechNotes/BigDataSmMach.html
deleted file mode 100644
index fe00ff8..0000000
--- a/doc/html/TechNotes/BigDataSmMach.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Big Datasets on Small Machines</title>
- </head>
-
- <body>
- <h1>Big Datasets on Small Machines</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The HDF5 library is able to handle files larger than the
- maximum file size, and datasets larger than the maximum memory
- size. For instance, a machine where <code>sizeof(off_t)</code>
- and <code>sizeof(size_t)</code> are both four bytes can handle
- datasets and files as large as 18x10^18 bytes. However, most
- Unix systems limit the number of concurrently open files, so a
- practical file size limit is closer to 512GB or 1TB.
-
- <p>Two "tricks" must be imployed on these small systems in order
- to store large datasets. The first trick circumvents the
- <code>off_t</code> file size limit and the second circumvents
- the <code>size_t</code> main memory limit.
-
- <h2>2. File Size Limits</h2>
-
- <p>Systems that have 64-bit file addresses will be able to access
- those files automatically. One should see the following output
- from configure:
-
- <p><code><pre>
-checking size of off_t... 8
- </pre></code>
-
- <p>Also, some 32-bit operating systems have special file systems
- that can support large (&gt;2GB) files and HDF5 will detect
- these and use them automatically. If this is the case, the
- output from configure will show:
-
- <p><code><pre>
-checking for lseek64... yes
-checking for fseek64... yes
- </pre></code>
-
- <p>Otherwise one must use an HDF5 file family. Such a family is
- created by setting file family properties in a file access
- property list and then supplying a file name that includes a
- <code>printf</code>-style integer format. For instance:
-
- <p><code><pre>
-hid_t plist, file;
-plist = H5Pcreate (H5P_FILE_ACCESS);
-H5Pset_family (plist, 1&lt;&lt;30, H5P_DEFAULT);
-file = H5Fcreate ("big%03d.h5", H5F_ACC_TRUNC, H5P_DEFAULT, plist);
- </code></pre>
-
- <p>The second argument (<code>1&lt;&lt;30</code>) to
- <code>H5Pset_family()</code> indicates that the family members
- are to be 2^30 bytes (1GB) each although we could have used any
- reasonably large value. In general, family members cannot be
- 2GB because writes to byte number 2,147,483,647 will fail, so
- the largest safe value for a family member is 2,147,483,647.
- HDF5 will create family members on demand as the HDF5 address
- space increases, but since most Unix systems limit the number of
- concurrently open files the effective maximum size of the HDF5
- address space will be limited (the system on which this was
- developed allows 1024 open files, so if each family member is
- approx 2GB then the largest HDF5 file is approx 2TB).
-
- <p>If the effective HDF5 address space is limited then one may be
- able to store datasets as external datasets each spanning
- multiple files of any length since HDF5 opens external dataset
- files one at a time. To arrange storage for a 5TB dataset split
- among 1GB files one could say:
-
- <p><code><pre>
-hid_t plist = H5Pcreate (H5P_DATASET_CREATE);
-for (i=0; i&lt;5*1024; i++) {
- sprintf (name, "velocity-%04d.raw", i);
- H5Pset_external (plist, name, 0, (size_t)1&lt;&lt;30);
-}
- </code></pre>
-
- <h2>3. Dataset Size Limits</h2>
-
- <p>The second limit which must be overcome is that of
- <code>sizeof(size_t)</code>. HDF5 defines a data type called
- <code>hsize_t</code> which is used for sizes of datasets and is,
- by default, defined as <code>unsigned long long</code>.
-
- <p>To create a dataset with 8*2^30 4-byte integers for a total of
- 32GB one first creates the dataspace. We give two examples
- here: a 4-dimensional dataset whose dimension sizes are smaller
- than the maximum value of a <code>size_t</code>, and a
- 1-dimensional dataset whose dimension size is too large to fit
- in a <code>size_t</code>.
-
- <p><code><pre>
-hsize_t size1[4] = {8, 1024, 1024, 1024};
-hid_t space1 = H5Screate_simple (4, size1, size1);
-
-hsize_t size2[1] = {8589934592LL};
-hid_t space2 = H5Screate_simple (1, size2, size2};
- </pre></code>
-
- <p>However, the <code>LL</code> suffix is not portable, so it may
- be better to replace the number with
- <code>(hsize_t)8*1024*1024*1024</code>.
-
- <p>For compilers that don't support <code>long long</code> large
- datasets will not be possible. The library performs too much
- arithmetic on <code>hsize_t</code> types to make the use of a
- struct feasible.
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Fri Apr 10 13:26:04 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: Sun Jul 19 11:37:25 EDT 1998
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/ChStudy_1000x1000.gif b/doc/html/TechNotes/ChStudy_1000x1000.gif
deleted file mode 100644
index b7d5a83..0000000
--- a/doc/html/TechNotes/ChStudy_1000x1000.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/ChStudy_250x250.gif b/doc/html/TechNotes/ChStudy_250x250.gif
deleted file mode 100644
index fe35f39..0000000
--- a/doc/html/TechNotes/ChStudy_250x250.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/ChStudy_499x499.gif b/doc/html/TechNotes/ChStudy_499x499.gif
deleted file mode 100644
index 0d2038b..0000000
--- a/doc/html/TechNotes/ChStudy_499x499.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/ChStudy_5000x1000.gif b/doc/html/TechNotes/ChStudy_5000x1000.gif
deleted file mode 100644
index 0f3c290..0000000
--- a/doc/html/TechNotes/ChStudy_5000x1000.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/ChStudy_500x500.gif b/doc/html/TechNotes/ChStudy_500x500.gif
deleted file mode 100644
index 38dd7d6..0000000
--- a/doc/html/TechNotes/ChStudy_500x500.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/ChStudy_p1.gif b/doc/html/TechNotes/ChStudy_p1.gif
deleted file mode 100644
index 938d133..0000000
--- a/doc/html/TechNotes/ChStudy_p1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/ChStudy_p1.obj b/doc/html/TechNotes/ChStudy_p1.obj
deleted file mode 100644
index 6fbf583..0000000
--- a/doc/html/TechNotes/ChStudy_p1.obj
+++ /dev/null
@@ -1,113 +0,0 @@
-%TGIF 3.0-p5
-state(0,33,100,0,0,0,16,1,9,1,1,0,0,3,7,1,1,'Helvetica',0,24,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1088,1408,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-box('black',64,64,384,384,0,1,1,22,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 128,64,128,384],0,1,1,23,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 192,64,192,384],0,1,1,24,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 256,64,256,384],0,1,1,25,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 320,64,320,384],0,1,1,26,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 64,128,384,128],0,1,1,27,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 64,192,384,192],0,1,1,28,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 64,256,384,256],0,1,1,29,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 64,320,384,320],0,1,1,30,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',96,80,'Courier',0,17,1,1,0,1,7,14,37,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1"]).
-text('black',160,80,'Courier',0,17,1,1,0,1,7,14,39,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "2"]).
-text('black',224,80,'Courier',0,17,1,1,0,1,7,14,41,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "3"]).
-text('black',288,80,'Courier',0,17,1,1,0,1,7,14,43,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "4"]).
-text('black',352,80,'Courier',0,17,1,1,0,1,7,14,47,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "5"]).
-text('black',96,144,'Courier',0,17,1,1,0,1,7,14,51,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "6"]).
-text('black',160,144,'Courier',0,17,1,1,0,1,7,14,53,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "7"]).
-text('black',224,144,'Courier',0,17,1,1,0,1,7,14,55,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "8"]).
-text('black',288,144,'Courier',0,17,1,1,0,1,7,14,57,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "9"]).
-text('black',352,144,'Courier',0,17,1,1,0,1,14,14,59,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "10"]).
-text('black',96,208,'Courier',0,17,1,1,0,1,14,14,61,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "11"]).
-text('black',160,208,'Courier',0,17,1,1,0,1,14,14,63,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "12"]).
-text('black',224,208,'Courier',0,17,1,1,0,1,14,14,65,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "13"]).
-text('black',288,208,'Courier',0,17,1,1,0,1,14,14,67,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "14"]).
-text('black',352,208,'Courier',0,17,1,1,0,1,14,14,71,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "15"]).
-text('black',96,272,'Courier',0,17,1,1,0,1,14,14,75,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "16"]).
-text('black',160,272,'Courier',0,17,1,1,0,1,14,14,77,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "17"]).
-text('black',224,272,'Courier',0,17,1,1,0,1,14,14,79,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "18"]).
-text('black',288,272,'Courier',0,17,1,1,0,1,14,14,81,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "19"]).
-text('black',352,272,'Courier',0,17,1,1,0,1,14,14,83,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "20"]).
-text('black',96,336,'Courier',0,17,1,1,0,1,14,14,87,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "21"]).
-text('black',160,336,'Courier',0,17,1,1,0,1,14,14,89,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "22"]).
-text('black',224,336,'Courier',0,17,1,1,0,1,14,14,91,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "23"]).
-text('black',288,336,'Courier',0,17,1,1,0,1,14,14,93,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "24"]).
-text('black',352,336,'Courier',0,17,1,1,0,1,14,14,95,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "25"]).
-poly('black',2,[
- 416,64,416,384],3,1,1,100,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 64,416,384,416],3,1,1,101,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',390,228,'Courier',0,17,1,0,0,1,14,35,102,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,1,0,[
- 390,228,390,228,425,242,0,-1000,1000,0,34,18,389,227,426,243],[
- "5,000"]).
-text('black',224,432,'Courier',0,17,1,1,0,1,35,14,116,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "5,000"]).
-text('black',160,512,'Courier',0,17,1,0,0,1,105,14,131,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "= 1,000 x 1,000"]).
-box('black',80,480,144,544,7,1,1,134,0,0,0,0,0,'1',[
-]).
-text('black',224,16,'Helvetica',0,24,1,1,0,1,296,29,144,0,24,5,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Order that data was written"]).
-box('black',32,0,464,576,0,1,1,149,0,0,0,0,0,'1',[
-]).
diff --git a/doc/html/TechNotes/ChunkingStudy.html b/doc/html/TechNotes/ChunkingStudy.html
deleted file mode 100644
index 776b8fe..0000000
--- a/doc/html/TechNotes/ChunkingStudy.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Testing the chunked layout of HDF5</title>
- </head>
-
- <body>
-
-<i>
-This document is of interest primarily for its discussion of the
-HDF team's motivation for implementing raw data caching.
-At a more abstract level, the discussion of the principles of
-data chunking is also of interest, but a more recent discussion
-of that topic can be found in
-<a href="../Chunking.html">Dataset Chunking Issues</a> in the
-<cite><a href="../H5.user.html">HDF5 User's Guide</a></cite>.
-
-The performance study described here predates the current chunking
-implementation in the HDF5 library, so the particular performance data
-is no longer apropos.
-&nbsp;&nbsp;&nbsp;&nbsp; --&nbsp;the Editor
-</i>
-
- <h1>Testing the chunked layout of HDF5</h1>
-
- <p>This is the results of studying the chunked layout policy in
- HDF5. A 1000 by 1000 array of integers was written to a file
- dataset extending the dataset with each write to create, in the
- end, a 5000 by 5000 array of 4-byte integers for a total data
- storage size of 100 million bytes.
-
- <p>
- <center>
- <img alt="Order that data was written" src="ChStudy_p1.gif">
- <br><b>Fig 1: Write-order of Output Blocks</b>
- </center>
-
- <p>After the array was written, it was read back in blocks that
- were 500 by 500 bytes in row major order (that is, the top-left
- quadrant of output block one, then the top-right quadrant of
- output block one, then the top-left quadrant of output block 2,
- etc.).
-
- <p>I tried to answer two questions:
- <ul>
- <li>How does the storage overhead change as the chunk size
- changes?
- <li>What does the disk seek pattern look like as the chunk size
- changes?
- </ul>
-
- <p>I started with chunk sizes that were multiples of the read
- block size or k*(500, 500).
-
- <p>
- <center>
- <table border>
- <caption align=bottom>
- <b>Table 1: Total File Overhead</b>
- </caption>
- <tr>
- <th>Chunk Size (elements)</th>
- <th>Meta Data Overhead (ppm)</th>
- <th>Raw Data Overhead (ppm)</th>
- </tr>
-
- <tr align=center>
- <td>500 by 500</td>
- <td>85.84</td>
- <td>0.00</td>
- </tr>
- <tr align=center>
- <td>1000 by 1000</td>
- <td>23.08</td>
- <td>0.00</td>
- </tr>
- <tr align=center>
- <td>5000 by 1000</td>
- <td>23.08</td>
- <td>0.00</td>
- </tr>
- <tr align=center>
- <td>250 by 250</td>
- <td>253.30</td>
- <td>0.00</td>
- </tr>
- <tr align=center>
- <td>499 by 499</td>
- <td>85.84</td>
- <td>205164.84</td>
- </tr>
- </table>
- </center>
-
- <hr>
- <p>
- <center>
- <img alt="500x500" src="ChStudy_500x500.gif">
- <br><b>Fig 2: Chunk size is 500x500</b>
- </center>
-
- <p>The first half of Figure 2 shows output to the file while the
- second half shows input. Each dot represents a file-level I/O
- request and the lines that connect the dots are for visual
- clarity. The size of the request is not indicated in the
- graph. The output block size is four times the chunk size which
- results in four file-level write requests per block for a total
- of 100 requests. Since file space for the chunks was allocated
- in output order, and the input block size is 1/4 the output
- block size, the input shows a staircase effect. Each input
- request results in one file-level read request. The downward
- spike at about the 60-millionth byte is probably the result of a
- cache miss for the B-tree and the downward spike at the end is
- probably a cache flush or file boot block update.
-
- <hr>
- <p>
- <center>
- <img alt="1000x1000" src="ChStudy_1000x1000.gif">
- <br><b>Fig 2: Chunk size is 1000x1000</b>
- </center>
-
- <p>In this test I increased the chunk size to match the output
- chunk size and one can see from the first half of the graph that
- 25 file-level write requests were issued, one for each output
- block. The read half of the test shows that four times the
- amount of data was read as written. This results from the fact
- that HDF5 must read the entire chunk for any request that falls
- within that chunk, which is done because (1) if the data is
- compressed the entire chunk must be decompressed, and (2) the
- library assumes that a chunk size was chosen to optimize disk
- performance.
-
- <hr>
- <p>
- <center>
- <img alt="5000x1000" src="ChStudy_5000x1000.gif">
- <br><b>Fig 3: Chunk size is 5000x1000</b>
- </center>
-
- <p>Increasing the chunk size further results in even worse
- performance since both the read and write halves of the test are
- re-reading and re-writing vast amounts of data. This proves
- that one should be careful that chunk sizes are not much larger
- than the typical partial I/O request.
-
- <hr>
- <p>
- <center>
- <img alt="250x250" src="ChStudy_250x250.gif">
- <br><b>Fig 4: Chunk size is 250x250</b>
- </center>
-
- <p>If the chunk size is decreased then the amount of data
- transfered between the disk and library is optimal for no
- caching, but the amount of meta data required to describe the
- chunk locations increases to 250 parts per million. One can
- also see that the final downward spike contains more file-level
- write requests as the meta data is flushed to disk just before
- the file is closed.
-
- <hr>
- <p>
- <center>
- <img alt="499x499" src="ChStudy_499x499.gif">
- <br><b>Fig 4: Chunk size is 499x499</b>
- </center>
-
- <p>This test shows the result of choosing a chunk size which is
- close to the I/O block size. Because the total size of the
- array isn't a multiple of the chunk size, the library allocates
- an extra zone of chunks around the top and right edges of the
- array which are only partially filled. This results in
- 20,516,484 extra bytes of storage, a 20% increase in the total
- raw data storage size. But the amount of meta data overhead is
- the same as for the 500 by 500 test. In addition, the mismatch
- causes entire chunks to be read in order to update a few
- elements along the edge or the chunk which results in a 3.6-fold
- increase in the amount of data transfered.
-
- <hr>
- <address><a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a></address>
-<!-- Created: Fri Jan 30 21:04:49 EST 1998 -->
-<!-- hhmts start -->
-Last modified: 30 Jan 1998 (technical content)
-<br>
-Last modified: 9 May 2000 (editor's note)
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/CodeReview.html b/doc/html/TechNotes/CodeReview.html
deleted file mode 100644
index 213cbbe..0000000
--- a/doc/html/TechNotes/CodeReview.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Code Review</title>
- </head>
- <body>
- <center><h1>Code Review 1</h1></center>
-
- <h3>Some background...</h3>
- <p>This is one of the functions exported from the
- <code>H5B.c</code> file that implements a B-link-tree class
- without worrying about concurrency yet (thus the `Note:' in the
- function prologue). The <code>H5B.c</code> file provides the
- basic machinery for operating on generic B-trees, but it isn't
- much use by itself. Various subclasses of the B-tree (like
- symbol tables or indirect storage) provide their own interface
- and back end to this function. For instance,
- <code>H5G_stab_find()</code> takes a symbol table OID and a name
- and calls <code>H5B_find()</code> with an appropriate
- <code>udata</code> argument that eventually gets passed to the
- <code>H5G_stab_find()</code> function.
-
- <p><code><pre>
- 1 /*-------------------------------------------------------------------------
- 2 * Function: H5B_find
- 3 *
- 4 * Purpose: Locate the specified information in a B-tree and return
- 5 * that information by filling in fields of the caller-supplied
- 6 * UDATA pointer depending on the type of leaf node
- 7 * requested. The UDATA can point to additional data passed
- 8 * to the key comparison function.
- 9 *
-10 * Note: This function does not follow the left/right sibling
-11 * pointers since it assumes that all nodes can be reached
-12 * from the parent node.
-13 *
-14 * Return: Success: SUCCEED if found, values returned through the
-15 * UDATA argument.
-16 *
-17 * Failure: FAIL if not found, UDATA is undefined.
-18 *
-19 * Programmer: Robb Matzke
-20 * matzke@llnl.gov
-21 * Jun 23 1997
-22 *
-23 * Modifications:
-24 *
-25 *-------------------------------------------------------------------------
-26 */
-27 herr_t
-28 H5B_find (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, void *udata)
-29 {
-30 H5B_t *bt=NULL;
-31 intn idx=-1, lt=0, rt, cmp=1;
-32 int ret_value = FAIL;
- </pre></code>
-
- <p>All pointer arguments are initialized when defined. I don't
- worry much about non-pointers because it's usually obvious when
- the value isn't initialized.
-
- <p><code><pre>
-33
-34 FUNC_ENTER (H5B_find, NULL, FAIL);
-35
-36 /*
-37 * Check arguments.
-38 */
-39 assert (f);
-40 assert (type);
-41 assert (type->decode);
-42 assert (type->cmp3);
-43 assert (type->found);
-44 assert (addr && H5F_addr_defined (addr));
- </pre></code>
-
- <p>I use <code>assert</code> to check invariant conditions. At
- this level of the library, none of these assertions should fail
- unless something is majorly wrong. The arguments should have
- already been checked by higher layers. It also provides
- documentation about what arguments might be optional.
-
- <p><code><pre>
-45
-46 /*
-47 * Perform a binary search to locate the child which contains
-48 * the thing for which we're searching.
-49 */
-50 if (NULL==(bt=H5AC_protect (f, H5AC_BT, addr, type, udata))) {
-51 HGOTO_ERROR (H5E_BTREE, H5E_CANTLOAD, FAIL);
-52 }
- </pre></code>
-
- <p>You'll see this quite often in the low-level stuff and it's
- documented in the <code>H5AC.c</code> file. The
- <code>H5AC_protect</code> insures that the B-tree node (which
- inherits from the H5AC package) whose OID is <code>addr</code>
- is locked into memory for the duration of this function (see the
- <code>H5AC_unprotect</code> on line 90). Most likely, if this
- node has been accessed in the not-to-distant past, it will still
- be in memory and the <code>H5AC_protect</code> is almost a
- no-op. If cache debugging is compiled in, then the protect also
- prevents other parts of the library from accessing the node
- while this function is protecting it, so this function can allow
- the node to be in an inconsistent state while calling other
- parts of the library.
-
- <p>The alternative is to call the slighlty cheaper
- <code>H5AC_find</code> and assume that the pointer it returns is
- valid only until some other library function is called, but
- since we're accessing the pointer throughout this function, I
- chose to use the simpler protect scheme. All protected objects
- <em>must be unprotected</em> before the file is closed, thus the
- use of <code>HGOTO_ERROR</code> instead of
- <code>HRETURN_ERROR</code>.
-
- <p><code><pre>
-53 rt = bt->nchildren;
-54
-55 while (lt&lt;rt && cmp) {
-56 idx = (lt + rt) / 2;
-57 if (H5B_decode_keys (f, bt, idx)&lt;0) {
-58 HGOTO_ERROR (H5E_BTREE, H5E_CANTDECODE, FAIL);
-59 }
-60
-61 /* compare */
-62 if ((cmp=(type-&gt;cmp3)(f, bt->key[idx].nkey, udata,
-63 bt->key[idx+1].nkey))&lt;0) {
-64 rt = idx;
-65 } else {
-66 lt = idx+1;
-67 }
-68 }
-69 if (cmp) {
-70 HGOTO_ERROR (H5E_BTREE, H5E_NOTFOUND, FAIL);
-71 }
- </pre></code>
-
- <p>Code is arranged in paragraphs with a comment starting each
- paragraph. The previous paragraph is a standard binary search
- algorithm. The <code>(type-&gt;cmp3)()</code> is an indirect
- function call into the subclass of the B-tree. All indirect
- function calls have the function part in parentheses to document
- that it's indirect (quite obvious here, but not so obvious when
- the function is a variable).
-
- <p>It's also my standard practice to have side effects in
- conditional expressions because I can write code faster and it's
- more apparent to me what the condition is testing. But if I
- have an assignment in a conditional expr, then I use an extra
- set of parens even if they're not required (usually they are, as
- in this case) so it's clear that I meant <code>=</code> instead
- of <code>==</code>.
-
- <p><code><pre>
-72
-73 /*
-74 * Follow the link to the subtree or to the data node.
-75 */
-76 assert (idx&gt;=0 && idx<bt->nchildren);
-77 if (bt->level > 0) {
-78 if ((ret_value = H5B_find (f, type, bt->child+idx, udata))&lt;0) {
-79 HGOTO_ERROR (H5E_BTREE, H5E_NOTFOUND, FAIL);
-80 }
-81 } else {
-82 ret_value = (type-&gt;found)(f, bt->child+idx, bt->key[idx].nkey,
-83 udata, bt->key[idx+1].nkey);
-84 if (ret_value&lt;0) {
-85 HGOTO_ERROR (H5E_BTREE, H5E_NOTFOUND, FAIL);
-86 }
-87 }
- </pre></code>
-
- <p>Here I broke the "side effect in conditional" rule, which I
- sometimes do if the expression is so long that the
- <code>&lt;0</code> gets lost at the end. Another thing to note is
- that success/failure is always determined by comparing with zero
- instead of <code>SUCCEED</code> or <code>FAIL</code>. I do this
- because occassionally one might want to return other meaningful
- values (always non-negative) or distinguish between various types of
- failure (always negative).
-
- <p><code><pre>
-88
-89 done:
-90 if (bt && H5AC_unprotect (f, H5AC_BT, addr, bt)&lt;0) {
-91 HRETURN_ERROR (H5E_BTREE, H5E_PROTECT, FAIL);
-92 }
-93 FUNC_LEAVE (ret_value);
-94 }
- </pre></code>
-
- <p>For lack of a better way to handle errors during error cleanup,
- I just call the <code>HRETURN_ERROR</code> macro even though it
- will make the error stack not quite right. I also use short
- circuiting boolean operators instead of nested <code>if</code>
- statements since that's standard C practice.
-
- <center><h1>Code Review 2</h1></center>
-
-
- <p>The following code is an API function from the H5F package...
-
- <p><code><pre>
- 1 /*--------------------------------------------------------------------------
- 2 NAME
- 3 H5Fflush
- 4
- 5 PURPOSE
- 6 Flush all cached data to disk and optionally invalidates all cached
- 7 data.
- 8
- 9 USAGE
-10 herr_t H5Fflush(fid, invalidate)
-11 hid_t fid; IN: File ID of file to close.
-12 hbool_t invalidate; IN: Invalidate all of the cache?
-13
-14 ERRORS
-15 ARGS BADTYPE Not a file atom.
-16 ATOM BADATOM Can't get file struct.
-17 CACHE CANTFLUSH Flush failed.
-18
-19 RETURNS
-20 SUCCEED/FAIL
-21
-22 DESCRIPTION
-23 This function flushes all cached data to disk and, if INVALIDATE
-24 is non-zero, removes cached objects from the cache so they must be
-25 re-read from the file on the next access to the object.
-26
-27 MODIFICATIONS:
-28 --------------------------------------------------------------------------*/
- </pre></code>
-
- <p>An API prologue is used for each API function instead of my
- normal function prologue. I use the prologue from Code Review 1
- for non-API functions because it's more suited to C programmers,
- it requires less work to keep it synchronized with the code, and
- I have better editing tools for it.
-
- <p><code><pre>
-29 herr_t
-30 H5Fflush (hid_t fid, hbool_t invalidate)
-31 {
-32 H5F_t *file = NULL;
-33
-34 FUNC_ENTER (H5Fflush, H5F_init_interface, FAIL);
-35 H5ECLEAR;
- </pre></code>
-
- <p>API functions are never called internally, therefore I always
- clear the error stack before doing anything.
-
- <p><code><pre>
-36
-37 /* check arguments */
-38 if (H5_FILE!=H5Aatom_group (fid)) {
-39 HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL); /*not a file atom*/
-40 }
-41 if (NULL==(file=H5Aatom_object (fid))) {
-42 HRETURN_ERROR (H5E_ATOM, H5E_BADATOM, FAIL); /*can't get file struct*/
-43 }
- </pre></code>
-
- <p>If something is wrong with the arguments then we raise an
- error. We never <code>assert</code> arguments at this level.
- We also convert atoms to pointers since atoms are really just a
- pointer-hiding mechanism. Functions that can be called
- internally always have pointer arguments instead of atoms
- because (1) then they don't have to always convert atoms to
- pointers, and (2) the various pointer data types provide more
- documentation and type checking than just an <code>hid_t</code>
- type.
-
- <p><code><pre>
-44
-45 /* do work */
-46 if (H5F_flush (file, invalidate)&lt;0) {
-47 HRETURN_ERROR (H5E_CACHE, H5E_CANTFLUSH, FAIL); /*flush failed*/
-48 }
- </pre></code>
-
- <p>An internal version of the function does the real work. That
- internal version calls <code>assert</code> to check/document
- it's arguments and can be called from other library functions.
-
- <p><code><pre>
-49
-50 FUNC_LEAVE (SUCCEED);
-51 }
- </pre></code>
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Sat Nov 8 17:09:33 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Mon Nov 10 15:33:33 EST 1997
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/Daily_Test_Explained.htm b/doc/html/TechNotes/Daily_Test_Explained.htm
deleted file mode 100644
index ffa4798..0000000
--- a/doc/html/TechNotes/Daily_Test_Explained.htm
+++ /dev/null
@@ -1,863 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List href="./Daily_Test_Explained_files/filelist.xml">
-<title>Daily Test Explained</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
- <o:Author>Albert Cheng</o:Author>
- <o:Template>Normal</o:Template>
- <o:LastAuthor>Albert Cheng</o:LastAuthor>
- <o:Revision>4</o:Revision>
- <o:TotalTime>21</o:TotalTime>
- <o:LastPrinted>2002-10-24T16:02:00Z</o:LastPrinted>
- <o:Created>2002-10-28T17:28:00Z</o:Created>
- <o:LastSaved>2002-10-28T17:49:00Z</o:LastSaved>
- <o:Pages>2</o:Pages>
- <o:Words>608</o:Words>
- <o:Characters>3468</o:Characters>
- <o:Company>NCSA</o:Company>
- <o:Lines>28</o:Lines>
- <o:Paragraphs>6</o:Paragraphs>
- <o:CharactersWithSpaces>4258</o:CharactersWithSpaces>
- <o:Version>9.3821</o:Version>
- </o:DocumentProperties>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
- {font-family:Tahoma;
- panose-1:2 11 6 4 3 5 4 4 2 4;
- mso-font-charset:0;
- mso-generic-font-family:swiss;
- mso-font-pitch:variable;
- mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
- {mso-style-parent:"";
- margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- font-size:12.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";}
-h1
- {mso-style-next:Normal;
- margin-top:12.0pt;
- margin-right:0in;
- margin-bottom:3.0pt;
- margin-left:0in;
- mso-pagination:widow-orphan;
- page-break-after:avoid;
- mso-outline-level:1;
- font-size:16.0pt;
- font-family:Arial;
- mso-font-kerning:16.0pt;}
-h2
- {mso-style-next:Normal;
- margin-top:12.0pt;
- margin-right:0in;
- margin-bottom:3.0pt;
- margin-left:0in;
- mso-pagination:widow-orphan;
- page-break-after:avoid;
- mso-outline-level:2;
- font-size:14.0pt;
- font-family:Arial;
- font-style:italic;}
-p.MsoHeader, li.MsoHeader, div.MsoHeader
- {margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- tab-stops:center 3.0in right 6.0in;
- font-size:12.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";}
-p.MsoFooter, li.MsoFooter, div.MsoFooter
- {margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- tab-stops:center 3.0in right 6.0in;
- font-size:12.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";}
-p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
- {margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- background:navy;
- font-size:12.0pt;
- font-family:Tahoma;
- mso-fareast-font-family:"Times New Roman";}
-@page Section1
- {size:8.5in 11.0in;
- margin:1.0in 1.2in .9in 1.2in;
- mso-header-margin:.5in;
- mso-footer-margin:.3in;
- mso-paper-source:0;}
-div.Section1
- {page:Section1;}
- /* List Definitions */
-@list l0
- {mso-list-id:28529256;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l0:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.75in;
- mso-level-number-position:left;
- margin-left:.75in;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l0:level2
- {mso-level-number-format:alpha-lower;
- mso-level-tab-stop:1.25in;
- mso-level-number-position:left;
- margin-left:1.25in;
- text-indent:-.25in;}
-@list l0:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l0:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l0:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l0:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l0:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l0:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l0:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1
- {mso-list-id:535626758;
- mso-list-type:hybrid;
- mso-list-template-ids:2106240834 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l1:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l1:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2
- {mso-list-id:610862704;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l2:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.75in;
- mso-level-number-position:left;
- margin-left:.75in;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l2:level2
- {mso-level-number-format:alpha-lower;
- mso-level-tab-stop:1.25in;
- mso-level-number-position:left;
- margin-left:1.25in;
- text-indent:-.25in;}
-@list l2:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3
- {mso-list-id:831875463;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l3:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.75in;
- mso-level-number-position:left;
- margin-left:.75in;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l3:level2
- {mso-level-number-format:alpha-lower;
- mso-level-tab-stop:1.25in;
- mso-level-number-position:left;
- margin-left:1.25in;
- text-indent:-.25in;}
-@list l3:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4
- {mso-list-id:1024131184;
- mso-list-type:hybrid;
- mso-list-template-ids:-218050110 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
-@list l4:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l4:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5
- {mso-list-id:1066879027;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l5:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.75in;
- mso-level-number-position:left;
- margin-left:.75in;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l5:level2
- {mso-level-number-format:alpha-lower;
- mso-level-tab-stop:1.25in;
- mso-level-number-position:left;
- margin-left:1.25in;
- text-indent:-.25in;}
-@list l5:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6
- {mso-list-id:1353801443;
- mso-list-type:hybrid;
- mso-list-template-ids:56765176 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
-@list l6:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l6:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7
- {mso-list-id:1585335932;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l7:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.75in;
- mso-level-number-position:left;
- margin-left:.75in;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l7:level2
- {mso-level-number-format:alpha-lower;
- mso-level-tab-stop:1.25in;
- mso-level-number-position:left;
- margin-left:1.25in;
- text-indent:-.25in;}
-@list l7:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l7:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8
- {mso-list-id:1594970409;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698689 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l8:level1
- {mso-level-number-format:bullet;
- mso-level-text:\F0B7;
- mso-level-tab-stop:.75in;
- mso-level-number-position:left;
- margin-left:.75in;
- text-indent:-.25in;
- font-family:Symbol;}
-@list l8:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l8:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9
- {mso-list-id:1945573783;
- mso-list-type:hybrid;
- mso-list-template-ids:-796201994 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l9:level1
- {mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level2
- {mso-level-number-format:alpha-lower;
- mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l9:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-ol
- {margin-bottom:0in;}
-ul
- {margin-bottom:0in;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<h1 align=center style='text-align:center'>Daily Test Explained</h1>
-
-<h2>Requirements for a Daily Test Host</h2>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list .5in'>Kerberos
- and AFS support</li>
- <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list .5in'>Remote
- command execution (rsh or ssh) with Kerberos authentication support</li>
- <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list .5in'>make
- that support srcdir compiling (highly desirable)</li>
- <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list .5in'>diff
- that supports –I option (highly desirable for launching host)</li>
- <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list .5in'>cvs
- command support (desirable)</li>
-</ul>
-
-<h2>Directories/Files Used</h2>
-
-<p class=MsoNormal><b>$HOME/snapshots-XXX</b> is where daily tests occur.</p>
-
-<ul style='margin-top:0in' type=disc>
- <li class=MsoNormal style='mso-list:l4 level1 lfo6;tab-stops:list .5in'><b>$HOME/snapshots-hdf5</b>
- for hdf5 main trunk version (currently v1.5).</li>
- <li class=MsoNormal style='mso-list:l4 level1 lfo6;tab-stops:list .5in'><b>$HOME/snapshots-hdf5_1_4
- </b>for hdf5 version 1.4.</li>
- <li class=MsoNormal style='mso-list:l4 level1 lfo6;tab-stops:list .5in'><b>$HOME/snapshots-hdf4
- </b>for hdf4 main trunk version (currenly post 4.1r5).</li>
-</ul>
-
-<h2>Inside snapshots-XXX Directory</h2>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>current/<span style='mso-tab-count:1'>                     </span>latest
-version</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>previous/<span style='mso-tab-count:1'>                  </span>last
-released version</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>log/<span style='mso-tab-count:1'>                           </span>log
-files of most recent tests</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>log/OLD/<span style='mso-tab-count:1'>                  </span>previous
-log files</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>TestDir/&lt;host&gt;/<span style='mso-tab-count:1'>        </span>build
-and test area of machine &lt;host&gt; supporting srcdir build</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>allhostfile<span style='mso-tab-count:1'>                 </span>holds
-all test host names</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>snaptest.cfg<span style='mso-tab-count:1'>               </span>holds
-various test configurations</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>release_always<span style='mso-tab-count:1'>        </span>always
-make snapshot release tarball if all tests pass (implemented for hdf4 daily
-tests only)</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>release_asap<span style='mso-tab-count:1'>            </span>make
-<i>one</i> snapshot release tarball if all tests pass (file is renamed after
-release)</p>
-
-<p class=MsoNormal style='margin-left:135.0pt;text-indent:-117.0pt;mso-list:
-l6 level1 lfo8;tab-stops:list .5in'><![if !supportLists]><span
-style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span></span><![endif]>release_not<span style='mso-tab-count:1'>               </span>do
-not make snapshot release tarball even if all tests pass</p>
-
-<h2>Steps</h2>
-
-<p class=MsoNormal>This shows steps of the daily tests for HDF5 development
-version (currenly v1.5).<span style="mso-spacerun: yes">  </span>The HDF5 v1.4
-and HDF4 are similar.<span style="mso-spacerun: yes">  </span>snapshots-XXX
-here means $HOME/snapshots-hdf5/.</p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-<ol style='margin-top:0in' start=1 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>“hdfadmin”
- starts a cron job after midnight in eirene.</li>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>Cron
- job acquires kerberos credential and AFS tokens.</li>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>Execute
- <b>$HOME/.crondir/DailyMaint</b> to start daily maintenance</li>
-</ol>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l8 level1 lfo13;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>CVS
-updates some documents on websites</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l8 level1 lfo13;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>CVS
-updates $HOME/HDF5/v_1_5/hdf5/<span style="mso-spacerun: yes">   </span>(the
-bin/runtest in it is ready to be used in<span style="mso-spacerun: yes"> 
-</span>next step)</p>
-
-<ol style='margin-top:0in' start=4 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>Execute
- <b>$HOME/.bin-sys/DailyHDF5Test</b></li>
-</ol>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l7 level1 lfo16;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Clean
-up snapshots-XXX/log area</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;mso-list:l7 level2 lfo16;
-tab-stops:list 1.25in'><![if !supportLists]>a.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span><![endif]>Purge older files from OLD/</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;mso-list:l7 level2 lfo16;
-tab-stops:list 1.25in'><![if !supportLists]>b.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
-</span><![endif]>Moves log files from yesterday to OLD/</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l7 level1 lfo16;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>cd
-$HOME/HDF5/v_1_5/hdf5</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l7 level1 lfo16;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Launch
-“bin/runtest –all” from eirene</p>
-
-<ol style='margin-top:0in' start=5 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'><b>bin/runtest
- –all<o:p></o:p></b></li>
-</ol>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l5 level1 lfo19;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>CVS
-updates $HOME/snapshots-XXX/current (the commands in bin/ are now ready be used
-in the following steps).</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l5 level1 lfo19;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Executes
-snapshots-XXX/current/bin/chkmanifest for MANIFEST file.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l5 level1 lfo19;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Diff
-current/ and previous/ versions.<span style="mso-spacerun: yes">  </span>If no
-significant differences found, no need to run daily test per hosts.<span
-style="mso-spacerun: yes">  </span>Will not make snapshot release tarball
-either.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l5 level1 lfo19;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>If
-significant differences found, prepare to run the daily tests for all hosts.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l5 level1 lfo19;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Reads
-allhostfile for test hosts.<span style="mso-spacerun: yes">  </span>For each
-host:</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;mso-list:l5 level2 lfo19;
-tab-stops:list 1.25in'><![if !supportLists]>a.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span><![endif]>use ping then rsh/ssh to make sure the host is on line and
-responding</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;mso-list:l5 level2 lfo19;
-tab-stops:list 1.25in'><![if !supportLists]>b.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;
-</span><![endif]>if srcdir is support, fork off the following command for all
-hosts and wait for them to finish.<span style="mso-spacerun: yes"> 
-</span>Otherwise, launch one at a time.</p>
-
-<p class=MsoNormal style='margin-left:1.25in;text-indent:-.25in;mso-list:l5 level2 lfo19;
-tab-stops:list 1.25in'><![if !supportLists]>c.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-</span><![endif]>rsh host “cd $HOME/snapshots-XXX/hdf5; bin/runtest” &gt;&amp;
-#&lt;host&gt;</p>
-
-<ol style='margin-top:0in' start=6 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'><b>bin/runtest
- </b>(one each in multiple hosts)</li>
-</ol>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo22;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Since
-“-all” is not used, it is for launching the test for this host only.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo22;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Reads
-snapshots-XXX/snaptest.cfg and looks for configuration entries that are for
-this host.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo22;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>For
-each configuration, runs snapshots-XXX/bin/snapshot with the configuration.</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l0 level1 lfo22;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Configure,
-build and test results are stored in log/&lt;host&gt;_YYMMDD_HHMM (e.g.,
-arabica_021024_0019)</p>
-
-<ol style='margin-top:0in' start=7 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>Back
- to <b>“bin/runtest –all”</b> in eirene</li>
-</ol>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l2 level1 lfo25;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Gather
-all those #&lt;host&gt; files and other summary report into one daily report
-(e.g., DailyHDF5Tests-eirene_021024)</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l3 level1 lfo27;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Checks
-the tail of log/&lt;host&gt;_YYMMDD_HHMM to make sure it does complete
-properly.</p>
-
-<ol style='margin-top:0in' start=8 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>Back
- to <b>“.bin-sys/DailyHDF5Test”</b></li>
-</ol>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l3 level1 lfo27;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>Do
-a snapshot release if<br>
-<span style="mso-spacerun: yes">    </span>test-succeeded &amp;&amp;<br>
-<span style="mso-spacerun: yes">    </span>release-not-is-not-present
-&amp;&amp;<br>
-<span style="mso-spacerun: yes">    </span>( today-is-saturday ||
-release-asap-is-requested )</p>
-
-<p class=MsoNormal style='margin-left:.75in;text-indent:-.25in;mso-list:l3 level1 lfo27;
-tab-stops:list .75in'><![if !supportLists]><span style='font-family:Symbol'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>HDF4
-does not know how to create a release tarball.<span style="mso-spacerun: yes"> 
-</span>Its release process only renames current/ as previous/ to reduce future
-test time.<span style="mso-spacerun: yes">  </span>It also supports an option
-of release-always which tells daily test to make a release whenever all tests
-pass.<span style="mso-spacerun: yes">  </span>The release-asap only make the
-release once and the file is renamed, blocking any future ASAP release until
-someone turns it on again.</p>
-
-<ol style='margin-top:0in' start=9 type=1>
- <li class=MsoNormal style='mso-list:l9 level1 lfo11;tab-stops:list .5in'>Compose
- a report and email “hdf5-cvs”</li>
-</ol>
-
-<h2>Acknowledgement</h2>
-
-<p class=MsoNormal>Robb Matzke first setup the snapshot directory structure and
-created pretty complete version of commands snaptest, release and h5ver. The
-initial version is for testing in one host with the default configuration.<span
-style="mso-spacerun: yes">  </span>I just added more whistles and bells.<span
-style="mso-spacerun: yes">  </span>Jim Barlow helped me how to authenticate a
-cron task with <i>keytab</i>.</p>
-
-<p class=MsoHeader style='tab-stops:.5in center 3.0in right 6.0in'>----</p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt'>First
-created by Albert Cheng, October 24, 2002.<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt'>Revised
-October 28, 2002.<o:p></o:p></span></p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/doc/html/TechNotes/DataTransformReport.htm b/doc/html/TechNotes/DataTransformReport.htm
deleted file mode 100644
index 5a1a158..0000000
--- a/doc/html/TechNotes/DataTransformReport.htm
+++ /dev/null
@@ -1,877 +0,0 @@
-<html xmlns:v="urn:schemas-microsoft-com:vml"
-xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 10">
-<meta name=Originator content="Microsoft Word 10">
-<link rel=File-List href="Data_Transforms_Report_files/filelist.xml">
-<title>Arithmetic Data Transforms</title>
-<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
- name="date"/>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
- <o:Author>install</o:Author>
- <o:Template>Normal</o:Template>
- <o:LastAuthor>Albert Cheng</o:LastAuthor>
- <o:Revision>4</o:Revision>
- <o:TotalTime>212</o:TotalTime>
- <o:LastPrinted>2004-12-10T21:28:00Z</o:LastPrinted>
- <o:Created>2004-12-10T22:44:00Z</o:Created>
- <o:LastSaved>2004-12-16T00:13:00Z</o:LastSaved>
- <o:Pages>1</o:Pages>
- <o:Words>1721</o:Words>
- <o:Characters>9815</o:Characters>
- <o:Company>UIUC</o:Company>
- <o:Lines>81</o:Lines>
- <o:Paragraphs>23</o:Paragraphs>
- <o:CharactersWithSpaces>11513</o:CharactersWithSpaces>
- <o:Version>10.2625</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
- <w:View>Print</w:View>
- <w:Zoom>105</w:Zoom>
- <w:PunctuationKerning/>
- <w:Compatibility>
- <w:BreakWrappedTables/>
- <w:SnapToGridInCell/>
- <w:ApplyBreakingRules/>
- <w:WrapTextWithPunct/>
- <w:UseAsianBreakRules/>
- <w:UseFELayout/>
- </w:Compatibility>
- <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
- </w:WordDocument>
-</xml><![endif]--><!--[if !mso]><object
- classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
-<style>
-st1\:*{behavior:url(#ieooui) }
-</style>
-<![endif]-->
-<style>
-<!--
- /* Font Definitions */
- @font-face
- {font-family:Courier;
- panose-1:2 7 4 9 2 2 5 2 4 4;
- mso-font-alt:"Courier New";
- mso-font-charset:0;
- mso-generic-font-family:modern;
- mso-font-format:other;
- mso-font-pitch:fixed;
- mso-font-signature:3 0 0 0 1 0;}
-@font-face
- {font-family:SimSun;
- panose-1:2 1 6 0 3 1 1 1 1 1;
- mso-font-alt:\5B8B\4F53;
- mso-font-charset:134;
- mso-generic-font-family:auto;
- mso-font-pitch:variable;
- mso-font-signature:3 135135232 16 0 262145 0;}
-@font-face
- {font-family:"\@SimSun";
- panose-1:2 1 6 0 3 1 1 1 1 1;
- mso-font-charset:134;
- mso-generic-font-family:auto;
- mso-font-pitch:variable;
- mso-font-signature:3 135135232 16 0 262145 0;}
- /* Style Definitions */
- p.MsoNormal, li.MsoNormal, div.MsoNormal
- {mso-style-parent:"";
- margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- font-size:12.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";
- mso-fareast-language:EN-US;}
-h1
- {mso-style-next:Normal;
- margin-top:12.0pt;
- margin-right:0in;
- margin-bottom:3.0pt;
- margin-left:0in;
- mso-pagination:widow-orphan;
- page-break-after:avoid;
- mso-outline-level:1;
- font-size:16.0pt;
- font-family:Arial;
- mso-font-kerning:16.0pt;
- mso-fareast-language:EN-US;}
-h2
- {mso-style-next:Normal;
- margin-top:12.0pt;
- margin-right:0in;
- margin-bottom:3.0pt;
- margin-left:0in;
- mso-pagination:widow-orphan;
- page-break-after:avoid;
- mso-outline-level:2;
- font-size:14.0pt;
- font-family:Arial;
- mso-fareast-language:EN-US;
- font-style:italic;}
-p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
- {mso-style-noshow:yes;
- margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- font-size:10.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";
- mso-fareast-language:EN-US;}
-p.MsoHeader, li.MsoHeader, div.MsoHeader
- {margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- tab-stops:center 3.0in right 6.0in;
- font-size:12.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";
- mso-fareast-language:EN-US;}
-p.MsoFooter, li.MsoFooter, div.MsoFooter
- {margin:0in;
- margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- tab-stops:center 3.0in right 6.0in;
- font-size:12.0pt;
- font-family:"Times New Roman";
- mso-fareast-font-family:"Times New Roman";
- mso-fareast-language:EN-US;}
-span.MsoFootnoteReference
- {mso-style-noshow:yes;
- vertical-align:super;}
- /* Page Definitions */
- @page
- {mso-footnote-separator:url("Data_Transforms_Report_files/header.htm") fs;
- mso-footnote-continuation-separator:url("Data_Transforms_Report_files/header.htm") fcs;
- mso-endnote-separator:url("Data_Transforms_Report_files/header.htm") es;
- mso-endnote-continuation-separator:url("Data_Transforms_Report_files/header.htm") ecs;}
-@page Section1
- {size:8.5in 11.0in;
- margin:1.0in 1.25in 1.0in 1.25in;
- mso-header-margin:.5in;
- mso-footer-margin:.5in;
- mso-even-footer:url("Data_Transforms_Report_files/header.htm") ef1;
- mso-footer:url("Data_Transforms_Report_files/header.htm") f1;
- mso-paper-source:0;}
-div.Section1
- {page:Section1;}
- /* List Definitions */
- @list l0
- {mso-list-id:270281622;
- mso-list-template-ids:-1038041382;}
-@list l1
- {mso-list-id:332993863;
- mso-list-type:hybrid;
- mso-list-template-ids:1458465098 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l1:level1
- {mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l1:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2
- {mso-list-id:550459489;
- mso-list-type:hybrid;
- mso-list-template-ids:1085822362 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l2:level1
- {mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l2:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l3
- {mso-list-id:756709709;
- mso-list-template-ids:-1385235826;}
-@list l4
- {mso-list-id:1187134103;
- mso-list-type:hybrid;
- mso-list-template-ids:1324645902 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l4:level1
- {mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l4:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5
- {mso-list-id:1433163999;
- mso-list-type:hybrid;
- mso-list-template-ids:-438374070 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
-@list l5:level1
- {mso-level-tab-stop:.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level2
- {mso-level-tab-stop:1.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level3
- {mso-level-tab-stop:1.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level4
- {mso-level-tab-stop:2.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level5
- {mso-level-tab-stop:2.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level6
- {mso-level-tab-stop:3.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level7
- {mso-level-tab-stop:3.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level8
- {mso-level-tab-stop:4.0in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l5:level9
- {mso-level-tab-stop:4.5in;
- mso-level-number-position:left;
- text-indent:-.25in;}
-@list l6
- {mso-list-id:1929534752;
- mso-list-template-ids:-760440376;}
-@list l7
- {mso-list-id:2059475982;
- mso-list-template-ids:658286432;}
-ol
- {margin-bottom:0in;}
-ul
- {margin-bottom:0in;}
--->
-</style>
-<!--[if gte mso 10]>
-<style>
- /* Style Definitions */
- table.MsoNormalTable
- {mso-style-name:"Table Normal";
- mso-tstyle-rowband-size:0;
- mso-tstyle-colband-size:0;
- mso-style-noshow:yes;
- mso-style-parent:"";
- mso-padding-alt:0in 5.4pt 0in 5.4pt;
- mso-para-margin:0in;
- mso-para-margin-bottom:.0001pt;
- mso-pagination:widow-orphan;
- font-size:10.0pt;
- font-family:"Times New Roman";}
-</style>
-<![endif]--><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="3074"/>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <o:shapelayout v:ext="edit">
- <o:idmap v:ext="edit" data="1"/>
- </o:shapelayout></xml><![endif]-->
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p class=MsoNormal align=center style='text-align:center'><b><span
-style='font-size:16.0pt'>Arithmetic Data Transforms<o:p></o:p></span></b></p>
-
-<p class=MsoNormal align=center style='text-align:center'>Leon Arber, Albert
-Cheng, William Wendling<a style='mso-footnote-id:ftn1' href="#_ftn1"
-name="_ftnref1" title=""><span class=MsoFootnoteReference><span
-style='mso-special-character:footnote'><![if !supportFootnotes]><span
-class=MsoFootnoteReference><span style='font-size:12.0pt;font-family:"Times New Roman";
-mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
-EN-US;mso-bidi-language:AR-SA'>[1]</span></span><![endif]></span></span></a></p>
-
-<p class=MsoNormal align=center style='text-align:center'><st1:date Year="2004"
-Day="10" Month="12">December 10, 2004</st1:date></p>
-
-<h1>Purpose</h1>
-
-<p class=MsoNormal>Data can be stored and represented in many different
-ways.<span style='mso-spacerun:yes'>  </span>In most fields of science, for
-example, the metric system is used for storing all data.<span
-style='mso-spacerun:yes'>  </span>However, many fields of engineering still use
-the English system.<span style='mso-spacerun:yes'>  </span>In such scenarios,
-there needs to be a way to easily perform arbitrary scaling of data.<span
-style='mso-spacerun:yes'>  </span>The data transforms provide just such
-functionality.<span style='mso-spacerun:yes'>  </span>They allow arbitrary
-arithmetic expressions to be applied to a dataset during read and write
-operations.<span style='mso-spacerun:yes'>  </span>This means that data can be
-stored in Celsius in a data file, but read in and automatically converted to
-Fahrenheit.<span style='mso-spacerun:yes'>  </span>Alternatively, data that is
-obtained in Fahrenheit can be written out to the data file in Celsius.<span
-style='mso-spacerun:yes'>  </span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Although a user can always manually modify the data they
-read and write, having the data transform as a property means that the user
-doesn’t have to worry about forgetting to call the conversion function or even
-writing it in the first place.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>Usage</h1>
-
-<p class=MsoNormal>The data transform functionality is implemented as a
-property that is set on a dataset transfer property list.<span
-style='mso-spacerun:yes'>  </span>There are two functions available: one for
-setting the transform and another for finding out what transform, if any, is
-currently set.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>The function for setting the transform is:</p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>herr_t
-H5Pset_data_transform(hid_t plist_id, const char* expression)<o:p></o:p></span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>plist_id
-</span>is the identifier of the dataset transfer property list on which the
-data transform property should be set.</p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>expression
-</span>is a pointer to a string of the form “(5/9.0)*(x-32)” which describes
-the transform.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>The function for getting the transform is: </p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>ssize_t
-H5Pget_data_transform(hid_t plist_id, char* expression, size_t size)<o:p></o:p></span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>plist_id
-</span>is the identifier of the dataset transfer property list which will be
-queried for its data transform property.</p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>expression
-</span>is either NULL or a pointer to memory where the data transform string,
-if present, will be copied.</p>
-
-<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>size
-</span>is the number of bytes to copy from the transform string into
-expression. <span style='mso-spacerun:yes'> </span>H5Pget_data_transform will
-never copy more than the length of the transform expression.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>Data Transform Expressions</h1>
-
-<p class=MsoNormal>Data transforms are set by passing a pointer to a string,
-which is the data transform expression.<span style='mso-spacerun:yes'> 
-</span>This string describes what sort of arithmetic transform should be done
-during data transfer of read or write.<span style='mso-spacerun:yes'> 
-</span>The string is a standard mathematical expression, as would be entered
-into a something like MATLAB.<span style='mso-spacerun:yes'>  </span></p>
-
-<p class=MsoNormal>Expressions are defined by the following context-free
-grammar:</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>expr:=<span style='mso-spacerun:yes'>  </span>term | term +
-term | term - term</p>
-
-<p class=MsoNormal>term := factor | factor * factor | factor / factor</p>
-
-<p class=MsoNormal>factor :=<span style='mso-spacerun:yes'>  </span>number |
-symbol | - factor | + factor | ( expr )</p>
-
-<p class=MsoNormal>symbol := [a-zA-Z][a-zA-Z0-9]*</p>
-
-<p class=MsoNormal>number := INT | FLOAT</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>where INT is interpreted as a C long int and FLOAT is interpreted
-as a C double</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>This grammar allows for order of operations (multiplication
-and dividision take precedence over addition and subtraction), floating and
-integer constants, and grouping of terms by way of parentheses.<span
-style='mso-spacerun:yes'>  </span>Although the grammar allows symbols to be
-arbitrary strings, this documentation will always use ‘x’ for symbols.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Within a transform expression, the symbol represents a
-variable which contains the data to be manipulated.<span
-style='mso-spacerun:yes'>  </span>For this reason, the terms symbol and
-variable will be used interchangeably.<span style='mso-spacerun:yes'> 
-</span>Furthermore, in the current implementation of data transforms, all
-symbols appearing in an expression are interpreted as referring to the same
-dataset.<span style='mso-spacerun:yes'>  </span>So, an expression such as
-“alpha + 5” is equivalent to “x+5” and an expression such as “alpha + 3*beta +
-5” is equivalent to “alpha + 3*alpha + 5” which is equivalent to “4*x +
-5”.<span style='mso-spacerun:yes'>    </span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>Data Transform Implementation</h1>
-
-<p class=MsoNormal>When the data transform property of a dataset transfer
-property list is set, a parse tree of the expression is immediately generated
-and its root is saved in the property list.<span style='mso-spacerun:yes'> 
-</span>The generation of the parse involves several steps.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>First, the expression is reduced, so as to simply the final
-parse and speed up the transform operations.<span style='mso-spacerun:yes'> 
-</span>Expressions such as “(5/9.0) * (x-32)” will be reduced to
-“.555555*(x-32).”<span style='mso-spacerun:yes'>  </span>While further
-simplification is algebraically possible, the data transform code will only
-reduce simple trivial arithmetic operations.<span style='mso-spacerun:yes'> 
-</span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Then, this reduced expression is parsed into a set of
-tokens, from which the parse tree is generated.<span style='mso-spacerun:yes'> 
-</span>From the expression “(5/9.0)*(x-32),” for example, the following parse
-tree would be created:</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><span style='mso-tab-count:4'>                                          </span><span
-style='mso-spacerun:yes'>     </span>*</p>
-
-<p class=MsoNormal><span style='mso-tab-count:4'>                                          </span>/<span
-style='mso-tab-count:1'>          </span>\<span style='mso-spacerun:yes'> 
-</span></p>
-
-<p class=MsoNormal><span style='mso-tab-count:3'>                                </span><span
-style='mso-spacerun:yes'>       </span>.555555<span
-style='mso-spacerun:yes'>     </span>-</p>
-
-<p class=MsoNormal><span style='mso-tab-count:5'>                                                     </span>/<span
-style='mso-spacerun:yes'>   </span>\<span style='mso-tab-count:5'>                                                </span></p>
-
-<p class=MsoNormal><span style='mso-tab-count:4'>                                          </span><span
-style='mso-spacerun:yes'>           </span>x<span style='mso-spacerun:yes'> 
-</span>32</p>
-
-<p class=MsoNormal><span style='mso-tab-count:1'>           </span></p>
-
-<h2>HDread with Data Transform Expressions</h2>
-
-<p class=MsoNormal>When a read is performed with a dataset transfer property
-list that has the data transform property set, the following sequence of events
-occurs:</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<ol style='margin-top:0in' start=1 type=1>
- <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>A
- piece of the file is read into memory</li>
- <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>The
- data transform is performed on this piece of memory</li>
- <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>This piece
- of memory is then copied to the user</li>
- <li class=MsoNormal style='mso-list:l2 level1 lfo3;tab-stops:list .5in'>Steps
- 1 – 3 are repeated until the read is complete.</li>
-</ol>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Step 2 works like this:</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<ol style='margin-top:0in' start=1 type=1>
- <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'>The
- function responsible for doing the transform is passed a buffer and is
- informed what type of data is inside this buffer and how many elements
- there are.</li>
- <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'>This
- buffer is then treated as the variable in the data transform expression
- and the transform expression is applied.</li>
- <li class=MsoNormal style='mso-list:l1 level1 lfo6;tab-stops:list .5in'>The
- transformed buffer is returned to the library.</li>
-</ol>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>If the transform expression is “(5/9.0)*(x-32),” with the
-parse tree shown above and the buffer contains [-10 0 10 50 100], then the
-intermediate steps involved in the transform are:</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<ol style='margin-top:0in' start=1 type=1>
- <li class=MsoNormal style='mso-pagination:widow-orphan lines-together;
- page-break-after:avoid;mso-list:l5 level1 lfo9;mso-hyphenate:none;
- tab-stops:list .5in'>First, the (x-32) subexpression is evaluated.<span
- style='mso-spacerun:yes'>  </span>Now the buffer would contain<span
- style='mso-spacerun:yes'>           </span>[-42 -32 -22 18 68]</li>
- <li class=MsoNormal style='mso-list:l5 level1 lfo9;tab-stops:list .5in'>Then,
- the .55555 * part of the expression is evaluated.<span
- style='mso-spacerun:yes'>  </span>Now the buffer would contain: [-23.3333
- -17.7777 -12.2222 9.9999 37.7777]</li>
- <li class=MsoNormal style='mso-list:l5 level1 lfo9;tab-stops:list .5in'>Now,
- the transform would be completed and the resulting buffer returned.</li>
-</ol>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Note that the original data in the file was not modified. </p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h2>HDwrite with Data Transform Expressions</h2>
-
-<p class=MsoNormal>The process of a write works much the same way, but in the
-reverse order.<span style='mso-spacerun:yes'>  </span>When a file is written
-out with a dataset transfer property list that has the data transform property
-set:</p>
-
-<p class=MsoNormal><span style='mso-spacerun:yes'>  </span></p>
-
-<ol style='margin-top:0in' start=1 type=1>
- <li class=MsoNormal style='mso-list:l4 level1 lfo12;tab-stops:list .5in'>The
- user passes a buffer to HDwrite, along with the type and number of
- elements.</li>
- <li class=MsoNormal style='mso-list:l4 level1 lfo12;tab-stops:list .5in'>The
- data transform is performed on a copy of this piece of memory.</li>
- <li class=MsoNormal style='mso-list:l4 level1 lfo12;tab-stops:list .5in'>This
- copy with the transformed data is then written out to the file.</li>
-</ol>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Step 2 works exactly as in the read example.<span
-style='mso-spacerun:yes'>  </span>Note that the user’s data is not modified. <span
-style='mso-spacerun:yes'> </span>Also, since the transform property is not
-saved with the dataset, in order to recover the original data, a user must know
-the inverse of the transform that was applied in order to recover it.<span
-style='mso-spacerun:yes'>  </span>In the case of “(5/9.0)*(x-32)” this inverse
-would be “(9/5.0)*x + 32”.<span style='mso-spacerun:yes'>  </span>Reading from
-a data file that had previously been written out with a transform string of
-“(5/9.0)*(x-32)” with a transform string of “(9/5.0)*x + 32” would effectively
-recover the original data the author of the file had been using.<a
-style='mso-footnote-id:ftn2' href="#_ftn2" name="_ftnref2" title=""><span
-class=MsoFootnoteReference><span style='mso-special-character:footnote'><![if !supportFootnotes]><span
-class=MsoFootnoteReference><span style='font-size:12.0pt;font-family:"Times New Roman";
-mso-fareast-font-family:"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:
-EN-US;mso-bidi-language:AR-SA'>[2]</span></span><![endif]></span></span></a></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>Mixed Mode and Truncation</h1>
-
-<p class=MsoNormal>Because the data transform sits and modifies data between
-the file space and the memory space, various effects can occur that are the
-result of the typecasting that may be involved in the operations.<span
-style='mso-spacerun:yes'>   </span>In addition, because constants in the data
-transform expression can be either INT or FLOAT, the data transform itself can
-be a source of truncation.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>In the example above, the reason that the transform
-expression is always written as “(5/9.0)*(x-32)” is because, if it were written
-without a floating point constant, it would always evaluate to 0.<span
-style='mso-spacerun:yes'>  </span>The expression “(5/9)*(x-32)” would, when
-set, get reduced to “0*(x-32)” because both 5 and 9 would get read as C long
-ints and, when divided, the result would get truncated to 0.<span
-style='mso-spacerun:yes'>  </span>This resulting expression, “0*(x-32),” would
-cause any data read or written to be saved as an array of all 0’s.<span
-style='mso-spacerun:yes'>  </span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Another source of unpredictability caused by truncation
-occurs when intermediate data is of a type that is more precise than the
-destination memory type.<span style='mso-spacerun:yes'>  </span>For example, if
-the transform expression “(1/2.0)*x” is applied to data read from a file that
-is being read into an integer memory buffer, the results can be
-unpredictable.<span style='mso-spacerun:yes'>  </span>If the source array is [1
-2 3 4], then the resulting array could be either [0 1 1 2] or [0 0 1 1],
-depending on the floating point unit of the processors.<span
-style='mso-spacerun:yes'>  </span>Note that this result is independent of the
-source data type.<span style='mso-spacerun:yes'>  </span>It doesn’t matter if
-the source data is integer or floating point because the 2.0 in the data
-transform expression will cause everything to be evaluated in a floating-point
-context.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>When setting transform expressions, care must be taken to
-ensure that the truncation does not adversely affect the data.<span
-style='mso-spacerun:yes'>  </span>A workaround for the possible effects of a
-transform such as “(1/2.0) * x” would be to used the transform expression
-“(1/2.0)*x + 0.5” instead of the original.<span style='mso-spacerun:yes'> 
-</span>This will ensure that all truncation rounds up, with the possible
-exception of a boundary condition.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>Data Transform Example</h1>
-
-<p class=MsoNormal>The following code snippet shows an example using data
-transform, where the data transform property is set and a write is
-performed.<span style='mso-spacerun:yes'>  </span>Then, a read is performed
-with no data transform property set.<span style='mso-spacerun:yes'>  </span>It
-is assumed that <span style='font-family:Courier'>dataset </span>is a dataset
-that has been opened and <span style='font-family:Courier'>windchillF </span>and
-<span style='font-family:Courier'>windchillC </span>are both arrays that hold
-floating point data.<span style='mso-spacerun:yes'>  </span>The result of this
-snippet is to fill <span style='font-family:Courier'>windchillC </span>with the
-data in <span style='font-family:Courier'>windchillF</span>, converted to
-Celcius.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>hid_t dxpl_id_c_to_f;<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>const char* c_to_f =
-“(9/5.0)*x + 32”;<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><o:p>&nbsp;</o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>/* Create the dataset
-transfer property list */<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><span
-style='mso-spacerun:yes'>    </span>dxpl_id_c_to_f =
-H5Pcreate(H5P_DATASET_XFER);<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><o:p>&nbsp;</o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>/* Set the data transform
-to be used on the read*/<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><span
-style='mso-spacerun:yes'>    </span>H5Pset_data_transform(dxpl_id_c_to_f,
-c_to_f);<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><o:p>&nbsp;</o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><span
-style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>/*<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>* Write the data to the
-dataset using the f_to_c transform<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>*/<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><span
-style='mso-spacerun:yes'>    </span>status = H5Dwrite(dataset, H5T_NATIVE_FLOAT,
-H5S_ALL, H5S_ALL, dxpl_id_f_to_c, windchillF);<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><span
-style='mso-spacerun:yes'>    </span><o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'>/* Read the data with the
-c_to_f data transform */<o:p></o:p></span></p>
-
-<p class=MsoNormal><span style='font-family:Courier'><span
-style='mso-spacerun:yes'>    </span>H5Dread(dataset, H5T_NATIVE_FLOAT, H5S_ALL,
-H5S_ALL, H5P_DEFAULT, windchillC);<o:p></o:p></span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>H5Pget_data_transform Details</h1>
-
-<p class=MsoNormal>Querying the data transform string of a dataset transfer
-property list requires the use of the H5Pget_data_transform function.<span
-style='mso-spacerun:yes'>  </span>This function provides the ability to both
-query the size of the string stored and retrieve part or all of it.<span
-style='mso-spacerun:yes'>  </span>Note that H5Pget_data_transform will return
-the expression that was set by H5Pset_data_transform.<span
-style='mso-spacerun:yes'>  </span>The reduced transform string, computed when
-H5Pset_data_transform is called, is not stored in string form and is not
-available to the user.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>In order to ascertain the size of the string, a NULL <span
-style='font-family:Courier'>expression</span> should be passed to the
-function.<span style='mso-spacerun:yes'>  </span>This will make the function
-return the length of the transform string (not including the terminated ‘\0’
-character).</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>To actually retrieve the string, a pointer to a valid memory
-location should be passed in for <span style='font-family:Courier'>expression </span>and
-the number of bytes from the string that should be copied to that memory
-location should be passed in as <span style='font-family:Courier'>size</span>.</p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<h1>Further Work</h1>
-
-<p class=MsoNormal>Some additional functionality can still be added to the data
-transform.<span style='mso-spacerun:yes'>  </span>Currently the most important
-feature lacking is the addition of operators, such as exponentiation and the
-trigonometric functions.<span style='mso-spacerun:yes'>  </span>Although
-exponentiation can be explicitly carried with a transform expression such as
-“x*x*x” it may be easier to support expression like “x^3.” Also lacking are the
-commonly used trigonometric functions, such as sin, cos, and tan.<span
-style='mso-spacerun:yes'>  </span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>Popular constants could also be added, such as &#960; or
-e.<span style='mso-spacerun:yes'>  </span></p>
-
-<p class=MsoNormal><o:p>&nbsp;</o:p></p>
-
-<p class=MsoNormal>More advanced functionality, such as the ability to perform
-a transform on multiple datasets is also a possibility, but is a feature is
-more a completely new addition than an extension to data transforms.<span
-style='mso-spacerun:yes'>  </span></p>
-
-</div>
-
-<div style='mso-element:footnote-list'><![if !supportFootnotes]><br clear=all>
-
-<hr align=left size=1 width="33%">
-
-<![endif]>
-
-<div style='mso-element:footnote' id=ftn1>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn1' href="#_ftnref1"
-name="_ftn1" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman";mso-fareast-font-family:
-"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:EN-US;
-mso-bidi-language:AR-SA'>[1]</span></span><![endif]></span></span></a> Mr.
-Wendling, who involved in the initial design and implemented the expression
-parser, has left NCSA.</p>
-
-</div>
-
-<div style='mso-element:footnote' id=ftn2>
-
-<p class=MsoFootnoteText><a style='mso-footnote-id:ftn2' href="#_ftnref2"
-name="_ftn2" title=""><span class=MsoFootnoteReference><span style='mso-special-character:
-footnote'><![if !supportFootnotes]><span class=MsoFootnoteReference><span
-style='font-size:10.0pt;font-family:"Times New Roman";mso-fareast-font-family:
-"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:EN-US;
-mso-bidi-language:AR-SA'>[2]</span></span><![endif]></span></span></a> See the
-h5_dtransform.c example in the examples directory of the hdf5 library for just
-such an illustration.</p>
-
-</div>
-
-</div>
-
-</body>
-
-</html>
diff --git a/doc/html/TechNotes/ExternalFiles.html b/doc/html/TechNotes/ExternalFiles.html
deleted file mode 100644
index c3197af..0000000
--- a/doc/html/TechNotes/ExternalFiles.html
+++ /dev/null
@@ -1,279 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>External Files in HDF5</title>
- </head>
-
- <body>
- <center><h1>External Files in HDF5</h1></center>
-
- <h3>Overview of Layers</h3>
-
- <p>This table shows some of the layers of HDF5. Each layer calls
- functions at the same or lower layers and never functions at
- higher layers. An object identifier (OID) takes various forms
- at the various layers: at layer 0 an OID is an absolute physical
- file address; at layers 1 and 2 it's an absolute virtual file
- address. At layers 3 through 6 it's a relative address, and at
- layers 7 and above it's an object handle.
-
- <p><center>
- <table border cellpadding=4 width="60%">
- <tr align=center>
- <td>Layer-7</td>
- <td>Groups</td>
- <td>Datasets</td>
- </tr>
- <tr align=center>
- <td>Layer-6</td>
- <td>Indirect Storage</td>
- <td>Symbol Tables</td>
- </tr>
- <tr align=center>
- <td>Layer-5</td>
- <td>B-trees</td>
- <td>Object Hdrs</td>
- <td>Heaps</td>
- </tr>
- <tr align=center>
- <td>Layer-4</td>
- <td>Caching</td>
- </tr>
- <tr align=center>
- <td>Layer-3</td>
- <td>H5F chunk I/O</td>
- </tr>
- <tr align=center>
- <td>Layer-2</td>
- <td>H5F low</td>
- </tr>
- <tr align=center>
- <td>Layer-1</td>
- <td>File Family</td>
- <td>Split Meta/Raw</td>
- </tr>
- <tr align=center>
- <td>Layer-0</td>
- <td>Section-2 I/O</td>
- <td>Standard I/O</td>
- <td>Malloc/Free</td>
- </tr>
- </table>
- </center>
-
- <h3>Single Address Space</h3>
-
- <p>The simplest form of hdf5 file is a single file containing only
- hdf5 data. The file begins with the boot block, which is
- followed until the end of the file by hdf5 data. The next most
- complicated file allows non-hdf5 data (user defined data or
- internal wrappers) to appear before the boot block and after the
- end of the hdf5 data. The hdf5 data is treated as a single
- linear address space in both cases.
-
- <p>The next level of complexity comes when non-hdf5 data is
- interspersed with the hdf5 data. We handle that by including
- the non-hdf5 interspersed data in the hdf5 address space and
- simply not referencing it (eventually we might add those
- addresses to a "do-not-disturb" list using the same mechanism as
- the hdf5 free list, but it's not absolutely necessary). This is
- implemented except for the "do-not-disturb" list.
-
- <p>The most complicated single address space hdf5 file is when we
- allow the address space to be split among multiple physical
- files. For instance, a >2GB file can be split into smaller
- chunks and transfered to a 32 bit machine, then accessed as a
- single logical hdf5 file. The library already supports >32 bit
- addresses, so at layer 1 we split a 64-bit address into a 32-bit
- file number and a 32-bit offset (the 64 and 32 are
- arbitrary). The rest of the library still operates with a linear
- address space.
-
- <p>Another variation might be a family of two files where all the
- meta data is stored in one file and all the raw data is stored
- in another file to allow the HDF5 wrapper to be easily replaced
- with some other wrapper.
-
- <p>The <code>H5Fcreate</code> and <code>H5Fopen</code> functions
- would need to be modified to pass file-type info down to layer 2
- so the correct drivers can be called and parameters passed to
- the drivers to initialize them.
-
- <h4>Implementation</h4>
-
- <p>I've implemented fixed-size family members. The entire hdf5
- file is partitioned into members where each member is the same
- size. The family scheme is used if one passes a name to
- <code>H5F_open</code> (which is called by <code>H5Fopen()</code>
- and <code>H5Fcreate</code>) that contains a
- <code>printf(3c)</code>-style integer format specifier.
- Currently, the default low-level file driver is used for all
- family members (H5F_LOW_DFLT, usually set to be Section 2 I/O or
- Section 3 stdio), but we'll probably eventually want to pass
- that as a parameter of the file access property list, which
- hasn't been implemented yet. When creating a family, a default
- family member size is used (defined at the top H5Ffamily.c,
- currently 64MB) but that also should be settable in the file
- access property list. When opening an existing family, the size
- of the first member is used to determine the member size
- (flushing/closing a family ensures that the first member is the
- correct size) but the other family members don't have to be that
- large (the local address space, however, is logically the same
- size for all members).
-
- <p>I haven't implemented a split meta/raw family yet but am rather
- curious to see how it would perform. I was planning to use the
- `.h5' extension for the meta data file and `.raw' for the raw
- data file. The high-order bit in the address would determine
- whether the address refers to meta data or raw data. If the user
- passes a name that ends with `.raw' to <code>H5F_open</code>
- then we'll chose the split family and use the default low level
- driver for each of the two family members. Eventually we'll
- want to pass these kinds of things through the file access
- property list instead of relying on naming convention.
-
- <h3>External Raw Data</h3>
-
- <p>We also need the ability to point to raw data that isn't in the
- HDF5 linear address space. For instance, a dataset might be
- striped across several raw data files.
-
- <p>Fortunately, the only two packages that need to be aware of
- this are the packages for reading/writing contiguous raw data
- and discontiguous raw data. Since contiguous raw data is a
- special case, I'll discuss how to implement external raw data in
- the discontiguous case.
-
- <p>Discontiguous data is stored as a B-tree whose keys are the
- chunk indices and whose leaf nodes point to the raw data by
- storing a file address. So what we need is some way to name the
- external files, and a way to efficiently store the external file
- name for each chunk.
-
- <p>I propose adding to the object header an <em>External File
- List</em> message that is a 1-origin array of file names.
- Then, in the B-tree, each key has an index into the External
- File List (or zero for the HDF5 file) for the file where the
- chunk can be found. The external file index is only used at
- the leaf nodes to get to the raw data (the entire B-tree is in
- the HDF5 file) but because of the way keys are copied among
- the B-tree nodes, it's much easier to store the index with
- every key.
-
- <h3>Multiple HDF5 Files</h3>
-
- <p>One might also want to combine two or more HDF5 files in a
- manner similar to mounting file systems in Unix. That is, the
- group structure and meta data from one file appear as though
- they exist in the first file. One opens File-A, and then
- <em>mounts</em> File-B at some point in File-A, the <em>mount
- point</em>, so that traversing into the mount point actually
- causes one to enter the root object of File-B. File-A and
- File-B are each complete HDF5 files and can be accessed
- individually without mounting them.
-
- <p>We need a couple additional pieces of machinery to make this
- work. First, an haddr_t type (a file address) doesn't contain
- any info about which HDF5 file's address space the address
- belongs to. But since haddr_t is an opaque type except at
- layers 2 and below, it should be quite easy to add a pointer to
- the HDF5 file. This would also remove the H5F_t argument from
- most of the low-level functions since it would be part of the
- OID.
-
- <p>The other thing we need is a table of mount points and some
- functions that understand them. We would add the following
- table to each H5F_t struct:
-
- <p><code><pre>
-struct H5F_mount_t {
- H5F_t *parent; /* Parent HDF5 file if any */
- struct {
- H5F_t *f; /* File which is mounted */
- haddr_t where; /* Address of mount point */
- } *mount; /* Array sorted by mount point */
- intn nmounts; /* Number of mounted files */
- intn alloc; /* Size of mount table */
-}
- </pre></code>
-
- <p>The <code>H5Fmount</code> function takes the ID of an open
- file or group, the name of a to-be-mounted file, the name of the mount
- point, and a file access property list (like <code>H5Fopen</code>).
- It opens the new file and adds a record to the parent's mount
- table. The <code>H5Funmount</code> function takes the parent
- file or group ID and the name of the mount point and disassociates
- the mounted file from the mount point. It does not close the
- mounted file. The <code>H5Fclose</code>
- function closes/unmounts files recursively.
-
- <p>The <code>H5G_iname</code> function which translates a name to
- a file address (<code>haddr_t</code>) looks at the mount table
- at each step in the translation and switches files where
- appropriate. All name-to-address translations occur through
- this function.
-
- <h3>How Long?</h3>
-
- <p>I'm expecting to be able to implement the two new flavors of
- single linear address space in about two days. It took two hours
- to implement the malloc/free file driver at level zero and I
- don't expect this to be much more work.
-
- <p>I'm expecting three days to implement the external raw data for
- discontiguous arrays. Adding the file index to the B-tree is
- quite trivial; adding the external file list message shouldn't
- be too hard since the object header message class from wich this
- message derives is fully implemented; and changing
- <code>H5F_istore_read</code> should be trivial. Most of the
- time will be spent designing a way to cache Unix file
- descriptors efficiently since the total number open files
- allowed per process could be much smaller than the total number
- of HDF5 files and external raw data files.
-
- <p>I'm expecting four days to implement being able to mount one
- HDF5 file on another. I was originally planning a lot more, but
- making <code>haddr_t</code> opaque turned out to be much easier
- than I planned (I did it last Fri). Most of the work will
- probably be removing the redundant H5F_t arguments for lots of
- functions.
-
- <h3>Conclusion</h3>
-
- <p>The external raw data could be implemented as a single linear
- address space, but doing so would require one to allocate large
- enough file addresses throughout the file (>32bits) before the
- file was created. It would make mixing an HDF5 file family with
- external raw data, or external HDF5 wrapper around an HDF4 file
- a more difficult process. So I consider the implementation of
- external raw data files as a single HDF5 linear address space a
- kludge.
-
- <p>The ability to mount one HDF5 file on another might not be a
- very important feature especially since each HDF5 file must be a
- complete file by itself. It's not possible to stripe an array
- over multiple HDF5 files because the B-tree wouldn't be complete
- in any one file, so the only choice is to stripe the array
- across multiple raw data files and store the B-tree in the HDF5
- file. On the other hand, it might be useful if one file
- contains some public data which can be mounted by other files
- (e.g., a mesh topology shared among collaborators and mounted by
- files that contain other fields defined on the mesh). Of course
- the applications can open the two files separately, but it might
- be more portable if we support it in the library.
-
- <p>So we're looking at about two weeks to implement all three
- versions. I didn't get a chance to do any of them in AIO
- although we had long-term plans for the first two with a
- possibility of the third. They'll be much easier to implement in
- HDF5 than AIO since I've been keeping these in mind from the
- start.
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Sat Nov 8 18:08:52 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Tue Sep 8 14:43:32 EDT 1998
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/FreeLists.html b/doc/html/TechNotes/FreeLists.html
deleted file mode 100644
index 1a4b8e8..0000000
--- a/doc/html/TechNotes/FreeLists.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<html>
-<head>
-<title>Memory Management and Free Lists</title>
-</head>
-
-<body>
-
-<h1>Memory Management and Free Lists</h1>
-
-<pre>
-
-At Release 1.2.2, free list management code was introduced to the HDF5
-library. This included one user-level function, H5garbage_collect, which
-garbage collects on all the free-lists. H5garbage_collect is the only user-
-accessible (i.e., application developer-accessible) element of this
-functionality.
-
-The free-lists generally reduce the amount of dynamic memory used to around
-75% of the pre-optimized amount as well as speed up the time in the library
-code by ~5% The free-lists also help linearize the amount of memory used with
-increasing numbers of datasets or re-writes on the data, so the amount of
-memory used for the 1500/45 free-list case is only 66% of the memory used for
-the unoptimized case.
-
-Overall, the introduction of free list management is a win: the library is
-slightly faster and uses much less system resources than before. Most of the
-emphasis has been focused on the main "thouroughfares" through the code;
-less attention was paid to the "back streets" which are used much less
-frequently and offer less potential for abuse.
-
-Adding a free-list for a data structure in the HDF5 library code is easy:
-
-Old code:
----------
- int foo(void)
- {
- H5W_t *w;
-
- for(i=0; i&lt;x; i++) {
- w=H5MM_malloc(sizeof(H5W_t));
- &lt;use w&gt;
- H5MM_xfree(w);
- }
- }
-
-New code:
----------
-H5FL_DEFINE(H5W_t);
-
- int foo(void)
- {
- H5W_t *w;
-
- for(i=0; i&lt;x; i++) {
- w=H5FL_ALLOC(H5W_t,0);
- &lt;use w&gt;
- H5FL_FREE(H5W_t,w);
- }
- }
-
-
-There are three kinds of free-lists:
- -- for "regular" objects,
- -- arrays of fixed size object (both fixed length and unknown length), and
- -- "blocks" of bytes.
-
- "Regular" free-lists use the H5FL_&lt;*&gt; macros in H5FLprivate.h and are
- designed for single, fixed-size data structures like typedef'ed structs,
- etc.
-
- Arrays of objects use the H5FL_ARR_&lt;*&gt; macros and are designed for arrays
- (both fixed in length and varying lengths) of fixed length data structures
- (like typedef'ed types).
-
- "Block" free-lists use the H5FL_BLK_&lt;*&gt; macros and are designed to hold
- varying sized buffers of bytes, with no structure.
-
- H5S.c contains examples for "regular" and fixed-sized arrays;
- H5B.c contains examples for variable-sized arrays and "blocks".
-
-A free-list doesn't have to be used for every data structure allocated and
-freed, just for those which are prone to abuse when multiple operations are
-being performed. It is important to use the macros for declaring and
-manipulating the free-lists however; they allow the free'd objects on the
-lists to be garbage collected by the library at the library's termination
-or at the user's request.
-
-One public API function has been added: H5garbage_collect, which garbage
-collects on all the free-lists of all the different types. It's not required
-to be called and is only necessary in situations when the application
-performs actions which cause the library to allocate many objects and then
-the application eventually releases those objects and wants to reduce the
-memory used by the library from the peak usage required. The library
-automatically garbage collects all the free lists when the application ends.
-
-Questions should be sent to the HDF Help Desk at hdfhelp@ncsa.uiuc.edu.
-
-
-===========================================
-BENCHMARK INFORMATION
-===========================================
-
-New version with free lists:
-
-Datasets=500, Data Rewrites=15:
- Peak Heap Usage: 18210820 bytes
- Time in library code: 2.260 seconds
- # of malloc calls: 22864
-
-Datasets=1000, Data Rewrites=15:
- Peak Heap Usage: 31932420 bytes
- Time in library code: 5.090 seconds
- # of malloc calls: 43045
-
-Datasets=1500, Data Rewrites=15:
- Peak Heap Usage: 41566212 bytes
- Time in library code: 8.623 seconds
- # of malloc calls: 60623
-
-Datasets=500, Data Rewrites=30:
- Peak Heap Usage: 19456004 bytes
- Time in library code: 4.274 seconds
- # of malloc calls: 23353
-
-Datasets=1000, Data Rewrites=30:
- Peak Heap Usage: 33988612 bytes
- Time in library code: 9.955 seconds
- # of malloc calls: 43855
-
-Datasets=1500, Data Rewrites=30:
- Peak Heap Usage: 43950084 bytes
- Time in library code: 17.413 seconds
- # of malloc calls: 61554
-
-Datasets=500, Data Rewrites=45:
- Peak Heap Usage: 20717572 bytes
- Time in library code: 6.326 seconds
- # of malloc calls: 23848
-
-Datasets=1000, Data Rewrites=45:
- Peak Heap Usage: 35807236 bytes
- Time in library code: 15.146 seconds
- # of malloc calls: 44572
-
-Datasets=1500, Data Rewrites=45:
- Peak Heap Usage: 46022660 bytes
- Time in library code: 27.140 seconds
- # of malloc calls: 62370
-
-
-Older version with no free lists:
-
-Datasets=500, Data Rewrites=15:
- Peak Heap Usage: 25370628 bytes
- Time in library code: 2.329 seconds
- # of malloc calls: 194991
-
-Datasets=1000, Data Rewrites=15:
- Peak Heap Usage: 39550980 bytes
- Time in library code: 5.251 seconds
- # of malloc calls: 417971
-
-Datasets=1500, Data Rewrites=15:
- Peak Heap Usage: 68870148 bytes
- Time in library code: 8.913 seconds
- # of malloc calls: 676564
-
-Datasets=500, Data Rewrites=30:
- Peak Heap Usage: 31670276 bytes
- Time in library code: 4.435 seconds
- # of malloc calls: 370320
-
-Datasets=1000, Data Rewrites=30:
- Peak Heap Usage: 44646404 bytes
- Time in library code: 10.325 seconds
- # of malloc calls: 797125
-
-Datasets=1500, Data Rewrites=30:
- Peak Heap Usage: 68870148 bytes
- Time in library code: 18.057 seconds
- # of malloc calls: 1295336
-
-Datasets=500, Data Rewrites=45:
- Peak Heap Usage: 33906692 bytes
- Time in library code: 6.577 seconds
- # of malloc calls: 545656
-
-Datasets=1000, Data Rewrites=45:
- Peak Heap Usage: 56778756 bytes
- Time in library code: 15.720 seconds
- # of malloc calls: 1176285
-
-Datasets=1500, Data Rewrites=45:
- Peak Heap Usage: 68870148 bytes
- Time in library code: 28.138 seconds
- # of malloc calls: 1914097
-
-
-===========================================
-Last Modified: 3 May 2000
-HDF Help Desk: hdfhelp@ncsa.uiuc.edu
-
-</pre>
-</body>
-</html>
diff --git a/doc/html/TechNotes/H4-H5Compat.html b/doc/html/TechNotes/H4-H5Compat.html
deleted file mode 100644
index 2992476..0000000
--- a/doc/html/TechNotes/H4-H5Compat.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Backward/Forward Compatability</title>
- </head>
-
- <body>
- <h1>Backward/Forward Compatability</h1>
-
- <p>The HDF5 development must proceed in such a manner as to
- satisfy the following conditions:
-
- <ol type=A>
- <li>HDF5 applications can produce data that HDF5
- applications can read and write and HDF4 applications can produce
- data that HDF4 applications can read and write. The situation
- that demands this condition is obvious.</li>
-
- <li>HDF5 applications are able to produce data that HDF4 applications
- can read and HDF4 applications can subsequently modify the
- file subject to certain constraints depending on the
- implementation. This condition is for the temporary
- situation where a consumer has neither been relinked with a new
- HDF4 API built on top of the HDF5 API nor recompiled with the
- HDF5 API.</li>
-
- <li>HDF5 applications can read existing HDF4 files and subsequently
- modify the file subject to certain constraints depending on
- the implementation. This is condition is for the temporary
- situation in which the producer has neither been relinked with a
- new HDF4 API built on top of the HDF5 API nor recompiled with
- the HDF5 API, or the permanent situation of HDF5 consumers
- reading archived HDF4 files.</li>
- </ul>
-
- <p>There's at least one invarient: new object features introduced
- in the HDF5 file format (like 2-d arrays of structs) might be
- impossible to "translate" to a format that an old HDF4
- application can understand either because the HDF4 file format
- or the HDF4 API has no mechanism to describe the object.
-
- <p>What follows is one possible implementation based on how
- Condition B was solved in the AIO/PDB world. It also attempts
- to satisfy these goals:
-
- <ol type=1>
- <li>The main HDF5 library contains as little extra baggage as
- possible by either relying on external programs to take care
- of compatability issues or by incorporating the logic of such
- programs as optional modules in the HDF5 library. Conditions B
- and C are separate programs/modules.</li>
-
- <li>No extra baggage not only means the library proper is small,
- but also means it can be implemented (rather than migrated
- from HDF4 source) from the ground up with minimal regard for
- HDF4 thus keeping the logic straight forward.</li>
-
- <li>Compatability issues are handled behind the scenes when
- necessary (and possible) but can be carried out explicitly
- during things like data migration.</li>
- </ol>
-
- <hr>
- <h2>Wrappers</h2>
-
- <p>The proposed implementation uses <i>wrappers</i> to handle
- compatability issues. A Format-X file is <i>wrapped</i> in a
- Format-Y file by creating a Format-Y skeleton that replicates
- the Format-X meta data. The Format-Y skeleton points to the raw
- data stored in Format-X without moving the raw data. The
- restriction is that raw data storage methods in Format-Y is a
- superset of raw data storage methods in Format-X (otherwise the
- raw data must be copied to Format-Y). We're assuming that meta
- data is small wrt the entire file.
-
- <p>The wrapper can be a separate file that has pointers into the
- first file or it can be contained within the first file. If
- contained in a single file, the file can appear as a Format-Y
- file or simultaneously a Format-Y and Format-X file.
-
- <p>The Format-X meta-data can be thought of as the original
- wrapper around raw data and Format-Y is a second wrapper around
- the same data. The wrappers are independend of one another;
- modifying the meta-data in one wrapper causes the other to
- become out of date. Modification of raw data doesn't invalidate
- either view as long as the meta data that describes its storage
- isn't modifed. For instance, an array element can change values
- if storage is already allocated for the element, but if storage
- isn't allocated then the meta data describing the storage must
- change, invalidating all wrappers but one.
-
- <p>It's perfectly legal to modify the meta data of one wrapper
- without modifying the meta data in the other wrapper(s). The
- illegal part is accessing the raw data through a wrapper which
- is out of date.
-
- <p>If raw data is wrapped by more than one internal wrapper
- (<i>internal</i> means that the wrapper is in the same file as
- the raw data) then access to that file must assume that
- unreferenced parts of that file contain meta data for another
- wrapper and cannot be reclaimed as free memory.
-
- <hr>
- <h2>Implementation of Condition B</h2>
-
- <p>Since this is a temporary situation which can't be
- automatically detected by the HDF5 library, we must rely
- on the application to notify the HDF5 library whether or not it
- must satisfy Condition B. (Even if we don't rely on the
- application, at some point someone is going to remove the
- Condition B constraint from the library.) So the module that
- handles Condition B is conditionally compiled and then enabled
- on a per-file basis.
-
- <p>If the application desires to produce an HDF4 file (determined
- by arguments to <code>H5Fopen</code>), and the Condition B
- module is compiled into the library, then <code>H5Fclose</code>
- calls the module to traverse the HDF5 wrapper and generate an
- additional internal or external HDF4 wrapper (wrapper specifics
- are described below). If Condition B is implemented as a module
- then it can benefit from the metadata already cached by the main
- library.
-
- <p>An internal HDF4 wrapper would be used if the HDF5 file is
- writable and the user doesn't mind that the HDF5 file is
- modified. An external wrapper would be used if the file isn't
- writable or if the user wants the data file to be primarily HDF5
- but a few applications need an HDF4 view of the data.
-
- <p>Modifying through the HDF5 library an HDF5 file that has
- internal HDF4 wrapper should invalidate the HDF4 wrapper (and
- optionally regenerate it when <code>H5Fclose</code> is
- called). The HDF5 library must understand how wrappers work, but
- not necessarily anything about the HDF4 file format.
-
- <p>Modifying through the HDF5 library an HDF5 file that has an
- external HDF4 wrapper will cause the HDF4 wrapper to become out
- of date (but possibly regenerated during <code>H5Fclose</code>).
- <b>Note: Perhaps the next release of the HDF4 library should
- insure that the HDF4 wrapper file has a more recent modification
- time than the raw data file (the HDF5 file) to which it
- points(?)</b>
-
- <p>Modifying through the HDF4 library an HDF5 file that has an
- internal or external HDF4 wrapper will cause the HDF5 wrapper to
- become out of date. However, there is now way for the old HDF4
- library to notify the HDF5 wrapper that it's out of date.
- Therefore the HDF5 library must be able to detect when the HDF5
- wrapper is out of date and be able to fix it. If the HDF4
- wrapper is complete then the easy way is to ignore the original
- HDF5 wrapper and generate a new one from the HDF4 wrapper. The
- other approach is to compare the HDF4 and HDF5 wrappers and
- assume that if they differ HDF4 is the right one, if HDF4 omits
- data then it was because HDF4 is a partial wrapper (rather than
- assume HDF4 deleted the data), and if HDF4 has new data then
- copy the new meta data to the HDF5 wrapper. On the other hand,
- perhaps we don't need to allow these situations (modifying an
- HDF5 file with the old HDF4 library and then accessing it with
- the HDF5 library is either disallowed or causes HDF5 objects
- that can't be described by HDF4 to be lost).
-
- <p>To convert an HDF5 file to an HDF4 file on demand, one simply
- opens the file with the HDF4 flag and closes it. This is also
- how AIO implemented backward compatability with PDB in its file
- format.
-
- <hr>
- <h2>Implementation of Condition C</h2>
-
- <p>This condition must be satisfied for all time because there
- will always be archived HDF4 files. If a pure HDF4 file (that
- is, one without HDF5 meta data) is opened with an HDF5 library,
- the <code>H5Fopen</code> builds an internal or external HDF5
- wrapper and then accesses the raw data through that wrapper. If
- the HDF5 library modifies the file then the HDF4 wrapper becomes
- out of date. However, since the HDF5 library hasn't been
- released, we can at least implement it to disable and/or reclaim
- the HDF4 wrapper.
-
- <p>If an external and temporary HDF5 wrapper is desired, the
- wrapper is created through the cache like all other HDF5 files.
- The data appears on disk only if a particular cached datum is
- preempted. Instead of calling <code>H5Fclose</code> on the HDF5
- wrapper file we call <code>H5Fabort</code> which immediately
- releases all file resources without updating the file, and then
- we unlink the file from Unix.
-
- <hr>
- <h2>What do wrappers look like?</h2>
-
- <p>External wrappers are quite obvious: they contain only things
- from the format specs for the wrapper and nothing from the
- format specs of the format which they wrap.
-
- <p>An internal HDF4 wrapper is added to an HDF5 file in such a way
- that the file appears to be both an HDF4 file and an HDF5
- file. HDF4 requires an HDF4 file header at file offset zero. If
- a user block is present then we just move the user block down a
- bit (and truncate it) and insert the minimum HDF4 signature.
- The HDF4 <code>dd</code> list and any other data it needs are
- appended to the end of the file and the HDF5 signature uses the
- logical file length field to determine the beginning of the
- trailing part of the wrapper.
-
- <p>
- <center>
- <table border width="60%">
- <tr>
- <td>HDF4 minimal file header. Its main job is to point to
- the <code>dd</code> list at the end of the file.</td>
- </tr>
- <tr>
- <td>User-defined block which is truncated by the size of the
- HDF4 file header so that the HDF5 boot block file address
- doesn't change.</td>
- </tr>
- <tr>
- <td>The HDF5 boot block and data, unmodified by adding the
- HDF4 wrapper.</td>
- </tr>
- <tr>
- <td>The main part of the HDF4 wrapper. The <code>dd</code>
- list will have entries for all parts of the file so
- hdpack(?) doesn't (re)move anything.</td>
- </tr>
- </table>
- </center>
-
- <p>When such a file is opened by the HDF5 library for
- modification it shifts the user block back down to address zero
- and fills with zeros, then truncates the file at the end of the
- HDF5 data or adds the trailing HDF4 wrapper to the free
- list. This prevents HDF4 applications from reading the file with
- an out of date wrapper.
-
- <p>If there is no user block then we have a problem. The HDF5
- boot block must be moved to make room for the HDF4 file header.
- But moving just the boot block causes problems because all file
- addresses stored in the file are relative to the boot block
- address. The only option is to shift the entire file contents
- by 512 bytes to open up a user block (too bad we don't have
- hooks into the Unix i-node stuff so we could shift the entire
- file contents by the size of a file system page without ever
- performing I/O on the file :-)
-
- <p>Is it possible to place an HDF5 wrapper in an HDF4 file? I
- don't know enough about the HDF4 format, but I would suspect it
- might be possible to open a hole at file address 512 (and
- possibly before) by moving some things to the end of the file
- to make room for the HDF5 signature. The remainder of the HDF5
- wrapper goes at the end of the file and entries are added to the
- HDF4 <code>dd</code> list to mark the location(s) of the HDF5
- wrapper.
-
- <hr>
- <h2>Other Thoughts</h2>
-
- <p>Conversion programs that copy an entire HDF4 file to a separate,
- self-contained HDF5 file and vice versa might be useful.
-
-
-
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Fri Oct 3 11:52:31 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Wed Oct 8 12:34:42 EST 1997
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/HeapMgmt.html b/doc/html/TechNotes/HeapMgmt.html
deleted file mode 100644
index e9e8db4..0000000
--- a/doc/html/TechNotes/HeapMgmt.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<html>
-<body>
-
-<h1>Heap Management in HDF5</h1>
-
-<pre>
-
-Heap functions are in the H5H package.
-
-
-off_t
-H5H_new (hdf5_file_t *f, size_t size_hint, size_t realloc_hint);
-
- Creates a new heap in the specified file which can efficiently
- store at least SIZE_HINT bytes. The heap can store more than
- that, but doing so may cause the heap to become less efficient
- (for instance, a heap implemented as a B-tree might become
- discontigous). The REALLOC_HINT is the minimum number of bytes
- by which the heap will grow when it must be resized. The hints
- may be zero in which case reasonable (but probably not
- optimal) values will be chosen.
-
- The return value is the address of the new heap relative to
- the beginning of the file boot block.
-
-off_t
-H5H_insert (hdf5_file_t *f, off_t addr, size_t size, const void *buf);
-
- Copies SIZE bytes of data from BUF into the heap whose address
- is ADDR in file F. BUF must be the _entire_ heap object. The
- return value is the byte offset of the new data in the heap.
-
-void *
-H5H_read (hdf5_file_t *f, off_t addr, off_t offset, size_t size, void *buf);
-
- Copies SIZE bytes of data from the heap whose address is ADDR
- in file F into BUF and then returns the address of BUF. If
- BUF is the null pointer then a new buffer will be malloc'd by
- this function and its address is returned.
-
- Returns buffer address or null.
-
-const void *
-H5H_peek (hdf5_file_t *f, off_t addr, off_t offset)
-
- A more efficient version of H5H_read that returns a pointer
- directly into the cache; the data is not copied from the cache
- to a buffer. The pointer is valid until the next call to an
- H5AC function directly or indirectly.
-
- Returns a pointer or null. Do not free the pointer.
-
-void *
-H5H_write (hdf5_file_t *f, off_t addr, off_t offset, size_t size,
- const void *buf);
-
- Modifies (part of) an object in the heap at address ADDR of
- file F by copying SIZE bytes from the beginning of BUF to the
- file. OFFSET is the address withing the heap where the output
- is to occur.
-
- This function can fail if the combination of OFFSET and SIZE
- would write over a boundary between two heap objects.
-
-herr_t
-H5H_remove (hdf5_file_t *f, off_t addr, off_t offset, size_t size);
-
- Removes an object or part of an object which begins at byte
- OFFSET within a heap whose address is ADDR in file F. SIZE
- bytes are returned to the free list. Removing the middle of
- an object has the side effect that one object is now split
- into two objects.
-
- Returns success or failure.
-
-===========================================
-Last Modified: 8 July 1998 (technical content)
-Last Modified: 28 April 2000 (included in HDF5 Technical Notes)
-HDF Help Desk: hdfhelp@ncsa.uiuc.edu
-
-</pre>
-
-</body>
-</html>
diff --git a/doc/html/TechNotes/IOPipe.html b/doc/html/TechNotes/IOPipe.html
deleted file mode 100644
index 7c24e2c..0000000
--- a/doc/html/TechNotes/IOPipe.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>The Raw Data I/O Pipeline</title>
- </head>
-
- <body>
- <h1>The Raw Data I/O Pipeline</h1>
-
- <p>The HDF5 raw data pipeline is a complicated beast that handles
- all aspects of raw data storage and transfer of that data
- between the file and the application. Data can be stored
- contiguously (internal or external), in variable size external
- segments, or regularly chunked; it can be sparse, extendible,
- and/or compressible. Data transfers must be able to convert from
- one data space to another, convert from one number type to
- another, and perform partial I/O operations. Furthermore,
- applications will expect their common usage of the pipeline to
- perform well.
-
- <p>To accomplish these goals, the pipeline has been designed in a
- modular way so no single subroutine is overly complicated and so
- functionality can be inserted easily at the appropriate
- locations in the pipeline. A general pipeline was developed and
- then certain paths through the pipeline were optimized for
- performance.
-
- <p>We describe only the file-to-memory side of the pipeline since
- the memory-to-file side is a mirror image. We also assume that a
- proper hyperslab of a simple data space is being read from the
- file into a proper hyperslab of a simple data space in memory,
- and that the data type is a compound type which may require
- various number conversions on its members.
-
- <img alt="Figure 1" src="pipe1.gif">
-
- <p>The diagrams should be read from the top down. The Line A
- in the figure above shows that <code>H5Dread()</code> copies
- data from a hyperslab of a file dataset to a hyperslab of an
- application buffer by calling <code>H5D_read()</code>. And
- <code>H5D_read()</code> calls, in a loop,
- <code>H5S_simp_fgath()</code>, <code>H5T_conv_struct()</code>,
- and <code>H5S_simp_mscat()</code>. A temporary buffer, TCONV, is
- loaded with data points from the file, then data type conversion
- is performed on the temporary buffer, and finally data points
- are scattered out to application memory. Thus, data type
- conversion is an in-place operation and data space conversion
- consists of two steps. An additional temporary buffer, BKG, is
- large enough to hold <em>N</em> instances of the destination
- data type where <em>N</em> is the same number of data points
- that can be held by the TCONV buffer (which is large enough to
- hold either source or destination data points).
-
- <p>The application sets an upper limit for the size of the TCONV
- buffer and optionally supplies a buffer. If no buffer is
- supplied then one will be created by calling
- <code>malloc()</code> when the pipeline is executed (when
- necessary) and freed when the pipeline exits. The size of the
- BKG buffer depends on the size of the TCONV buffer and if the
- application supplies a BKG buffer it should be at least as large
- as the TCONV buffer. The default size for these buffers is one
- megabyte but the buffer might not be used to full capacity if
- the buffer size is not an integer multiple of the source or
- destination data point size (whichever is larger, but only
- destination for the BKG buffer).
-
-
-
- <p>Occassionally the destination data points will be partially
- initialized and the <code>H5Dread()</code> operation should not
- clobber those values. For instance, the destination type might
- be a struct with members <code>a</code> and <code>b</code> where
- <code>a</code> is already initialized and we're reading
- <code>b</code> from the file. An extra line, G, is added to the
- pipeline to provide the type conversion functions with the
- existing data.
-
- <img alt="Figure 2" src="pipe2.gif">
-
- <p>It will most likely be quite common that no data type
- conversion is necessary. In such cases a temporary buffer for
- data type conversion is not needed and data space conversion
- can happen in a single step. In fact, when the source and
- destination data are both contiguous (they aren't in the
- picture) the loop degenerates to a single iteration.
-
-
- <img alt="Figure 3" src="pipe3.gif">
-
- <p>So far we've looked only at internal contiguous storage, but by
- replacing Line B in Figures 1 and 2 and Line A in Figure 3 with
- Figure 4 the pipeline is able to handle regularly chunked
- objects. Line B of Figure 4 is executed once for each chunk
- which contains data to be read and the chunk address is found by
- looking at a multi-dimensional key in a chunk B-tree which has
- one entry per chunk.
-
- <img alt="Figure 4" src="pipe4.gif">
-
- <p>If a single chunk is requested and the destination buffer is
- the same size/shape as the chunk, then the CHUNK buffer is
- bypassed and the destination buffer is used instead as shown in
- Figure 5.
-
- <img alt="Figure 5" src="pipe5.gif">
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Tue Mar 17 11:13:35 EST 1998 -->
-<!-- hhmts start -->
-Last modified: Wed Mar 18 10:38:30 EST 1998
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/LibMaint.html b/doc/html/TechNotes/LibMaint.html
deleted file mode 100644
index 718f085..0000000
--- a/doc/html/TechNotes/LibMaint.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<html>
-<body>
-
-
-<h1>Information for HDF5 Maintainers</h1>
-
-<pre>
-
-* You can run make from any directory. However, running in a
- subdirectory only knows how to build things in that directory and
- below. However, all makefiles know when their target depends on
- something outside the local directory tree:
-
- $ cd test
- $ make
- make: *** No rule to make target ../src/libhdf5.a
-
-* All Makefiles understand the following targets:
-
- all -- build locally.
- install -- install libs, headers, progs.
- uninstall -- remove installed files.
- mostlyclean -- remove temp files (eg, *.o but not *.a).
- clean -- mostlyclean plus libs and progs.
- distclean -- all non-distributed files.
- maintainer-clean -- all derived files but H5config.h.in and configure.
-
-* Most Makefiles also understand:
-
- TAGS -- build a tags table
- dep, depend -- recalculate source dependencies
- lib -- build just the libraries w/o programs
-
-* If you have personal preferences for which make, compiler, compiler
- flags, preprocessor flags, etc., that you use and you don't want to
- set environment variables, then use a site configuration file.
-
- When configure starts, it looks in the config directory for files
- whose name is some combination of the CPU name, vendor, and
- operating system in this order:
-
- CPU-VENDOR-OS
- VENDOR-OS
- CPU-VENDOR
- OS
- VENDOR
- CPU
-
- The first file which is found is sourced and can therefore affect
- the behavior of the rest of configure. See config/BlankForm for the
- template.
-
-* If you use GNU make along with gcc the Makefile will contain targets
- that automatically maintain a list of source interdependencies; you
- seldom have to say `make clean'. I say `seldom' because if you
- change how one `*.h' file includes other `*.h' files you'll have
- to force an update.
-
- To force an update of all dependency information remove the
- `.depend' file from each directory and type `make'. For
- instance:
-
- $ cd $HDF5_HOME
- $ find . -name .depend -exec rm {} \;
- $ make
-
- If you're not using GNU make and gcc then dependencies come from
- ".distdep" files in each directory. Those files are generated on
- GNU systems and inserted into the Makefile's by running
- config.status (which happens near the end of configure).
-
-* If you use GNU make along with gcc then the Perl script `trace' is
- run just before dependencies are calculated to update any H5TRACE()
- calls that might appear in the file. Otherwise, after changing the
- type of a function (return type or argument types) one should run
- `trace' manually on those source files (e.g., ../bin/trace *.c).
-
-* Object files stay in the directory and are added to the library as a
- final step instead of placing the file in the library immediately
- and removing it from the directory. The reason is three-fold:
-
- 1. Most versions of make don't allow `$(LIB)($(SRC:.c=.o))'
- which makes it necessary to have two lists of files, one
- that ends with `.c' and the other that has the library
- name wrapped around each `.o' file.
-
- 2. Some versions of make/ar have problems with modification
- times of archive members.
-
- 3. Adding object files immediately causes problems on SMP
- machines where make is doing more than one thing at a
- time.
-
-* When using GNU make on an SMP you can cause it to compile more than
- one thing at a time. At the top of the source tree invoke make as
-
- $ make -j -l6
-
- which causes make to fork as many children as possible as long as
- the load average doesn't go above 6. In subdirectories one can say
-
- $ make -j2
-
- which limits the number of children to two (this doesn't work at the
- top level because the `-j2' is not passed to recursive makes).
-
-* To create a release tarball go to the top-level directory and run
- ./bin/release. You can optionally supply one or more of the words
- `tar', `gzip', `bzip2' or `compress' on the command line. The
- result will be a (compressed) tar file(s) in the `releases'
- directory. The README file is updated to contain the release date
- and version number.
-
-* To create a tarball of all the files which are part of HDF5 go to
- the top-level directory and type:
-
- tar cvf foo.tar `grep '^\.' MANIFEST |unexpand |cut -f1`
-
-
-===========================================
-Last Modified: 15 October 1999 (technical content)
-Last Modified: 28 April 2000 (included in HDF5 Technical Notes)
-HDF Help Desk: hdfhelp@ncsa.uiuc.edu
-
-</pre>
-
-</body>
-</html>
diff --git a/doc/html/TechNotes/Makefile.am b/doc/html/TechNotes/Makefile.am
deleted file mode 100644
index a0aca2d..0000000
--- a/doc/html/TechNotes/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir = $(docdir)/hdf5/TechNotes
-
-# Public doc files (to be installed)...
-localdoc_DATA=BigDataSmMach.html ChStudy_1000x1000.gif ChStudy_250x250.gif \
- ChStudy_499x499.gif ChStudy_5000x1000.gif ChStudy_500x500.gif \
- ChStudy_p1.gif ChunkingStudy.html CodeReview.html \
- ExternalFiles.html FreeLists.html H4-H5Compat.html HeapMgmt.html \
- IOPipe.html LibMaint.html MemoryMgmt.html MoveDStruct.html \
- NamingScheme.html ObjectHeader.html RawDStorage.html \
- SWControls.html SymbolTables.html ThreadSafeLibrary.html VFL.html \
- VFLfunc.html Version.html openmp-hdf5.c openmp-hdf5.html \
- pipe1.gif pipe2.gif pipe3.gif pipe4.gif pipe5.gif version.gif
diff --git a/doc/html/TechNotes/Makefile.in b/doc/html/TechNotes/Makefile.in
deleted file mode 100644
index 2dc4278..0000000
--- a/doc/html/TechNotes/Makefile.in
+++ /dev/null
@@ -1,494 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html/TechNotes
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(localdocdir)"
-localdocDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(localdoc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdir)/hdf5/TechNotes
-
-# Public doc files (to be installed)...
-localdoc_DATA = BigDataSmMach.html ChStudy_1000x1000.gif ChStudy_250x250.gif \
- ChStudy_499x499.gif ChStudy_5000x1000.gif ChStudy_500x500.gif \
- ChStudy_p1.gif ChunkingStudy.html CodeReview.html \
- ExternalFiles.html FreeLists.html H4-H5Compat.html HeapMgmt.html \
- IOPipe.html LibMaint.html MemoryMgmt.html MoveDStruct.html \
- NamingScheme.html ObjectHeader.html RawDStorage.html \
- SWControls.html SymbolTables.html ThreadSafeLibrary.html VFL.html \
- VFLfunc.html Version.html openmp-hdf5.c openmp-hdf5.html \
- pipe1.gif pipe2.gif pipe3.gif pipe4.gif pipe5.gif version.gif
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/TechNotes/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/TechNotes/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-localdocDATA: $(localdoc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(localdocdir)" || $(mkdir_p) "$(DESTDIR)$(localdocdir)"
- @list='$(localdoc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(localdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(localdocdir)/$$f'"; \
- $(localdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-uninstall-localdocDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(localdoc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(localdocdir)/$$f'"; \
- rm -f "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(localdocdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-localdocDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-localdocDATA
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-localdocDATA install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-info-am \
- uninstall-localdocDATA
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/TechNotes/MemoryMgmt.html b/doc/html/TechNotes/MemoryMgmt.html
deleted file mode 100644
index 93782b5..0000000
--- a/doc/html/TechNotes/MemoryMgmt.html
+++ /dev/null
@@ -1,510 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Memory Management in HDF5</title>
- </head>
-
- <body>
- <h1>Memory Management in HDF5</h1>
-
- <!-- ---------------------------------------------------------------- -->
- <h2>Is a Memory Manager Necessary?</h2>
-
- <p>Some form of memory management may be necessary in HDF5 when
- the various deletion operators are implemented so that the
- file memory is not permanently orphaned. However, since an
- HDF5 file was designed with persistent data in mind, the
- importance of a memory manager is questionable.
-
- <p>On the other hand, when certain meta data containers (file glue)
- grow, they may need to be relocated in order to keep the
- container contiguous.
-
- <blockquote>
- <b>Example:</b> An object header consists of up to two
- chunks of contiguous memory. The first chunk is a fixed
- size at a fixed location when the header link count is
- greater than one. Thus, inserting additional items into an
- object header may require the second chunk to expand. When
- this occurs, the second chunk may need to move to another
- location in the file, freeing the file memory which that
- chunk originally occupied.
- </blockquote>
-
- <p>The relocation of meta data containers could potentially
- orphan a significant amount of file memory if the application
- has made poor estimates for preallocation sizes.
-
- <!-- ---------------------------------------------------------------- -->
- <h2>Levels of Memory Management</h2>
-
- <p>Memory management by the library can be independent of memory
- management support by the file format. The file format can
- support no memory management, some memory management, or full
- memory management. Similarly with the library.
-
- <h3>Support in the Library</h3>
-
- <dl>
- <dt><b>No Support: I</b>
- <dd>When memory is deallocated it simply becomes unreferenced
- (orphaned) in the file. Memory allocation requests are
- satisfied by extending the file.
-
- <dd>A separate off-line utility can be used to detect the
- unreferenced bytes of a file and "bubble" them up to the end
- of the file and then truncate the file.
-
- <dt><b>Some Support: II</b>
- <dd>The library could support partial memory management all
- the time, or full memory management some of the time.
- Orphaning free blocks instead of adding them to a free list
- should not affect the file integrity, nor should fulfilling
- new requests by extending the file instead of using the free
- list.
-
- <dt><b>Full Support: III</b>
- <dd>The library supports space-efficient memory management by
- always fulfilling allocation requests from the free list when
- possible, and by coalescing adjacent free blocks into a
- single larger free block.
- </dl>
-
- <h3>Support in the File Format</h3>
-
- <dl>
- <dt><b>No Support: A</b>
- <dd>The file format does not support memory management; any
- unreferenced block in the file is assumed to be free. If
- the library supports full memory management then it will
- have to traverse the entire file to determine which blocks
- are unreferenced.
-
- <dt><b>Some Support: B</b>
- <dd>Assuming that unreferenced blocks are free can be
- dangerous in a situation where the file is not consistent.
- For instance, if a directory tree becomes detached from the
- main directory hierarchy, then the detached directory and
- everything that is referenced only through the detached
- directory become unreferenced. File repair utilities will
- be unable to determine which unreferenced blocks need to be
- linked back into the file hierarchy.
-
- <dd>Therefore, it might be useful to keep an unsorted,
- doubly-linked list of free blocks in the file. The library
- can add and remove blocks from the list in constant time,
- and can generate its own internal free-block data structure
- in time proportional to the number of free blocks instead of
- the size of the file. Additionally, a library can use a
- subset of the free blocks, an alternative which is not
- feasible if the file format doesn't support any form of
- memory management.
-
- <dt><b>Full Support: C</b>
- <dd>The file format can mirror library data structures for
- space-efficient memory management. The free blocks are
- linked in unsorted, doubly-linked lists with one list per
- free block size. The heads of the lists are pointed to by a
- B-tree whose nodes are sorted by free block size. At the
- same time, all free blocks are the leaf nodes of another
- B-tree sorted by starting and ending address. When the
- trees are used in combination we can deallocate and allocate
- memory in O(log <em>N</em>) time where <em>N</em> is the
- number of free blocks.
- </dl>
-
- <h3>Combinations of Library and File Format Support</h3>
-
- <p>We now evaluate each combination of library support with file
- support:
-
- <dl>
- <dt><b>I-A</b>
- <dd>If neither the library nor the file support memory
- management, then each allocation request will come from the
- end of the file and each deallocation request is a no-op
- that simply leaves the free block unreferenced.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>No library overhead for allocation or
- deallocation.
- <li>No file traversal required at time of open.
- <li>No data needs to be written back to the file when
- it's closed.
- <li>Trivial to implement (already implemented).
- </ul>
-
- <li>Disadvantages
- <ul>
- <li>Inefficient use of file space.
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities. (Is an
- unreferenced block a free block or orphaned data?)
- </ul>
- </ul>
-
- <dt><b>II-A</b>
- <dd>In order for the library to support memory management, it
- will be required to build the internal free block
- representation by traversing the entire file looking for
- unreferenced blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>Variable amount of library overhead for allocation
- and deallocation depending on how much work the
- library wants to do.
- <li>No data needs to be written back to the file when
- it's closed.
- <li>Might use file space efficiently.
- </ul>
- <li>Disadvantages
- <ul>
- <li>Might use file space inefficiently.
- <li>File traversal required at time of open.
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities.
- <li>Sharing of the free list between processes falls
- outside the HDF5 file format documentation.
- </ul>
- </ul>
-
- <dt><b>III-A</b>
- <dd>In order for the library to support full memory
- management, it will be required to build the internal free
- block representation by traversing the entire file looking
- for unreferenced blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>Efficient use of file space.
- <li>No data needs to be written back to the file when
- it's closed.
- </ul>
- <li>Disadvantages
- <ul>
- <li>Moderate amount of library overhead for allocation
- and deallocation.
- <li>File traversal required at time of open.
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities.
- <li>Sharing of the free list between processes falls
- outside the HDF5 file format documentation.
- </ul>
- </ul>
-
- <dt><b>I-B</b>
- <dd>If the library doesn't support memory management but the
- file format supports some level of management, then a file
- repair utility will have to be run occasionally to reclaim
- unreferenced blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>No file overhead for allocation or deallocation.
- <li>No library overhead for allocation or
- deallocation.
- <li>No file traversal required at time of open.
- <li>No data needs to be written back to the file when
- it's closed.
- </ul>
- <li>Disadvantages
- <ul>
- <li>A file repair utility must reclaim lost file space.
- <li>Difficulties for file repair utilities.
- </ul>
- </ul>
-
- <dt><b>II-B</b>
- <dd>Both the library and the file format support some level
- of memory management.
-
- <ul>
- <li>Advantages
- <ul>
- <li>Constant file overhead per allocation or
- deallocation.
- <li>Variable library overhead per allocation or
- deallocation depending on how much work the library
- wants to do.
- <li>Traversal at file open time is on the order of the
- free list size instead of the file size.
- <li>The library has the option of reading only part of
- the free list.
- <li>No data needs to be written at file close time if
- it has been amortized into the cost of allocation
- and deallocation.
- <li>File repair utilties don't have to be run to
- reclaim memory.
- <li>File repair utilities can detect whether an
- unreferenced block is a free block or orphaned data.
- <li>Sharing of the free list between processes might
- be easier.
- <li>Possible efficient use of file space.
- </ul>
- <li>Disadvantages
- <ul>
- <li>Possible inefficient use of file space.
- </ul>
- </ul>
-
- <dt><b>III-B</b>
- <dd>The library provides space-efficient memory management but
- the file format only supports an unsorted list of free
- blocks.
-
- <ul>
- <li>Advantages
- <ul>
- <li>Constant time file overhead per allocation or
- deallocation.
- <li>No data needs to be written at file close time if
- it has been amortized into the cost of allocation
- and deallocation.
- <li>File repair utilities don't have to be run to
- reclaim memory.
- <li>File repair utilities can detect whether an
- unreferenced block is a free block or orphaned data.
- <li>Sharing of the free list between processes might
- be easier.
- <li>Efficient use of file space.
- </ul>
- <li>Disadvantages
- <ul>
- <li>O(log <em>N</em>) library overhead per allocation or
- deallocation where <em>N</em> is the total number of
- free blocks.
- <li>O(<em>N</em>) time to open a file since the entire
- free list must be read to construct the in-core
- trees used by the library.
- <li>Library is more complicated.
- </ul>
- </ul>
-
- <dt><b>I-C</b>
- <dd>This has the same advantages and disadvantages as I-C with
- the added disadvantage that the file format is much more
- complicated.
-
- <dt><b>II-C</b>
- <dd>If the library only provides partial memory management but
- the file requires full memory management, then this method
- degenerates to the same as II-A with the added disadvantage
- that the file format is much more complicated.
-
- <dt><b>III-C</b>
- <dd>The library and file format both provide complete data
- structures for space-efficient memory management.
-
- <ul>
- <li>Advantages
- <ul>
- <li>Files can be opened in constant time since the
- free list is read on demand and amortised into the
- allocation and deallocation requests.
- <li>No data needs to be written back to the file when
- it's closed.
- <li>File repair utilities don't have to be run to
- reclaim memory.
- <li>File repair utilities can detect whether an
- unreferenced block is a free block or orphaned data.
- <li>Sharing the free list between processes is easy.
- <li>Efficient use of file space.
- </ul>
- <li>Disadvantages
- <ul>
- <li>O(log <em>N</em>) file allocation and deallocation
- cost where <em>N</em> is the total number of free
- blocks.
- <li>O(log <em>N</em>) library allocation and
- deallocation cost.
- <li>Much more complicated file format.
- <li>More complicated library.
- </ul>
- </ul>
-
- </dl>
-
- <!-- ---------------------------------------------------------------- -->
- <h2>The Algorithm for II-B</h2>
-
- <p>The file contains an unsorted, doubly-linked list of free
- blocks. The address of the head of the list appears in the
- boot block. Each free block contains the following fields:
-
- <center>
- <table border cellpadding=4 width="60%">
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
-
- <tr align=center>
- <th colspan=4>Free Block Signature</th>
-
- <tr align=center>
- <th colspan=4>Total Free Block Size</th>
-
- <tr align=center>
- <th colspan=4>Address of Left Sibling</th>
-
- <tr align=center>
- <th colspan=4>Address of Right Sibling</th>
-
- <tr align=center>
- <th colspan=4><br><br>Remainder of Free Block<br><br><br></th>
- </table>
- </center>
-
- <p>The library reads as much of the free list as convenient when
- convenient and pushes those entries onto stacks. This can
- occur when a file is opened or any time during the life of the
- file. There is one stack for each free block size and the
- stacks are sorted by size in a balanced tree in memory.
-
- <p>Deallocation involves finding the correct stack or creating
- a new one (an O(log <em>K</em>) operation where <em>K</em> is
- the number of stacks), pushing the free block info onto the
- stack (a constant-time operation), and inserting the free
- block into the file free block list (a constant-time operation
- which doesn't necessarily involve any I/O since the free blocks
- can be cached like other objects). No attempt is made to
- coalesce adjacent free blocks into larger blocks.
-
- <p>Allocation involves finding the correct stack (an O(log
- <em>K</em>) operation), removing the top item from the stack
- (a constant-time operation), and removing the block from the
- file free block list (a constant-time operation). If there is
- no free block of the requested size or larger, then the file
- is extended.
-
- <p>To provide sharability of the free list between processes,
- the last step of an allocation will check for the free block
- signature and if it doesn't find one will repeat the process.
- Alternatively, a process can temporarily remove free blocks
- from the file and hold them in it's own private pool.
-
- <p>To summarize...
- <dl>
- <dt>File opening
- <dd>O(<em>N</em>) amortized over the time the file is open,
- where <em>N</em> is the number of free blocks. The library
- can still function without reading any of the file free
- block list.
-
- <dt>Deallocation
- <dd>O(log <em>K</em>) where <em>K</em> is the number of unique
- sizes of free blocks. File access is constant.
-
- <dt>Allocation
- <dd>O(log <em>K</em>). File access is constant.
-
- <dt>File closing
- <dd>O(1) even if the library temporarily removes free
- blocks from the file to hold them in a private pool since
- the pool can still be a linked list on disk.
- </dl>
-
- <!-- ---------------------------------------------------------------- -->
- <h2>The Algorithm for III-C</h2>
-
- <p>The HDF5 file format supports a general B-tree mechanism
- for storing data with keys. If we use a B-tree to represent
- all parts of the file that are free and the B-tree is indexed
- so that a free file chunk can be found if we know the starting
- or ending address, then we can efficiently determine whether a
- free chunk begins or ends at the specified address. Call this
- the <em>Address B-Tree</em>.
-
- <p>If a second B-tree points to a set of stacks where the
- members of a particular stack are all free chunks of the same
- size, and the tree is indexed by chunk size, then we can
- efficiently find the best-fit chunk size for a memory request.
- Call this the <em>Size B-Tree</em>.
-
- <p>All free blocks of a particular size can be linked together
- with an unsorted, doubly-linked, circular list and the left
- and right sibling addresses can be stored within the free
- chunk, allowing us to remove or insert items from the list in
- constant time.
-
- <p>Deallocation of a block fo file memory consists of:
-
- <ol type="I">
- <li>Add the new free block whose address is <em>ADDR</em> to the
- address B-tree.
-
- <ol type="A">
- <li>If the address B-tree contains an entry for a free
- block that ends at <em>ADDR</em>-1 then remove that
- block from the B-tree and from the linked list (if the
- block was the first on the list then the size B-tree
- must be updated). Adjust the size and address of the
- block being freed to include the block just removed from
- the free list. The time required to search for and
- possibly remove the left block is O(log <em>N</em>)
- where <em>N</em> is the number of free blocks.
-
- <li>If the address B-tree contains an entry for the free
- block that begins at <em>ADDR</em>+<em>LENGTH</em> then
- remove that block from the B-tree and from the linked
- list (if the block was the first on the list then the
- size B-tree must be updated). Adjust the size of the
- block being freed to include the block just removed from
- the free list. The time required to search for and
- possibly remove the right block is O(log <em>N</em>).
-
- <li>Add the new (adjusted) block to the address B-tree.
- The time for this operation is O(log <em>N</em>).
- </ol>
-
- <li>Add the new block to the size B-tree and linked list.
-
- <ol type="A">
- <li>If the size B-tree has an entry for this particular
- size, then add the chunk to the tail of the list. This
- is an O(log <em>K</em>) operation where <em>K</em> is
- the number of unique free block sizes.
-
- <li>Otherwise make a new entry in the B-tree for chunks of
- this size. This is also O(log <em>K</em>).
- </ol>
- </ol>
-
- <p>Allocation is similar to deallocation.
-
- <p>To summarize...
-
- <dl>
- <dt>File opening
- <dd>O(1)
-
- <dt>Deallocation
- <dd>O(log <em>N</em>) where <em>N</em> is the total number of
- free blocks. File access time is O(log <em>N</em>).
-
- <dt>Allocation
- <dd>O(log <em>N</em>). File access time is O(log <em>N</em>).
-
- <dt>File closing
- <dd>O(1).
- </dl>
-
-
- <hr>
- <address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
-<!-- Created: Thu Jul 24 15:16:40 PDT 1997 -->
-<!-- hhmts start -->
-Last modified: Thu Jul 31 14:41:01 EST
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/MoveDStruct.html b/doc/html/TechNotes/MoveDStruct.html
deleted file mode 100644
index 4576bd2..0000000
--- a/doc/html/TechNotes/MoveDStruct.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Relocating a File Data Structure</title>
- </head>
-
- <body>
- <h1>Relocating a File Data Structure</h1>
-
- <p>Since file data structures can be cached in memory by the H5AC
- package it becomes problematic to move such a data structure in
- the file. One cannot just copy a portion of the file from one
- location to another because:
-
- <ol>
- <li>the file might not contain the latest information, and</li>
- <li>the H5AC package might not realize that the object's
- address has changed and attempt to write the object to disk
- at the old address.</li>
- </ol>
-
- <p>Here's a correct method to move data from one location to
- another. The example code assumes that one is moving a B-link
- tree node from <code>old_addr</code> to <code>new_addr</code>.
-
- <ol>
- <li>Make sure the disk is up-to-date with respect to the
- cache. There is no need to remove the item from the cache,
- hence the final argument to <code>H5AC_flush</code> is
- <code>FALSE</code>.
- <br><br>
- <code>
- H5AC_flush (f, H5AC_BT, old_addr, FALSE);<br>
- </code>
- <br>
- </li>
-
- <li>Read the data from the old address and write it to the new
- address.
- <br><br>
- <code>
- H5F_block_read (f, old_addr, size, buf);<br>
- H5F_block_write (f, new_addr, size, buf);<br>
- </code>
- <br>
- </li>
-
- <li>Notify the cache that the address of the object changed.
- <br><br>
- <code>
- H5AC_rename (f, H5AC_BT, old_addr, new_addr);<br>
- </code>
- <br>
- </li>
- </ol>
-
-
-
- <hr>
- <address><a href="mailto:robb@maya.nuance.com">Robb Matzke</a></address>
-<!-- Created: Mon Jul 14 15:09:06 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Mon Jul 14 15:38:29 EST
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/NamingScheme.html b/doc/html/TechNotes/NamingScheme.html
deleted file mode 100644
index dbf55bf..0000000
--- a/doc/html/TechNotes/NamingScheme.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<HTML>
-<HEAD><TITLE>
- HDF5 Naming Scheme
- </TITLE> </HEAD>
-
-<BODY bgcolor="#ffffff">
-
-
-<H1>
-<FONT color="#c80028"
- <I> <B> <CENTER> HDF5 Naming Scheme for </CENTER> </B> </I> </H1>
-</FONT>
-<P>
-<UL>
-
-<LI> <A HREF = "#01"><I> FILES </I> </A>
-<LI> <A HREF = "#02"><I> PACKAGES </I> </A>
-<LI> <A HREF = "#03"><I> PUBLIC vs PRIVATE </I> </A>
-<LI> <A HREF = "#04"><I> INTEGRAL TYPES </I> </A>
-<LI> <A HREF = "#05"><I> OTHER TYPES </I> </A>
-<LI> <A HREF = "#06"><I> GLOBAL VARIABLES </I> </A>
-<LI> <A HREF = "#07"><I> MACROS, PREPROCESSOR CONSTANTS, AND ENUM MEMEBERs </I> </A>
-
-</UL>
-<P>
-<center>
- Authors: <A HREF = "mailto:koziol@ncsa.uiuc.edu">
- <I>Quincey Koziol</I> </A> and
- <A HREF = "mailto:matzke@llnl.gov">
- <I> Robb Matzke </I> </A>
-
-</center>
-<UL>
-
-<FONT color="#c80028"
-<LI> <A NAME="01"> <B> <I> FILES </I> </B> </A>
-</FONT>
-
-<UL>
-
- <LI> Source files are named according to the package they contain (see
- below). All files will begin with `H5' so we can stuff our
- object files into someone else's library and not worry about file
- name conflicts.
- <P>For Example:
-<i><b>
-<dd> H5.c -- "Generic" library functions
- <br>
-<dd> H5B.c -- B-link tree functions
-</i></b>
- <p>
- <LI> If a package is in more than one file, then another name is tacked
- on. It's all lower case with no underscores or hyphens.
- <P>For Example:
-<i><b>
-<dd> H5F.c -- the file for this package
- <br>
-<dd> H5Fstdio.c -- stdio functions (just an example)
- <br>
-<dd> H5Ffcntl.c -- fcntl functions (just an example)
-</i></b>
- <p>
- <LI> Each package file has a header file of API stuff (unless there is
- no API component to the package)
- <P>For Example:
-<i><b>
-<dd> H5F.h -- things an application would see. </i> </b>
- <P>
- and a header file of private stuff
-<i><b>
- <p>
-<dd> H5Fprivate.h -- things an application wouldn't see. The
- private header includes the public header.
-</i></b>
- <p>
- and a header for private prototypes
-<i><b>
- <p>
-<dd> H5Fproto.h -- prototypes for internal functions.
-</i></b>
- <P>
- By splitting the prototypes into separate include files we don't
- have to recompile everything when just one function prototype
- changes.
-
- <LI> The main API header file is `hdf5.h' and it includes each of the
- public header files but none of the private header files. Or the
- application can include just the public header files it needs.
-
- <LI> There is no main private or prototype header file because it
- prevents make from being efficient. Instead, each source file
- includes only the private header and prototype files it needs
- (first all the private headers, then all the private prototypes).
-
- <LI> Header files should include everything they need and nothing more.
-
-</UL>
-<P>
-
-<FONT color="#c80028"
-<LI> <A NAME="02"> <B> <I> PACKAGES </I> </B> </A>
-</FONT>
-
-<P>
-Names exported beyond function scope begin with `H5' followed by zero,
-one, or two upper-case letters that describe the class of object.
-This prefix is the package name. The implementation of packages
-doesn't necessarily have to map 1:1 to the source files.
-<P>
-<i><b>
-<dd> H5 -- library functions
-<br>
-<dd> H5A -- atoms
-<br>
-<dd> H5AC -- cache
-<br>
-<dd> H5B -- B-link trees
-<br>
-<dd> H5D -- datasets
-<br>
-<dd> H5E -- error handling
-<br>
-<dd> H5F -- files
-<br>
-<dd> H5G -- groups
-<br>
-<dd> H5M -- meta data
-<br>
-<dd> H5MM -- core memory management
-<br>
-<dd> H5MF -- file memory management
-<br>
-<dd> H5O -- object headers
-<br>
-<dd> H5P -- Property Lists
-<br>
-<dd> H5S -- dataspaces
-<br>
-<dd> H5R -- relationships
-<br>
-<dd> H5T -- datatype
-</i></b>
-<p>
-Each package implements a single main class of object (e.g., the H5B
-package implements B-link trees). The main data type of a package is
-the package name followed by `_t'.
-<p>
-<i><b>
-<dd> H5F_t -- HDF5 file type
-<br>
-<dd> H5B_t -- B-link tree data type
-</i></b>
-<p>
-
-Not all packages implement a data type (H5, H5MF) and some
-packages provide access to a preexisting data type (H5MM, H5S).
-<p>
-
-
-<FONT color="#c80028"
-<LI> <A NAME="03"> <B> <I> PUBLIC vs PRIVATE </I> </B> </A>
-</FONT>
-<p>
-If the symbol is for internal use only, then the package name is
-followed by an underscore and the rest of the name. Otherwise, the
-symbol is part of the API and there is no underscore between the
-package name and the rest of the name.
-<p>
-<i><b>
-<dd> H5Fopen -- an API function.
-<br>
-<dd> H5B_find -- an internal function.
-</i></b>
-<p>
-For functions, this is important because the API functions never pass
-pointers around (they use atoms instead for hiding the implementation)
-and they perform stringent checks on their arguments. Internal
-unctions, on the other hand, check arguments with assert().
-<p>
-Data types like H5B_t carry no information about whether the type is
-public or private since it doesn't matter.
-
-<p>
-
-
-<FONT color="#c80028"
-<LI> <A NAME="04"> <B> <I> INTEGRAL TYPES </I> </B> </A>
-</FONT>
-<p>
-Integral fixed-point type names are an optional `u' followed by `int'
-followed by the size in bits (8, 16,
-32, or 64). There is no trailing `_t' because these are common
-enough and follow their own naming convention.
-<p>
-<pre><H4>
-<dd> hbool_t -- boolean values (BTRUE, BFALSE, BFAIL)
-<br>
-<dd> int8 -- signed 8-bit integers
-<br>
-<dd> uint8 -- unsigned 8-bit integers
-<br>
-<dd> int16 -- signed 16-bit integers
-<br>
-<dd> uint16 -- unsigned 16-bit integers
-<br>
-<dd> int32 -- signed 32-bit integers
-<br>
-<dd> uint32 -- unsigned 32-bit integers
-<br>
-<dd> int64 -- signed 64-bit integers
-<br>
-<dd> uint64 -- unsigned 64-bit integers
-<br>
-<dd> intn -- "native" integers
-<br>
-<dd> uintn -- "native" unsigned integers
-
-</pre></H4>
-<p>
-
-<FONT color="#c80028"
-<LI> <A NAME="05"> <B> <I> OTHER TYPES </I> </B> </A>
-</FONT>
-
-<p>
-
-Other data types are always followed by `_t'.
-<p>
-<pre><H4>
-<dd> H5B_key_t-- additional data type used by H5B package.
-</pre></H4>
-<p>
-
-However, if the name is so common that it's used almost everywhere,
-then we make an alias for it by removing the package name and leading
-underscore and replacing it with an `h' (the main datatype for a
-package already has a short enough name, so we don't have aliases for
-them).
-<P>
-<pre><H4>
-<dd> typedef H5E_err_t herr_t;
-</pre> </H4>
-<p>
-
-<FONT color="#c80028"
-<LI> <A NAME="06"> <B> <I> GLOBAL VARIABLES </I> </B> </A>
-</FONT>
-<p>
-Global variables include the package name and end with `_g'.
-<p>
-<pre><H4>
-<dd> H5AC_methods_g -- global variable in the H5AC package.
-</pre> </H4>
-<p>
-
-
-<FONT color="#c80028"
-<LI> <A NAME="07">
-<I> <B>
-MACROS, PREPROCESSOR CONSTANTS, AND ENUM MEMBERS
- </I> </B> </A>
-</FONT>
-<p>
-Same rules as other symbols except the name is all upper case. There
-are a few exceptions: <br>
-<ul>
-<li> Constants and macros defined on a system that is deficient:
- <p><pre><H4>
-<dd> MIN(x,y), MAX(x,y) and their relatives
- </pre></H4>
-
-<li> Platform constants :
- <P>
- No naming scheme; determined by OS and compiler.<br>
- These appear only in one header file anyway.
- <p>
-<li> Feature test constants (?)<br>
- Always start with `HDF5_HAVE_' like HDF5_HAVE_STDARG_H for a
- header file, or HDF5_HAVE_DEV_T for a data type, or
- HDF5_HAVE_DIV for a function.
-</UL>
-<p>
-
-</UL>
-<p>
-<H6>
-<center>
- This file /hdf3/web/hdf/internal/HDF_standard/HDF5.coding_standard.html is
- maintained by Elena Pourmal <A HREF = "mailto:epourmal@ncsa.uiuc.edu">
- <I>epourmal@ncsa.uiuc.edu</I> </A>.
-</center>
-<p>
-<center>
- Last modified August 5, 1997
-</center>
-
-</H6>
-</BODY>
-<HTML>
-
diff --git a/doc/html/TechNotes/ObjectHeader.html b/doc/html/TechNotes/ObjectHeader.html
deleted file mode 100644
index 1335d23..0000000
--- a/doc/html/TechNotes/ObjectHeader.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<html>
-<body>
-
-<h1>Object Headers</h1>
-
-<pre>
-
-haddr_t
-H5O_new (hdf5_file_t *f, intn nrefs, size_t size_hint)
-
- Creates a new empty object header and returns its address.
- The SIZE_HINT is the initial size of the data portion of the
- object header and NREFS is the number of symbol table entries
- that reference this object header (normally one).
-
- If SIZE_HINT is too small, then at least some default amount
- of space is allocated for the object header.
-
-intn /*num remaining links */
-H5O_link (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- intn adjust) /*link adjustment amount */
-
-
-size_t
-H5O_sizeof (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5O_class_t *type, /*message type or H5O_ANY */
- intn sequence) /*sequence number, usually zero */
-
- Returns the size of a particular instance of a message in an
- object header. When an object header has more than one
- instance of a particular message type, then SEQUENCE indicates
- which instance to return.
-
-void *
-H5O_read (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5G_entry_t *ent, /*optional symbol table entry */
- H5O_class_t *type, /*message type or H5O_ANY */
- intn sequence, /*sequence number, usually zero */
- size_t size, /*size of output message */
- void *mesg) /*output buffer */
-
- Reads a message from the object header into memory.
-
-const void *
-H5O_peek (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5G_entry_t *ent, /*optional symbol table entry */
- H5O_class_t *type, /*type of message or H5O_ANY */
- intn sequence) /*sequence number, usually zero */
-
-haddr_t /*new heap address */
-H5O_modify (hdf5_file_t *f, /*file containing header */
- haddr_t addr, /*header file address */
- H5G_entry_t *ent, /*optional symbol table entry */
- hbool_t *ent_modified, /*entry modification flag */
- H5O_class_t *type, /*message type */
- intn overwrite, /*sequence number or -1 */
- void *mesg) /*the message */
-
-
-===========================================
-Last Modified: 8 July 1998 (technical content)
-Last Modified: 28 April 2000 (included in HDF5 Technical Notes)
-HDF Help Desk: hdfhelp@ncsa.uiuc.edu
-
-</pre>
-
-</body>
-</html>
diff --git a/doc/html/TechNotes/RawDStorage.html b/doc/html/TechNotes/RawDStorage.html
deleted file mode 100644
index 87ea54d..0000000
--- a/doc/html/TechNotes/RawDStorage.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Raw Data Storage in HDF5</title>
- </head>
-
- <body>
- <h1>Raw Data Storage in HDF5</h1>
-
- <p>This document describes the various ways that raw data is
- stored in an HDF5 file and the object header messages which
- contain the parameters for the storage.
-
- <p>Raw data storage has three components: the mapping from some
- logical multi-dimensional element space to the linear address
- space of a file, compression of the raw data on disk, and
- striping of raw data across multiple files. These components
- are orthogonal.
-
- <p>Some goals of the storage mechanism are to be able to
- efficently store data which is:
-
- <dl>
- <dt>Small
- <dd>Small pieces of raw data can be treated as meta data and
- stored in the object header. This will be achieved by storing
- the raw data in the object header with message 0x0006.
- Compression and striping are not supported in this case.
-
- <dt>Complete Large
- <dd>The library should be able to store large arrays
- contiguously in the file provided the user knows the final
- array size a priori. The array can then be read/written in a
- single I/O request. This is accomplished by describing the
- storage with object header message 0x0005. Compression and
- striping are not supported in this case.
-
- <dt>Sparse Large
- <dd>A large sparse raw data array should be stored in a manner
- that is space-efficient but one in which any element can still
- be accessed in a reasonable amount of time. Implementation
- details are below.
-
- <dt>Dynamic Size
- <dd>One often doesn't have prior knowledge of the size of an
- array. It would be nice to allow arrays to grow dynamically in
- any dimension. It might also be nice to allow the array to
- grow in the negative dimension directions if convenient to
- implement. Implementation details are below.
-
- <dt>Subslab Access
- <dd>Some multi-dimensional arrays are almost always accessed by
- subslabs. For instance, a 2-d array of pixels might always be
- accessed as smaller 1k-by-1k 2-d arrays always aligned on 1k
- index values. We should be able to store the array in such a
- way that striding though the entire array is not necessary.
- Subslab access might also be useful with compression
- algorithms where each storage slab can be compressed
- independently of the others. Implementation details are below.
-
- <dt>Compressed
- <dd>Various compression algorithms can be applied to the entire
- array. We're not planning to support separate algorithms (or a
- single algorithm with separate parameters) for each chunk
- although it would be possible to implement that in a manner
- similar to the way striping across files is
- implemented.
-
- <dt>Striped Across Files
- <dd>The array access functions should support arrays stored
- discontiguously across a set of files.
- </dl>
-
- <h1>Implementation of Indexed Storage</h1>
-
- <p>The Sparse Large, Dynamic Size, and Subslab Access methods
- share so much code that they can be described with a single
- message. The new Indexed Storage Message (<code>0x0008</code>)
- will replace the old Chunked Object (<code>0x0009</code>) and
- Sparse Object (<code>0x000A</code>) Messages.
-
- <p>
- <center>
- <table border cellpadding=4 width="60%">
- <caption align=bottom>
- <b>The Format of the Indexed Storage Message</b>
- </caption>
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Address of B-tree<br><br></td>
- </tr>
- <tr align=center>
- <td>Number of Dimensions</td>
- <td>Reserved</td>
- <td>Reserved</td>
- <td>Reserved</td>
- </tr>
- <tr align=center>
- <td colspan=4>Reserved (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Alignment for Dimension 0 (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Alignment for Dimension 1 (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
- <tr align=center>
- <td colspan=4>Alignment for Dimension N (4 bytes)</td>
- </tr>
- </table>
- </center>
-
- <p>The alignment fields indicate the alignment in logical space to
- use when allocating new storage areas on disk. For instance,
- writing every other element of a 100-element one-dimensional
- array (using one HDF5 I/O partial write operation per element)
- that has unit storage alignment would result in 50
- single-element, discontiguous storage segments. However, using
- an alignment of 25 would result in only four discontiguous
- segments. The size of the message varies with the number of
- dimensions.
-
- <p>A B-tree is used to point to the discontiguous portions of
- storage which has been allocated for the object. All keys of a
- particular B-tree are the same size and are a function of the
- number of dimensions. It is therefore not possible to change the
- dimensionality of an indexed storage array after its B-tree is
- created.
-
- <p>
- <center>
- <table border cellpadding=4 width="60%">
- <caption align=bottom>
- <b>The Format of a B-Tree Key</b>
- </caption>
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4>External File Number or Zero (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Chunk Offset in Dimension 0 (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Chunk Offset in Dimension 1 (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
- <tr align=center>
- <td colspan=4>Chunk Offset in Dimension N (4 bytes)</td>
- </tr>
- </table>
- </center>
-
- <p>The keys within a B-tree obey an ordering based on the chunk
- offsets. If the offsets in dimension-0 are equal, then
- dimension-1 is used, etc. The External File Number field
- contains a 1-origin offset into the External File List message
- which contains the name of the external file in which that chunk
- is stored.
-
- <h1>Implementation of Striping</h1>
-
- <p>The indexed storage will support arbitrary striping at the
- chunk level; each chunk can be stored in any file. This is
- accomplished by using the External File Number field of an
- indexed storage B-tree key as a 1-origin offset into an External
- File List Message (0x0009) which takes the form:
-
- <p>
- <center>
- <table border cellpadding=4 width="60%">
- <caption align=bottom>
- <b>The Format of the External File List Message</b>
- </caption>
- <tr align=center>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- <th width="25%">byte</th>
- </tr>
-
- <tr align=center>
- <td colspan=4><br>Name Heap Address<br><br></td>
- </tr>
- <tr align=center>
- <td colspan=4>Number of Slots Allocated (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Number of File Names (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Byte Offset of Name 1 in Heap (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>Byte Offset of Name 2 in Heap (4 bytes)</td>
- </tr>
- <tr align=center>
- <td colspan=4>...</td>
- </tr>
- <tr align=center>
- <td colspan=4><br>Unused Slot(s)<br><br></td>
- </tr>
- </table>
- </center>
-
- <p>Each indexed storage array that has all or part of its data
- stored in external files will contain a single external file
- list message. The size of the messages is determined when the
- message is created, but it may be possible to enlarge the
- message on demand by moving it. At this time, it's not possible
- for multiple arrays to share a single external file list
- message.
-
- <dl>
- <dt><code>
- H5O_efl_t *H5O_efl_new (H5G_entry_t *object, intn
- nslots_hint, intn heap_size_hint)
- </code>
- <dd>Adds a new, empty external file list message to an object
- header and returns a pointer to that message. The message
- acts as a cache for file descriptors of external files that
- are open.
-
- <p><dt><code>
- intn H5O_efl_index (H5O_efl_t *efl, const char *filename)
- </code>
- <dd>Gets the external file index number for a particular file name.
- If the name isn't in the external file list then it's added to
- the H5O_efl_t struct and immediately written to the object
- header to which the external file list message belongs. Name
- comparison is textual. Each name should be relative to the
- directory which contains the HDF5 file.
-
- <p><dt><code>
- H5F_low_t *H5O_efl_open (H5O_efl_t *efl, intn index, uintn mode)
- </code>
- <dd>Gets a low-level file descriptor for an external file. The
- external file list caches file descriptors because we might
- have many more external files than there are file descriptors
- available to this process. The caller should not close this file.
-
- <p><dt><code>
- herr_t H5O_efl_release (H5O_efl_t *efl)
- </code>
- <dd>Releases an external file list, closes all files
- associated with that list, and if the list has been modified
- since the call to <code>H5O_efl_new</code> flushes the message
- to disk.
- </dl>
-
- <hr>
- <address><a href="mailto:robb@arborea.spizella.com">Robb Matzke</a></address>
-<!-- Created: Fri Oct 3 09:52:32 EST 1997 -->
-<!-- hhmts start -->
-Last modified: Tue Nov 25 12:36:50 EST 1997
-<!-- hhmts end -->
- </body>
-</html>
diff --git a/doc/html/TechNotes/ReservedFileSpace.html b/doc/html/TechNotes/ReservedFileSpace.html
deleted file mode 100644
index 22e3614..0000000
--- a/doc/html/TechNotes/ReservedFileSpace.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<html>
- <head>
- <title>Reserved File Address Space</title>
- </head>
-
- <body>
- <hl>Reserved File Address Space</hl>
-
- <p>HDF5 files use 8-byte addresses by default, but users can change this to 2, 4, or even 16 bytes. This means that it is possible to have files that only address 64 KB of space, and thus that HDF must handle the case of files that have enough space on disk but not enough internal address space to be written.</p>
-
- <p>Thus, every time space is allocated in a file, HDF needs to check that this allocation is within the file’s address space. If not, HDF should output an error and ensure that all the data currently in the file (everything that is still addressable) is successfully written to disk.</p>
-
- <p>Unfortunately, some structures are stored in memory and do not allocate space for themselves until the file is actually flushed to disk (object headers and the local heap). This is good for efficiency, since these structures can grow without creating the fragmentation that would result from frequent allocation and deallocation, but means that if the library runs out of addressable space while allocating memory, these structures will not be present in the file. Without them, HDF5 does not know how to parse the data in the file, rendering it unreadable.</p>
-
- <p>Thus, HDF keeps track of the space “reserved for allocation” in the file (H5FD_t struct). When a function tries to allocate space in the file, it first checks that the allocation would not overflow the address space, taking the reserved space into account. When object headers or the heap finally allocate the space they have reserved, they free the reserved space before allocating file space.</p>
-
- <p>A given object header is only flushed to disk once, but the heap can be flushed to disk multiple times over the life of the file and will require contiguous space every time. To handle this, the heap keeps track of how much space it has reserved. This allows it to reserve space only when it grows (when it is dirty and needs to be re-written to disk).</p>
-
- <p>For instance, if the heap is flushed to disk, it frees its reserved space. If new data is inserted into the heap in memory, the heap may need to flush to disk again in a new, larger section of memory. Thus, not only does it reserve space in the file for this new data, but also for all of the previously-existing data in the heap to be re-written. The next insert, however, will only need to reserve space for its new data, since the rest of the heap already has space reserved for it.</p>
-
- <p>Potential issues:
- <ol>
- <li>This system does not take into accout deleted space. Deleted space can still be allocated as usual, but "reserved" space is always taken off the end of a file. This means that a file that was filled to capacity but then had a significant number of objects deleted will still throw errors if more data is written. This occurs because the file's free space is in the middle of the file, not at the end. A more complete space-reservation system would test if the reserved data can fit into the file's free list, but this would be significantly more complicated to implement.</li>
-
- <li>HDF5 currently claims to support 16-byte addresses, but a number of platforms do not support 16-byte integers, so addresses of this size cannot be represented in memory. This solution does not attempt to address this issue.</li>
- </ol>
- </p>
- </body>
-</html>
diff --git a/doc/html/TechNotes/SWControls.html b/doc/html/TechNotes/SWControls.html
deleted file mode 100755
index 8dac1ce..0000000
--- a/doc/html/TechNotes/SWControls.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<HTML>
-<HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
-<META NAME="Generator" CONTENT="Microsoft Word 97">
-<TITLE>HDF5 Software Controls</TITLE>
-<META NAME="Template" CONTENT="E:\Program Files\Microsoft Office\Office\html.dot">
-</HEAD>
-
-<BODY LINK="#0000ff" VLINK="#800080">
-
-<H1>HDF5 Software Controls</H1>
-
-<P>
-<I>(Work in progress draft)</i>
-</P>
-
-<P>
-A descriptions knobs and turns such as environment variables and settings
-that controls the functionality of HDF5 libraries and tools. This is
-intended for HDF5 libraries and tools developers. HDF5 application users
-may consult the document <A HREF="../Debugging.html"><I>A guide to
-debugging HDF5 API calls</I></A>.
-</P>
-
-<P>
-<H2><FONT FACE="Arial">Library Building Controls</FONT></H2>
-</P>
-
-<P>
-<H3><FONT FACE="Arial">Environment variables</FONT></H3>
-</P>
-
-<DL>
- <DT><B>CC</B></DT>
- <DD><I>Used by configure.</I> Override the default C compiler.</DD>
- <DT><B>LIBS</B></DT>
- <DD><I>Used by configure.</I> Add more libraries to be used.</DD>
- <DT><B>NP</B></DT>
- <DD>Number of MPI-processes to invoke for testing. Default to 2.</DD>
- <DT><B>HDF5_NOCLEANUP</B></DT>
- <DD><I>Used by most test programs.</I> When set, temporary files
- created during tests are NOT removed. Default is to remove them
- by the end of each test. Note that the variable value does not
- matter. E.g., the values of "yes", "no" and "" all have the same
- effect, that is, NO cleanup.</DD>
- <DT><B>H5FD_mpio_Debug</B></DT>
- <DD><I>Used by the MPIO file driver for debugging.</I> Need to have
- H5FDmpio_DEBUG macro defined during compiling. Should be set to a
- string to turn on various tracing. Valid values (cases matter)
- are:
- <DL>
- <DT>t</DT>
- <DD>Trace all routine</DD>
- <DT>r</DT>
- <DD>Trace read routines</DD>
- <DT>w</DT>
- <DD>Trace write routines</DD>
- <DT>c</DT>
- <DD>Show result of MPI_Get_count</DD>
- </DL>
- </DD>
- <DT><B>HDF5_MPI_OPT_TYPES</B></DT>
- <DD><I>Used by the MPIO file driver to control the use of the optimized
- mpi input/output routine.</I> 0 turns it off, 1 turns it on (uses
- optimized code if it can).</DD>
-</DL>
-
-<P>
-<H3><FONT FACE="Arial">Compile Macros</FONT></H3>
-</P>
-
-<DL>
- <DT><B>H5FDmpio_DEBUG</B></DT>
- <DD><I>Compile macro.</I> Compile in the MPIO file driver related debugging
- statements. Defined if macro H5F_DEBUG is defined.</DD>
- <DT><B>H5FD_mpio_Debug</B></DT>
- <DD>Compile in debugging used by the MPIO file driver. Need to have
- H5FDmpio_DEBUG macro defined during compiling. Should be set to a
- string to turn on the tracing. See environment variable
- H5FD_mpio_Debug for valid values.</DD>
-</DL>
-
-<P>
-<HR>
-</P>
-
-<ADDRESS>
-<A HREF="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</A>
-</ADDRESS>
-
-<P><!-- Created: Fri Oct 3 11:52:31 EST 1997 --><!-- hhmts start -->Last
-modified: December 11, 2000 <!-- hhmts end --></P>
-
-</BODY>
-</HTML>
diff --git a/doc/html/TechNotes/SymbolTables.html b/doc/html/TechNotes/SymbolTables.html
deleted file mode 100644
index 05ee538..0000000
--- a/doc/html/TechNotes/SymbolTables.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<html>
-<body>
-
-<h1>Symbol Table Caching Issues</h1>
-
-<pre>
-
-A number of issues involving caching of object header messages in
-symbol table entries must be resolved.
-
-What is the motivation for these changes?
-
- If we make objects completely independent of object name it allows
- us to refer to one object by multiple names (a concept called hard
- links in Unix file systems), which in turn provides an easy way to
- share data between datasets.
-
- Every object in an HDF5 file has a unique, constant object header
- address which serves as a handle (or OID) for the object. The
- object header contains messages which describe the object.
-
- HDF5 allows some of the object header messages to be cached in
- symbol table entries so that the object header doesn't have to be
- read from disk. For instance, an entry for a directory caches the
- directory disk addresses required to access that directory, so the
- object header for that directory is seldom read.
-
- If an object has multiple names (that is, a link count greater than
- one), then it has multiple symbol table entries which point to it.
- All symbol table entries must agree on header messages. The
- current mechanism is to turn off the caching of header messages in
- symbol table entries when the header link count is more than one,
- and to allow caching once the link count returns to one.
-
- However, in the current implementation, a package is allowed to
- copy a symbol table entry and use it as a private cache for the
- object header. This doesn't work for a number of reasons (all but
- one require a `delete symbol entry' operation).
-
- 1. If two packages hold copies of the same symbol table entry,
- they don't notify each other of changes to the symbol table
- entry. Eventually, one package reads a cached message and
- gets the wrong value because the other package changed the
- message in the object header.
-
- 2. If one package holds a copy of the symbol table entry and
- some other part of HDF5 removes the object and replaces it
- with some other object, then the original package will
- continue to access the non-existent object using the new
- object header.
-
- 3. If one package holds a copy of the symbol table entry and
- some other part of HDF5 (re)moves the directory which
- contains the object, then the package will be unable to
- update the symbol table entry with the new cached
- data. Packages that refer to the object by the new name will
- use old cached data.
-
-
-The basic problem is that there may be multiple copies of the object
-symbol table entry floating around in the code when there should
-really be at most one per hard link.
-
- Level 0: A copy may exist on disk as part of a symbol table node, which
- is a small 1d array of symbol table entries.
-
- Level 1: A copy may be cached in memory as part of a symbol table node
- in the H5Gnode.c file by the H5AC layer.
-
- Level 2a: Another package may be holding a copy so it can perform
- fast lookup of any header messages that might be cached in
- the symbol table entry. It can't point directly to the
- cached symbol table node because that node can dissappear
- at any time.
-
- Level 2b: Packages may hold more than one copy of a symbol table
- entry. For instance, if H5D_open() is called twice for
- the same name, then two copies of the symbol table entry
- for the dataset exist in the H5D package.
-
-How can level 2a and 2b be combined?
-
- If package data structures contained pointers to symbol table
- entries instead of copies of symbol table entries and if H5G
- allocated one symbol table entry per hard link, then it's trivial
- for Level 2a and 2b to benefit from one another's actions since
- they share the same cache.
-
-How does this work conceptually?
-
- Level 2a and 2b must notify Level 1 of their intent to use (or stop
- using) a symbol table entry to access an object header. The
- notification of the intent to access an object header is called
- `opening' the object and releasing the access is `closing' the
- object.
-
- Opening an object requires an object name which is used to locate
- the symbol table entry to use for caching of object header
- messages. The return value is a handle for the object. Figure 1
- shows the state after Dataset1 opens Object with a name that maps
- through Entry1. The open request created a copy of Entry1 called
- Shadow1 which exists even if SymNode1 is preempted from the H5AC
- layer.
-
- ______
- Object / \
- SymNode1 +--------+ |
- +--------+ _____\ | Header | |
- | | / / +--------+ |
- +--------+ +---------+ \______/
- | Entry1 | | Shadow1 | /____
- +--------+ +---------+ \ \
- : : \
- +--------+ +----------+
- | Dataset1 |
- +----------+
- FIGURE 1
-
-
-
- The SymNode1 can appear and disappear from the H5AC layer at any
- time without affecting the Object Header data cached in the Shadow.
- The rules are:
-
- * If the SymNode1 is present and is about to disappear and the
- Shadow1 dirty bit is set, then Shadow1 is copied over Entry1, the
- Entry1 dirty bit is set, and the Shadow1 dirty bit is cleared.
-
- * If something requests a copy of Entry1 (for a read-only peek
- request), and Shadow1 exists, then a copy (not pointer) of Shadow1
- is returned instead.
-
- * Entry1 cannot be deleted while Shadow1 exists.
-
- * Entry1 cannot change directly if Shadow1 exists since this means
- that some other package has opened the object and may be modifying
- it. I haven't decided if it's useful to ever change Entry1
- directly (except of course within the H5G layer itself).
-
- * Shadow1 is created when Dataset1 `opens' the object through
- Entry1. Dataset1 is given a pointer to Shadow1 and Shadow1's
- reference count is incremented.
-
- * When Dataset1 `closes' the Object the Shadow1 reference count is
- decremented. When the reference count reaches zero, if the
- Shadow1 dirty bit is set, then Shadow1's contents are copied to
- Entry1, and the Entry1 dirty bit is set. Shadow1 is then deleted
- if its reference count is zero. This may require reading SymNode1
- back into the H5AC layer.
-
-What happens when another Dataset opens the Object through Entry1?
-
- If the current state is represented by the top part of Figure 2,
- then Dataset2 will be given a pointer to Shadow1 and the Shadow1
- reference count will be incremented to two. The Object header link
- count remains at one so Object Header messages continue to be cached
- by Shadow1. Dataset1 and Dataset2 benefit from one another
- actions. The resulting state is represented by Figure 2.
-
- _____
- SymNode1 Object / \
- +--------+ _____\ +--------+ |
- | | / / | Header | |
- +--------+ +---------+ +--------+ |
- | Entry1 | | Shadow1 | /____ \_____/
- +--------+ +---------+ \ \
- : : _ \
- +--------+ |\ +----------+
- \ | Dataset1 |
- \________ +----------+
- \ \
- +----------+ |
- | Dataset2 | |- New Dataset
- +----------+ |
- /
- FIGURE 2
-
-
-What happens when the link count for Object increases while Dataset
-has the Object open?
-
- SymNode2
- +--------+
- SymNode1 Object | |
- +--------+ ____\ +--------+ /______ +--------+
- | | / / | header | \ `| Entry2 |
- +--------+ +---------+ +--------+ +--------+
- | Entry1 | | Shadow1 | /____ : :
- +--------+ +---------+ \ \ +--------+
- : : \
- +--------+ +----------+ \________________/
- | Dataset1 | |
- +----------+ New Link
-
- FIGURE 3
-
- The current state is represented by the left part of Figure 3. To
- create a new link the Object Header had to be located by traversing
- through Entry1/Shadow1. On the way through, the Entry1/Shadow1
- cache is invalidated and the Object Header link count is
- incremented. Entry2 is then added to SymNode2.
-
- Since the Object Header link count is greater than one, Object
- header data will not be cached in Entry1/Shadow1.
-
- If the initial state had been all of Figure 3 and a third link is
- being added and Object is open by Entry1 and Entry2, then creation
- of the third link will invalidate the cache in Entry1 or Entry2. It
- doesn't matter which since both caches are already invalidated
- anyway.
-
-What happens if another Dataset opens the same object by another name?
-
- If the current state is represented by Figure 3, then a Shadow2 is
- created and associated with Entry2. However, since the Object
- Header link count is more than one, nothing gets cached in Shadow2
- (or Shadow1).
-
-What happens if the link count decreases?
-
- If the current state is represented by all of Figure 3 then it isn't
- possible to delete Entry1 because the object is currently open
- through that entry. Therefore, the link count must have
- decreased because Entry2 was removed.
-
- As Dataset1 reads/writes messages in the Object header they will
- begin to be cached in Shadow1 again because the Object header link
- count is one.
-
-What happens if the object is removed while it's open?
-
- That operation is not allowed.
-
-What happens if the directory containing the object is deleted?
-
- That operation is not allowed since deleting the directory requires
- that the directory be empty. The directory cannot be emptied
- because the open object cannot be removed from the directory.
-
-What happens if the object is moved?
-
- Moving an object is a process consisting of creating a new
- hard-link with the new name and then deleting the old name.
- This will fail if the object is open.
-
-What happens if the directory containing the entry is moved?
-
- The entry and the shadow still exist and are associated with one
- another.
-
-What if a file is flushed or closed when objects are open?
-
- Flushing a symbol table with open objects writes correct information
- to the file since Shadow is copied to Entry before the table is
- flushed.
-
- Closing a file with open objects will create a valid file but will
- return failure.
-
-How is the Shadow associated with the Entry?
-
- A symbol table is composed of one or more symbol nodes. A node is a
- small 1-d array of symbol table entries. The entries can move
- around within a node and from node-to-node as entries are added or
- removed from the symbol table and nodes can move around within a
- symbol table, being created and destroyed as necessary.
-
- Since a symbol table has an object header with a unique and constant
- file offset, and since H5G contains code to efficiently locate a
- symbol table entry given it's name, we use these two values as a key
- within a shadow to associate the shadow with the symbol table
- entry.
-
- struct H5G_shadow_t {
- haddr_t stab_addr; /*symbol table header address*/
- char *name; /*entry name wrt symbol table*/
- hbool_t dirty; /*out-of-date wrt stab entry?*/
- H5G_entry_t ent; /*my copy of stab entry */
- H5G_entry_t *main; /*the level 1 entry or null */
- H5G_shadow_t *next, *prev; /*other shadows for this stab*/
- };
-
- The set of shadows will be organized in a hash table of linked
- lists. Each linked list will contain the shadows associated with a
- particular symbol table header address and the list will be sorted
- lexicographically.
-
- Also, each Entry will have a pointer to the corresponding Shadow or
- null if there is no shadow.
-
- When a symbol table node is loaded into the main cache, we look up
- the linked list of shadows in the shadow hash table based on the
- address of the symbol table object header. We then traverse that
- list matching shadows with symbol table entries.
-
- We assume that opening/closing objects will be a relatively
- infrequent event compared with loading/flushing symbol table
- nodes. Therefore, if we keep the linked list of shadows sorted it
- costs O(N) to open and close objects where N is the number of open
- objects in that symbol table (instead of O(1)) but it costs only
- O(N) to load a symbol table node (instead of O(N^2)).
-
-What about the root symbol entry?
-
- Level 1 storage for the root symbol entry is always available since
- it's stored in the hdf5_file_t struct instead of a symbol table
- node. However, the contents of that entry can move from the file
- handle to a symbol table node by H5G_mkroot(). Therefore, if the
- root object is opened, we keep a shadow entry for it whose
- `stab_addr' field is zero and whose `name' is null.
-
- For this reason, the root object should always be read through the
- H5G interface.
-
-One more key invariant: The H5O_STAB message in a symbol table header
-never changes. This allows symbol table entries to cache the H5O_STAB
-message for the symbol table to which it points without worrying about
-whether the cache will ever be invalidated.
-
-
-===========================================
-Last Modified: 8 July 1998 (technical content)
-Last Modified: 28 April 2000 (included in HDF5 Technical Notes)
-HDF Help Desk: hdfhelp@ncsa.uiuc.edu
-
-</pre>
-
-</body>
-</html>
diff --git a/doc/html/TechNotes/TestReview.html b/doc/html/TechNotes/TestReview.html
deleted file mode 100644
index 410f662..0000000
--- a/doc/html/TechNotes/TestReview.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-<HEAD>
- <TITLE>State of API Test Review for HDF5</TITLE>
- <META http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <META name="author" content="Quincey Koziol">
-</HEAD>
-<body text="#000000" bgcolor="#FFFFFF">
-<STYLE type="text/css">
-OL.loweralpha { list-style-type: lower-alpha }
-OL.upperroman { list-style-type: upper-roman }
-</STYLE>
-
-<CENTER><H1>State of API Testing Review for HDF5</H1></CENTER>
-
-<OL class="upperroman">
-
-<LI><H3><U>Purpose:</U></H3>
-<P>This document describes the current state of the API test review. Currently,
-the tests for each API function are being reviewed on an individual basis and
-each API's tests are being described and improvements made.
-</P>
-
-<LI><H3><U>APIs Reviewed:</U></H3>
-
-<TABLE border=1 cellpadding=5>
-<TR>
-<TH>API Function</TH>
-<TH>Date Last Reviewed</TH>
-<TH>Status</TH>
-</TR>
-
-<TR>
-<TD><A href="TestReview/H5Dget_offset.html">H5Dget_offset</A>
-</TD>
-<TD>Tuesday, November 11th, 2002
-</TD>
-<TD><FONT color="orange">Tests need to be updated</FONT>
-</TD>
-</TR>
-
-<TR>
-<TD><A href="TestReview/H5Tget_native_type.html">H5Tget_native_type</A>
-</TD>
-<TD>Tuesday, November 11th, 2002
-</TD>
-<TD><FONT color="orange">Tests need to be updated</FONT>
-</TD>
-</TR>
-
-</TABLE>
-
-
-</OL>
-
-</BODY>
-</HTML>
diff --git a/doc/html/TechNotes/TestReview/H5Dget_offset.html b/doc/html/TechNotes/TestReview/H5Dget_offset.html
deleted file mode 100644
index 0056f00..0000000
--- a/doc/html/TechNotes/TestReview/H5Dget_offset.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-<HEAD>
- <TITLE>H5Dget_offset Test Review</TITLE>
- <META http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <META name="author" content="Quincey Koziol">
-</HEAD>
-<body text="#000000" bgcolor="#FFFFFF">
-<STYLE type="text/css">
-OL.loweralpha { list-style-type: lower-alpha }
-OL.upperroman { list-style-type: upper-roman }
-</STYLE>
-
-<CENTER><H1>H5Dget_offset Test Review</H1></CENTER>
-
-<OL class="upperroman">
-
-<LI><H3><U>Purpose:</U></H3>
-<P>This document describes the API test review results for <a href="../../RM_H5D.html#Dataset-GetOffset">H5Dget_offset</a>().
-</P>
-
-<LI><H3><U>Serial Review:</U></H3>
-<TABLE border="1">
-<TR>
-<TH>Test case
-</TH>
-
-<TH>Test source file
-</TH>
-
-<TH>Test method
-</TH>
-
-<TH>Expected test results
-</TH>
-
-<TH>Notes
-</TH>
-
-<TR>
-<TD>Chunked dataset
-</TD>
-
-<TD>dsets.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create chunked dataset
-<LI>Query dataset offset
-</OL>
-</TD>
-
-<TD>FAIL
-</TD>
-
-<TD>
-<P>Because dataset is stored in chunks that are indexed by a B-tree, there is
-no single piece of data to query the offset of.
-</P>
-<P>It may be possible in the future to
-enhance this function by querying the offset of a particular chunk (or chunks),
-but that has limited use because chunks could be compressed, etc. with an I/O
-filter.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Compact dataset
-</TD>
-
-<TD>dsets.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create chunked dataset
-<LI>Query dataset offset
-</OL>
-</TD>
-
-<TD>FAIL
-</TD>
-
-<TD>
-<P>Because dataset is stored in the object header of the dataset, there is
-no separate piece of data to query the offset of.
-</P>
-<P>It may be possible in the future to get the offset of the data in the object
-header, but this is problematic due to the fact that the messages in the object
-header can get relocated in the file when changes (like adding attributes, etc.)
-are made to the dataset, invalidating the address given to the user.
-filter.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Contiguous dataset, [user block size] == 0, not external
-</TD>
-
-<TD>dsets.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create file with 0 sized user-block (the default)
-<LI>Create contigous dataset
-<LI>Query dataset offset
-</OL>
-</TD>
-
-<TD>
-<P>Succeed in getting the proper address and be able to verify
-that the data at that address in the file is what was written out.
-</P>
-<P>When data storage allocation is "late" (the default), querying the offset
-should fail if performed before data is written to the dataset.
-</P>
-</TD>
-
-<TD>Needs additional test to verify that the data written out is located at the
-correct offset in the file.
-</TD>
-
-</TR>
-
-<TR>
-<TD>Contiguous dataset, [user block size] != 0, not external
-</TD>
-
-<TD>dsets.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create file with non-0 sized user-block
-<LI>Create contigous dataset
-<LI>Query dataset offset
-</OL>
-</TD>
-
-<TD>
-<P>Succeed in getting the proper address and be able to verify
-that the data at that address in the file is what was written out.
-</P>
-<P>When data storage allocation is "late" (the default), querying the offset
-should fail if performed before data is written to the dataset.
-</P>
-</TD>
-
-<TD>Needs test for this case.
-</TD>
-
-</TR>
-
-<TR>
-<TD>Contiguous dataset, [user block size] == 0, external data storage
-</TD>
-
-<TD>external.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create contigous dataset with external storage
-<LI>Query dataset offset
-</OL>
-</TD>
-
-<TD>FAIL
-</TD>
-
-<TD>
-<P>In theory, it's easy to return the offset of the data in the external file,
-but this wasn't done because it would be too easy for users to assume that the
-offset returned was in the HDF5 file instead of the external file.
-</P>
-</TD>
-
-</TR>
-
-</TABLE>
-<BR>
-
-<LI><H3><U>Parallel Review:</U></H3>
-<P>The H5Dget_offset() function is not tested in parallel. Currently, there
-does not appear to be a need for this.
-</P>
-
-
-</OL>
-
-</BODY>
-</HTML>
-
diff --git a/doc/html/TechNotes/TestReview/H5Tget_native_type.html b/doc/html/TechNotes/TestReview/H5Tget_native_type.html
deleted file mode 100644
index 1c6409d..0000000
--- a/doc/html/TechNotes/TestReview/H5Tget_native_type.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-<HEAD>
- <TITLE>H5Dget_native_type Test Review</TITLE>
- <META http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <META name="author" content="Quincey Koziol">
-</HEAD>
-<body text="#000000" bgcolor="#FFFFFF">
-<STYLE type="text/css">
-OL.loweralpha { list-style-type: lower-alpha }
-OL.upperroman { list-style-type: upper-roman }
-</STYLE>
-
-<CENTER><H1>H5Dget_native_type Test Review</H1></CENTER>
-
-<OL class="upperroman">
-
-<LI><H3><U>Purpose:</U></H3>
-<P>This document describes the API test review results for <a href="../../RM_H5T.html#Datatype-GetNativeType">H5Dget_native_type</a>().
-</P>
-
-<LI><H3><U>Serial Review:</U></H3>
-<TABLE border="1">
-<TR>
-<TH>Test case
-</TH>
-
-<TH>Test source file
-</TH>
-
-<TH>Test method
-</TH>
-
-<TH>Expected test results
-</TH>
-
-<TH>Notes
-</TH>
-
-<TR>
-<TD>Native int datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create dataset with I32BE datatype
-<LI>Query dataset's datatype
-<LI>Create native datatype from dataset datatype
-<LI>Compare order, class & size of native datatype to known results
-</OL>
-</TD>
-
-<TD>Check that type's size, order and class are correct.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P>It would be convenient to have a function in the test module for choosing
-the correct atomic datatype based on the particular platform settings. This
-should use the H5_SIZEOF_<foo> macros.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Native long long datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create dataset with I64LE datatype
-<LI>Query dataset's datatype
-<LI>Create native datatype from dataset datatype
-<LI>Compare order, class & size of native datatype to known results
-</OL>
-</TD>
-
-<TD>Check that type's size, order and class are correct.
-</TD>
-
-<TD>
-<P>Data is NOT written & read back in for this test.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Native char datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create dataset with I8LE datatype
-<LI>Query dataset's datatype
-<LI>Create native datatype from dataset datatype
-<LI>Compare order, class & size of native datatype to known results
-</OL>
-</TD>
-
-<TD>Check that type's size, order and class are correct.
-</TD>
-
-<TD>
-<P>Data is NOT written & read back in for this test.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Native float datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create dataset with F32BE datatype
-<LI>Query dataset's datatype
-<LI>Create native datatype from dataset datatype
-<LI>Compare order, class & size of native datatype to known results
-</OL>
-</TD>
-
-<TD>Check that type's size, order and class are correct.
-</TD>
-
-<TD>
-<P>Data is NOT written & read back in for this test.
-</P>
-<P>Need test for native double datatype (stored as 32-bit floating-point
-datatype in file). This will probably require using an "epsilon" if the data
-is compared for this test.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Compound datatype with atomic fields
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create datatype describing native (unpacked) struct in memory
-<LI>Create datatype describing packed struct for disk
-<LI>Create dataset with "packed" compound datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the native,
-unpacked datatype.
-</OL>
-</TD>
-
-<TD>Check that native and unpacked datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Compound datatype with one compound field
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create datatype describing nested native (unpacked) structs in memory
-<LI>Create datatype describing nested packed structs for disk
-<LI>Create dataset with "packed" compound datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the native,
-unpacked datatype.
-</OL>
-</TD>
-
-<TD>Check that native and unpacked datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P>Could use test for compound datatype with multiple compound fields.
-</P>
-<P>Could use test for 3 or more nested deep compound datatype.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Enum datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create enum datatype
-<LI>Create dataset with enum datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-enum datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Array datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create array datatype
-<LI>Create dataset with array datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-array datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P><EM>This is not tested currently.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Array of compound datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create array of compound datatype
-<LI>Create dataset with array of compound datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-array of compound datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Compound datatype with array field
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create compound datatype with array field
-<LI>Create dataset with compound datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-compound datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P><EM>This is not tested currently.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>VL datatype with atomic base type
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create VL datatype
-<LI>Create dataset with VL datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-VL datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P><EM>Combinations with VL datatypes in other composite types and with other
-datatypes for the base type of the VL datatype are not tested.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>VL string datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create VL string datatype
-<LI>Create dataset with VL string datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-VL string datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P><EM>Combinations with VL string datatypes in composite types
-are not tested.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Reference datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create reference datatype
-<LI>Create dataset with reference datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-reference datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P><EM>Combinations with reference datatypes in composite types
-are not tested.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Opaque datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create opaque datatype
-<LI>Create dataset with opaque datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-opaque datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P><EM>Combinations with opaque datatypes in composite types
-are not tested.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Bitfield datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create bitfield datatype
-<LI>Create dataset with bitfield datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-bitfield datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P>Data is written & read back in for this test.
-</P>
-<P><EM>Combinations with bitfield datatypes in composite types
-are not tested.</EM>
-</P>
-</TD>
-
-</TR>
-
-<TR>
-<TD>Time datatype
-</TD>
-
-<TD>native.c
-</TD>
-
-<TD>
-<OL>
-<LI>Create time datatype
-<LI>Create dataset with time datatype
-<LI>Query dataset's datatype
-<LI>Get native datatype from dataset's datatype
-<LI>Use H5Tequal to verify that the native datatype is the same as the original
-time datatype.
-</OL>
-</TD>
-
-<TD>Check that native and original datatypes are equal.
-</TD>
-
-<TD>
-<P><EM>This is not tested currently.</EM>
-</P>
-</TD>
-
-</TR>
-
-</TABLE>
-<BR>
-
-<LI><H3><U>Parallel Review:</U></H3>
-<P>The H5Dget_native_type() function is not tested in parallel. Currently,
-there does not appear to be a need for this.
-</P>
-
-
-</OL>
-
-</BODY>
-</HTML>
-
diff --git a/doc/html/TechNotes/ThreadSafeLibrary.html b/doc/html/TechNotes/ThreadSafeLibrary.html
deleted file mode 100644
index e7fdf11..0000000
--- a/doc/html/TechNotes/ThreadSafeLibrary.html
+++ /dev/null
@@ -1,794 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
- "http://www.w3.org/TR/REC-html40/loose.dtd">
-<html lang="en-US">
-<head>
- <title>Thread Safe Library</title>
-</head>
-
-<body bgcolor=#ffffff>
-
-<center><h1>HDF5 Thread Safe library</h1></center>
-
-<p>
-
-<h1>1. Library header files and conditional compilation</h1>
-
-<p>
-The following code is placed at the beginning of H5private.h:
-</p>
-
-<blockquote>
- <pre>
- #ifdef H5_HAVE_THREADSAFE
- #include &lt;pthread.h&gt;
- #endif
- </pre>
-</blockquote>
-
-<p>
-<code>H5_HAVE_THREADSAFE</code> is defined when the HDF-5 library is
-compiled with the --enable-threadsafe configuration option. In general,
-code for the non-threadsafe version of HDF-5 library are placed within
-the <code>#else</code> part of the conditional compilation. The exception
-to this rule are the changes to the <code>FUNC_ENTER</code> (in
-H5private.h), <code>HRETURN</code> and <code>HRETURN_ERROR</code> (in
-H5Eprivate.h) macros (see section 3.2).
-</p>
-
-
-<h1>2. Global variables/structures</h1>
-
-<h2>2.1 Global library initialization variable</h2>
-
-<p>
-In the threadsafe implementation, the global library initialization
-variable <code>H5_libinit_g</code> is changed to a global structure
-consisting of the variable with its associated lock (locks are explained
-in section 4.1):
-</p>
-
-<blockquote>
- <pre>
- hbool_t H5_libinit_g = FALSE;
- </pre>
-</blockquote>
-
-<p>
-becomes
-</p>
-
-<blockquote>
- <pre>
- H5_api_t H5_g;
- </pre>
-</blockquote>
-
-<p>
-where <code>H5_api_t</code> is
-</p>
-
-<blockquote>
- <pre>
- typedef struct H5_api_struct {
- H5_mutex_t init_lock; /* API entrance mutex */
- hbool_t H5_libinit_g;
- } H5_api_t;
- </pre>
-</blockquote>
-
-<p>
-All former references to <code>H5_libinit_g</code> in the library are now
-made using the macro <code>H5_INIT_GLOBAL</code>. If the threadsafe
-library is to be used, the macro is set to <code>H5_g.H5_libinit_g</code>
-instead.
-</p>
-
-<h2>2.2 Global serialization variable</h2>
-
-<p>
-A new global boolean variable <code>H5_allow_concurrent_g</code> is used
-to determine if multiple threads are allowed to an API call
-simultaneously. This is set to <code>FALSE</code>.
-</p>
-
-<p>
-All APIs that are allowed to do so have their own local variable that
-shadows the global variable and is set to <code>TRUE</code>. In phase 1,
-no such APIs exist.
-</p>
-
-<p>
-It is defined in <code>H5.c</code> as follows:
-</p>
-
-<blockquote>
- <pre>
- hbool_t H5_allow_concurrent_g = FALSE;
- </pre>
-</blockquote>
-
-<h2>2.3 Global thread initialization variable</h2>
-
-<p>
-The global variable <code>H5_first_init_g</code> of type
-<code>pthread_once_t</code> is used to allow only the first thread in the
-application process to call an initialization function using
-<code>pthread_once</code>. All subsequent calls to
-<code>pthread_once</code> by any thread are disregarded.
-</p>
-
-<p>
-The call sets up the mutex in the global structure <code>H5_g</code> (see
-section 3.1) via an initialization function
-<code>H5_first_thread_init</code>. The first thread initialization
-function is described in section 4.2.
-</p>
-
-<p>
-<code>H5_first_init_g</code> is defined in <code>H5.c</code> as follows:
-</p>
-
-<blockquote>
- <pre>
- pthread_once_t H5_first_init_g = PTHREAD_ONCE_INIT;
- </pre>
-</blockquote>
-
-<h2>2.4 Global key for per-thread error stacks</h2>
-
-<p>
-A global pthread-managed key <code>H5_errstk_key_g</code> is used to
-allow pthreads to maintain a separate error stack (of type
-<code>H5E_t</code>) for each thread. This is defined in <code>H5.c</code>
-as:
-</p>
-
-<blockquote>
- <pre>
- pthread_key_t H5_errstk_key_g;
- </pre>
-</blockquote>
-
-<p>
-Error stack management is described in section 4.3.
-</p>
-
-<h2>2.5 Global structure and key for thread cancellation prevention</h2>
-
-<p>
-We need to preserve the thread cancellation status of each thread
-individually by using a key <code>H5_cancel_key_g</code>. The status is
-preserved using a structure (of type <code>H5_cancel_t</code>) which
-maintains the cancellability state of the thread before it entered the
-library and a count (which works very much like the recursive lock
-counter) which keeps track of the number of API calls the thread makes
-within the library.
-</p>
-
-<p>
-The structure is defined in <code>H5private.h</code> as:
-</p>
-
-<blockquote>
- <pre>
- /* cancelability structure */
- typedef struct H5_cancel_struct {
- int previous_state;
- unsigned int cancel_count;
- } H5_cancel_t;
- </pre>
-</blockquote>
-
-<p>
-Thread cancellation is described in section 4.4.
-</p>
-
-
-<h1>3. Changes to Macro expansions</h1>
-
-<h2>3.1 Changes to FUNC_ENTER</h2>
-
-<p>
-The <code>FUNC_ENTER</code> macro is now extended to include macro calls
-to initialize first threads, disable cancellability and wraps a lock
-operation around the checking of the global initialization flag. It
-should be noted that the cancellability should be disabled before
-acquiring the lock on the library. Doing so otherwise would allow the
-possibility that the thread be cancelled just after it has acquired the
-lock on the library and in that scenario, if the cleanup routines are not
-properly set, the library would be permanently locked out.
-</p>
-
-<p>
-The additional macro code and new macro definitions can be found in
-Appendix E.1 to E.5. The changes are made in <code>H5private.h</code>.
-</p>
-
-<h2>3.2 Changes to HRETURN and HRETURN_ERROR</h2>
-
-<p>
-The <code>HRETURN</code> and <code>HRETURN_ERROR</code> macros are the
-counterparts to the <code>FUNC_ENTER</code> macro described in section
-3.1. <code>FUNC_LEAVE</code> makes a macro call to <code>HRETURN</code>,
-so it is also covered here.
-</p>
-
-<p>
-The basic changes to these two macros involve adding macro calls to call
-an unlock operation and re-enable cancellability if necessary. It should
-be noted that the cancellability should be re-enabled only after the
-thread has released the lock to the library. The consequence of doing
-otherwise would be similar to that described in section 3.1.
-</p>
-
-<p>
-The additional macro code and new macro definitions can be found in
-Appendix E.9 to E.9. The changes are made in <code>H5Eprivate.h</code>.
-</p>
-
-<h1>4. Implementation of threadsafe functionality</h1>
-
-<h2>4.1 Recursive Locks</h2>
-
-<p>
-A recursive mutex lock m allows a thread t1 to successfully lock m more
-than once without blocking t1. Another thread t2 will block if t2 tries
-to lock m while t1 holds the lock to m. If t1 makes k lock calls on m,
-then it also needs to make k unlock calls on m before it releases the
-lock.
-</p>
-
-<p>
-Our implementation of recursive locks is built on top of a pthread mutex
-lock (which is not recursive). It makes use of a pthread condition
-variable to have unsuccessful threads wait on the mutex. Waiting threads
-are awaken by a signal from the final unlock call made by the thread
-holding the lock.
-</p>
-
-<p>
-Recursive locks are defined to be the following type
-(<code>H5private.h</code>):
-</p>
-
-<blockquote>
- <pre>
- typedef struct H5_mutex_struct {
- pthread_t owner_thread; /* current lock owner */
- pthread_mutex_t atomic_lock; /* lock for atomicity of new mechanism */
- pthread_cond_t cond_var; /* condition variable */
- unsigned int lock_count;
- } H5_mutex_t;
- </pre>
-</blockquote>
-
-<p>
-Detailed implementation code can be found in Appendix A. The
-implementation changes are made in <code>H5TS.c</code>.
-</p>
-
-<h2>4.2 First thread initialization</h2>
-
-<p>
-Because the mutex lock associated with a recursive lock cannot be
-statically initialized, a mechanism is required to initialize the
-recursive lock associated with <code>H5_g</code> so that it can be used
-for the first time.
-</p>
-
-<p>
-The pthreads library allows this through the pthread_once call which as
-described in section 3.3 allows only the first thread accessing the
-library in an application to initialize <code>H5_g</code>.
-</p>
-
-<p>
-In addition to initializing <code>H5_g</code>, it also initializes the
-key (see section 3.4) for use with per-thread error stacks (see section
-4.3).
-</p>
-
-<p>
-The first thread initialization mechanism is implemented as the function
-call <code>H5_first_thread_init()</code> in <code>H5TS.c</code>. This is
-described in appendix B.
-</p>
-
-<h2>4.3 Per-thread error stack management</h2>
-
-<p>
-Pthreads allows individual threads to access dynamic and persistent
-per-thread data through the use of keys. Each key is associated with
-a table that maps threads to data items. Keys can be initialized by
-<code>pthread_key_create()</code> in pthreads (see sections 3.4 and 4.2).
-Per-thread data items are accessed using a key through the
-<code>pthread_getspecific()</code> and <code>pthread_setspecific()</code>
-calls to read and write to the association table respectively.
-</p>
-
-<p>
-Per-thread error stacks are accessed through the key
-<code>H5_errstk_key_g</code> which is initialized by the first thread
-initialization call (see section 4.2).
-</p>
-
-<p>
-In the non-threadsafe version of the library, there is a global stack
-variable <code>H5E_stack_g[1]</code> which is no longer defined in the
-threadsafe version. At the same time, the macro call to gain access to
-the error stack <code>H5E_get_my_stack</code> is changed from:
-</p>
-
-<blockquote>
- <pre>
- #define H5E_get_my_stack() (H5E_stack_g+0)
- </pre>
-</blockquote>
-
-<p>
-to:
-</p>
-
-<blockquote>
- <pre>
- #define H5E_get_my_stack() H5E_get_stack()
- </pre>
-</blockquote>
-
-<p>
-where <code>H5E_get_stack()</code> is a surrogate function that does the
-following operations:
-</p>
-
-<ol>
- <li>if a thread is attempting to get an error stack for the first
- time, the error stack is dynamically allocated for the thread and
- associated with <code>H5_errstk_key_g</code> using
- <code>pthread_setspecific()</code>. The way we detect if it is the
- first time is through <code>pthread_getspecific()</code> which
- returns <code>NULL</code> if no previous value is associated with
- the thread using the key.</li>
-
- <li>if <code>pthread_getspecific()</code> returns a non-null value,
- then that is the pointer to the error stack associated with the
- thread and the stack can be used as usual.</li>
-</ol>
-
-<p>
-A final change to the error reporting routines is as follows; the current
-implementation reports errors to always be detected at thread 0. In the
-threadsafe implementation, this is changed to report the number returned
-by a call to <code>pthread_self()</code>.
-</p>
-
-<p>
-The change in code (reflected in <code>H5Eprint</code> of file
-<code>H5E.c</code>) is as follows:
-</p>
-
-<blockquote>
- <pre>
- #ifdef H5_HAVE_THREADSAFE
- fprintf (stream, "HDF5-DIAG: Error detected in thread %d."
- ,pthread_self());
- #else
- fprintf (stream, "HDF5-DIAG: Error detected in thread 0.");
- #endif
- </pre>
-</blockquote>
-
-<p>
-Code for <code>H5E_get_stack()</code> can be found in Appendix C. All the
-above changes were made in <code>H5E.c</code>.
-</p>
-
-<h2>4.4 Thread Cancellation safety</h2>
-
-<p>
-To prevent thread cancellations from killing a thread while it is in the
-library, we maintain per-thread information about the cancellability
-status of the thread before it entered the library so that we can restore
-that same status when the thread leaves the library.
-</p>
-
-<p>
-By <i>enter</i> and <i>leave</i> the library, we mean the points when a
-thread makes an API call from a user application and the time that API
-call returns. Other API or callback function calls made from within that
-API call are considered <i>within</i> the library.
-</p>
-
-<p>
-Because other API calls may be made from within the first API call, we
-need to maintain a counter to determine which was the first and
-correspondingly the last return.
-</p>
-
-<p>
-When a thread makes an API call, the macro <code>H5_API_SET_CANCEL</code>
-calls the worker function <code>H5_cancel_count_inc()</code> which does
-the following:
-</p>
-
-<ol>
- <li>if this is the first time the thread has entered the library,
- a new cancellability structure needs to be assigned to it.</li>
- <li>if the thread is already within the library when the API call is
- made, then cancel_count is simply incremented. Otherwise, we set
- the cancellability state to <code>PTHREAD_CANCEL_DISABLE</code>
- while storing the previous state into the cancellability structure.
- <code>cancel_count</code> is also incremented in this case.</li>
-</ol>
-
-<p>
-When a thread leaves an API call, the macro
-<code>H5_API_UNSET_CANCEL</code> calls the worker function
-<code>H5_cancel_count_dec()</code> which does the following:
-</p>
-
-<ol>
- <li>if <code>cancel_count</code> is greater than 1, indicating that the
- thread is not yet about to leave the library, then
- <code>cancel_count</code> is simply decremented.</li>
- <li>otherwise, we reset the cancellability state back to its original
- state before it entered the library and decrement the count (back
- to zero).</li>
-</ol>
-
-<p>
-<code>H5_cancel_count_inc</code> and <code>H5_cancel_count_dec</code> are
-described in Appendix D and may be found in <code>H5TS.c</code>.
-</p>
-
-<h1>5. Test programs</h1>
-
-<p>
-Except where stated, all tests involve 16 simultaneous threads that make
-use of HDF-5 API calls without any explicit synchronization typically
-required in a non-threadsafe environment.
-</p>
-
-<h2>5.1 Data set create and write</h2>
-
-<p>
-The test program sets up 16 threads to simultaneously create 16
-different datasets named from <i>zero</i> to <i>fifteen</i> for a single
-file and then writing an integer value into that dataset equal to the
-dataset's named value.
-</p>
-
-<p>
-The main thread would join with all 16 threads and attempt to match the
-resulting HDF-5 file with expected results - that each dataset contains
-the correct value (0 for <i>zero</i>, 1 for <i>one</i> etc ...) and all
-datasets were correctly created.
-</p>
-
-<p>
-The test is implemented in the file <code>ttsafe_dcreate.c</code>.
-</p>
-
-<h2>5.2 Test on error stack</h2>
-
-<p>
-The error stack test is one in which 16 threads simultaneously try to
-create datasets with the same name. The result, when properly serialized,
-should be equivalent to 16 attempts to create the dataset with the same
-name.
-</p>
-
-<p>
-The error stack implementation runs correctly if it reports 15 instances
-of the dataset name conflict error and finally generates a correct HDF-5
-containing that single dataset. Each thread should report its own stack
-of errors with a thread number associated with it.
-</p>
-
-<p>
-The test is implemented in the file <code>ttsafe_error.c</code>.
-</p>
-
-<h2>5.3 Test on cancellation safety</h2>
-
-<p>
-The main idea in thread cancellation safety is as follows; a child thread
-is spawned to create and write to a dataset. Following that, it makes a
-<code>H5Diterate</code> call on that dataset which activates a callback
-function.
-</p>
-
-<p>
-A deliberate barrier is invoked at the callback function which waits for
-both the main and child thread to arrive at that point. After that
-happens, the main thread proceeds to make a thread cancel call on the
-child thread while the latter sleeps for 3 seconds before proceeding to
-write a new value to the dataset.
-</p>
-
-<p>
-After the iterate call, the child thread logically proceeds to wait
-another 3 seconds before writing another newer value to the dataset.
-</p>
-
-<p>
-The test is correct if the main thread manages to read the second value
-at the end of the test. This means that cancellation did not take place
-until the end of the iteration call despite of the 3 second wait within
-the iteration callback and the extra dataset write operation.
-Furthermore, the cancellation should occur before the child can proceed
-to write the last value into the dataset.
-</p>
-
-<h2>5.4 Test on attribute creation</h2>
-
-<p>
-A main thread makes 16 threaded calls to <code>H5Acreate</code> with a
-generated name for each attribute. Sixteen attributes should be created
-for the single dataset in random (chronological) order and receive values
-depending on its generated attribute name (e.g. <i>attrib010</i> would
-receive the value 10).
-</p>
-
-<p>
-After joining with all child threads, the main thread proceeds to read
-each attribute by generated name to see if the value tallies. Failure is
-detected if the attribute name does not exist (meaning they were never
-created) or if the wrong values were read back.
-</p>
-
-<h1>A. Recursive Lock implementation code</h1>
-
-<blockquote>
- <pre>
- void H5_mutex_init(H5_mutex_t *H5_mutex)
- {
- H5_mutex-&gt;owner_thread = NULL;
- pthread_mutex_init(&amp;H5_mutex-&gt;atomic_lock, NULL);
- pthread_cond_init(&amp;H5_mutex-&gt;cond_var, NULL);
- H5_mutex-&gt;lock_count = 0;
- }
-
- void H5_mutex_lock(H5_mutex_t *H5_mutex)
- {
- pthread_mutex_lock(&amp;H5_mutex-&gt;atomic_lock);
-
- if (pthread_equal(pthread_self(), H5_mutex-&gt;owner_thread)) {
- /* already owned by self - increment count */
- H5_mutex-&gt;lock_count++;
- } else {
- if (H5_mutex-&gt;owner_thread == NULL) {
- /* no one else has locked it - set owner and grab lock */
- H5_mutex-&gt;owner_thread = pthread_self();
- H5_mutex-&gt;lock_count = 1;
- } else {
- /* if already locked by someone else */
- while (1) {
- pthread_cond_wait(&amp;H5_mutex-&gt;cond_var, &amp;H5_mutex-&gt;atomic_lock);
-
- if (H5_mutex-&gt;owner_thread == NULL) {
- H5_mutex-&gt;owner_thread = pthread_self();
- H5_mutex-&gt;lock_count = 1;
- break;
- } /* else do nothing and loop back to wait on condition*/
- }
- }
- }
-
- pthread_mutex_unlock(&amp;H5_mutex-&gt;atomic_lock);
- }
-
- void H5_mutex_unlock(H5_mutex_t *H5_mutex)
- {
- pthread_mutex_lock(&amp;H5_mutex-&gt;atomic_lock);
- H5_mutex-&gt;lock_count--;
-
- if (H5_mutex-&gt;lock_count == 0) {
- H5_mutex-&gt;owner_thread = NULL;
- pthread_cond_signal(&amp;H5_mutex-&gt;cond_var);
- }
- pthread_mutex_unlock(&amp;H5_mutex-&gt;atomic_lock);
- }
- </pre>
-</blockquote>
-
-<h1>B. First thread initialization</h1>
-
-<blockquote>
- <pre>
- void H5_first_thread_init(void)
- {
- /* initialize global API mutex lock */
- H5_g.H5_libinit_g = FALSE;
- H5_g.init_lock.owner_thread = NULL;
- pthread_mutex_init(&amp;H5_g.init_lock.atomic_lock, NULL);
- pthread_cond_init(&amp;H5_g.init_lock.cond_var, NULL);
- H5_g.init_lock.lock_count = 0;
-
- /* initialize key for thread-specific error stacks */
- pthread_key_create(&amp;H5_errstk_key_g, NULL);
-
- /* initialize key for thread cancellability mechanism */
- pthread_key_create(&amp;H5_cancel_key_g, NULL);
- }
- </pre>
-</blockquote>
-
-
-<h1>C. Per-thread error stack acquisition</h1>
-
-<blockquote>
- <pre>
- H5E_t *H5E_get_stack(void)
- {
- H5E_t *estack;
-
- if (estack = pthread_getspecific(H5_errstk_key_g)) {
- return estack;
- } else {
- /* no associated value with current thread - create one */
- estack = (H5E_t *)malloc(sizeof(H5E_t));
- pthread_setspecific(H5_errstk_key_g, (void *)estack);
- return estack;
- }
- }
- </pre>
-</blockquote>
-
-<h1>D. Thread cancellation mechanisms</h1>
-
-<blockquote>
- <pre>
- void H5_cancel_count_inc(void)
- {
- H5_cancel_t *cancel_counter;
-
- if (cancel_counter = pthread_getspecific(H5_cancel_key_g)) {
- /* do nothing here */
- } else {
- /*
- * first time thread calls library - create new counter and
- * associate with key
- */
- cancel_counter = (H5_cancel_t *)malloc(sizeof(H5_cancel_t));
- cancel_counter-&gt;cancel_count = 0;
- pthread_setspecific(H5_cancel_key_g, (void *)cancel_counter);
- }
-
- if (cancel_counter-&gt;cancel_count == 0) {
- /* thread entering library */
- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,
- &amp;(cancel_counter-&gt;previous_state));
- }
-
- cancel_counter-&gt;cancel_count++;
- }
-
- void H5_cancel_count_dec(void)
- {
- H5_cancel_t *cancel_counter = pthread_getspecific(H5_cancel_key_g);
-
- if (cancel_counter-&gt;cancel_count == 1)
- pthread_setcancelstate(cancel_counter-&gt;previous_state, NULL);
-
- cancel_counter-&gt;cancel_count--;
- }
- </pre>
-</blockquote>
-
-<h1>E. Macro expansion codes</h1>
-
-<h2>E.1 <code>FUNC_ENTER</code></h2>
-
-<blockquote>
- <pre>
- /* Initialize the library */ \
- H5_FIRST_THREAD_INIT \
- H5_API_UNSET_CANCEL \
- H5_API_LOCK_BEGIN \
- if (!(H5_INIT_GLOBAL)) { \
- H5_INIT_GLOBAL = TRUE; \
- if (H5_init_library() &lt; 0) { \
- HRETURN_ERROR (H5E_FUNC, H5E_CANTINIT, err, \
- "library initialization failed"); \
- } \
- } \
- H5_API_LOCK_END \
- :
- :
- :
- </pre>
-</blockquote>
-
-<h2>E.2 <code>H5_FIRST_THREAD_INIT</code></h2>
-
-<blockquote>
- <pre>
- /* Macro for first thread initialization */
- #define H5_FIRST_THREAD_INIT \
- pthread_once(&amp;H5_first_init_g, H5_first_thread_init);
- </pre>
-</blockquote>
-
-
-<h2>E.3 <code>H5_API_UNSET_CANCEL</code></h2>
-
-<blockquote>
- <pre>
- #define H5_API_UNSET_CANCEL \
- if (H5_IS_API(FUNC)) { \
- H5_cancel_count_inc(); \
- }
- </pre>
-</blockquote>
-
-
-<h2>E.4 <code>H5_API_LOCK_BEGIN</code></h2>
-
-<blockquote>
- <pre>
- #define H5_API_LOCK_BEGIN \
- if (H5_IS_API(FUNC)) { \
- H5_mutex_lock(&amp;H5_g.init_lock);
- </pre>
-</blockquote>
-
-
-<h2>E.5 <code>H5_API_LOCK_END</code></h2>
-
-<blockquote>
- <pre>
- #define H5_API_LOCK_END }
- </pre>
-</blockquote>
-
-
-<h2>E.6 <code>HRETURN</code> and <code>HRETURN_ERROR</code></h2>
-
-<blockquote>
- <pre>
- :
- :
- H5_API_UNLOCK_BEGIN \
- H5_API_UNLOCK_END \
- H5_API_SET_CANCEL \
- return ret_val; \
- }
- </pre>
-</blockquote>
-
-<h2>E.7 <code>H5_API_UNLOCK_BEGIN</code></h2>
-
-<blockquote>
- <pre>
- #define H5_API_UNLOCK_BEGIN \
- if (H5_IS_API(FUNC)) { \
- H5_mutex_unlock(&amp;H5_g.init_lock);
- </pre>
-</blockquote>
-
-<h2>E.8 <code>H5_API_UNLOCK_END</code></h2>
-
-<blockquote>
- <pre>
- #define H5_API_UNLOCK_END }
- </pre>
-</blockquote>
-
-
-<h2>E.9 <code>H5_API_SET_CANCEL</code></h2>
-
-<blockquote>
- <pre>
- #define H5_API_SET_CANCEL \
- if (H5_IS_API(FUNC)) { \
- H5_cancel_count_dec(); \
- }
- </pre>
-</blockquote>
-
-<h2>By Chee Wai Lee</h2>
-<h4>By Bill Wendling</h4>
-<h4>27. October 2000</h4>
-
-</body>
-</html>
diff --git a/doc/html/TechNotes/VFL.html b/doc/html/TechNotes/VFL.html
deleted file mode 100644
index 5674cdb..0000000
--- a/doc/html/TechNotes/VFL.html
+++ /dev/null
@@ -1,1543 +0,0 @@
-<HTML>
-<HEAD>
-<!-- This HTML file has been created by texi2html 1.51
- from VFL.texi on 18 November 1999 -->
-
-<TITLE>HDF5 Virtual File Layer</TITLE>
-</HEAD>
-<BODY>
-<H1>HDF5</H1>
-<H2>Virtual File Layer</H2>
-<H2>Proposal 1999-08-11</H2>
-<ADDRESS>Robb Matzke</ADDRESS>
-<P>
-<P><HR><P>
-<H1>Table of Contents</H1>
-<UL>
-<LI><A NAME="TOC1" HREF="VFL.html#SEC1">Introduction</A>
-<LI><A NAME="TOC2" HREF="VFL.html#SEC2">Using a File Driver</A>
-<UL>
-<LI><A NAME="TOC3" HREF="VFL.html#SEC3">Driver Header Files</A>
-<LI><A NAME="TOC4" HREF="VFL.html#SEC4">Creating and Opening Files</A>
-<LI><A NAME="TOC5" HREF="VFL.html#SEC5">Performing I/O</A>
-<LI><A NAME="TOC6" HREF="VFL.html#SEC6">File Driver Interchangeability</A>
-</UL>
-<LI><A NAME="TOC7" HREF="VFL.html#SEC7">Implementation of a Driver</A>
-<UL>
-<LI><A NAME="TOC8" HREF="VFL.html#SEC8">Mode Functions</A>
-<LI><A NAME="TOC9" HREF="VFL.html#SEC9">File Functions</A>
-<UL>
-<LI><A NAME="TOC10" HREF="VFL.html#SEC10">Opening Files</A>
-<LI><A NAME="TOC11" HREF="VFL.html#SEC11">Closing Files</A>
-<LI><A NAME="TOC12" HREF="VFL.html#SEC12">File Keys</A>
-<LI><A NAME="TOC13" HREF="VFL.html#SEC13">Saving Modes Across Opens</A>
-</UL>
-<LI><A NAME="TOC14" HREF="VFL.html#SEC14">Address Space Functions</A>
-<UL>
-<LI><A NAME="TOC15" HREF="VFL.html#SEC15">Userblock and Superblock</A>
-<LI><A NAME="TOC16" HREF="VFL.html#SEC16">Allocation of Format Regions</A>
-<LI><A NAME="TOC17" HREF="VFL.html#SEC17">Freeing Format Regions</A>
-<LI><A NAME="TOC18" HREF="VFL.html#SEC18">Querying Address Range</A>
-</UL>
-<LI><A NAME="TOC19" HREF="VFL.html#SEC19">Data Functions</A>
-<UL>
-<LI><A NAME="TOC20" HREF="VFL.html#SEC20">Contiguous I/O Functions</A>
-<LI><A NAME="TOC21" HREF="VFL.html#SEC21">Flushing Cached Data</A>
-</UL>
-<LI><A NAME="TOC22" HREF="VFL.html#SEC22">Optimization Functions</A>
-<LI><A NAME="TOC23" HREF="VFL.html#SEC23">Registration of a Driver</A>
-<LI><A NAME="TOC24" HREF="VFL.html#SEC24">Querying Driver Information</A>
-</UL>
-<LI><A NAME="TOC25" HREF="VFL.html#SEC25">Miscellaneous</A>
-</UL>
-<P><HR><P>
-
-
-<H1><A NAME="SEC1" HREF="VFL.html#TOC1">Introduction</A></H1>
-
-<P>
-The HDF5 file format describes how HDF5 data structures and dataset raw
-data are mapped to a linear <STRONG>format address space</STRONG> and the HDF5
-library implements that bidirectional mapping in terms of an
-API. However, the HDF5 format specifications do <EM>not</EM> indicate how
-the format address space is mapped onto storage and HDF (version 5 and
-earlier) simply mapped the format address space directly onto a single
-file by convention.
-
-</P>
-<P>
-Since early versions of HDF5 it became apparent that users want the ability to
-map the format address space onto different types of storage (a single file,
-multiple files, local memory, global memory, network distributed global
-memory, a network protocol, <I>etc</I>.) with various types of maps. For
-instance, some users want to be able to handle very large format address
-spaces on operating systems that support only 2GB files by partitioning the
-format address space into equal-sized parts each served by a separate
-file. Other users want the same multi-file storage capability but want to
-partition the address space according to purpose (raw data in one file, object
-headers in another, global heap in a third, <I>etc.</I>) in order to improve I/O
-speeds.
-
-</P>
-<P>
-In fact, the number of storage variations is probably larger than the
-number of methods that the HDF5 team is capable of implementing and
-supporting. Therefore, a <STRONG>Virtual File Layer</STRONG> API is being
-implemented which will allow application teams or departments to design
-and implement their own mapping between the HDF5 format address space
-and storage, with each mapping being a separate <STRONG>file driver</STRONG>
-(possibly written in terms of other file drivers). The HDF5 team will
-provide a small set of useful file drivers which will also serve as
-examples for those who which to write their own:
-
-</P>
-<DL COMPACT>
-
-<DT><CODE>H5FD_SEC2</CODE>
-<DD>
-This is the default driver which uses Posix file-system functions like
-<CODE>read</CODE> and <CODE>write</CODE> to perform I/O to a single file. All I/O
-requests are unbuffered although the driver does optimize file seeking
-operations to some extent.
-
-<DT><CODE>H5FD_STDIO</CODE>
-<DD>
-This driver uses functions from <TT>`stdio.h'</TT> to perform buffered I/O
-to a single file.
-
-<DT><CODE>H5FD_CORE</CODE>
-<DD>
-This driver performs I/O directly to memory and can be used to create small
-temporary files that never exist on permanent storage. This type of storage is
-generally very fast since the I/O consists only of memory-to-memory copy
-operations.
-
-<DT><CODE>H5FD_MPIIO</CODE>
-<DD>
-This is the driver of choice for accessing files in parallel using MPI and
-MPI-IO. It is only predefined if the library is compiled with parallel I/O
-support.
-
-<DT><CODE>H5FD_FAMILY</CODE>
-<DD>
-Large format address spaces are partitioned into more manageable pieces and
-sent to separate storage locations using an underlying driver of the user's
-choice. The <CODE>h5repart</CODE> tool can be used to change the sizes of the
-family members when stored as files or to convert a family of files to a
-single file or vice versa.
-
-<DT><CODE>H5FD_SPLIT</CODE>
-<DD>
-The format address space is split into meta data and raw data and each is
-mapped onto separate storage using underlying drivers of the user's
-choice. The meta data storage can be read by itself (for limited
-functionality) or both files can be accessed together.
-</DL>
-
-
-
-<H1><A NAME="SEC2" HREF="VFL.html#TOC2">Using a File Driver</A></H1>
-
-<P>
-Most application writers will use a driver defined by the HDF5 library or
-contributed by another programming team. This chapter describes how existing
-drivers are used.
-
-</P>
-
-
-
-<H2><A NAME="SEC3" HREF="VFL.html#TOC3">Driver Header Files</A></H2>
-
-<P>
-Each file driver is defined in its own public header file which should
-be included by any application which plans to use that driver. The
-predefined drivers are in header files whose names begin with
-<SAMP>`H5FD'</SAMP> followed by the driver name and <SAMP>`.h'</SAMP>. The <TT>`hdf5.h'</TT>
-header file includes all the predefined driver header files.
-
-</P>
-<P>
-Once the appropriate header file is included a symbol of the form
-<SAMP>`H5FD_'</SAMP> followed by the upper-case driver name will be the driver
-identification number.<A NAME="DOCF1" HREF="VFL.html#FOOT1">(1)</A> However, the
-value may change if the library is closed (<I>e.g.</I>, by calling
-<CODE>H5close</CODE>) and the symbol is referenced again.
-
-</P>
-
-
-<H2><A NAME="SEC4" HREF="VFL.html#TOC4">Creating and Opening Files</A></H2>
-
-<P>
-In order to create or open a file one must define the method by which the
-storage is accessed<A NAME="DOCF2" HREF="VFL.html#FOOT2">(2)</A> and does so by creating a file access property list<A NAME="DOCF3" HREF="VFL.html#FOOT3">(3)</A> which is passed to the <CODE>H5Fcreate</CODE> or
-<CODE>H5Fopen</CODE> function. A default file access property list is created by
-calling <CODE>H5Pcreate</CODE> and then the file driver information is inserted by
-calling a driver initialization function such as <CODE>H5Pset_fapl_family</CODE>:
-
-</P>
-
-<PRE>
-hid_t fapl = H5Pcreate(H5P_FILE_ACCESS);
-size_t member_size = 100*1024*1024; /*100MB*/
-H5Pset_fapl_family(fapl, member_size, H5P_DEFAULT);
-hid_t file = H5Fcreate("foo%05d.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
-H5Pclose(fapl);
-</PRE>
-
-<P>
-Each file driver will have its own initialization function
-whose name is <CODE>H5Pset_fapl_</CODE> followed by the driver name and which
-takes a file access property list as the first argument followed by
-additional driver-dependent arguments.
-
-</P>
-<P>
-An alternative to using the driver initialization function is to set the
-driver directly using the <CODE>H5Pset_driver</CODE> function.<A NAME="DOCF4" HREF="VFL.html#FOOT4">(4)</A> Its second argument is the file driver identifier, which may
-have a different numeric value from run to run depending on the order in which
-the file drivers are registered with the library. The third argument
-encapsulates the additional arguments of the driver initialization
-function. This method only works if the file driver writer has made the
-driver-specific property list structure a public datatype, which is
-often not the case.
-
-</P>
-
-<PRE>
-hid_t fapl = H5Pcreate(H5P_FILE_ACCESS);
-static H5FD_family_fapl_t fa = {100*1024*1024, H5P_DEFAULT};
-H5Pset_driver(fapl, H5FD_FAMILY, &#38;fa);
-hid_t file = H5Fcreate("foo.h5", H5F_ACC_TRUNC, H5P_DEFAULT, fapl);
-H5Pclose(fapl);
-</PRE>
-
-<P>
-It is also possible to query the file driver information from a file access
-property list by calling <CODE>H5Pget_driver</CODE> to determine the driver and then
-calling a driver-defined query function to obtain the driver information:
-
-</P>
-
-<PRE>
-hid_t driver = H5Pget_driver(fapl);
-if (H5FD_SEC2==driver) {
- /*nothing further to get*/
-} else if (H5FD_FAMILY==driver) {
- hid_t member_fapl;
- haddr_t member_size;
- H5Pget_fapl_family(fapl, &#38;member_size, &#38;member_fapl);
-} else if (....) {
- ....
-}
-</PRE>
-
-
-
-<H2><A NAME="SEC5" HREF="VFL.html#TOC5">Performing I/O</A></H2>
-
-<P>
-The <CODE>H5Dread</CODE> and <CODE>H5Dwrite</CODE> functions transfer data between
-application memory and the file. They both take an optional data transfer
-property list which has some general driver-independent properties and
-optional driver-defined properties. An application will typically perform I/O
-in one of three styles via the <CODE>H5Dread</CODE> or <CODE>H5Dwrite</CODE> function:
-
-</P>
-<P>
-Like file access properties in the previous section, data transfer properties
-can be set using a driver initialization function or a general purpose
-function. For example, to set the MPI-IO driver to use independent access for
-I/O operations one would say:
-
-</P>
-
-<PRE>
-hid_t dxpl = H5Pcreate(H5P_DATA_XFER);
-H5Pset_dxpl_mpio(dxpl, H5FD_MPIO_INDEPENDENT);
-H5Dread(dataset, type, mspace, fspace, buffer, dxpl);
-H5Pclose(dxpl);
-</PRE>
-
-<P>
-The alternative is to initialize a driver defined C <CODE>struct</CODE> and pass it
-to the <CODE>H5Pset_driver</CODE> function:
-
-</P>
-
-<PRE>
-hid_t dxpl = H5Pcreate(H5P_DATA_XFER);
-static H5FD_mpio_dxpl_t dx = {H5FD_MPIO_INDEPENDENT};
-H5Pset_driver(dxpl, H5FD_MPIO, &#38;dx);
-H5Dread(dataset, type, mspace, fspace, buffer, dxpl);
-</PRE>
-
-<P>
-The transfer propery list can be queried in a manner similar to the file
-access property list: the driver provides a function (or functions) to return
-various information about the transfer property list:
-
-</P>
-
-<PRE>
-hid_t driver = H5Pget_driver(dxpl);
-if (H5FD_MPIO==driver) {
- H5FD_mpio_xfer_t xfer_mode;
- H5Pget_dxpl_mpio(dxpl, &#38;xfer_mode);
-} else {
- ....
-}
-</PRE>
-
-
-
-<H2><A NAME="SEC6" HREF="VFL.html#TOC6">File Driver Interchangeability</A></H2>
-
-<P>
-The HDF5 specifications describe two things: the mapping of data onto a linear
-<STRONG>format address space</STRONG> and the C API which performs the mapping.
-However, the mapping of the format address space onto storage intentionally
-falls outside the scope of the HDF5 specs. This is a direct result of the fact
-that it is not generally possible to store information about how to access
-storage inside the storage itself. For instance, given only the file name
-<TT>`/arborea/1225/work/f%03d'</TT> the HDF5 library is unable to tell whether the
-name refers to a file on the local file system, a family of files on the local
-file system, a file on host <SAMP>`arborea'</SAMP> port 1225, a family of files on a
-remote system, <I>etc</I>.
-
-</P>
-<P>
-Two ways which library could figure out where the storage is located are:
-storage access information can be provided by the user, or the library can try
-all known file access methods. This implementation uses the former method.
-
-</P>
-<P>
-In general, if a file was created with one driver then it isn't possible to
-open it with another driver. There are of course exceptions: a file created
-with MPIO could probably be opened with the sec2 driver, any file created
-by the sec2 driver could be opened as a family of files with one member,
-<I>etc</I>. In fact, sometimes a file must not only be opened with the same
-driver but also with the same driver properties. The predefined drivers are
-written in such a way that specifying the correct driver is sufficient for
-opening a file.
-
-</P>
-
-
-<H1><A NAME="SEC7" HREF="VFL.html#TOC7">Implementation of a Driver</A></H1>
-
-<P>
-A driver is simply a collection of functions and data structures which are
-registered with the HDF5 library at runtime. The functions fall into these
-categories:
-
-</P>
-
-<UL>
-<LI>Functions which operate on modes
-
-<LI>Functions which operate on files
-
-<LI>Functions which operate on the address space
-
-<LI>Functions which operate on data
-
-<LI>Functions for driver initialization
-
-<LI>Optimization functions
-
-</UL>
-
-
-
-<H2><A NAME="SEC8" HREF="VFL.html#TOC8">Mode Functions</A></H2>
-
-<P>
-Some drivers need information about file access and data transfers which are
-very specific to the driver. The information is usually implemented as a pair
-of pointers to C structs which are allocated and initialized as part of an
-HDF5 property list and passed down to various driver functions. There are two
-classes of settings: file access modes that describe how to access the file
-through the driver, and data transfer modes which are settings that control
-I/O operations. Each file opened by a particular driver may have a different
-access mode; each dataset I/O request for a particular file may have a
-different data transfer mode.
-
-</P>
-<P>
-Since each driver has its own particular requirements for various settings,
-each driver is responsible for defining the mode structures that it
-needs. Higher layers of the library treat the structures as opaque but must be
-able to copy and free them. Thus, the driver provides either the size of the
-structure or a pair of function pointers for each of the mode types.
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The family driver needs to know how the format address
-space is partitioned and the file access property list to use for the
-family members.
-
-</P>
-
-<PRE>
-/* Driver-specific file access properties */
-typedef struct H5FD_family_fapl_t {
- hsize_t memb_size; /*size of each member */
- hid_t memb_fapl_id; /*file access property list of each memb*/
-} H5FD_family_fapl_t;
-
-/* Driver specific data transfer properties */
-typedef struct H5FD_family_dxpl_t {
- hid_t memb_dxpl_id; /*data xfer property list of each memb */
-} H5FD_family_dxpl_t;
-</PRE>
-
-<P>
-In order to copy or free one of these structures the member file access
-or data transfer properties must also be copied or freed. This is done
-by providing a copy and close function for each structure:
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The file access property list copy and close functions
-for the family driver:
-
-</P>
-
-<PRE>
-static void *
-H5FD_family_fapl_copy(const void *_old_fa)
-{
- const H5FD_family_fapl_t *old_fa = (const H5FD_family_fapl_t*)_old_fa;
- H5FD_family_fapl_t *new_fa = malloc(sizeof(H5FD_family_fapl_t));
- assert(new_fa);
-
- memcpy(new_fa, old_fa, sizeof(H5FD_family_fapl_t));
- new_fa-&#62;memb_fapl_id = H5Pcopy(old_fa-&#62;memb_fapl_id);
- return new_fa;
-}
-
-static herr_t
-H5FD_family_fapl_free(void *_fa)
-{
- H5FD_family_fapl_t *fa = (H5FD_family_fapl_t*)_fa;
- H5Pclose(fa-&#62;memb_fapl_id);
- free(fa);
- return 0;
-}
-</PRE>
-
-<P>
-Generally when a file is created or opened the file access properties
-for the driver are copied into the file pointer which is returned and
-they may be modified from their original value (for instance, the file
-family driver modifies the member size property when opening an existing
-family). In order to support the <CODE>H5Fget_access_plist</CODE> function the
-driver must provide a <CODE>fapl_get</CODE> callback which creates a copy of
-the driver-specific properties based on a particular file.
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The file family driver copies the member size file
-access property list into the return value:
-
-</P>
-
-<PRE>
-static void *
-H5FD_family_fapl_get(H5FD_t *_file)
-{
- H5FD_family_t *file = (H5FD_family_t*)_file;
- H5FD_family_fapl_t *fa = calloc(1, sizeof(H5FD_family_fapl_t*));
-
- fa-&#62;memb_size = file-&#62;memb_size;
- fa-&#62;memb_fapl_id = H5Pcopy(file-&#62;memb_fapl_id);
- return fa;
-}
-</PRE>
-
-
-
-<H2><A NAME="SEC9" HREF="VFL.html#TOC9">File Functions</A></H2>
-
-<P>
-The higher layers of the library expect files to have a name and allow the
-file to be accessed in various modes. The driver must be able to create a new
-file, replace an existing file, or open an existing file. Opening or creating
-a file should return a handle, a pointer to a specialization of the
-<CODE>H5FD_t</CODE> struct, which allows read-only or read-write access and which
-will be passed to the other driver functions as they are
-called.<A NAME="DOCF5" HREF="VFL.html#FOOT5">(5)</A>
-
-</P>
-
-<PRE>
-typedef struct {
- /* Public fields */
- H5FD_class_t *cls; /*class data defined below*/
-
- /* Private fields -- driver-defined */
-
-} H5FD_t;
-</PRE>
-
-<P>
-<STRONG>Example:</STRONG> The family driver requires handles to the underlying
-storage, the size of the members for this particular file (which might be
-different than the member size specified in the file access property list if
-an existing file family is being opened), the name used to open the file in
-case additional members must be created, and the flags to use for creating
-those additional members. The <CODE>eoa</CODE> member caches the size of the format
-address space so the family members don't have to be queried in order to find
-it.
-
-</P>
-
-<PRE>
-/* The description of a file belonging to this driver. */
-typedef struct H5FD_family_t {
- H5FD_t pub; /*public stuff, must be first */
- hid_t memb_fapl_id; /*file access property list for members */
- hsize_t memb_size; /*maximum size of each member file */
- int nmembs; /*number of family members */
- int amembs; /*number of member slots allocated */
- H5FD_t **memb; /*dynamic array of member pointers */
- haddr_t eoa; /*end of allocated addresses */
- char *name; /*name generator printf format */
- unsigned flags; /*flags for opening additional members */
-} H5FD_family_t;
-</PRE>
-
-<P>
-<STRONG>Example:</STRONG> The sec2 driver needs to keep track of the underlying Unix
-file descriptor and also the end of format address space and current Unix file
-size. It also keeps track of the current file position and last operation
-(read, write, or unknown) in order to optimize calls to <CODE>lseek</CODE>. The
-<CODE>device</CODE> and <CODE>inode</CODE> fields are defined on Unix in order to uniquely
-identify the file and will be discussed below.
-
-</P>
-
-<PRE>
-typedef struct H5FD_sec2_t {
- H5FD_t pub; /*public stuff, must be first */
- int fd; /*the unix file */
- haddr_t eoa; /*end of allocated region */
- haddr_t eof; /*end of file; current file size*/
- haddr_t pos; /*current file I/O position */
- int op; /*last operation */
- dev_t device; /*file device number */
- ino_t inode; /*file i-node number */
-} H5FD_sec2_t;
-</PRE>
-
-
-
-<H3><A NAME="SEC10" HREF="VFL.html#TOC10">Opening Files</A></H3>
-
-<P>
-All drivers must define a function for opening/creating a file. This
-function should have a prototype which is:
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static H5FD_t * <B>open</B> <I>(const char *<VAR>name</VAR>, unsigned <VAR>flags</VAR>, hid_t <VAR>fapl</VAR>, haddr_t <VAR>maxaddr</VAR>)</I>
-<DD><A NAME="IDX1"></A>
-
-</P>
-<P>
-The file name <VAR>name</VAR> and file access property list <VAR>fapl</VAR> are
-the same as were specified in the <CODE>H5Fcreate</CODE> or <CODE>H5Fopen</CODE>
-call. The <VAR>flags</VAR> are the same as in those calls also except the
-flag <CODE>H5F_ACC_CREATE</CODE> is also present if the call was to
-<CODE>H5Fcreate</CODE> and they are documented in the <TT>`H5Fpublic.h'</TT>
-file. The <VAR>maxaddr</VAR> argument is the maximum format address that the
-driver should be prepared to handle (the minimum address is always
-zero).
-</DL>
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver opens a Unix file with the requested name
-and saves information which uniquely identifies the file (the Unix device
-number and inode).
-
-</P>
-
-<PRE>
-static H5FD_t *
-H5FD_sec2_open(const char *name, unsigned flags, hid_t fapl_id/*unused*/,
- haddr_t maxaddr)
-{
- unsigned o_flags;
- int fd;
- struct stat sb;
- H5FD_sec2_t *file=NULL;
-
- /* Check arguments */
- if (!name || !*name) return NULL;
- if (0==maxaddr || HADDR_UNDEF==maxaddr) return NULL;
- if (ADDR_OVERFLOW(maxaddr)) return NULL;
-
- /* Build the open flags */
- o_flags = (H5F_ACC_RDWR &#38; flags) ? O_RDWR : O_RDONLY;
- if (H5F_ACC_TRUNC &#38; flags) o_flags |= O_TRUNC;
- if (H5F_ACC_CREAT &#38; flags) o_flags |= O_CREAT;
- if (H5F_ACC_EXCL &#38; flags) o_flags |= O_EXCL;
-
- /* Open the file */
- if ((fd=open(name, o_flags, 0666))&#60;0) return NULL;
- if (fstat(fd, &#38;sb)&#60;0) {
- close(fd);
- return NULL;
- }
-
- /* Create the new file struct */
- file = calloc(1, sizeof(H5FD_sec2_t));
- file-&#62;fd = fd;
- file-&#62;eof = sb.st_size;
- file-&#62;pos = HADDR_UNDEF;
- file-&#62;op = OP_UNKNOWN;
- file-&#62;device = sb.st_dev;
- file-&#62;inode = sb.st_ino;
-
- return (H5FD_t*)file;
-}
-</PRE>
-
-
-
-<H3><A NAME="SEC11" HREF="VFL.html#TOC11">Closing Files</A></H3>
-
-<P>
-Closing a file simply means that all cached data should be flushed to the next
-lower layer, the file should be closed at the next lower layer, and all
-file-related data structures should be freed. All information needed by the
-close function is already present in the file handle.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static herr_t <B>close</B> <I>(H5FD_t *<VAR>file</VAR>)</I>
-<DD><A NAME="IDX2"></A>
-
-</P>
-<P>
-The <VAR>file</VAR> argument is the handle which was returned by the <CODE>open</CODE>
-function, and the <CODE>close</CODE> should free only memory associated with the
-driver-specific part of the handle (the public parts will have already been released by HDF5's virtual file layer).
-</DL>
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver just closes the underlying Unix file,
-making sure that the actual file size is the same as that known to the
-library by writing a zero to the last file position it hasn't been
-written by some previous operation (which happens in the same code which
-flushes the file contents and is shown below).
-
-</P>
-
-<PRE>
-static herr_t
-H5FD_sec2_close(H5FD_t *_file)
-{
- H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
-
- if (H5FD_sec2_flush(_file)&#60;0) return -1;
- if (close(file-&#62;fd)&#60;0) return -1;
- free(file);
- return 0;
-}
-</PRE>
-
-
-
-<H3><A NAME="SEC12" HREF="VFL.html#TOC12">File Keys</A></H3>
-
-<P>
-Occasionally an application will attempt to open a single file more than one
-time in order to obtain multiple handles to the file. HDF5 allows the files to
-share information<A NAME="DOCF6" HREF="VFL.html#FOOT6">(6)</A> but in order to
-accomplish this HDF5 must be able to tell when two names refer to the same
-file. It does this by associating a driver-defined key with each file opened
-by a driver and comparing the key for an open request with the keys for all
-other files currently open by the same driver.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> const int <B>cmp</B> <I>(const H5FD_t *<VAR>f1</VAR>, const H5FD_t *<VAR>f2</VAR>)</I>
-<DD><A NAME="IDX3"></A>
-
-</P>
-<P>
-The driver may provide a function which compares two files <VAR>f1</VAR> and
-<VAR>f2</VAR> belonging to the same driver and returns a negative, positive, or
-zero value <I>a la</I> the <CODE>strcmp</CODE> function.<A NAME="DOCF7" HREF="VFL.html#FOOT7">(7)</A> If this
-function is not provided then HDF5 assumes that all calls to the <CODE>open</CODE>
-callback return unique files regardless of the arguments and it is up to the
-application to avoid doing this if that assumption is incorrect.
-</DL>
-
-</P>
-<P>
-Each time a file is opened the library calls the <CODE>cmp</CODE> function to
-compare that file with all other files currently open by the same driver and
-if one of them matches (at most one can match) then the file which was just
-opened is closed and the previously opened file is used instead.
-
-</P>
-<P>
-Opening a file twice with incompatible flags will result in failure. For
-instance, opening a file with the truncate flag is a two step process which
-first opens the file without truncation so keys can be compared, and if no
-matching file is found already open then the file is closed and immediately
-reopened with the truncation flag set (if a matching file is already open then
-the truncating open will fail).
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver uses the Unix device and i-node as the
-key. They were initialized when the file was opened.
-
-</P>
-
-<PRE>
-static int
-H5FD_sec2_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
-{
- const H5FD_sec2_t *f1 = (const H5FD_sec2_t*)_f1;
- const H5FD_sec2_t *f2 = (const H5FD_sec2_t*)_f2;
-
- if (f1-&#62;device &#60; f2-&#62;device) return -1;
- if (f1-&#62;device &#62; f2-&#62;device) return 1;
-
- if (f1-&#62;inode &#60; f2-&#62;inode) return -1;
- if (f1-&#62;inode &#62; f2-&#62;inode) return 1;
-
- return 0;
-}
-</PRE>
-
-
-
-<H3><A NAME="SEC13" HREF="VFL.html#TOC13">Saving Modes Across Opens</A></H3>
-
-<P>
-Some drivers may also need to store certain information in the file superblock
-in order to be able to reliably open the file at a later date. This is done by
-three functions: one to determine how much space will be necessary to store
-the information in the superblock, one to encode the information, and one to
-decode the information. These functions are optional, but if any one is
-defined then the other two must also be defined.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static hsize_t <B>sb_size</B> <I>(H5FD_t *<VAR>file</VAR>)</I>
-<DD><A NAME="IDX4"></A>
-<DT><U>Function:</U> static herr_t <B>sb_encode</B> <I>(H5FD_t *<VAR>file</VAR>, char *<VAR>name</VAR>, unsigned char *<VAR>buf</VAR>)</I>
-<DD><A NAME="IDX5"></A>
-<DT><U>Function:</U> static herr_t <B>sb_decode</B> <I>(H5FD_t *<VAR>file</VAR>, const char *<VAR>name</VAR>, const unsigned char *<VAR>buf</VAR>)</I>
-<DD><A NAME="IDX6"></A>
-
-</P>
-<P>
-The <CODE>sb_size</CODE> function returns the number of bytes necessary to encode
-information needed later if the file is reopened. The <CODE>sb_encode</CODE>
-function encodes information from the file into buffer <VAR>buf</VAR>
-allocated by the caller. It also writes an 8-character (plus null
-termination) into the <CODE>name</CODE> argument, which should be a unique
-identification for the driver. The <CODE>sb_decode</CODE> function looks at
-the <VAR>name</VAR>
-
-</P>
-<P>
- decodes
-data from the buffer <VAR>buf</VAR> and updates the <VAR>file</VAR> argument with the new information,
-advancing <VAR>*p</VAR> in the process.
-</DL>
-
-</P>
-<P>
-The part of this which is somewhat tricky is that the file must be readable
-before the superblock information is decoded. File access modes fall outside
-the scope of the HDF5 file format, but they are placed inside the boot block
-for convenience.<A NAME="DOCF8" HREF="VFL.html#FOOT8">(8)</A>
-
-</P>
-<P>
-<STRONG>Example:</STRONG> <EM>To be written later.</EM>
-
-</P>
-
-
-<H2><A NAME="SEC14" HREF="VFL.html#TOC14">Address Space Functions</A></H2>
-
-<P>
-HDF5 does not assume that a file is a linear address space of bytes. Instead,
-the library will call functions to allocate and free portions of the HDF5
-format address space, which in turn map onto functions in the file driver to
-allocate and free portions of file address space. The library tells the file
-driver how much format address space it wants to allocate and the driver
-decides what format address to use and how that format address is mapped onto
-the file address space. Usually the format address is chosen so that the file
-address can be calculated in constant time for data I/O operations (which are
-always specified by format addresses).
-
-</P>
-
-
-
-<H3><A NAME="SEC15" HREF="VFL.html#TOC15">Userblock and Superblock</A></H3>
-
-<P>
-The HDF5 format allows an optional userblock to appear before the actual HDF5
-data in such a way that if the userblock is <STRONG>sucked out</STRONG> of the file and
-everything remaining is shifted downward in the file address space, then the
-file is still a valid HDF5 file. The userblock size can be zero or any
-multiple of two greater than or equal to 512 and the file superblock begins
-immediately after the userblock.
-
-</P>
-<P>
-HDF5 allocates space for the userblock and superblock by calling an
-allocation function defined below, which must return a chunk of memory at
-format address zero on the first call.
-
-</P>
-
-
-<H3><A NAME="SEC16" HREF="VFL.html#TOC16">Allocation of Format Regions</A></H3>
-
-<P>
-The library makes many types of allocation requests:
-
-</P>
-<DL COMPACT>
-
-<DT><CODE>H5FD_MEM_SUPER</CODE>
-<DD>
-An allocation request for the userblock and/or superblock.
-<DT><CODE>H5FD_MEM_BTREE</CODE>
-<DD>
-An allocation request for a node of a B-tree.
-<DT><CODE>H5FD_MEM_DRAW</CODE>
-<DD>
-An allocation request for the raw data of a dataset.
-<DT><CODE>H5FD_MEM_META</CODE>
-<DD>
-An allocation request for the raw data of a dataset which
-the user has indicated will be relatively small.
-<DT><CODE>H5FD_MEM_GROUP</CODE>
-<DD>
-An allocation request for a group leaf node (internal nodes of the group tree
-are allocated as H5MF_BTREE).
-<DT><CODE>H5FD_MEM_GHEAP</CODE>
-<DD>
-An allocation request for a global heap collection. Global heaps are used to
-store certain types of references such as dataset region references. The set
-of all global heap collections can become quite large.
-<DT><CODE>H5FD_MEM_LHEAP</CODE>
-<DD>
-An allocation request for a local heap. Local heaps are used to store the
-names which are members of a group. The combined size of all local heaps is a
-function of the number of object names in the file.
-<DT><CODE>H5FD_MEM_OHDR</CODE>
-<DD>
-An allocation request for (part of) an object header. Object headers are
-relatively small and include meta information about objects (like the data
-space and type of a dataset) and attributes.
-</DL>
-
-<P>
-When a chunk of memory is freed the library adds it to a free list and
-allocation requests are satisfied from the free list before requesting memory
-from the file driver. Each type of allocation request enumerated above has its
-own free list, but the file driver can specify that certain object types can
-share a free list. It does so by providing an array which maps a request type
-to a free list. If any value of the map is <CODE>H5MF_DEFAULT</CODE> (zero) then the
-object's own free list is used. The special value <CODE>H5MF_NOLIST</CODE> indicates
-that the library should not attempt to maintain a free list for that
-particular object type, instead calling the file driver each time an object of
-that type is freed.
-
-</P>
-<P>
-Mappings predefined in the <TT>`H5FDpublic.h'</TT> file are:
-<DL COMPACT>
-
-<DT><CODE>H5FD_FLMAP_SINGLE</CODE>
-<DD>
-All memory usage types are mapped to a single free list.
-<DT><CODE>H5FD_FLMAP_DICHOTOMY</CODE>
-<DD>
-Memory usage is segregated into meta data and raw data for the purposes of
-memory management.
-<DT><CODE>H5FD_FLMAP_DEFAULT</CODE>
-<DD>
-Each memory usage type has its own free list.
-</DL>
-
-<P>
-<STRONG>Example:</STRONG> To make a map that manages object headers on one free list
-and everything else on another free list one might initialize the map with the
-following code: (the use of <CODE>H5FD_MEM_SUPER</CODE> is arbitrary)
-
-</P>
-
-<PRE>
-H5FD_mem_t mt, map[H5FD_MEM_NTYPES];
-
-for (mt=0; mt&#60;H5FD_MEM_NTYPES; mt++) {
- map[mt] = (H5FD_MEM_OHDR==mt) ? mt : H5FD_MEM_SUPER;
-}
-</PRE>
-
-<P>
-If an allocation request cannot be satisfied from the free list then one of
-two things happen. If the driver defines an allocation callback then it is
-used to allocate space; otherwise new memory is allocated from the end of the
-format address space by incrementing the end-of-address marker.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static haddr_t <B>alloc</B> <I>(H5FD_t *<VAR>file</VAR>, H5MF_type_t <VAR>type</VAR>, hsize_t <VAR>size</VAR>)</I>
-<DD><A NAME="IDX7"></A>
-
-</P>
-<P>
-The <VAR>file</VAR> argument is the file from which space is to be allocated,
-<VAR>type</VAR> is the type of memory being requested (from the list above) without
-being mapped according to the freelist map and <VAR>size</VAR> is the number of
-bytes being requested. The library is allowed to allocate large chunks of
-storage and manage them in a layer above the file driver (although the current
-library doesn't do that). The allocation function should return a format
-address for the first byte allocated. The allocated region extends from that
-address for <VAR>size</VAR> bytes. If the request cannot be honored then the
-undefined address value is returned (<CODE>HADDR_UNDEF</CODE>). The first call to
-this function for a file which has never had memory allocated <EM>must</EM>
-return a format address of zero or <CODE>HADDR_UNDEF</CODE> since this is how the
-library allocates space for the userblock and/or superblock.
-</DL>
-
-</P>
-
-<P>
-<STRONG>Example:</STRONG> <EM>To be written later.</EM>
-
-</P>
-
-
-<H3><A NAME="SEC17" HREF="VFL.html#TOC17">Freeing Format Regions</A></H3>
-
-<P>
-When the library is finished using a certain region of the format address
-space it will return the space to the free list according to the type of
-memory being freed and the free list map described above. If the free list has
-been disabled for a particular memory usage type (according to the free list
-map) and the driver defines a <CODE>free</CODE> callback then it will be
-invoked. The <CODE>free</CODE> callback is also invoked for all entries on the free
-list when the file is closed.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static herr_t <B>free</B> <I>(H5FD_t *<VAR>file</VAR>, H5MF_type_t <VAR>type</VAR>, haddr_t <VAR>addr</VAR>, hsize_t <VAR>size</VAR>)</I>
-<DD><A NAME="IDX8"></A>
-
-</P>
-<P>
-The <VAR>file</VAR> argument is the file for which space is being freed; <VAR>type</VAR>
-is the type of object being freed (from the list above) without being mapped
-according to the freelist map; <VAR>addr</VAR> is the first format address to free;
-and <VAR>size</VAR> is the size in bytes of the region being freed. The region
-being freed may refer to just part of the region originally allocated and/or
-may cross allocation boundaries provided all regions being freed have the same
-usage type. However, the library will never attempt to free regions which have
-already been freed or which have never been allocated.
-</DL>
-
-</P>
-<P>
-A driver may choose to not define the <CODE>free</CODE> function, in which case
-format addresses will be leaked. This isn't normally a huge problem since the
-library contains a simple free list of its own and freeing parts of the format
-address space is not a common occurrence.
-
-</P>
-<P>
-<STRONG>Example:</STRONG> <EM>To be written later.</EM>
-
-</P>
-
-
-<H3><A NAME="SEC18" HREF="VFL.html#TOC18">Querying Address Range</A></H3>
-
-<P>
-Each file driver must have some mechanism for setting and querying the end of
-address, or <STRONG>EOA</STRONG>, marker. The EOA marker is the first format address
-after the last format address ever allocated. If the last part of the
-allocated address range is freed then the driver may optionally decrease the
-eoa marker.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static haddr_t <B>get_eoa</B> <I>(H5FD_t *<VAR>file</VAR>)</I>
-<DD><A NAME="IDX9"></A>
-
-</P>
-<P>
-This function returns the current value of the EOA marker for the specified
-file.
-</DL>
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver just returns the current eoa marker value
-which is cached in the file structure:
-
-</P>
-
-<PRE>
-static haddr_t
-H5FD_sec2_get_eoa(H5FD_t *_file)
-{
- H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
- return file-&#62;eoa;
-}
-</PRE>
-
-<P>
-The eoa marker is initially zero when a file is opened and the library may set
-it to some other value shortly after the file is opened (after the superblock
-is read and the saved eoa marker is determined) or when allocating additional
-memory in the absence of an <CODE>alloc</CODE> callback (described above).
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver simply caches the eoa marker in the file
-structure and does not extend the underlying Unix file. When the file is
-flushed or closed then the Unix file size is extended to match the eoa marker.
-
-</P>
-
-<PRE>
-static herr_t
-H5FD_sec2_set_eoa(H5FD_t *_file, haddr_t addr)
-{
- H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
- file-&#62;eoa = addr;
- return 0;
-}
-</PRE>
-
-
-
-<H2><A NAME="SEC19" HREF="VFL.html#TOC19">Data Functions</A></H2>
-
-<P>
-These functions operate on data, transferring a region of the format address
-space between memory and files.
-
-</P>
-
-
-
-<H3><A NAME="SEC20" HREF="VFL.html#TOC20">Contiguous I/O Functions</A></H3>
-
-<P>
-A driver must specify two functions to transfer data from the library to the
-file and vice versa.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static herr_t <B>read</B> <I>(H5FD_t *<VAR>file</VAR>, H5FD_mem_t <VAR>type</VAR>, hid_t <VAR>dxpl</VAR>, haddr_t <VAR>addr</VAR>, hsize_t <VAR>size</VAR>, void *<VAR>buf</VAR>)</I>
-<DD><A NAME="IDX10"></A>
-<DT><U>Function:</U> static herr_t <B>write</B> <I>(H5FD_t *<VAR>file</VAR>, H5FD_mem_t <VAR>type</VAR>, hid_t <VAR>dxpl</VAR>, haddr_t <VAR>addr</VAR>, hsize_t <VAR>size</VAR>, const void *<VAR>buf</VAR>)</I>
-<DD><A NAME="IDX11"></A>
-
-</P>
-<P>
-The <CODE>read</CODE> function reads data from file <VAR>file</VAR> beginning at address
-<VAR>addr</VAR> and continuing for <VAR>size</VAR> bytes into the buffer <VAR>buf</VAR>
-supplied by the caller. The <CODE>write</CODE> function transfers data in the
-opposite direction. Both functions take a data transfer property list
-<VAR>dxpl</VAR> which indicates the fine points of how the data is to be
-transferred and which comes directly from the <CODE>H5Dread</CODE> or
-<CODE>H5Dwrite</CODE> function. Both functions receive <VAR>type</VAR> of
-data being written, which may allow a driver to tune it's behavior for
-different kinds of data.
-</DL>
-
-</P>
-<P>
-Both functions should return a negative value if they fail to transfer the
-requested data, or non-negative if they succeed. The library will never
-attempt to read from unallocated regions of the format address space.
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver just makes system calls. It tries not to
-call <CODE>lseek</CODE> if the current operation is the same as the previous
-operation and the file position is correct. It also fills the output buffer
-with zeros when reading between the current EOF and EOA markers and restarts
-system calls which were interrupted.
-
-</P>
-
-<PRE>
-static herr_t
-H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t type/*unused*/, hid_t dxpl_id/*unused*/,
- haddr_t addr, hsize_t size, void *buf/*out*/)
-{
- H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
- ssize_t nbytes;
-
- assert(file &#38;&#38; file-&#62;pub.cls);
- assert(buf);
-
- /* Check for overflow conditions */
- if (REGION_OVERFLOW(addr, size)) return -1;
- if (addr+size&#62;file-&#62;eoa) return -1;
-
- /* Seek to the correct location */
- if ((addr!=file-&#62;pos || OP_READ!=file-&#62;op) &#38;&#38;
- file_seek(file-&#62;fd, (file_offset_t)addr, SEEK_SET)&#60;0) {
- file-&#62;pos = HADDR_UNDEF;
- file-&#62;op = OP_UNKNOWN;
- return -1;
- }
-
- /*
- * Read data, being careful of interrupted system calls, partial results,
- * and the end of the file.
- */
- while (size&#62;0) {
- do nbytes = read(file-&#62;fd, buf, size);
- while (-1==nbytes &#38;&#38; EINTR==errno);
- if (-1==nbytes) {
- /* error */
- file-&#62;pos = HADDR_UNDEF;
- file-&#62;op = OP_UNKNOWN;
- return -1;
- }
- if (0==nbytes) {
- /* end of file but not end of format address space */
- memset(buf, 0, size);
- size = 0;
- }
- assert(nbytes&#62;=0);
- assert((hsize_t)nbytes&#60;=size);
- size -= (hsize_t)nbytes;
- addr += (haddr_t)nbytes;
- buf = (char*)buf + nbytes;
- }
-
- /* Update current position */
- file-&#62;pos = addr;
- file-&#62;op = OP_READ;
- return 0;
-}
-</PRE>
-
-<P>
-<STRONG>Example:</STRONG> The sec2 <CODE>write</CODE> callback is similar except it updates
-the file EOF marker when extending the file.
-
-</P>
-
-
-<H3><A NAME="SEC21" HREF="VFL.html#TOC21">Flushing Cached Data</A></H3>
-
-<P>
-Some drivers may desire to cache data in memory in order to make larger I/O
-requests to the underlying file and thus improving bandwidth. Such drivers
-should register a cache flushing function so that the library can insure that
-data has been flushed out of the drivers in response to the application
-calling <CODE>H5Fflush</CODE>.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> static herr_t <B>flush</B> <I>(H5FD_t *<VAR>file</VAR>)</I>
-<DD><A NAME="IDX12"></A>
-
-</P>
-<P>
-Flush all data for file <VAR>file</VAR> to storage.
-</DL>
-
-</P>
-<P>
-<STRONG>Example:</STRONG> The sec2 driver doesn't cache any data but it also doesn't
-extend the Unix file as agressively as it should. Therefore, when finalizing a
-file it should write a zero to the last byte of the allocated region so that
-when reopening the file later the EOF marker will be at least as large as the
-EOA marker saved in the superblock (otherwise HDF5 will refuse to open the
-file, claiming that the data appears to be truncated).
-
-</P>
-
-<PRE>
-static herr_t
-H5FD_sec2_flush(H5FD_t *_file)
-{
- H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
-
- if (file-&#62;eoa&#62;file-&#62;eof) {
- if (-1==file_seek(file-&#62;fd, file-&#62;eoa-1, SEEK_SET)) return -1;
- if (write(file-&#62;fd, "", 1)!=1) return -1;
- file-&#62;eof = file-&#62;eoa;
- file-&#62;pos = file-&#62;eoa;
- file-&#62;op = OP_WRITE;
- }
-
- return 0;
-}
-</PRE>
-
-
-
-<H2><A NAME="SEC22" HREF="VFL.html#TOC22">Optimization Functions</A></H2>
-
-<P>
-The library is capable of performing several generic optimizations on I/O, but
-these types of optimizations may not be appropriate for a given VFL driver.
-</P>
-
-<P>
-Each driver may provide a query function to allow the library to query whether
-to enable these optimizations. If a driver lacks a query function, the library
-will disable all types of optimizations which can be queried.
-</P>
-
-<P>
-<DL>
-<DT><U>Function:</U> static herr_t <B>query</B> <I>(const H5FD_t *<VAR>file</VAR>, unsigned long *<VAR>flags</VAR>)</I>
-<DD><A NAME="IDX17"></A>
-</P>
-<P>
-This function is called by the library to query which optimizations to enable
-for I/O to this driver. These are the flags which are currently defined:
-
-<UL>
-<DL>
-<DT>H5FD_FEAT_AGGREGATE_METADATA (0x00000001)
-<DD>Defining the H5FD_FEAT_AGGREGATE_METADATA for a VFL driver means that
-the library will attempt to allocate a larger block for metadata and
-then sub-allocate each metadata request from that larger block.
-<DT>H5FD_FEAT_ACCUMULATE_METADATA (0x00000002)
-<DD>Defining the H5FD_FEAT_ACCUMULATE_METADATA for a VFL driver means that
-the library will attempt to cache metadata as it is written to the file
-and build up a larger block of metadata to eventually pass to the VFL
-'write' routine.
-<DT>H5FD_FEAT_DATA_SIEVE (0x00000004)
-<DD>Defining the H5FD_FEAT_DATA_SIEVE for a VFL driver means that
-the library will attempt to cache raw data as it is read from/written to
-a file in a "data sieve" buffer. See Rajeev Thakur's papers:
- <UL>
- <DL>
- <DT>http://www.mcs.anl.gov/~thakur/papers/romio-coll.ps.gz
- <DT>http://www.mcs.anl.gov/~thakur/papers/mpio-high-perf.ps.gz
- </DL>
- </UL>
-</DL>
-</UL>
-</P>
-
-</DL>
-</P>
-
-<H2><A NAME="SEC23" HREF="VFL.html#TOC23">Registration of a Driver</A></H2>
-
-<P>
-Before a driver can be used the HDF5 library needs to be told of its
-existence. This is done by registering the driver, which results in a driver
-identification number. Instead of passing many arguments to the registration
-function, the driver information is entered into a structure and the address
-of the structure is passed to the registration function where it is
-copied. This allows the HDF5 API to be extended while providing backward
-compatibility at the source level.
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> hid_t <B>H5FDregister</B> <I>(H5FD_class_t *<VAR>cls</VAR>)</I>
-<DD><A NAME="IDX13"></A>
-
-</P>
-<P>
-The driver described by struct <VAR>cls</VAR> is registered with the library and an
-ID number for the driver is returned.
-</DL>
-
-</P>
-<P>
-The <CODE>H5FD_class_t</CODE> type is a struct with the following fields:
-
-</P>
-<DL COMPACT>
-
-<DT><CODE>const char *name</CODE>
-<DD>
-A pointer to a constant, null-terminated driver name to be used for debugging
-purposes.
-<DT><CODE>size_t fapl_size</CODE>
-<DD>
-The size in bytes of the file access mode structure or zero if the driver
-supplies a copy function or doesn't define the structure.
-<DT><CODE>void *(*fapl_copy)(const void *fapl)</CODE>
-<DD>
-An optional function which copies a driver-defined file access mode structure.
-This field takes precedence over <CODE>fm_size</CODE> when both are defined.
-<DT><CODE>void (*fapl_free)(void *fapl)</CODE>
-<DD>
-An optional function to free the driver-defined file access mode structure. If
-null, then the library calls the C <CODE>free</CODE> function to free the
-structure.
-<DT><CODE>size_t dxpl_size</CODE>
-<DD>
-The size in bytes of the data transfer mode structure or zero if the driver
-supplies a copy function or doesn't define the structure.
-<DT><CODE>void *(*dxpl_copy)(const void *dxpl)</CODE>
-<DD>
-An optional function which copies a driver-defined data transfer mode
-structure. This field takes precedence over <CODE>xm_size</CODE> when both are
-defined.
-<DT><CODE>void (*dxpl_free)(void *dxpl)</CODE>
-<DD>
-An optional function to free the driver-defined data transfer mode
-structure. If null, then the library calls the C <CODE>free</CODE> function to
-free the structure.
-<DT><CODE>H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr)</CODE>
-<DD>
-The function which opens or creates a new file.
-<DT><CODE>herr_t (*close)(H5FD_t *file)</CODE>
-<DD>
-The function which ends access to a file.
-<DT><CODE>int (*cmp)(const H5FD_t *f1, const H5FD_t *f2)</CODE>
-<DD>
-An optional function to determine whether two open files have the same key. If
-this function is not present then the library assumes that two files will
-never be the same.
-<DT><CODE>int (*query)(const H5FD_t *f, unsigned long *flags)</CODE>
-<DD>
-An optional function to determine which library optimizations a driver can
-support.
-<DT><CODE>haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hsize_t size)</CODE>
-<DD>
-An optional function to allocate space in the file.
-<DT><CODE>herr_t (*free)(H5FD_t *file, H5FD_mem_t type, haddr_t addr, hsize_t size)</CODE>
-<DD>
-An optional function to free space in the file.
-<DT><CODE>haddr_t (*get_eoa)(H5FD_t *file)</CODE>
-<DD>
-A function to query how much of the format address space has been allocated.
-<DT><CODE>herr_t (*set_eoa)(H5FD_t *file, haddr_t)</CODE>
-<DD>
-A function to set the end of address space.
-<DT><CODE>haddr_t (*get_eof)(H5FD_t *file)</CODE>
-<DD>
-A function to return the current end-of-file marker value.
-<DT><CODE>herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, hsize_t size, void *buffer)</CODE>
-<DD>
-A function to read data from a file.
-<DT><CODE>herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, hsize_t size, const void *buffer)</CODE>
-<DD>
-A function to write data to a file.
-<DT><CODE>herr_t (*flush)(H5FD_t *file)</CODE>
-<DD>
-A function which flushes cached data to the file.
-<DT><CODE>H5FD_mem_t fl_map[H5FD_MEM_NTYPES]</CODE>
-<DD>
-An array which maps a file allocation request type to a free list.
-</DL>
-
-<P>
-<STRONG>Example:</STRONG> The sec2 driver would be registered as:
-
-</P>
-
-<PRE>
-static const H5FD_class_t H5FD_sec2_g = {
- "sec2", /*name */
- MAXADDR, /*maxaddr */
- NULL, /*sb_size */
- NULL, /*sb_encode */
- NULL, /*sb_decode */
- 0, /*fapl_size */
- NULL, /*fapl_get */
- NULL, /*fapl_copy */
- NULL, /*fapl_free */
- 0, /*dxpl_size */
- NULL, /*dxpl_copy */
- NULL, /*dxpl_free */
- H5FD_sec2_open, /*open */
- H5FD_sec2_close, /*close */
- H5FD_sec2_cmp, /*cmp */
- H5FD_sec2_query, /*query */
- NULL, /*alloc */
- NULL, /*free */
- H5FD_sec2_get_eoa, /*get_eoa */
- H5FD_sec2_set_eoa, /*set_eoa */
- H5FD_sec2_get_eof, /*get_eof */
- H5FD_sec2_read, /*read */
- H5FD_sec2_write, /*write */
- H5FD_sec2_flush, /*flush */
- H5FD_FLMAP_SINGLE, /*fl_map */
-};
-
-hid_t
-H5FD_sec2_init(void)
-{
- if (!H5FD_SEC2_g) {
- H5FD_SEC2_g = H5FDregister(&#38;H5FD_sec2_g);
- }
- return H5FD_SEC2_g;
-}
-</PRE>
-
-<P>
-A driver can be removed from the library by unregistering it
-
-</P>
-<P>
-<DL>
-<DT><U>Function:</U> herr_t <B>H5Dunregister</B> <I>(hid_t <VAR>driver</VAR>)</I>
-<DD><A NAME="IDX14"></A>
-Where <VAR>driver</VAR> is the ID number returned when the driver was registered.
-</DL>
-
-</P>
-<P>
-Unregistering a driver makes it unusable for creating new file access or data
-transfer property lists but doesn't affect any property lists or files that
-already use that driver.
-
-</P>
-
-
-
-<H2><A NAME="SEC24" HREF="VFL.html#TOC24">Querying Driver Information</A></H2>
-
-<P>
-<DL>
-<DT><U>Function:</U> void * <B>H5Pget_driver_data</B> <I>(hid_t <VAR>fapl</VAR>)</I>
-<DD><A NAME="IDX15"></A>
-<DT><U>Function:</U> void * <B>H5Pget_driver_data</B> <I>(hid_t <VAR>fxpl</VAR>)</I>
-<DD><A NAME="IDX16"></A>
-
-</P>
-<P>
-This function is intended to be used by driver functions, not applications.
-It returns a pointer directly into the file access property list
-<CODE><VAR>fapl</VAR></CODE> which is a copy of the driver's file access mode originally
-provided to the <CODE>H5Pset_driver</CODE> function. If its argument is a data
-transfer property list <CODE>fxpl</CODE> then it returns a pointer to the
-driver-specific data transfer information instead.
-</DL>
-
-</P>
-
-
-<H1><A NAME="SEC25" HREF="VFL.html#TOC25">Miscellaneous</A></H1>
-
-<P>
-The various private <CODE>H5F_low_*</CODE> functions will be replaced by public
-<CODE>H5FD*</CODE> functions so they can be called from drivers.
-
-</P>
-<P>
-All private functions <CODE>H5F_addr_*</CODE> which operate on addresses will be
-renamed as public functions by removing the first underscore so they can be
-called by drivers.
-
-</P>
-<P>
-The <CODE>haddr_t</CODE> address data type will be passed by value throughout the
-library. The original intent was that this type would eventually be a union of
-file address types for the various drivers and may become quite large, but
-that was back when drivers were part of HDF5. It will become an alias for an
-unsigned integer type (32 or 64 bits depending on how the library was
-configured).
-
-</P>
-<P>
-The various <CODE>H5F*.c</CODE> driver files will be renamed <CODE>H5FD*.c</CODE> and each
-will have a corresponding header file. All driver functions except the
-initializer and API will be declared static.
-
-</P>
-<P>
-This documentation didn't cover optimization functions which would be useful
-to drivers like MPI-IO. Some drivers may be able to perform data pipeline
-operations more efficiently than HDF5 and need to be given a chance to
-override those parts of the pipeline. The pipeline would be designed to call
-various H5FD optimization functions at various points which return one of
-three values: the operation is not implemented by the driver, the operation is
-implemented but failed in a non-recoverable manner, the operation is
-implemented and succeeded.
-
-</P>
-<P>
-Various parts of HDF5 check the only the top-level file driver and do
-something special if it is the MPI-IO driver. However, we might want to be
-able to put the MPI-IO driver under other drivers such as the raw part of a
-split driver or under a debug driver whose sole purpose is to accumulate
-statistics as it passes all requests through to the MPI-IO driver. Therefore
-we will probably need a function which takes a format address and or object
-type and returns the driver which would have been used at the lowest level to
-process the request.
-
-</P>
-
-<P><HR><P>
-<H1>Footnotes</H1>
-<H3><A NAME="FOOT1" HREF="VFL.html#DOCF1">(1)</A></H3>
-<P>The driver name is by convention and might
-not apply to drivers which are not distributed with HDF5.
-<H3><A NAME="FOOT2" HREF="VFL.html#DOCF2">(2)</A></H3>
-<P>The access method also indicates how to translate
-the storage name to a storage server such as a file, network protocol, or
-memory.
-<H3><A NAME="FOOT3" HREF="VFL.html#DOCF3">(3)</A></H3>
-<P>The term
-"<EM>file</EM> access property list" is a misnomer since storage isn't
-required to be a file.
-<H3><A NAME="FOOT4" HREF="VFL.html#DOCF4">(4)</A></H3>
-<P>This
-function is overloaded to operate on data transfer property lists also, as
-described below.
-<H3><A NAME="FOOT5" HREF="VFL.html#DOCF5">(5)</A></H3>
-<P>Read-only access is only appropriate when opening an existing
-file.
-<H3><A NAME="FOOT6" HREF="VFL.html#DOCF6">(6)</A></H3>
-<P>For instance, writing data to one handle will cause
-the data to be immediately visible on the other handle.
-<H3><A NAME="FOOT7" HREF="VFL.html#DOCF7">(7)</A></H3>
-<P>The ordering is
-arbitrary as long as it's consistent within a particular file driver.
-<H3><A NAME="FOOT8" HREF="VFL.html#DOCF8">(8)</A></H3>
-<P>File access modes do not describe data, but rather
-describe how the HDF5 format address space is mapped to the underlying
-file(s). Thus, in general the mapping must be known before the file superblock
-can be read. However, the user usually knows enough about the mapping for the
-superblock to be readable and once the superblock is read the library can fill
-in the missing parts of the mapping.
-<P><HR><P>
-This document was generated on 18 November 1999 using the
-<A HREF="http://wwwcn.cern.ch/dci/texi2html/">texi2html</A>
-translator version 1.51.</P>
-<P>
-Updated on 10/24/00 by hand, Quincey Koziol
-</P>
-</BODY>
-</HTML>
diff --git a/doc/html/TechNotes/VFLfunc.html b/doc/html/TechNotes/VFLfunc.html
deleted file mode 100644
index 1e33593..0000000
--- a/doc/html/TechNotes/VFLfunc.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<html>
-<head>
-<title>VFL Functions</title>
-</head>
-
-<body>
-
-<h1>List of HDF5 VFL Functions</h1>
-
-<pre>
-The following functions support the HDF5 virtual file layer (VFL), enabling
-the creation of customized I/O drivers.
-
-At this time, these functions are documented only in the <a href="VFL.html">HDF5 Virtual File
-Layer</a> design document and in the source code.
-
-
-
-herr_t <font color=red>H5Pset_driver</font>(hid_t plist_id, hid_t driver_id,
- const void *driver_info)
-
-void *<font color=red>H5Pget_driver_info</font>(hid_t plist_id)
-
-hid_t <font color=red>H5FDregister</font>(const H5FD_class_t *cls);
-
-herr_t <font color=red>H5FDunregister</font>(hid_t driver_id);
-
-H5FD_t *<font color=red>H5FDopen</font>(const char *name, unsigned flags, hid_t fapl_id,
- haddr_t maxaddr);
-
-herr_t <font color=red>H5FDclose</font>(H5FD_t *file);
-
-int <font color=red>H5FDcmp</font>(const H5FD_t *f1, const H5FD_t *f2);
-
-int <font color=red>H5FDquery</font>(const H5FD_t *f, unsigned long *flags);
-
-haddr_t <font color=red>H5FDalloc</font>(H5FD_t *file, H5FD_mem_t type, hsize_t size);
-
-herr_t <font color=red>H5FDfree</font>(H5FD_t *file, H5FD_mem_t type, haddr_t addr, hsize_t size);
-
-haddr_t <font color=red>H5FDrealloc</font>(H5FD_t *file, H5FD_mem_t type, haddr_t addr,
- hsize_t old_size, hsize_t new_size);
-
-haddr_t <font color=red>H5FDget_eoa</font>(H5FD_t *file);
-
-herr_t <font color=red>H5FDset_eoa</font>(H5FD_t *file, haddr_t eof);
-
-haddr_t <font color=red>H5FDget_eof</font>(H5FD_t *file);
-
-herr_t <font color=red>H5FDread</font>(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
- size_t size, void *buf/*out*/);
-
-herr_t <font color=red>H5FDwrite</font>(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
- haddr_t addr, size_t size, const void *buf);
-
-herr_t <font color=red>H5FDflush</font></font>(H5FD_t *file, unsigned closing);
-
-===========================================
-Last modified: 25 June 2002
-HDF Help Desk: hdfhelp@ncsa.uiuc.edu
-
-</pre>
-</body>
-</html>
diff --git a/doc/html/TechNotes/VLTypes.html b/doc/html/TechNotes/VLTypes.html
deleted file mode 100644
index 8a41c10..0000000
--- a/doc/html/TechNotes/VLTypes.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<html>
- <head>
- <title>
- Variable-Length Datatypes in HDF5
- </title>
-
- <STYLE TYPE="text/css">
-
- P { text-indent: 2em}
- P.item { margin-left: 2em; text-indent: -2em}
- P.item2 { margin-left: 2em; text-indent: 2em}
-
- TABLE.format { border:solid; border-collapse:collapse; caption-side:top; text-align:center; width:80%;}
- TABLE.format TH { border:ridge; padding:4px; width:25%;}
- TABLE.format TD { border:ridge; padding:4px; }
- TABLE.format CAPTION { font-weight:bold; font-size:larger;}
-
- TABLE.note {border:none; text-align:right; width:80%;}
-
- TABLE.desc { border:solid; border-collapse:collapse; caption-size:top; text-align:left; width:80%;}
- TABLE.desc TR { vertical-align:top;}
- TABLE.desc TH { border-style:ridge; font-size:larger; padding:4px; text-decoration:underline;}
- TABLE.desc TD { border-style:ridge; padding:4px; }
- TABLE.desc CAPTION { font-weight:bold; font-size:larger;}
-
- TABLE.list { border:none; }
- TABLE.list TR { vertical-align:top;}
- TABLE.list TH { border:none; text-decoration:underline;}
- TABLE.list TD { border:none; }
-
- </STYLE>
-
- <!-- #BeginLibraryItem "/ed_libs/styles_Format.lbi" -->
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="../ed_styles/FormatElect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
- <body bgcolor="#FFFFFF">
- <H3>Introduction</H3>
- <P>Variable-length (VL) datatypes have a great deal of flexibility, but can
- be over- or mis-used. VL datatypes are ideal at capturing the notion
- that elements in an HDF5 dataset (or attribute) can have different
- amounts of information (VL strings are the canonical example),
- but they have some drawbacks that this document attempts
- to address.
- </P>
-
- <H3>Background</H3>
- <P>Because fast random access to dataset elements requires that each
- element be a fixed size, the information stored for VL datatype elements
- is actually information to locate the VL information, not
- the information itself.
- </P>
-
- <H3>When to use VL datatypes</H3>
- <P>VL datatypes are designed allow the amount of data stored in each
- element of a dataset to vary. This change could be
- over time as new values, with different lengths, were written to the
- element. Or, the change can be over "space" - the dataset's space,
- with each element in the dataset having the same fundamental type, but
- different lengths. "Ragged arrays" are the classic example of elements
- that change over the "space" of the dataset. If the elements of a
- dataset are not going to change over "space" or time, a VL datatype
- should probably not be used.
- </P>
-
- <H3>Access Time Penalty</H3>
- <P>Accessing VL information requires reading the element in the file, then
- using that element's location information to retrieve the VL
- information itself.
- In the worst case, this obviously doubles the number of disk accesses
- required to access the VL information.
- </P>
- <P>However, in order to avoid this extra disk access overhead, the HDF5
- library groups VL information together into larger blocks on disk and
- performs I/O only on those larger blocks. Additionally, these blocks of
- information are cached in memory as long as possible. For most access
- patterns, this amortizes the extra disk accesses over enough pieces of
- VL information to hide the extra overhead involved.
- </P>
-
- <H3>Storage Space Penalty</H3>
- <P>Because VL information must be located and retrieved from another
- location in the file, extra information must be stored in the file to
- locate
- each item of VL information (i.e. each element in a dataset or each
- VL field in a compound datatype, etc.).
- Currently, that extra information amounts to 32 bytes per VL item.
- </P>
- <P>
- With some judicious re-architecting of the library and file format,
- this could be reduced to 18 bytes per VL item with no loss in
- functionality or additional time penalties. With some additional
- effort, the space could perhaps could be pushed down as low as 8-10
- bytes per VL item with no loss in functionality, but potentially a
- small time penalty.
- </P>
-
- <H3>Chunking and Filters</H3>
- <P>Storing data as VL information has some affects on chunked storage and
- the filters that can be applied to chunked data. Because the data that
- is stored in each chunk is the location to access the VL information,
- the actual VL information is not broken up into chunks in the same way
- as other data stored in chunks. Additionally, because the
- actual VL information is not stored in the chunk, any filters which
- operate on a chunk will operate on the information to
- locate the VL information, not the VL information itself.
- </P>
-
- <H3>File Drivers</H3>
- <P>Because the parallel I/O file drivers (MPI-I/O and MPI-posix) don't
- allow objects with varying sizes to be created in the file, attemping
- to create
- a dataset or attribute with a VL datatype in a file managed by those
- drivers will cause the creation call to fail.
- </P>
- <P>Additionally, using
- VL datatypes and the 'multi' and 'split' file drivers may not operate
- in the manner desired. The HDF5 library currently categorizes the
- "blocks of VL information" stored in the file as a type of metadata,
- which means that they may not be stored with the other raw data for
- the file.
- </P>
-
- <H3>Rewriting</H3>
- <P>When VL information in the file is re-written, the old VL information
- must be releases, space for the new VL information allocated and
- the new VL information must be written to the file. This may cause
- additional I/O accesses.
- </P>
-
- </body>
-
-</html>
-
diff --git a/doc/html/TechNotes/Version.html b/doc/html/TechNotes/Version.html
deleted file mode 100644
index 0e0853b..0000000
--- a/doc/html/TechNotes/Version.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>Version Numbers</title>
- </head>
-
- <body>
- <h1>HDF5 Release Version Numbers</h1>
-
- <h2>1. Introduction</h2>
-
- <p>The HDF5 version number is a set of three integer values
- written as either <code>hdf5-1.2.3</code> or <code>hdf5 version
- 1.2 release 3</code>.
-
- <p>The <code>5</code> is part of the library name and will only
- change if the entire file format and library are redesigned
- similar in scope to the changes between HDF4 and HDF5.
-
- <p>The <code>1</code> is the <em>major version number</em> and
- changes when there is an extensive change to the file format or
- library API. Such a change will likely require files to be
- translated and applications to be modified. This number is not
- expected to change frequently.
-
- <p>The <code>2</code> is the <em>minor version number</em> and is
- incremented by each public release that presents new features.
- Even numbers are reserved for stable public versions of the
- library while odd numbers are reserved for developement
- versions. See the diagram below for examples.
-
- <p>The <code>3</code> is the <em>release number</em>. For public
- versions of the library, the release number is incremented each
- time a bug is fixed and the fix is made available to the public.
- For development versions, the release number is incremented more
- often (perhaps almost daily).
-
- <h2>2. Abbreviated Versions</h2>
-
- <p>It's often convenient to drop the release number when referring
- to a version of the library, like saying version 1.2 of HDF5.
- The release number can be any value in this case.
-
- <h2>3. Special Versions</h2>
-
- <p>Version 1.0.0 was released for alpha testing the first week of
- March, 1998. The developement version number was incremented to
- 1.0.1 and remained constant until the the last week of April,
- when the release number started to increase and development
- versions were made available to people outside the core HDF5
- development team.
-
- <p>Version 1.0.23 was released mid-July as a second alpha
- version.
-
- <p>Version 1.1.0 will be the first official beta release but the
- 1.1 branch will also serve as a development branch since we're
- not concerned about providing bug fixes separate from normal
- development for the beta version.
-
- <p>After the beta release we rolled back the version number so the
- first release is version 1.0 and development will continue on
- version 1.1. We felt that an initial version of 1.0 was more
- important than continuing to increment the pre-release version
- numbers.
-
- <h2>4. Public versus Development</h2>
-
- <p>The motivation for separate public and development versions is
- that the public version will receive only bug fixes while the
- development version will receive new features. This also allows
- us to release bug fixes expediently without waiting for the
- development version to reach a stable state.
-
- <p>Eventually, the development version will near completion and a
- new development branch will fork while the original one enters a
- feature freeze state. When the original development branch is
- ready for release the minor version number will be incremented
- to an even value.
-
- <p>
- <center>
- <img alt="Version Example" src="version.gif">
- <br><b>Fig 1: Version Example</b>
- </center>
-
- <h2>5. Version Support from the Library</h2>
-
- <p>The library provides a set of macros and functions to query and
- check version numbers.
-
- <dl>
- <dt><code>H5_VERS_MAJOR</code>
- <dt><code>H5_VERS_MINOR</code>
- <dt><code>H5_VERS_RELEASE</code>
- <dd>These preprocessor constants are defined in the public
- include file and determine the version of the include files.
-
- <br><br>
- <dt><code>herr_t H5get_libversion (unsigned *<em>majnum</em>, unsigned
- *<em>minnum</em>, unsigned *<em>relnum</em>)</code>
- <dd>This function returns through its arguments the version
- numbers for the library to which the application is linked.
-
- <br><br>
- <dt><code>void H5check(void)</code>
- <dd>This is a macro that verifies that the version number of the
- HDF5 include file used to compile the application matches the
- version number of the library to which the application is
- linked. This check occurs automatically when the first HDF5
- file is created or opened and is important because a mismatch
- between the include files and the library is likely to result
- in corrupted data and/or segmentation faults. If a mismatch
- is detected the library issues an error message on the
- standard error stream and aborts with a core dump.
-
- <br><br>
- <dt><code>herr_t H5check_version (unsigned <em>majnum</em>,
- unsigned <em>minnum</em>, unsigned <em>relnum</em>)</code>
- <dd>This function is called by the <code>H5check()</code> macro
- with the include file version constants. The function
- compares its arguments to the result returned by
- <code>H5get_libversion()</code> and if a mismatch is detected prints
- an error message on the standard error stream and aborts.
- </dl>
-
-<hr>
-<address><a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a></address>
-<br>
-
-<!-- Created: Wed Apr 22 11:24:40 EDT 1998 -->
-<!-- hhmts start -->
-Last modified: Fri Oct 30 10:32:50 EST 1998
-<!-- hhmts end -->
-
- </body>
-</html>
diff --git a/doc/html/TechNotes/openmp-hdf5.c b/doc/html/TechNotes/openmp-hdf5.c
deleted file mode 100644
index 6d61c38..0000000
--- a/doc/html/TechNotes/openmp-hdf5.c
+++ /dev/null
@@ -1,403 +0,0 @@
-Appendix A: OpenMP-HDF5 Programs
--------------------------------------------------------------------------
- Program 1
--------------------------------------------------------------------------
-/*
- * This example writes 64 datasets to a HDF5 file, using multiple threads
- * (OpenMP). Each thread grab the lock while it tries to call HDF5 functions
- * to write out dataset. In this way, the HDF5 calls are serialized, while
- * the calculation part is in parallel. This is one of the ways to do
- * OpenMP computation with HDF. As long as not to do HDF I/O in parallel,
- * it is safe to use HDF.
- */
-
-#include <hdf5.h>
-#include <omp.h>
-#include <math.h>
-
-#define NUM_THREADS 4
-#define NUM_MDSET 16
-#define FILE "SDS.h5"
-#define NX 5 /* dataset dimensions */
-#define NY 18
-#define RANK 2
-
-void CalcWriteData(hid_t, hid_t, hid_t);
-
-/*Global variable, OpenMP lock*/
-omp_lock_t lock;
-
-
-int
-main (void)
-{
- hid_t fid; /* file and dataset handles */
- hid_t datatype, dataspace; /* handles */
- hsize_t dimsf[2]; /* dataset dimensions */
- herr_t status;
- int i;
-
- /*
- * Create a new file using H5F_ACC_TRUNC access,
- * default file creation properties, and default file
- * access properties.
- */
- fid = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Describe the size of the array and create the data space for fixed
- * size dataset.
- */
- dimsf[0] = NX;
- dimsf[1] = NY;
- dataspace = H5Screate_simple(RANK, dimsf, NULL);
-
- /*
- * Define datatype for the data in the file.
- * We will store little endian INT numbers.
- */
- datatype = H5Tcopy(H5T_NATIVE_DOUBLE);
- status = H5Tset_order(datatype, H5T_ORDER_LE);
-
- /*Disable dynamic allocation of threads*/
- omp_set_dynamic(0);
-
- /*Allocate threads*/
- omp_set_num_threads(NUM_THREADS);
-
- /*Initialize lock*/
- omp_init_lock(&lock);
-
- /*Each thread grab one iteration in the for loop and call function
- * CaclWriteData*/
- #pragma omp parallel default(shared)
- {
- #pragma omp for
- for(i=0; i<NUM_THREADS; i++) {
- CalcWriteData(fid, dataspace, datatype);
- }
- }
-
- /*Finished lock mechanism, destroy it*/
- omp_destroy_lock(&lock);
-
- /*
- * Close/release resources.
- */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Fclose(fid);
-
- return 0;
-}
-
-/*Each thread will call this function independantly. They calculate dataset
- *and then write it out to hdf, for NUM_MDSET times */
-void CalcWriteData(hid_t fid, hid_t dataspace, hid_t datatype)
-{
- double data[NX][NY];
- hid_t dataset;
- char dname[16];
- int tid;
- int i, j, k;
-
- tid = omp_get_thread_num();
-
- for(i=0; i<NUM_MDSET; i++) {
- /*Weird calculation to extend computing time*/
- for(j=0; j<NX; j++) {
- for(k=0; k<NY; k++)
- data[j][k] = ( pow(sin(tid), 2.0) + pow(cos(tid), 2.0) ) *
- ( tid + i ) +
- ( pow(123456789.0, 8.0) - pow(123456789.0, 8.0) );
-
- }
- sprintf(dname, "tid%d-dataset%d", tid, i);
-
- /*Serialize HDF dataset writing using OpenMP lock*/
- omp_set_lock(&lock);
-
- dataset = H5Dcreate(fid, dname, datatype, dataspace, H5P_DEFAULT);
- H5Dwrite(dataset, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT,
- data);
- H5Dclose(dataset);
-
- /*Release lock*/
- omp_unset_lock(&lock);
- }
-
-}
-
-
-
-
--------------------------------------------------------------------------
- Program 2
--------------------------------------------------------------------------
-/*
- * This example compute the element values of an array in parallel
- * by two threads. Then write this dataset into HDF file. This is
- * one of the ways to do OpenMP computation with HDF. As long as
- * not to do HDF I/O in parallel, it is safe to use HDF.
- *
- */
-
-#include <hdf5.h>
-#include <omp.h>
-
-#define FILE "SDS.h5"
-#define DATASETNAME "IntArray"
-#define NX 5 /* dataset dimensions */
-#define NY 6
-#define RANK 2
-
-int
-main (void)
-{
- hid_t file, dataset; /* file and dataset handles */
- hid_t datatype, dataspace; /* handles */
- hsize_t dimsf[2]; /* dataset dimensions */
- herr_t status;
- int data[NX][NY]; /* data to write */
- int i, j;
-
- /*
- * Create a new file using H5F_ACC_TRUNC access,
- * default file creation properties, and default file
- * access properties.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Describe the size of the array and create the data space for fixed
- * size dataset.
- */
- dimsf[0] = NX;
- dimsf[1] = NY;
- dataspace = H5Screate_simple(RANK, 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);
-
- /* Disable dynamic allocation of threads. */
- omp_set_dynamic(0);
-
- /* Allocate 2 threads */
- omp_set_num_threads(2);
-
-
- /* Parallel computation. Let 2 threads handle this nested for loops
- * in parallel. Only one data array is computed. */
- #pragma omp parallel default(shared)
- {
- #pragma omp for
- for (j = 0; j < NX; j++) {
- #pragma omp parallel shared(j, NY)
- {
- #pragma omp for
- for (i = 0; i < NY; i++)
- data[j][i] = i + j;
- }
- }
- }
-
- /* Write this dataset into HDF file */
- dataset = H5Dcreate(file, DATASETNAME, datatype, dataspace,
- H5P_DEFAULT);
- H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, data);
- H5Dclose(dataset);
-
- /*
- * Close/release resources.
- */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Fclose(file);
-
- return 0;
-}
-
-
-
--------------------------------------------------------------------------
- Program 3
--------------------------------------------------------------------------
-/*
- * This example create two threads. Each thread writes a dataset to
- * the HDF5 file in parallel. This program only works occasionally.
- */
-
-#include <hdf5.h>
-#include <omp.h>
-
-#define FILE "SDS.h5"
-#define NX 5 /* dataset dimensions */
-#define NY 6
-#define RANK 2
-
-void writeData(int, hid_t, hid_t, hid_t, char*);
-
-int main (void)
-{
- hid_t file; /* file and dataset handles */
- hid_t datatype, dataspace; /* handles */
- hsize_t dimsf[2]; /* dataset dimensions */
- herr_t status;
- int id;
- char dname[2][10] = {"Array1", "Array2"};
-
- /*
- * Create a new file using H5F_ACC_TRUNC access,
- * default file creation properties, and default file
- * access properties.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Describe the size of the array and create the data space for fixed
- * size dataset.
- */
- dimsf[0] = NX;
- dimsf[1] = NY;
- dataspace = H5Screate_simple(RANK, 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);
-
- /*Disable dynamic allocation of threads*/
- omp_set_dynamic(0);
-
- /*Allocate 2 threads*/
- omp_set_num_threads(2);
-
- /*Parallel Part: each thread call function writeData; id is private to
- * thread while others are shared */
- #pragma omp parallel shared(file, dataspace, datatype, dname) private(id)
- {
- id = omp_get_thread_num();
- writeData(id, file, dataspace, datatype, dname[id]);
- }
-
-
- /*
- * Close/release resources.
- */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Fclose(file);
-
- return 0;
-}
-
-
-/*Each thread call this function to write a dataset into HDF5 file*/
-
-void writeData(int id, hid_t file, hid_t dataspace, hid_t datatype, char *dname)
-{
- int data[NX][NY];
- hid_t dataset;
- int i, j;
-
- for (j = 0; j < NX; j++) {
- for (i = 0; i < NY; i++)
- data[j][i] = i + j + id;
- }
-
- dataset = H5Dcreate(file, dname, datatype, dataspace,
- H5P_DEFAULT);
- H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, data);
- H5Dclose(dataset);
-}
-
-
--------------------------------------------------------------------------
- Program 4
--------------------------------------------------------------------------
-/*
- * This example compute and write two datasets into HDF file in
- * parallel. It also only works occasionally.
- */
-
-#include <hdf5.h>
-#include <omp.h>
-
-#define FILE "SDS.h5"
-#define DATASETNAME "IntArray"
-#define NX 5 /* dataset dimensions */
-#define NY 6
-#define RANK 2
-
-int
-main (void)
-{
- hid_t file, dataset; /* file and dataset handles */
- hid_t datatype, dataspace; /* handles */
- hsize_t dimsf[2]; /* dataset dimensions */
- herr_t status;
- int data[NX][NY]; /* data to write */
- int i, j, id;
- char dname[2][10] = {"intArray1", "intArray2"};
-
- /*
- * Create a new file using H5F_ACC_TRUNC access,
- * default file creation properties, and default file
- * access properties.
- */
- file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
-
- /*
- * Describe the size of the array and create the data space for fixed
- * size dataset.
- */
- dimsf[0] = NX;
- dimsf[1] = NY;
- dataspace = H5Screate_simple(RANK, 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);
-
- omp_set_dynamic(0);
- omp_set_num_threads(2);
-
-
- /* This part of program compute and write two datasets in parallel. */
- #pragma omp parallel shared(file, datatype, dataspace, dname) private(id, j, i, data, dataset)
- {
- id = omp_get_thread_num();
- for (j = 0; j < NX; j++) {
- for (i = 0; i < NY; i++)
- data[j][i] = i + j + id;
- }
-
- dataset = H5Dcreate(file, dname[id], datatype, dataspace,
- H5P_DEFAULT);
- H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
- H5P_DEFAULT, data);
- H5Dclose(dataset);
- }
-
-
- /*
- * Close/release resources.
- */
- H5Sclose(dataspace);
- H5Tclose(datatype);
- H5Fclose(file);
-
- return 0;
-}
-
diff --git a/doc/html/TechNotes/openmp-hdf5.html b/doc/html/TechNotes/openmp-hdf5.html
deleted file mode 100644
index ff13b81..0000000
--- a/doc/html/TechNotes/openmp-hdf5.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<pre>
- Using HDF5 with OpenMP
- ----------------------
-
-
-1. Introduction to OpenMP
--------------------------
-
- - For shared-memory parallelism
- - A combination of library and directives
- - Available for C/C++ and Fortran
- - SGI leading effort
- - Information at http://www.openmp.org and
- http://www.sgi.com/software/openmp
-
-2. Programming(SGI MPISpro compiler and C language)
----------------------------------------------------
-
- - Turn on compiler '-mp' option
- - Include 'omp.h' library in program
- - Use library functions, directives and environment variables
-
-
-3. Sample Programs
-------------------
-
-Appendix A contains four OpenMP-HDF5 test programs. (They are derived from
-the hdf5/examples/h5_write.c). The purpose of these program is to
-test OpenMP parallelism with the HDF5 library.
-
-All tests were run on modi4 with SGI MPISpro compiler(cc) and make.
-Program 1 and Program 2 are the working programs. Program 3 and Program 4
-work occasionally due to racing conditions.
-Follow the following steps to try the programs.
-
- a. have your hdf5 library compiled,
- b. go to hdf5/examples directory,
- c. add -mp option to the end of the CFLAGS list in the Makefile. If you
- have the compiled program in another directory, you should go to the
- examples in that directory.
- d. modify the hdf5/examples/h5_write.c according to the program attached
- here.
- e. use hdf5/tools/h5dump to examine the output file.
-
-
-4. Conclusion
--------------
-
-It is not safe to invoke HDF5 library calls via multiple threads in an
-OpenMP program. But if one serializes HDF5 calls as illustrated in Program 1,
-the HDF5 library works correctly with the OpenMP programs.
-
-The serialization of HDF5 calls will slow down the OpenMP program unnecessarily.
-Future study is needed to check possible ways to "un-seralize" the HDF5 calls.
-One possibility is that the HDF5 library has a beta-version of Thread-safe
-implmentation though it is for Pthreads environment. One can check on the
-feasibility of running OpenMP programs with this version of HDF5 Thread-safe
-library.
-
-
-
-<A HREF="openmp-hdf5.c">Appendix A: OpenMP-HDF5 Programs</A>
-
--------
-Updated: 2000/11/28
-Contact: hdfhelp@ncsa.uiuc.edu
-</pre>
diff --git a/doc/html/TechNotes/pipe1.gif b/doc/html/TechNotes/pipe1.gif
deleted file mode 100644
index 3b489a6..0000000
--- a/doc/html/TechNotes/pipe1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/pipe1.obj b/doc/html/TechNotes/pipe1.obj
deleted file mode 100644
index 41f3461..0000000
--- a/doc/html/TechNotes/pipe1.obj
+++ /dev/null
@@ -1,136 +0,0 @@
-%TGIF 3.0-p5
-state(1,33,100,0,0,0,8,1,9,1,1,0,0,0,0,1,1,'Helvetica',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1408,1088,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-box('black',64,64,128,256,0,1,1,22,0,0,0,0,0,'1',[
-]).
-box('black',80,96,112,224,26,1,1,23,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 128,160,912,160],1,2,1,24,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 160,160,144,224,160,272,176,224,160,160],1,2,1,25,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 848,160,832,224,848,272,864,224,848,160],1,2,1,34,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-box('black',464,192,496,256,26,1,1,39,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 160,224,464,224],1,2,1,40,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',2,[
- 496,224,848,224],1,2,1,41,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 192,224,176,288,192,336,208,288,192,224],1,2,1,42,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 432,224,416,288,432,336,448,288,432,224],1,2,1,43,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 192,288,432,288],1,2,1,44,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',464,352,496,416,26,1,1,45,0,0,0,0,0,'1',[
-]).
-poly('black',5,[
- 528,224,512,288,528,336,544,288,528,224],1,2,1,46,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 816,224,800,288,816,336,832,288,816,224],1,2,1,47,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 528,288,816,288],1,2,1,48,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 464,256,456,304,464,328,488,304,488,256],1,2,1,62,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 480,352,488,304],2,2,1,85,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',912,64,976,256,0,1,1,87,0,0,0,0,0,'1',[
-]).
-box('black',928,96,960,224,26,1,1,88,0,0,0,0,0,'1',[
-]).
-text('black',96,48,'Helvetica',0,17,1,1,0,1,21,15,89,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "File"]).
-text('black',944,48,'Helvetica',0,17,1,1,0,1,64,15,93,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Application"]).
-text('black',480,144,'Helvetica',0,17,1,1,0,1,65,15,99,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5D_read()"]).
-text('black',480,128,'Helvetica',0,17,1,1,0,1,58,15,108,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5Dread()"]).
-text('black',304,208,'Helvetica',0,17,1,1,0,1,86,15,115,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_arr_read()"]).
-text('black',304,192,'Helvetica',0,17,1,1,0,1,99,15,119,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5S_simp_fgath()"]).
-text('black',296,288,'Helvetica',0,17,1,1,0,1,101,15,125,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_block_read()"]).
-text('black',296,304,'Helvetica',0,17,1,1,0,1,90,15,132,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_low_read()"]).
-text('black',296,320,'Helvetica',0,17,1,1,0,1,98,15,136,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_sec2_read()"]).
-text('black',296,336,'Helvetica',0,17,1,1,0,1,33,15,140,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "read()"]).
-text('black',664,208,'Helvetica',0,17,1,1,0,1,106,15,146,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_stride_copy()"]).
-text('black',664,176,'Helvetica',0,17,1,1,0,1,104,15,150,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5S_simp_mscat()"]).
-text('black',664,272,'Helvetica',0,17,1,1,0,1,54,15,154,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "memcpy()"]).
-text('black',384,392,'Helvetica',0,17,1,1,0,1,105,15,170,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5T_conv_struct()"]).
-poly('black',4,[
- 392,384,400,352,440,368,456,336],1,1,1,172,1,0,0,0,8,3,0,0,0,'1','8','3',
- "6",[
-]).
-text('black',480,176,'Helvetica',0,17,1,1,0,1,44,15,176,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "TCONV"]).
-text('black',480,416,'Helvetica',0,17,1,1,0,1,25,15,182,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "BKG"]).
-box('black',48,32,992,512,0,1,1,186,0,0,0,0,0,'1',[
-]).
-poly('black',5,[
- 72,392,56,456,72,504,88,456,72,392],1,2,1,188,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',96,448,'Helvetica',0,17,1,0,0,1,46,15,189,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "== Loop"]).
-poly('black',3,[
- 48,384,152,384,152,512],0,1,1,191,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',480,40,'Helvetica',0,24,1,1,0,1,380,29,197,0,24,5,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Fig 1: Internal Contiguous Storage"]).
-text('black',136,144,'Helvetica',0,17,1,1,0,1,9,15,201,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "A"]).
-text('black',160,208,'Helvetica',0,17,1,1,0,1,8,15,207,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "B"]).
-text('black',192,272,'Helvetica',0,17,1,1,0,1,9,15,211,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "C"]).
-text('black',504,208,'Helvetica',0,17,1,1,0,1,8,15,215,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "E"]).
-text('black',528,272,'Helvetica',0,17,1,1,0,1,8,15,223,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "F"]).
-text('black',464,304,'Helvetica',0,17,1,1,0,1,9,15,231,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "D"]).
-text('black',664,192,'Helvetica',0,17,1,1,0,1,107,15,324,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_hyper_copy()"]).
diff --git a/doc/html/TechNotes/pipe2.gif b/doc/html/TechNotes/pipe2.gif
deleted file mode 100644
index 3a0c947..0000000
--- a/doc/html/TechNotes/pipe2.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/pipe2.obj b/doc/html/TechNotes/pipe2.obj
deleted file mode 100644
index 70d9c18..0000000
--- a/doc/html/TechNotes/pipe2.obj
+++ /dev/null
@@ -1,168 +0,0 @@
-%TGIF 3.0-p5
-state(1,33,100,0,0,0,8,1,9,1,1,1,1,0,0,1,1,'Helvetica',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1408,1088,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-box('black',64,64,128,256,0,1,1,22,0,0,0,0,0,'1',[
-]).
-box('black',80,96,112,224,26,1,1,23,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 128,160,912,160],1,2,1,24,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 160,160,144,224,160,272,176,224,160,160],1,2,1,25,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 848,160,832,224,848,272,864,224,848,160],1,2,1,34,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-box('black',464,192,496,256,26,1,1,39,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 160,224,464,224],1,2,1,40,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',2,[
- 496,224,848,224],1,2,1,41,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 192,224,176,288,192,336,208,288,192,224],1,2,1,42,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 432,224,416,288,432,336,448,288,432,224],1,2,1,43,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 192,288,432,288],1,2,1,44,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',464,352,496,416,26,1,1,45,0,0,0,0,0,'1',[
-]).
-poly('black',5,[
- 528,224,512,288,528,336,544,288,528,224],1,2,1,46,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 816,224,800,288,816,336,832,288,816,224],1,2,1,47,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 528,288,816,288],1,2,1,48,0,26,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 848,240,848,352,832,384,800,384,496,384],1,2,1,55,1,0,0,0,10,4,0,0,0,'2','10','4',
- "70",[
-]).
-poly('black',5,[
- 528,384,512,448,528,496,544,448,528,384],1,2,1,57,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 800,384,784,448,800,496,816,448,800,384],1,2,1,58,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 800,448,528,448],1,2,1,61,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',5,[
- 464,256,456,304,464,328,488,304,488,256],1,2,1,62,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 480,352,488,304],0,2,1,85,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',912,64,976,256,0,1,1,87,0,0,0,0,0,'1',[
-]).
-box('black',928,96,960,224,26,1,1,88,0,0,0,0,0,'1',[
-]).
-text('black',96,48,'Helvetica',0,17,1,1,0,1,21,15,89,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "File"]).
-text('black',944,48,'Helvetica',0,17,1,1,0,1,64,15,93,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Application"]).
-text('black',480,144,'Helvetica',0,17,1,1,0,1,65,15,99,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5D_read()"]).
-text('black',480,128,'Helvetica',0,17,1,1,0,1,58,15,108,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5Dread()"]).
-text('black',304,208,'Helvetica',0,17,1,1,0,1,86,15,115,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_arr_read()"]).
-text('black',304,192,'Helvetica',0,17,1,1,0,1,99,15,119,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5S_simp_fgath()"]).
-text('black',296,288,'Helvetica',0,17,1,1,0,1,101,15,125,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_block_read()"]).
-text('black',296,304,'Helvetica',0,17,1,1,0,1,90,15,132,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_low_read()"]).
-text('black',296,320,'Helvetica',0,17,1,1,0,1,98,15,136,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_sec2_read()"]).
-text('black',296,336,'Helvetica',0,17,1,1,0,1,33,15,140,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "read()"]).
-text('black',664,208,'Helvetica',0,17,1,1,0,1,106,15,146,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_stride_copy()"]).
-text('black',664,176,'Helvetica',0,17,1,1,0,1,104,15,150,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5S_simp_mscat()"]).
-text('black',664,272,'Helvetica',0,17,1,1,0,1,54,15,154,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "memcpy()"]).
-text('black',672,368,'Helvetica',0,17,1,1,0,1,106,15,158,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_stride_copy()"]).
-text('black',672,336,'Helvetica',0,17,1,1,0,1,105,15,162,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5S_simp_mgath()"]).
-text('black',672,432,'Helvetica',0,17,1,1,0,1,54,15,166,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "memcpy()"]).
-text('black',384,392,'Helvetica',0,17,1,1,0,1,105,15,170,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5T_conv_struct()"]).
-poly('black',4,[
- 392,384,400,352,440,368,456,336],1,1,1,172,1,0,0,0,8,3,0,0,0,'1','8','3',
- "6",[
-]).
-text('black',480,176,'Helvetica',0,17,1,1,0,1,44,15,176,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "TCONV"]).
-text('black',480,416,'Helvetica',0,17,1,1,0,1,25,15,182,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "BKG"]).
-box('black',48,32,992,512,0,1,1,186,0,0,0,0,0,'1',[
-]).
-poly('black',5,[
- 72,392,56,456,72,504,88,456,72,392],1,2,1,188,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',96,448,'Helvetica',0,17,1,0,0,1,46,15,189,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "== Loop"]).
-poly('black',3,[
- 48,384,152,384,152,512],0,1,1,191,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',480,40,'Helvetica',0,24,1,1,0,1,404,29,197,0,24,5,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Fig 2: Partially Initialized Destination"]).
-text('black',136,144,'Helvetica',0,17,1,1,0,1,9,15,201,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "A"]).
-text('black',160,208,'Helvetica',0,17,1,1,0,1,8,15,207,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "B"]).
-text('black',192,272,'Helvetica',0,17,1,1,0,1,9,15,211,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "C"]).
-text('black',504,208,'Helvetica',0,17,1,1,0,1,8,15,215,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "E"]).
-text('black',528,272,'Helvetica',0,17,1,1,0,1,8,15,223,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "F"]).
-text('black',856,288,'Helvetica',0,17,1,1,0,1,9,15,225,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "G"]).
-text('black',800,432,'Helvetica',0,17,1,1,0,1,9,15,229,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H"]).
-text('black',464,304,'Helvetica',0,17,1,1,0,1,9,15,231,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "D"]).
-poly('black',4,[
- 848,240,848,224,864,224,904,224],0,2,1,318,1,0,0,0,10,4,0,0,0,'2','10','4',
- "6",[
-]).
-text('black',664,192,'Helvetica',0,17,1,1,0,1,107,15,326,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_hyper_copy()"]).
-text('black',672,352,'Helvetica',0,17,1,1,0,1,107,15,334,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_hyper_copy()"]).
diff --git a/doc/html/TechNotes/pipe3.gif b/doc/html/TechNotes/pipe3.gif
deleted file mode 100644
index 26d82ad..0000000
--- a/doc/html/TechNotes/pipe3.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/pipe3.obj b/doc/html/TechNotes/pipe3.obj
deleted file mode 100644
index cdfef7c..0000000
--- a/doc/html/TechNotes/pipe3.obj
+++ /dev/null
@@ -1,70 +0,0 @@
-%TGIF 3.0-p5
-state(1,33,100,0,0,0,8,1,9,1,1,0,0,0,0,1,1,'Helvetica',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1408,1088,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-box('black',64,64,128,256,0,1,1,22,0,0,0,0,0,'1',[
-]).
-box('black',80,96,112,224,26,1,1,23,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 128,160,912,160],1,2,1,24,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',912,64,976,256,0,1,1,87,0,0,0,0,0,'1',[
-]).
-box('black',928,96,960,224,26,1,1,88,0,0,0,0,0,'1',[
-]).
-text('black',96,48,'Helvetica',0,17,1,1,0,1,21,15,89,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "File"]).
-text('black',944,48,'Helvetica',0,17,1,1,0,1,64,15,93,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Application"]).
-text('black',480,104,'Helvetica',0,17,1,1,0,1,65,15,99,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5D_read()"]).
-text('black',480,88,'Helvetica',0,17,1,1,0,1,58,15,108,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5Dread()"]).
-box('black',48,32,992,512,0,1,1,186,0,0,0,0,0,'1',[
-]).
-poly('black',5,[
- 72,392,56,456,72,504,88,456,72,392],1,2,1,188,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',96,448,'Helvetica',0,17,1,0,0,1,46,15,189,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "== Loop"]).
-poly('black',3,[
- 48,384,152,384,152,512],0,1,1,191,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',480,40,'Helvetica',0,24,1,1,0,1,295,29,197,0,24,5,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Fig 3: No Type Conversion"]).
-text('black',136,144,'Helvetica',0,17,1,1,0,1,9,15,201,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "A"]).
-poly('black',5,[
- 152,160,136,224,152,272,168,224,152,160],1,2,1,273,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',480,120,'Helvetica',0,17,1,1,0,1,96,15,277,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5S_simp_read()"]).
-text('black',480,136,'Helvetica',0,17,1,1,0,1,86,15,281,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_arr_read()"]).
-poly('black',5,[
- 880,160,864,224,880,272,896,224,880,160],1,2,1,283,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',2,[
- 152,224,880,224],1,2,1,286,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-text('black',480,232,'Helvetica',0,17,1,1,0,1,101,15,291,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_block_read()"]).
-text('black',480,248,'Helvetica',0,17,1,1,0,1,90,15,293,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_low_read()"]).
-text('black',480,264,'Helvetica',0,17,1,1,0,1,98,15,309,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_sec2_read()"]).
-text('black',480,280,'Helvetica',0,17,1,1,0,1,33,15,311,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "read()"]).
-text('black',176,208,'Helvetica',0,17,1,1,0,1,8,15,418,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "B"]).
diff --git a/doc/html/TechNotes/pipe4.gif b/doc/html/TechNotes/pipe4.gif
deleted file mode 100644
index a3a857b..0000000
--- a/doc/html/TechNotes/pipe4.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/pipe4.obj b/doc/html/TechNotes/pipe4.obj
deleted file mode 100644
index 6f50123..0000000
--- a/doc/html/TechNotes/pipe4.obj
+++ /dev/null
@@ -1,92 +0,0 @@
-%TGIF 3.0-p5
-state(1,33,100,0,0,0,8,1,9,1,1,1,2,1,0,1,0,'Helvetica',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1408,1088,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-box('black',64,64,128,256,0,1,1,22,0,0,0,0,0,'1',[
-]).
-box('black',80,96,112,224,26,1,1,23,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 128,160,912,160],1,2,1,24,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',912,96,944,224,26,1,1,88,0,0,0,0,0,'1',[
-]).
-text('black',96,48,'Helvetica',0,17,1,1,0,1,21,15,89,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "File"]).
-text('black',928,72,'Helvetica',0,17,1,1,0,1,32,15,93,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Buffer"]).
-box('black',48,32,992,512,0,1,1,186,0,0,0,0,0,'1',[
-]).
-poly('black',5,[
- 72,392,56,456,72,504,88,456,72,392],1,2,1,188,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',96,448,'Helvetica',0,17,1,0,0,1,46,15,189,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "== Loop"]).
-poly('black',3,[
- 48,384,152,384,152,512],0,1,1,191,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',480,40,'Helvetica',0,24,1,1,0,1,372,29,197,0,24,5,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Fig 4: Regularly Chunked Storage"]).
-text('black',136,144,'Helvetica',0,17,1,1,0,1,9,15,201,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "A"]).
-text('black',480,104,'Helvetica',0,17,1,1,0,1,86,15,281,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_arr_read()"]).
-text('black',480,120,'Helvetica',0,17,1,1,0,1,102,15,349,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_istore_read()"]).
-text('black',480,136,'Helvetica',0,17,1,1,0,1,167,15,351,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_istore_copy_hyperslab()"]).
-poly('black',5,[
- 160,160,144,224,160,272,176,224,160,160],1,2,1,362,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-poly('black',5,[
- 880,160,864,224,880,272,896,224,880,160],1,2,1,363,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-box('black',448,192,512,256,26,1,1,364,0,0,0,0,0,'1',[
-]).
-text('black',480,176,'Helvetica',0,17,1,1,0,1,43,15,367,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "CHUNK"]).
-poly('black',2,[
- 160,224,448,224],1,2,1,372,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-poly('black',2,[
- 512,224,880,224],1,2,1,373,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-text('black',288,224,'Helvetica',0,17,1,1,0,1,101,15,385,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_block_read()"]).
-text('black',288,240,'Helvetica',0,17,1,1,0,1,90,15,387,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_low_read()"]).
-text('black',288,256,'Helvetica',0,17,1,1,0,1,98,15,391,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_sec2_read()"]).
-text('black',288,272,'Helvetica',0,17,1,1,0,1,33,15,395,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "read()"]).
-poly('black',5,[
- 456,256,448,296,480,320,512,296,504,256],1,2,1,401,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',184,208,'Helvetica',0,17,1,1,0,1,8,15,422,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "B"]).
-text('black',520,208,'Helvetica',0,17,1,1,0,1,9,15,434,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "D"]).
-text('black',440,272,'Helvetica',0,17,1,1,0,1,9,15,440,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "C"]).
-text('black',480,320,'Helvetica',0,17,1,1,0,1,107,15,444,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5Z_uncompress()"]).
-text('black',672,224,'Helvetica',0,17,1,1,0,1,107,15,454,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_hyper_copy()"]).
-text('black',672,240,'Helvetica',0,17,1,1,0,1,106,15,464,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5V_stride_copy()"]).
-text('black',672,256,'Helvetica',0,17,1,1,0,1,54,15,466,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "memcpy()"]).
-text('black',168,488,'Helvetica',0,17,1,0,0,1,282,15,471,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "NOTE: H5Z_uncompress() is not implemented yet."]).
diff --git a/doc/html/TechNotes/pipe5.gif b/doc/html/TechNotes/pipe5.gif
deleted file mode 100644
index 6ae0098..0000000
--- a/doc/html/TechNotes/pipe5.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/pipe5.obj b/doc/html/TechNotes/pipe5.obj
deleted file mode 100644
index 4738bbd..0000000
--- a/doc/html/TechNotes/pipe5.obj
+++ /dev/null
@@ -1,52 +0,0 @@
-%TGIF 3.0-p5
-state(1,33,100,0,0,0,8,1,9,1,1,1,2,1,0,1,0,'Helvetica',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1408,1088,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-box('black',64,64,128,256,0,1,1,22,0,0,0,0,0,'1',[
-]).
-box('black',80,96,112,224,26,1,1,23,0,0,0,0,0,'1',[
-]).
-poly('black',2,[
- 128,160,912,160],1,2,1,24,0,0,0,0,10,4,0,0,0,'2','10','4',
- "0",[
-]).
-box('black',912,96,944,224,26,1,1,88,0,0,0,0,0,'1',[
-]).
-text('black',96,48,'Helvetica',0,17,1,1,0,1,21,15,89,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "File"]).
-text('black',928,72,'Helvetica',0,17,1,1,0,1,32,15,93,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Buffer"]).
-box('black',48,32,992,512,0,1,1,186,0,0,0,0,0,'1',[
-]).
-text('black',480,40,'Helvetica',0,24,1,1,0,1,333,29,197,0,24,5,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Fig 5: Reading a Single Chunk"]).
-text('black',136,144,'Helvetica',0,17,1,1,0,1,9,15,201,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "A"]).
-text('black',480,112,'Helvetica',0,17,1,1,0,1,86,15,281,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_arr_read()"]).
-text('black',480,128,'Helvetica',0,17,1,1,0,1,102,15,349,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_istore_read()"]).
-text('black',480,144,'Helvetica',0,17,1,1,0,1,167,15,351,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_istore_copy_hyperslab()"]).
-text('black',480,160,'Helvetica',0,17,1,1,0,1,101,15,385,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_block_read()"]).
-text('black',480,176,'Helvetica',0,17,1,1,0,1,90,15,387,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_low_read()"]).
-text('black',480,192,'Helvetica',0,17,1,1,0,1,98,15,391,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5F_sec2_read()"]).
-text('black',480,208,'Helvetica',0,17,1,1,0,1,33,15,395,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "read()"]).
-text('black',864,240,'Helvetica',0,17,1,1,0,1,107,15,444,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "H5Z_uncompress()"]).
-text('black',56,488,'Helvetica',0,17,1,0,0,1,282,15,471,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "NOTE: H5Z_uncompress() is not implemented yet."]).
-poly('black',5,[
- 912,176,864,176,840,208,872,232,912,216],1,2,1,490,2,0,0,0,10,4,0,0,0,'2','10','4',
- "",[
-]).
-text('black',896,184,'Helvetica',0,17,1,0,0,1,8,15,491,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "B"]).
diff --git a/doc/html/TechNotes/shuffling-algorithm-report.pdf b/doc/html/TechNotes/shuffling-algorithm-report.pdf
deleted file mode 100755
index 459653c..0000000
--- a/doc/html/TechNotes/shuffling-algorithm-report.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/version.gif b/doc/html/TechNotes/version.gif
deleted file mode 100644
index 41d4401..0000000
--- a/doc/html/TechNotes/version.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/TechNotes/version.obj b/doc/html/TechNotes/version.obj
deleted file mode 100644
index 96b5b7f..0000000
--- a/doc/html/TechNotes/version.obj
+++ /dev/null
@@ -1,96 +0,0 @@
-%TGIF 3.0-p5
-state(0,33,100,0,0,0,8,1,9,1,1,0,2,1,0,1,0,'Courier',0,17,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,0,1088,1408,0,0,2880).
-%
-% @(#)$Header$
-% %W%
-%
-unit("1 pixel/pixel").
-page(1,"",1).
-poly('black',2,[
- 128,128,128,448],0,3,1,0,0,0,0,0,12,5,0,0,0,'3','12','5',
- "0",[
-]).
-poly('black',2,[
- 128,128,128,64],0,3,1,1,0,0,2,0,12,5,0,0,0,'3','12','5',
- "0",[
-]).
-poly('black',2,[
- 128,448,128,512],0,3,1,4,0,0,2,0,12,5,0,0,0,'3','12','5',
- "0",[
-]).
-text('black',144,112,'Courier',0,17,1,0,0,1,42,14,22,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.3.30"]).
-text('black',144,144,'Courier',0,17,1,0,0,1,42,14,30,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.3.31"]).
-text('black',144,176,'Courier',0,17,1,0,0,1,42,14,32,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.3.32"]).
-poly('black',2,[
- 256,208,256,448],0,3,1,34,0,0,0,0,12,5,0,0,0,'3','12','5',
- "0",[
-]).
-poly('black',2,[
- 256,448,256,512],0,3,1,36,0,0,2,0,12,5,0,0,0,'3','12','5',
- "0",[
-]).
-poly('black',2,[
- 128,192,256,208],1,1,1,37,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',144,224,'Courier',0,17,1,0,0,1,42,14,41,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.3.33"]).
-text('black',144,256,'Courier',0,17,1,0,0,1,42,14,43,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.3.34"]).
-text('black',272,224,'Courier',0,17,1,0,0,1,35,14,45,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.5.0"]).
-text('black',272,256,'Courier',0,17,1,0,0,1,35,14,47,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.5.1"]).
-text('black',272,288,'Courier',0,17,1,0,0,1,35,14,49,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.5.2"]).
-text('black',272,320,'Courier',0,17,1,0,0,1,35,14,51,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.5.3"]).
-text('black',144,288,'Courier',0,17,1,0,0,1,42,14,53,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.3.35"]).
-text('black',144,320,'Courier',0,17,1,0,0,1,35,14,57,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.4.0"]).
-text('black',144,368,'Courier',0,17,1,0,0,1,35,14,59,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.4.1"]).
-text('black',272,192,'Helvetica',0,17,1,0,0,1,144,15,67,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "New development branch"]).
-text('black',144,64,'Helvetica',0,17,1,0,0,1,163,15,69,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Original development branch"]).
-text('black',16,208,'Helvetica',0,17,2,0,0,1,87,30,71,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Feature Freeze",
- "at this point."]).
-text('black',16,320,'Helvetica',0,17,2,0,0,1,84,30,73,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Public Release",
- "at this point."]).
-poly('black',2,[
- 104,208,128,208],1,1,1,77,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 104,320,128,320],1,1,1,78,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-poly('black',2,[
- 256,336,128,352],1,1,1,79,0,0,0,0,8,3,0,0,0,'1','8','3',
- "0",[
-]).
-text('black',320,368,'Helvetica',0,17,3,0,0,1,137,45,82,0,12,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "Merge a bug fix from the",
- "development branch to",
- "the release branch."]).
-box('black',312,368,464,416,0,1,1,87,0,0,0,0,0,'1',[
-]).
-poly('black',4,[
- 312,392,240,384,296,344,232,344],1,1,1,90,1,0,0,0,8,3,0,0,0,'1','8','3',
- "6",[
-]).
-box('black',8,208,104,240,0,1,1,95,0,0,0,0,0,'1',[
-]).
-box('black',8,320,104,352,0,1,1,98,0,0,0,0,0,'1',[
-]).
-text('black',144,408,'Courier',0,17,1,0,0,1,35,14,102,0,11,3,0,0,0,0,0,2,0,0,0,0,"",0,0,0,[
- "1.4.2"]).
-box('black',0,40,480,528,0,1,1,104,0,0,0,0,0,'1',[
-]).
diff --git a/doc/html/Tools.html b/doc/html/Tools.html
deleted file mode 100644
index 21f967a..0000000
--- a/doc/html/Tools.html
+++ /dev/null
@@ -1,2760 +0,0 @@
-<html>
-<head><title>
-HDF5/Tools API Specification
-</title>
-
-<!-- #BeginLibraryItem "/ed_libs/styles_RM.lbi" -->
-
-<!--
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- -->
-
-<link href="ed_styles/RMelect.css" rel="stylesheet" type="text/css">
-<!-- #EndLibraryItem --></head>
-
-<body bgcolor="#FFFFFF">
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><center>
-<h1>HDF5 Tools</h1>
-</center>
-
-<!-- HEADER RIGHT "HDF5 Tools" -->
-
-<h2>HDF5 Tool Interfaces</h2>
-<p>
-
-HDF5-related tools are available to assist the user in a variety of
-activities, including
- examining or managing HDF5 files,
- converting raw data between HDF5 and other special-purpose formats,
- moving data and files between the HDF4 and HDF5 formats,
- measuring HDF5 library performance, and
- managing HDF5 library and application compilation,
- installation and configuration.
-Unless otherwise specified below, these tools are distributed and
-installed with HDF5.
-
-<!--
-<table border=0>
-<tr><td valign=top>
--->
-<ul>
- <li>User utilities:
- <ul>
- <li><a href="#Tools-Dump">h5dump</a> --
- Enables a user to examine the contents of an HDF5 file
- and dump those contents to an ASCII file
- <li><a href="#Tools-Ls">h5ls</a> --
- Lists specified features of HDF5 file contents
- <li><a href="#Tools-Diff">h5diff</a> --
- Compares two HDF5 files and reports the differences.
- <li><a href="#Tools-Repack">h5repack</a> -- Copies an HDF5 file to a new
- file with or without compression/chunking.
- <li><a href="#Tools-Perf">h5perf</a> --
- Measures HDF5 performance
- <li><a href="#Tools-Repart">h5repart</a> --
- Repartitions a file, creating a family of files
- <br><br>
- </ul>
-
- <li>Configuration and library management utilities:
- <ul>
- <li><a href="#Tools-Redeploy">h5redeploy</a> --
- Updates HDF5 compiler tools after an HDF5 software installation
- in a new location
- <li><a href="#Tools-H5CC">h5cc</a> --
- Simplifies the compilation of HDF5 programs written in C
- <li><a href="#Tools-H5FC">h5fc</a> --
- Simplifies the compilation of HDF5 programs written in Fortran90
- <li><a href="#Tools-H5C++">h5c++</a> --
- Simplifies the compilation of HDF5 programs written in C++
- <br><br>
- </ul>
-
- <li><a href="http://hdf.ncsa.uiuc.edu/hdf-java-html/"
- target="ToolsExt">Java-based tools for HDF5</a>
- for viewing, manipulating, and generating HDF4 and HDF5 files:
- <br>
- <em>(Distributed separately; external link is
- <code>http://hdf.ncsa.uiuc.edu/hdf-java-html/</code>)</em>
- <ul>
- <li><code>HDFview</code> -- a browser that
- works with both HDF4 and HDF5 files and
- can be used to transfer data between the two formats
- <li>Java interfaces for both the HDF4 and HDF5 libraries
- <li>Other HDF4- and HDF5-related products
- <br><br>
- </ul>
-
- <li>Data conversion utilities:
- <ul>
- <li><a href="#Tools-Import">h5import</a> --
- Imports data into an existing or new HDF5 file
- <li><a href="#Tools-GIF2H5">gif2h5</a> --
- Converts a GIF file to an HDF5 file
- <li><a href="#Tools-H52GIF">h52gif</a> --
- Converts images in an HDF5 file to a GIF file
- <br><br>
- </ul>
-
- <li><a href="http://hdf.ncsa.uiuc.edu/h4toh5/" target="ToolsExt">
- HDF5/HDF4 conversion tools</a>:
- <br>
- <em>(Distributed separately; external link is
- <code>http://hdf.ncsa.uiuc.edu/h4toh5/</code>)</em>
- <ul>
- <li><a href="http://hdf.ncsa.uiuc.edu/h4toh5/"
- target="ToolsExt">H4toH5 Conversion Library</a> --
- Provides APIs for use in tools that perform customized
- conversions of HDF4 files to HDF5 files
- <li><a href="#Tools-H5toh4">h5toh4</a> --
- Converts an HDF5 file to an HDF4 file
- <li><a href="#Tools-H4toh5">h4toh5</a> --
- Converts an HDF4 file to an HDF5 file
- <br><br>
- </ul>
-
- <li><a href="http://hdf.ncsa.uiuc.edu/tools5.html"
- target="ToolsExt">Other tools</a>,
- including third-party and commercial utilities and applications
- <br>
- <em>(Distributed separately; external link is
- <code>http://hdf.ncsa.uiuc.edu/tools5.html</code>)</em>
-
-</ul>
-<!--
-</td></tr>
-</table>
--->
-
-<!-- NEW PAGE -->
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5dump" -->
-<p>
-
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Dump">h5dump</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5dump
- [</code><em>OPTIONS</em><code>]</code> <em>file</em>
-<dt><strong>Purpose:</strong>
- <dd>Displays HDF5 file contents.
-<dt><strong>Description:</strong>
- <dd><code>h5dump</code> enables the user to examine
- the contents of an HDF5 file and dump those contents, in human
- readable form, to an ASCII file.
- <p>
- <code>h5dump</code> dumps HDF5 file content to standard output.
- It can display the contents of the entire HDF5 file or
- selected objects, which can be groups, datasets, a subset of a
- dataset, links, attributes, or datatypes.
- <p>
- The <code>--header</code> option displays object header
- information only.
- <p>
- Names are the absolute names of the objects. <code>h5dump</code>
- displays objects in the order same as the command order. If a
- name does not start with a slash, <code>h5dump</code> begins
- searching for the specified object starting at the root group.
- <p>
- If an object is hard linked with multiple names,
- <code>h5dump</code> displays the content of the object in the
- first occurrence. Only the link information is displayed in later
- occurrences.
- <p>
- <code>h5dump</code> assigns a name for any unnamed datatype in
- the form of
- <code>#</code><em>oid1</em><code>:</code><em>oid2</em>, where
- <em>oid1</em> and <em>oid2</em> are the object identifiers
- assigned by the library. The unnamed types are displayed within
- the root group.
- <p>
- Datatypes are displayed with standard type names. For example,
- if a dataset is created with <code>H5T_NATIVE_INT</code> type
- and the standard type name for integer on that machine is
- <code>H5T_STD_I32BE</code>, <code>h5dump</code> displays
- <code>H5T_STD_I32BE</code> as the type of the dataset.
- <p>
- <code>h5dump</code> can also dump a subset of a dataset.
- This feature operates in much the same way as hyperslabs in HDF5;
- the parameters specified on the command line are passed to the
- function <a href="RM_H5S.html#Dataspace-SelectHyperslab">
- <code>H5Sselect_hyperslab</code></a> and the resulting selection
- is displayed.
- <p>
- The <code>h5dump</code> output is described in detail in the
- <a href="ddl.html"><cite>DDL for HDF5</cite></a>, the
- <cite>Data Description Language</cite> document.
- <p>
- <em>Note</em>: It is not permissible to specify multiple
- attributes, datasets, datatypes, groups, or soft links with one
- flag. For example, one may not issue the command
- <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- <font size=-1>WRONG:</font> &nbsp;
- <code>h5dump -a /attr1 /attr2 foo.h5</code>
- </br>
- to display both <code>/attr1</code> and <code>/attr2</code>.
- One must issue the following command:
- <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- <font size=-1>CORRECT:</font> &nbsp;
- <code>h5dump -a /attr1 -a /attr2 foo.h5</code>
- </br>
- <p>
- It's possible to select the file driver with which to open the
- HDF5 file by using the --filedriver (-f) command-line option.
- Acceptable values for the --filedriver option are: "sec2",
- "family", "split", "multi", and "stream". If the file driver flag
- isn't specified, then the file will be opened with each driver in
- turn and in the order specified above until one driver succeeds
- in opening the file.
- </p>
- <p>
- One byte integer type data is displayed in decimal by default. When
- displayed in ASCII, a non-printable code is displayed in 3 octal
- digits preceeded by a back-slash unless there is a C language escape
- sequence for it. For example, CR and LF are printed as \r and \n.
- Though the NUL code is represented as \0 in C, it is printed as
- \000 to avoid ambiguity as illustrated in the following 1 byte
- char data (since this is not a string, embedded NUL is possible).
- <pre>
- 141 142 143 000 060 061 062 012
- a b c \0 0 1 2 \n </pre>
- h5dump prints them as "abc\000012\n". But if h5dump prints NUL as \0,
- the output is "abc\0012\n" which is ambiguous.
- </p>
-
-<!-- NEW PAGE -->
-<dt><strong>XML Output:</strong>
- <dd>With the <code>--xml</code> option, <code>h5dump</code> generates
- XML output. This output contains a complete description of the file,
- marked up in XML. The XML conforms to the HDF5 Document Type
- Definition (DTD) available at
- <a href="http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.dtd">
- <code>http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.dtd</code></a>.
- <p>
- The XML output is suitable for use with other tools, including the
- <a href="http://hdf.ncsa.uiuc.edu/java-hdf5-html">HDF5 Java Tools</a>.
-
-<dt><strong>Options and Parameters:</strong>
- <ul>
- <table>
- <tr>
- <td valign="top"><code>-h</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--help</code></td>
- <td valign="top">Print a usage message and exit.</td>
- </tr>
- <tr>
- <td valign="top"><code>-B</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--bootblock</code></td>
- <td valign="top">Print the content of the boot block.<br> <em>(This
- option is not yet implemented.)</em></td>
- </tr>
- <tr>
- <td valign="top"><code>-H</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--header</code></td>
- <td valign="top">Print the header only; no data is displayed.</td>
- </tr>
- <tr>
- <td valign="top"><code>-A</code></td>
- <td valign="top">Print the header and value of attributes; data of datasets
- is not displayed.</td>
- </tr>
- <tr>
- <td valign="top"><code>-i</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--object-ids</code></td>
- <td valign="top">Print the object ids.</td>
- </tr>
- <tr>
- <td valign="top"><code>-r</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--string</code></td>
- <td valign="top">Print 1-bytes integer datasets as ASCII.</td>
- </tr>
- <tr>
- <td valign="top"><code>-V</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--version</code></td>
- <td valign="top">Print version number and exit.</td>
- </tr>
- <tr>
- <td valign="top"><code>-a&nbsp;<em>P</em></code>&nbsp;&nbsp;or&nbsp;&nbsp;<code>--attribute=<em>P</em>&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Print the specified attribute.</td>
- </tr>
- <tr>
- <td valign="top"><code>-d <em>P</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--dataset=<em>P</em></code></td>
- <td valign="top">Print the specified dataset.</td>
- </tr>
- <tr>
- <td valign="top"><code>-f<em>&nbsp;D</em></code>&nbsp;&nbsp;or&nbsp;&nbsp;<code>--filedriver=<em>D&nbsp;&nbsp;&nbsp;&nbsp;</em>&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Specify which driver to open the file with.</td>
- </tr>
- <tr>
- <td valign="top"><code>-g <em>P</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--group=<em>P</em></code></td>
- <td valign="top">Print the specified group and all members.</td>
- </tr>
- <tr>
- <td valign="top"><code>-l&nbsp;<em>P</em></code>&nbsp;&nbsp;or&nbsp;&nbsp;<code>--soft-link=<em>P&nbsp;&nbsp;&nbsp;&nbsp;</em></code></td>
- <td valign="top">Print the value(s) of the specified soft link.</td>
- </tr>
- <tr>
- <td valign="top"><code>-o <em>F</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--output=<em>F</em></code></td>
- <td valign="top">Output raw data into file F.</td>
- </tr>
- <tr>
- <td valign="top"><code>-t <em>T</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--datatype=<em>T</em></code></td>
- <td valign="top">Print the specified named datatype.</td>
- </tr>
- <tr>
- <td valign="top"><code>-w <em>N</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--width=<em>N</em></code></td>
- <td valign="top">Set the number of columns of output.</td>
- </tr>
- <tr>
- <td valign="top"><code>-x <em></em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--xml</code></td>
- <td valign="top">Output XML using XML schema (default) instead of DDL.</td>
- </tr>
- <tr>
- <td valign="top"><code>-u <em></em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--use-dtd</code></td>
- <td valign="top">Output XML using XML DTD instead of DDL.</td>
- </tr>
- <tr>
- <td valign="top"><code>-D <em>U</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--xml-dtd=<em>U</em></code></td>
- <td valign="top">In XML output, refer to the DTD or schema at <em>U</em>
- instead of the default schema/DTD.</td>
- </tr>
- <tr>
- <td valign="top"><code>-X <em>S</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--xml-dns=<em>S</em></code></td>
- <td valign="top">In XML output, (XML Schema) use qualified names in
- the XML:<br> &nbsp;&nbsp; &nbsp;&nbsp; ":": no namespace, default:
- "hdf5:"</td>
- </tr>
- <tr>
- <td valign="top"><code>-s <em>L</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--start=<em>L</em></code></td>
- <td valign="top">Offset of start of subsetting selection. <br>
- Default: the beginning of the dataset.</td>
- </tr>
- <tr>
- <td valign="top"><code>-S <em>L</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--stride=<em>L</em></code></td>
- <td valign="top">Hyperslab stride. <br>
- Default: 1 in all dimensions.</td>
- </tr>
- <tr>
- <td valign="top"><code>-c <em>L</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--count=<em>L</em></code></td>
- <td valign="top">Number of blocks to include in the selection.</td>
- </tr>
- <tr>
- <td valign="top"><code>-k <em>L</em></code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--block=<em>L</em></code></td>
- <td valign="top">Size of block in hyperslab. <br>
- Default: 1 in all dimensions.</td>
- </tr>
- <tr>
- <td valign="top"><code>--</code></td>
- <td valign="top">Indicate that all following arguments are non-options.
- E.g., to dump a file called `-f', use h5dump -- -f.</td>
- </tr>
- <tr>
- <td valign="top"><em>file</em></td>
- <td valign="top">The file to be examined.</td>
- </tr>
- </table>
- </ul>
- <br><br>
-<!-- NEW PAGE -->
- <ul>
- The option parameters listed above are defined as follows:
- <table>
- <tr>
- <td valign="top"><em>D</em>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">which file driver to use in opening the
- file. Acceptable values are "sec2", "family", "split",
- "multi", and "stream". Without the file driver flag the
- file will be opened with each driver in turn and in the
- order specified above until one driver succeeds in
- opening the file.</td></tr>
- <tr>
- <td valign="top"><em>P</em></td>
- <td valign="top">The full path from the root group to
- the object</td></tr>
- <tr>
- <td valign="top"><em>T</em></td>
- <td valign="top">The name of the datatype</td></tr>
- <tr>
- <td valign="top"><em>F</em></td>
- <td valign="top">A filename</td></tr>
- <tr>
- <td valign="top"><em>N</em></td>
- <td valign="top">An integer greater than 1</td></tr>
- <tr>
- <td valign="top"><em>L</em></td>
- <td valign="top">A list of integers, the number of which is
- equal to the number of dimensions in the dataspace being
- queried</td></tr>
- <tr>
- <td valign="top"><em>U</em></td>
- <td valign="top">A URI (as defined in
- [<a href="http://www.ietf.org/rfc/rfc2396.txt">IETF RFC 2396</a>],
- updated by
- [<a href="http://www.ietf.org/rfc/rfc2732.txt">IETF RFC 2732</a>])
- that refers to the DTD to be used to validate the XML</td></tr>
- </table>
-
- <p>Subsetting parameters can also be expressed in a convenient
- compact form, as follows:
- <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- <code>--dataset="/foo/mydataset[START;STRIDE;COUNT;BLOCK]"</code>
- <br>
- All of the semicolons (<code>;</code>) are required, even when
- a parameter value is not specified.
- When not specified, default parameter values are used.
- </ul>
-<dt><strong>Examples:</strong>
-
- <table border="0" width="100%">
- <tr><td valign="top">
- <ol>
- <li>Dumping the group <code>/GroupFoo/GroupBar</code> in the file
- <code>quux.h5</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump -g /GroupFoo/GroupBar quux.h5</code>
- <br>
- <br>
- <li>Dumping the dataset <code>Fnord</code> in the group
- <code>/GroupFoo/GroupBar</code> in the file <code>quux.h5</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump -d /GroupFoo/GroupBar/Fnord quux.h5</code>
- <br>
- <br>
- <li>Dumping the attribute <code>metadata</code> of the dataset
- <code>Fnord</code> which is in group
- <code>/GroupFoo/GroupBar</code> in the file <code>quux.h5</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump -a /GroupFoo/GroupBar/Fnord/metadata quux.h5</code>
- <br>
- <br>
- <li>Dumping the attribute <code>metadata</code> which is an
- attribute of the root group in the file <code>quux.h5</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump -a /metadata quux.h5</code>
- <br>
- <br>
- <li>Producing an XML listing of the file <code>bobo.h5</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump --xml bobo.h5 > bobo.h5.xml</code>
- <br>
- <br>
- <li>Dumping a subset of the dataset <code>/GroupFoo/databar/</code>
- in the file <code>quux.h5</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump -d /GroupFoo/databar --start="1,1" --stride="2,3"
- <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- --count="3,19" --block="1,1" quux.h5</code>
- <br>
- <br>
- <li>The same example using the short form to specify the
- subsetting parameters:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;
- h5dump -d "/GroupFoo/databar[1,1;2,3;3,19;1,1]" quux.h5</code>
- <br>
- <br>
- </ol></td></tr>
- </table>
-<!-- NEW PAGE -->
-<dt><strong>Current Status:</strong>
- <dd>The current version of <code>h5dump</code> displays the
- following information:
- <ul>
- <li>Group
- <ul>
- <li>group attribute (see Attribute)
- <li>group member
- </ul>
- <li>Dataset
- <ul>
- <li>dataset attribute (see Attribute)
- <li>dataset type (see Datatype)
- <li>dataset space (see Dataspace)
- <li>dataset data
- </ul>
- <li>Attribute
- <ul>
- <li>attribute type (see Datatype)
- <li>attribute space (see Dataspace)
- <li>attribute data
- </ul>
- <li>Datatype
- <ul>
- <li>integer type
- <br>
- - H5T_STD_I8BE, H5T_STD_I8LE, H5T_STD_I16BE, ...
- <li>floating point type
- <br>
- - H5T_IEEE_F32BE, H5T_IEEE_F32LE, H5T_IEEE_F64BE, ...
- <li>string type
- <li>compound type
- <br>
- - named, unnamed and transient compound type
- <br>
- - integer, floating or string type member
- <li>opaque types
- <li>reference type
- <br>
- - object references
- <br>
- - data regions
- <li>enum type
- <li>variable-length datatypes
- <br>
- - atomic types only
- <br>
- - scalar or single dimensional array of variable-length
- types supported
- </ul>
- <li>Dataspace
- <ul>
- <li>scalar and simple space
- </ul>
- <li>Soft link
- <li>Hard link
- <li>Loop detection
- </ul>
-
-<dt><strong>See Also:</strong>
-
- <ul>
- <table border="0" width="100%">
- <tr><td valign="top">
- <li>HDF5 Data Description Language syntax at
- <a href="ddl.html"><cite>DDL for HDF5</cite></a>
- <li>HDF5 XML Schema at
- <a href="http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.xsd">http://hdf.ncsa.uiuc.edu/DTDs/HDF5-File.xsd</a>
- <li>HDF5 XML information at
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/XML">http://hdf.ncsa.uiuc.edu/HDF5/XML/</a>
- </td></tr>
- </table>
- </ul>
-
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5ls" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Ls">h5ls</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5ls
- [</code><em>OPTIONS</em><code>]</code><em>
- file</em><code>
- [</code><em>OBJECTS...</em><code>]</code>
-<dt><strong>Purpose:</strong>
- <dd>Prints information about a file or dataset.
-<dt><strong>Description:</strong>
- <dd><code>h5ls</code> prints selected information about file objects
- in the specified format.
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top" width="30%"><code>-h</code>&nbsp;&nbsp;or&nbsp;&nbsp;<code>-?</code>&nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--help&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Print a usage message and exit.</td></tr>
- <tr>
- <td valign="top"><code>-a</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--address</code></td>
- <td valign="top">Print addresses for raw data.</td></tr>
- <tr>
- <td valign="top"><code>-d</code> &nbsp;&nbsp;or&nbsp;&nbsp; <code>--data</code></td>
- <td valign="top">Print the values of datasets.</td></tr>
- <tr>
- <td valign="top"><code>-e</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--errors</code></td>
- <td valign="top">Show all HDF5 error reporting.</td></tr>
- <tr>
- <td valign="top"><code>-f</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--full</code></td>
- <td valign="top">Print full path names instead of base names.</td></tr>
- <tr>
- <td valign="top"><code>-g</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--group</code></td>
- <td valign="top">Show information about a group, not its contents.</td></tr>
- <tr>
- <td valign="top"><code>-l</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--label</code></td>
- <td valign="top">Label members of compound datasets.</td></tr>
- <tr>
- <td valign="top"><code>-r</code> &nbsp;&nbsp;or&nbsp;&nbsp;<code>--recursive&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">List all groups recursively, avoiding cycles.</td></tr>
- <tr>
- <td valign="top"><code>-s</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--string</code></td>
- <td valign="top">Print 1-bytes integer datasets as ASCII.</td></tr>
- <tr>
- <td valign="top"><code>-S</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--simple</code></td>
- <td valign="top">Use a machine-readable output format.</td></tr>
- <tr>
- <td valign="top"><code>-w</code><em>N</em> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--width=</code><em>N&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">Set the number of columns of output.</td></tr>
- <tr>
- <td valign="top"><code>-v</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--verbose</code></td>
- <td valign="top">Generate more verbose output.</td></tr>
- <tr>
- <td valign="top"><code>-V</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--version</code></td>
- <td valign="top">Print version number and exit.</td></tr>
- <tr>
- <td valign="top"><code>-x</code> &nbsp;&nbsp;or&nbsp;&nbsp;
- <code>--hexdump</code></td>
- <td valign="top">Show raw data in hexadecimal format.</td></tr>
- <tr>
- <td valign="top"><em>file</em></td>
- <td valign="top">The file name may include a printf(3C) integer format
- such as <code>%%05d</code> to open a file family.</td></tr>
- <tr>
- <td valign="top"><em>objects</em></td>
- <td valign="top">Each object consists of an HDF5 file name optionally
- followed by a slash and an object name within the file
- (if no object is specified within the file then the
- contents of the root group are displayed). The file name
- may include a <code>printf(3C)</code> integer format such
- as "%05d" to open a file family.</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5diff" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Diff">h5diff</a> &nbsp;&nbsp;&nbsp;
-<dt><strong>Syntax:</strong>
- <dd><code>h5diff </code> <em>file1</em> <em>file2</em>
- [<em>OPTIONS</em>]
- [<em>object1</em> [<em>object2</em> ] ]
-<dt><strong>Purpose:</strong>
- <dd>Compares two HDF5 files and reports the differences.
-<dt><strong>Description:</strong>
- <dd><code>h5diff</code> is a command line tool that compares
- two HDF5 files, <em>file1</em> and <em>file2</em>, and
- reports the differences between them. 
- <p>
- Optionally, <code>h5diff</code> will compare two objects
- within these files.
- If only one object, <em>object1</em>, is specified,
- <code>h5diff</code> will compare
- <em>object1</em> in <em>file1</em>
- with <em>object1</em> in <em>file2</em>.
- In two objects, <em>object1</em> and <em>object2</em>,
- are specified, <code>h5diff</code> will compare
- <em>object1</em> in <em>file1</em>
- with <em>object2</em> in <em>file2</em>.
- These objects must be HDF5 datasets.
- <dd>
- <p>
- <em>object1</em> and <em>object2</em> must be expressed
- as absolute paths from the respective file's root group.
- <dd>
- <p>
- <code>h5diff</code> has the following four modes of output:<br>
- Normal mode: print the number of differences found and where they occurred<br>
- Report mode (-r): print the above plus the differences<br>
- Verbose mode (-v): print the above plus a list of objects and warnings<br>
- Quiet mode (-q): do not print output (h5diff always returns an exit code of
- 1 when differences are found).
- <dd>
- <p>
- Additional information, with several sample cases,
- can be found in the document
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/h5diff/h5diff_design.html">
- <cite>H5diff Examples</cite></a>.
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>file1</em></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top"><em>file2</em></td>
- <td valign="top">The HDF5 files to be compared.</td></tr>
- <tr>
- <td valign="top"><code>-h</code></td>
- <td valign="top">help message.</td></tr>
- <tr>
- <td valign="top"><code>-r</code></td>
- <td valign="top">Report mode. Print the differences.</td></tr>
- <tr>
- <td valign="top"><code>-v</code></td>
- <td valign="top">Verbose mode. Print the differences, list of objects, warnings.</td>
- </tr>
- <tr>
- <td valign="top"><code>-q</code></td>
- <td valign="top">Quiet mode. Do not print output.</td>
- </tr>
- <tr>
- <td valign="top"><code>-n</code> <em>count</em></td>
- <td valign="top">Print difference up to <em>count</em>
- differences, then stop. <em>count</em> must be a positive integer.</td></tr>
- <tr>
- <td valign="top"><code>-d</code> <em>delta</em></td>
- <td valign="top">Print only differences that are greater than the
- limit <em>delta</em>. <em>delta</em> must be a positive number.
- The comparison criterion is whether the absolute value of the
- difference of two corresponding values is greater than
- <em>delta</em>
- <br>(e.g., <code> |a&ndash;b|&nbsp;&gt;&nbsp;<em>delta</em></code>,
- where <code>a</code> is a value in <em>file1</em> and
- <code>b</code> is a value in <em>file2</em>).</td></tr>
- <tr>
- <td valign="top"><code>-p</code>&nbsp;<em>relative&nbsp;&nbsp;&nbsp;&nbsp;</em>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Print only differences that are greater than a
- relative error. <em>relative</em> must be a positive number.
- The comparison criterion is whether the absolute value of the
- difference <code>1</code> and the ratio of two corresponding values
- is greater than <em>relative</em>
- (e.g., <code>|1&ndash;(b/a)|&nbsp;&gt;&nbsp;<em>relative</em></code>
- where <code>a</code> is a value in <em>file1</em> and
- <code>b</code> is a value in <em>file2</em>).</td></tr>
- <tr>
- <td valign="top"><em>object1</em></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top"><em>object2</em></td>
- <td valign="top">Specific object(s) within the files to be compared.</td></tr>
- </table></ul>
-<dt><strong>Examples:</strong>
- <dd>The following <code>h5diff</code> call compares
- the object <code>/a/b</code> in <code>file1</code>
- with the object <code>/a/c</code> in <code>file2</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;h5diff file1 file2 /a/b /a/c</code>
- <dd>This <code>h5diff</code> call compares
- the object <code>/a/b</code> in <code>file1</code>
- with the same object in <code>file2</code>:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;h5diff file1 file2 /a/b</code>
- <dd>And this <code>h5diff</code> call compares
- all objects in both files:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;h5diff file1 file2</code>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5repart" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Repack">h5repack</a> &nbsp;&nbsp;&nbsp;
-<dt><strong>Syntax:</strong>
- <dd><code>h5repack </code> -i <em>file1</em>-o <em>file2</em> [-h] [-v] [-f
- '<i>filter</i>'] [-l '<i>layout</i>'][-m number][-e file]
-<dt><strong>Purpose:</strong>
- <dd>Copies an HDF5 file to a new file with or without compression/chunking.
-<dt><strong>Description:</strong>
- <dd><code>h5repack</code> is a command line tool that applies HDF5 filters
- to a input file <em>file1</em>, saving the output in a new file, <em>file2</em>.<p>'<i>filter</i>'
- is a string with the format&nbsp;<br>
- &lt;list of objects&gt; : &lt;name of filter&gt; = &lt;filter
- parameters&gt;.<br>
- <br>
- &nbsp;&lt;list of objects&gt; is a comma separated list of object names
- meaning apply compression only to those objects. If no object names are
- specified, the filter is applied to all objects<br>
- &nbsp;&lt;name of filter&gt; can be:&nbsp;<br>
- GZIP, to apply the HDF5 GZIP filter (GZIP compression)<br>
- SZIP, to apply the HDF5 SZIP filter (SZIP compression)<br>
- SHUF, to apply the HDF5 shuffle filter<br>
- FLET, to apply the HDF5 checksum filter<br>
- NONE, to remove the filter&nbsp;<br>
- &lt;filter parameters&gt; is optional compression info&nbsp;<br>
- SHUF (no parameter)&nbsp;<br>
- FLET (no parameter)&nbsp;<br>
- GZIP=&lt;deflation level&gt; from 1-9&nbsp;<br>
- SZIP=&lt;pixels per block,coding&gt; (pixels per block is a even number in
- 2-32 and coding method is 'EC' or 'NN')
-<dt>&nbsp;</dt>
-<dd>'<i>layout'</i> is a string with the format<br>
- &nbsp;&lt;list of objects&gt; : &lt;layout type&gt;&nbsp;<br>
- <br>
- &lt;list of objects&gt; is a comma separated list of object names, meaning
- that layout information is supplied for those objects. If no object names are
- specified, the layout is applied to all objects&nbsp;<br>
- &lt;layout type&gt; can be:&nbsp;<br>
- CHUNK, to apply chunking layout&nbsp;<br>
- COMPA, to apply compact layout&nbsp;<br>
- CONTI, to apply continuous layout&nbsp;<br>
- &lt;layout parameters&gt; is present for the chunk case only it is the chunk
- size of each dimension: &lt;dim_1 x dim_2 x ... dim_n&gt;</dd>
-<dt>&nbsp;</dt>
-<dt><strong>Options and Parameters:</strong>
- <dl>
- <dt><em>file1</em>
- <dt><em>file2</em>
- <dd>The input and output HDF5 files
- <dt><code>-h</code>
- <dd>help message.<dt><code>-f</code> <em>filter</em>
- <dd>Filter type<dt><code>-l</code> <em>layout</em>
- <dd>Layout type<dt><code>-v</code>
- <dd>Verbose mode. Print output (list of objects in the file, filters
- and layout applied).<dt><code>-e</code> <em>file</em>
- <dd>File with the -f and -l options (only filter and layout flags)
- <dt><code>-d</code> <em>delta</em>
- <dd>Print only differences that are greater than the
- limit <em>delta</em>.
- <em>delta</em> must be a positive number.
- The comparison criterion is whether the
- absolute value of the difference of
- two corresponding values is greater than
- <em>delta</em>
- <br>(e.g., <code> |a&ndash;b|&nbsp;&gt;&nbsp;<em>delta</em></code>,
- where <code>a</code> is a value in <em>file1</em> and
- <code>b</code> is a value in <em>file2</em>).<dt><code>-m</code> <em>number</em>
- <dd>Do not apply the filter to objects which size in bytes is
- smaller than number. If no size is specified a minimum of 1024
- bytes is assumed.
- </dl>
-<dt><strong>Examples:</strong>
- <dd>1) h5repack -i file1 -o file2 -f GZIP=1 -v<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Applies GZIP compression to all
- objects in file1 and saves the output in file2
- <p>2) h5repack -i file1 -o file2 -f dset1:SZIP=8,NN -v<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Applies SZIP compression only
- to object 'dset1'</p>
- <p>3) h5repack -i file1 -o file2 -l dset1,dset2:CHUNK=20x10 -v<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Applies chunked layout to
- objects 'dset1' and 'dset2'<br>
-</dl>
-
-<p>&nbsp;</p>
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Repart">h5repart</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5repart
- [-v]
- [-V]
- [-[b|m]</code><em>N</em><code>[g|m|k]]</code>
- [-family_to_sec2]
- <em>source_file
- dest_file</em>
-<dt><strong>Purpose:</strong>
- <dd>Repartitions a file or family of files.
-<dt><strong>Description:</strong>
- <dd><code>h5repart</code> joins a family of files into a single file,
- or copies one family of files to another while changing the size
- of the family members. <code>h5repart</code> can also be used to
- copy a single file to a single file with holes. At this stage,
- <code>h5repart</code> can not split a single non-family file into
- a family of file(s).
- <p>
- To convert a family of file(s) to a single non-family file
- (<code>sec2</code> file), the option <code>-family_to_sec2</code>
- has to be used.
- <p>
- Sizes associated with the <code>-b</code> and <code>-m</code>
- options may be suffixed with <code>g</code> for gigabytes,
- <code>m</code> for megabytes, or <code>k</code> for kilobytes.
- <p>
- File family names include an integer <code>printf</code>
- format such as <code>%d</code>.
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>-v</code></td>
- <td valign="top">Produce verbose output.</td></tr>
- <tr>
- <td valign="top"><code>-V</code></td>
- <td valign="top">Print a version number and exit.</td></tr>
- <tr>
- <td valign="top"><code>-b</code><em>N</em></td>
- <td valign="top">The I/O block size, defaults to 1kB</td></tr>
- <tr>
- <td valign="top"><code>-m</code><em>N</em></td>
- <td valign="top">The destination member size or 1GB</td></tr>
- <tr>
- <td valign="top"><code>-family_to_sec2</code></td>
- <td valign="top">Convert file driver from family to sec2</td></tr>
- <tr>
- <td valign="top"><em>source_file&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">The name of the source file</td></tr>
- <tr>
- <td valign="top"><em>dest_file</em></td>
- <td valign="top">The name of the destination files</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5import" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Import">h5import</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5import
- <em>infile</em> <em>in_options</em>
- [<em>infile</em> <em>in_options</em> <b>...</b>]
- -o <em>outfile</em>
- </code>
- <dd><code>h5import
- <em>infile</em> <em>in_options</em>
- [<em>infile</em> <em>in_options</em> <b>...</b>]
- -outfile <em>outfile</em>
- </code>
- <dd><code>h5import -h</code>
- <dd><code>h5import -help</code>
-<dt><strong>Purpose:</strong>
- <dd>Imports data into an existing or new HDF5 file.
-<dt><strong>Description:</strong>
- <dd><code>h5import</code> converts data
- from one or more ASCII or binary files, <code><i>infile</i></code>,
- into the same number of HDF5 datasets
- in the existing or new HDF5 file, <code><i>outfile</i></code>.
- Data conversion is performed in accordance with the
- user-specified type and storage properties
- specified in <code><em>in_options</em></code>.
- <p>
- The primary objective of <code>h5import</code> is to
- import floating point or integer data.
- The utility's design allows for future versions that
- accept ASCII text files and store the contents as a
- compact array of one-dimensional strings,
- but that capability is not implemented in HDF5 Release 1.6.
-
- <p>
- <b>Input data and options:</b><br>
- Input data can be provided in one of the following forms:
- <ul><li>As an ASCII, or plain-text, file containing either
- floating point or integer data
- <li>As a binary file containing either 32-bit or
- 64-bit native floating point data
- <li>As a binary file containing native integer data,
- signed or unsigned and
- 8-bit, 16-bit, 32-bit, or 64-bit.
- <li>As an ASCII, or plain-text, file containing text data.
- (This feature is not implemented in HDF5 Release 1.6.)
- </ul>
- Each input file, <code><i>infile</i></code>,
- contains a single <em>n</em>-dimensional
- array of values of one of the above types expressed
- in the order of fastest-changing dimensions first.
- <p>
- Floating point data in an ASCII input file must be
- expressed in the fixed floating form (e.g., 323.56)
- <code>h5import</code> is designed to accept scientific notation
- (e.g., 3.23E+02) in an ASCII, but that is not implemented in HDF5 release 1.6.
- <p>
- Each input file can be associated with options specifying
- the datatype and storage properties.
- These options can be specified either as
- <em>command line arguments</em>
- or in a <em>configuration file</em>.
- Note that exactly one of these approaches must be used with a
- single input file.
- <p>
- Command line arguments, best used with simple input files,
- can be used to specify
- the class, size, dimensions of the input data and
- a path identifying the output dataset.
- <p>
- The recommended means of specifying input data options
- is in a configuration file; this is also the only means of
- specifying advanced storage features.
- See further discussion in "The configuration file" below.
- <p>
- The only required option for input data is dimension sizes;
- defaults are available for all others.
- <p>
- <code>h5import</code> will accept up to 30 input files in a single call.
- Other considerations, such as the maximum length of a command line,
- may impose a more stringent limitation.
-
- <p>
- <b>Output data and options:</b><br>
- The name of the output file is specified following
- the <code>-o</code> or <code>-output</code> option
- in <code><i>outfile</i></code>.
- The data from each input file is stored as a separate dataset
- in this output file.
- <code><i>outfile</i></code> may be an existing file.
- If it does not yet exist, <code>h5import</code> will create it.
- <p>
- Output dataset information and storage properties can be
- specified only by means of a configuration file.
- <table width=100% border=0>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- Dataset path
- </td><td>If the groups in the path leading to the dataset
- do not exist, <code>h5import</code> will create them.<br>
- If no group is specified, the dataset will be created
- as a member of the root group.<br>
- If no dataset name is specified, the default name is
- <code>dataset1</code> for the first input dataset,
- <code>dataset2</code> for the second input dataset,
- <code>dataset3</code> for the third input dataset,
- etc.<br>
- <code>h5import</code> does not overwrite a pre-existing
- dataset of the specified or default name.
- When an existing dataset of a conflicting name is
- encountered, <code>h5import</code> quits with an error;
- the current input file and any subsequent input files
- are not processed.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- Output type
- </td><td>Datatype parameters for output data
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Output data class
- </td><td>Signed or unsigned integer or floating point
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Output data size
- </td><td>8-, 16-, 32-, or 64-bit integer<br>
- 32- or 64-bit floating point
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Output architecture
- </td><td><code>IEEE</code><br>
- <code>STD</code><br>
- <code>NATIVE</code> (Default)<br>
- Other architectures are included in the <code>h5import</code> design
- but are not implemented in this release.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Output byte order
- </td><td>Little- or big-endian.<br>
- Relevant only if output architecture
- is <code>IEEE</code>, <code>UNIX</code>, or <code>STD</code>;
- fixed for other architectures.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- Dataset&nbsp;layout&nbsp;and&nbsp;storage&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;properties
- </td><td>Denote how raw data is to be organized on the disk.
- If none of the following are specified,
- the default configuration is contiguous layout and with no compression.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Layout
- </td><td>Contiguous (Default)<br>
- Chunked
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;External storage
- </td><td>Allows raw data to be stored in a non-HDF5 file or in an
- external HDF5 file.<br>
- Requires contiguous layout.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Compressed
- </td><td>Sets the type of compression and the
- level to which the dataset must be compressed.<br>
- Requires chunked layout.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Extendable
- </td><td>Allows the dimensions of the dataset increase over time
- and/or to be unlimited.<br>
- Requires chunked layout.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
- &nbsp;&nbsp;&nbsp;&nbsp;Compressed and<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extendable
- </td><td>Requires chunked layout.
- </td></tr>
- <tr valign=top align=left><td width=30>&nbsp;</td><td>
-
- </td><td>&nbsp;
- </td></tr>
- </table>
- <p>
-
- <p>
- <b>Command-line arguments:</b><br>
- The <code>h5import</code> syntax for the command-line arguments,
- <code><em>in_options</em></code>, is as follows:
- <table width=100% border=0>
- <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>h5import <em>infile</em> -d <em>dim_list</em>
- [-p <em>pathname</em>]
- [-t <em>input_class</em>]
- [-s <em>input_size</em>]
- [<em>infile</em> ...]
- -o <em>outfile</em></code><br>
- or<br>
- <code>h5import <em>infile</em> -dims <em>dim_list</em>
- [-path <em>pathname</em>]
- [-type <em>input_class</em>]
- [-size <em>input_size</em>]
- [<em>infile</em> ...]
- -outfile <em>outfile</em></code><br>
- or<br>
- <code>h5import <em>infile</em> -c <em>config_file</em>
- [<em>infile</em> ...]
- -outfile <em>outfile</em></code>
- </td></tr>
- </table>
- Note the following:
- If the <code>-c <em>config_file</em></code> option is used with
- an input file, no other argument can be used with that input file.
- If the <code>-c <em>config_file</em></code> option is not used with
- an input data file, the <code>-d <em>dim_list</em></code> argument
- (or <code>-dims <em>dim_list</em></code>)
- must be used and any combination of the remaining options may be used.
- Any arguments used must appear in <em>exactly</em> the order used
- in the syntax declarations immediately above.
-
- <p>
- <b>The configuration file:</b><br>
- A configuration file is specified with the
- <code>-c <em>config_file</em></code> option:
- <table border=0>
- <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>h5import <em>infile</em> -c <em>config_file</em>
- [<em>infile</em> -c <em>config_file2</em> ...]
- -outfile <em>outfile</em></code>
- </td></tr>
- </table>
- <p>
- The configuration file is an ASCII file and must be
- organized as "Configuration_Keyword Value" pairs,
- with one pair on each line.
- For example, the line indicating that
- the input data class (configuration keyword <code>INPUT-CLASS</code>)
- is floating point in a text file (value <code>TEXTFP</code>)
- would appear as follows:<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;INPUT-CLASS&nbsp;TEXTFP</code>
- <p>
- A configuration file may have the following keywords each
- followed by one of the following defined values.
- One entry for each of the first two keywords,
- <code>RANK</code> and <code>DIMENSION-SIZES</code>,
- is required; all other keywords are optional.
-
- <p>
- <table width=100% border=0>
- <tr align=left><th valign=top align=left>
- <hr>Keyword&nbsp;&nbsp;<br><code>&nbsp;&nbsp;&nbsp;&nbsp;</code>Value
- </th><th valign=top align=left><hr>Description
- </th></tr>
-
- <tr valign=top align=left><td>
- <hr><code>RANK&nbsp;&nbsp;</code>
- </td><td><hr>The number of dimensions in the dataset. (Required)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;<em>rank</em></code>
- </td><td>An integer specifying the number of dimensions in the dataset.<br>
- Example: <code> &nbsp; 4 &nbsp; </code> for a 4-dimensional dataset.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>DIMENSION-SIZES</code>
- </td><td><hr>Sizes of the dataset dimensions. (Required)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;<em>dim_sizes</em></code>
- </td><td>A string of space-separated integers
- specifying the sizes of the dimensions in the dataset.
- The number of sizes in this entry must match the value in
- the <code>RANK</code> entry.
- The fastest-changing dimension must be listed first.<br>
- Example: <code> &nbsp; 4 3 4 38 &nbsp; </code> for a 38x4x3x4 dataset.
- </td></tr>
-
-<!-- NEW PAGE -->
- <tr valign=top align=left><td>
- <hr><code>PATH</code>
- </td><td><hr>Path of the output dataset.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;<em>path</em></code>
- </td><td>The full HDF5 pathname identifying the output dataset
- relative to the root group within the output file.<br>
- I.e., <code><em>path</em></code> is a string consisting of
- optional group names, each followed by a slash,
- and ending with a dataset name.
- If the groups in the path do no exist, they will be
- created.<br>
- If <code>PATH</code> is not specified, the output dataset
- is stored as a member of the root group and the
- default dataset name is
- <code>dataset1</code> for the first input dataset,
- <code>dataset2</code> for the second input dataset,
- <code>dataset3</code> for the third input dataset, etc.<br>
- Note that <code>h5import</code> does not overwrite a
- pre-existing dataset of the specified or default name.
- When an existing dataset of a conflicting name is
- encountered, <code>h5import</code> quits with an error;
- the current input file and any subsequent input files
- are not processed.<br>
- Example: The configuration file entry
- <table border=0>
- <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>PATH grp1/grp2/dataset1</code>
- </td></tr>
- </table>
- indicates that the output dataset <code>dataset1</code> will
- be written in the group <code>grp2/</code> which is in
- the group <code>grp1/</code>,
- a member of the root group in the output file.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>INPUT-CLASS&nbsp;&nbsp;</code>
- </td><td><hr>A string denoting the type of input data.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;TEXTIN</code>
- </td><td>Input is signed integer data in an ASCII file.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;TEXTUIN</code>
- </td><td>Input is unsigned integer data in an ASCII file.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;TEXTFP</code>
- </td><td>Input is floating point data in fixed notation (e.g., 325.34)
- in an ASCII file.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;TEXTFPE</code>
- </td><td>Input is floating point data in scientific notation (e.g., 3.2534E+02)
- in an ASCII file.<br>
- (Not implemented in this release.)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;IN</code>
- </td><td>Input is signed integer data in a binary file.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;UIN</code>
- </td><td>Input is unsigned integer data in a binary file.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;FP</code>
- </td><td>Input is floating point data in a binary file. (Default)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;STR</code>
- </td><td>Input is character data in an ASCII file.
- With this value, the configuration keywords
- <code>RANK</code>, <code>DIMENSION-SIZES</code>,
- <code>OUTPUT-CLASS</code>, <code>OUTPUT-SIZE</code>,
- <code>OUTPUT-ARCHITECTURE</code>, and <code>OUTPUT-BYTE-ORDER</code>
- will be ignored.<br>
- (Not implemented in this release.)
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>INPUT-SIZE</code>
- </td><td><hr>An integer denoting the size of the input data, in bits.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;8</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;16</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;32</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;64</code>
- </td><td>For signed and unsigned integer data:
- <code>TEXTIN</code>, <code>TEXTUIN</code>,
- <code>IN</code>, or <code>UIN</code>.
- (Default: <code> 32</code>)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;32</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;64</code>
- </td><td>For floating point data:
- <code>TEXTFP</code>, <code>TEXTFPE</code>,
- or <code>FP</code>.
- (Default: <code> 32</code>)
- </td></tr>
-
-<!-- NEW PAGE -->
- <tr valign=top align=left><td>
- <hr><code>OUTPUT-CLASS&nbsp;&nbsp;</code>
- </td><td><hr>A string denoting the type of output data.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;IN</code>
- </td><td>Output is signed integer data.<br>
- (Default if <code>INPUT-CLASS</code> is
- <code>IN</code> or <code>TEXTIN</code>)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;UIN</code>
- </td><td>Output is unsigned integer data.<br>
- (Default if <code>INPUT-CLASS</code> is
- <code>UIN</code> or <code>TEXTUIN</code>)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;FP</code>
- </td><td>Output is floating point data.<br>
- (Default if <code>INPUT-CLASS</code> is not specified or is
- <code>FP</code>, <code>TEXTFP</code>, or <code>TEXTFPE</code>)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;STR</code>
- </td><td>Output is character data,
- to be written as a 1-dimensional array of strings.<br>
- (Default if <code>INPUT-CLASS</code> is <code>STR</code>)<br>
- (Not implemented in this release.)
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>OUTPUT-SIZE</code>
- </td><td><hr>An integer denoting the size of the output data, in bits.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;8</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;16</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;32</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;64</code>
- </td><td>For signed and unsigned integer data:
- <code>IN</code> or <code>UIN</code>.
- (Default: Same as <code>INPUT-SIZE</code>, else <code> 32</code>)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;32</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;64</code>
- </td><td>For floating point data:
- <code>FP</code>.
- (Default: Same as <code>INPUT-SIZE</code>, else <code> 32</code>)
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>OUTPUT-ARCHITECTURE</code>
- </td><td><hr>A string denoting the type of output architecture.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;NATIVE</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;STD</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;IEEE</code><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;INTEL</code> *<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;CRAY</code> *<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;MIPS</code> *<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;ALPHA</code> *<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;UNIX</code> *
- </td><td>See the "Predefined Atomic Types" section
- in the "HDF5 Datatypes" chapter
- of the <cite>HDF5 User's Guide</cite>
- for a discussion of these architectures.<br>
- Values marked with an asterisk (*) are not implemented in this release.<br>
- (Default: <code>NATIVE</code>)
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>OUTPUT-BYTE-ORDER</code>
- </td><td><hr>A string denoting the output byte order.
- This entry is ignored if the <code>OUTPUT-ARCHITECTURE</code>
- is not specified or if it is not specified as <code>IEEE</code>,
- <code>UNIX</code>, or <code>STD</code>.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;BE</code>
- </td><td>Big-endian. (Default)
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;LE</code>
- </td><td>Little-endian.
- </td></tr>
-
-<!-- NEW PAGE -->
- <tr valign=top align=left><td colspan="2">
- <hr>The following options are disabled by default, making
- the default storage properties no chunking, no compression,
- no external storage, and no extensible dimensions.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>CHUNKED-DIMENSION-SIZES</code><br>
- </td><td><hr>Dimension sizes of the chunk for chunked output data.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;<em>chunk_dims</em></code>
- </td><td>A string of space-separated integers specifying the
- dimension sizes of the chunk for chunked output data.
- The number of dimensions must correspond to the value
- of <code>RANK</code>.<br>
- The presence of this field indicates that the
- output dataset is to be stored in chunked layout;
- if this configuration field is absent,
- the dataset will be stored in contiguous layout.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>COMPRESSION-TYPE</code>
- </td><td><hr>Type of compression to be used with chunked storage.
- Requires that <code>CHUNKED-DIMENSION-SIZES</code>
- be specified.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;GZIP</code>
- </td><td>Gzip compression.<br>
- Other compression algorithms are not implemented
- in this release of <code>h5import</code>.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>COMPRESSION-PARAM</code>
- </td><td><hr>Compression level.
- Required if <code>COMPRESSION-TYPE</code> is specified.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;1</code> through <code>9</code>
- </td><td>Gzip compression levels:
- <code>1</code> will result in the fastest compression
- while <code>9</code> will result in the
- best compression ratio.<br>
- (Default: 6. The default gzip compression level is 6;
- not all compression methods will have a default level.)
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>EXTERNAL-STORAGE</code>
- </td><td><hr>Name of an external file in which to create the output dataset.
- Cannot be used with <code>CHUNKED-DIMENSIONS-SIZES</code>,
- <code>COMPRESSION-TYPE</code>, OR <code>MAXIMUM-DIMENSIONS</code>.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;<i>external_file</i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
- <!-- THE EXTRA NON-BREAKING SPACES AT THE END OF THE PRECEDING LINE -->
- <!-- ARE PADDING SPACES TO ENSURE THE PROPER FORMATTING OF THIS TABLE. -->
- <!-- DO NOT REMOVE THEM!!!!!!!!!!!!! -->
- </td><td>A string specifying the name of an external file.
- </td></tr>
-
- <tr valign=top align=left><td>
- <hr><code>MAXIMUM-DIMENSIONS</code>
- </td><td><hr>Maximum sizes of all dimensions.
- Requires that <code>CHUNKED-DIMENSION-SIZES</code> be specified.
- </td></tr>
- <tr valign=top align=left><td>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;<em>max_dims</em></code>
- </td><td>A string of space-separated integers specifying the
- maximum size of each dimension of the output dataset.
- A value of <code>-1</code> for any dimension implies
- unlimited size for that particular dimension.<br>
- The number of dimensions must correspond to the value
- of <code>RANK</code>.<br>
- </td></tr>
-
- <tr valign=top align=left><td><hr></td><td><hr></td></tr>
- </table>
-
-<!-- NEW PAGE -->
-
-<dt><strong>Options and Parameters:</strong>
-
- <ul><table>
- <tr>
- <td valign="top"><code>infile(s)</code></td>
- <td valign="top">Name of the Input file(s).</td></tr>
- <tr>
- <td valign="top"><code>in_options</code></td>
- <td valign="top">Input options. Note that while only the <code>-dims</code> argument
- is required, arguments must used in the order in which they are listed below.</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-d <em>dim_list</em></code></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-dims&nbsp;<em>dim_list</em></code></td>
- <td valign="top">Input data dimensions.
- <code><em>dim_list</em></code> is a string of
- comma-separated numbers with no spaces
- describing the dimensions of the input data.
- For example, a 50 x 100 2-dimensional array would be
- specified as <code>-dims 50,100</code>.<br>
- Required argument: if no configuration file is used,
- this command-line argument is mandatory.</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-p <em>pathname</em></code></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-pathname&nbsp;<em>pathname&nbsp;&nbsp;
- <br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</em></code></td>
- <td valign="top"><code><em>pathname</em></code> is a string consisting of
- one or more strings separated by slashes (<code>/</code>)
- specifying the path of the dataset in the output file.
- If the groups in the path do no exist, they will be
- created.<br>
- Optional argument: if not specified,
- the default path is
- <code>dataset1</code> for the first input dataset,
- <code>dataset2</code> for the second input dataset,
- <code>dataset3</code> for the third input dataset,
- etc.<br>
- <code>h5import</code> does not overwrite a pre-existing
- dataset of the specified or default name.
- When an existing dataset of a conflicting name is
- encountered, <code>h5import</code> quits with an error;
- the current input file and any subsequent input files
- are not processed.</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-t&nbsp;<em>input_class</em></code></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-type&nbsp;<em>input_class&nbsp;&nbsp;</em></code></td>
- <td valign="top"><code><em>input_class</em></code> specifies the class of the
- input data and determines the class of the output data.<br>
- Valid values are as defined in the Keyword/Values table
- in the section "The configuration file" above.<br>
- Optional argument: if not specified,
- the default value is <code>FP</code>.</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-s&nbsp;<em>input_size</em></code></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-size&nbsp;<em>input_size</em></code></td>
- <td valign="top"><code><em>input_size</em></code> specifies the size in bits
- of the input data and determines the size of the output data.<br>
- Valid values for signed or unsigned integers are
- <code>8</code>, <code>16</code>, <code>32</code>, and <code>64</code>.<br>
- Valid values for floating point data are
- <code>32</code> and <code>64</code>.<br>
- Optional argument: if not specified,
- the default value is <code>32</code>.</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-c&nbsp;<em>config_file</em></code></td>
- <td valign="top"><code><em>config_file</em></code> specifies a
- configuration file.<br>
- This argument replaces all other arguments except
- <code><em>infile</em></code> and
- <code>-o <em>outfile</em></code></td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-h</code></td>
- <td valign="top">&nbsp;</td></tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;<code>-help</code></td>
- <td valign="top">
- Prints the <code>h5import</code> usage summary:<br>
- <code>h5import -h[elp], OR<br>
- h5import &lt;infile&gt; &lt;options&gt; [&lt;infile&gt; &lt;options&gt;...] -o[utfile] &lt;outfile&gt;</code><br>
- Then exits.
- </td></tr>
- <tr>
- <td valign="top"><code>outfile</code></td>
- <td valign="top">Name of the HDF5 output file.</td></tr>
- </table></ul>
-
-<!-- NEW PAGE -->
-<dt><strong>Examples:</strong>
- <dd><b>Using command-line arguments:</b>
- <table width=100% border=0>
- <tr><td colspan=2>
- <code>h5import infile -dims 2,3,4 -type TEXTIN -size 32 -o out1</code>
- </td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- This command creates a file <code>out1</code> containing
- a single 2x3x4 32-bit integer dataset.
- Since no pathname is specified, the dataset is stored
- in <code>out1</code> as <code>/dataset1</code>.
- </td></tr><tr><td colspan=2>
- <code>h5import infile -dims 20,50 -path bin1/dset1 -type FP -size 64 -o out2</code>
- </td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- This command creates a file <code>out2</code> containing
- a single a 20x50 64-bit floating point dataset.
- The dataset is stored in <code>out2</code> as <code>/bin1/dset1</code>.
- </td></tr>
- </table>
-
- <dd><b>Sample configuration files:</b><br>
- The following configuration file specifies the following:<br>
- &ndash; The input data is a 5x2x4 floating point array in
- an ASCII file.<br>
- &ndash; The output dataset will be saved in chunked layout,
- with chunk dimension sizes of 2x2x2.<br>
- &ndash; The output datatype will be 64-bit floating point,
- little-endian, IEEE.<br>
- &ndash; The output dataset will be stored in
- <code><em>outfile</em></code>
- at <code>/work/h5/pkamat/First-set</code>.<br>
- &ndash; The maximum dimension sizes of the output dataset
- will be 8x8x(unlimited).
- <pre>
- PATH work/h5/pkamat/First-set
- INPUT-CLASS TEXTFP
- RANK 3
- DIMENSION-SIZES 5 2 4
- OUTPUT-CLASS FP
- OUTPUT-SIZE 64
- OUTPUT-ARCHITECTURE IEEE
- OUTPUT-BYTE-ORDER LE
- CHUNKED-DIMENSION-SIZES 2 2 2
- MAXIMUM-DIMENSIONS 8 8 -1
- </pre>
-
- The next configuration file specifies the following:<br>
- &ndash; The input data is a 6x3x5x2x4 integer array in
- a binary file.<br>
- &ndash; The output dataset will be saved in chunked layout,
- with chunk dimension sizes of 2x2x2x2x2.<br>
- &ndash; The output datatype will be 32-bit integer in
- <code>NATIVE</code> format
- (as the output architecture is not specified).<br>
- &ndash; The output dataset will be compressed using Gzip compression
- with a compression level of 7.<br>
- &ndash; The output dataset will be stored in
- <code><em>outfile</em></code> at <code>/Second-set</code>.
- <pre>
- PATH Second-set
- INPUT-CLASS IN
- RANK 5
- DIMENSION-SIZES 6 3 5 2 4
- OUTPUT-CLASS IN
- OUTPUT-SIZE 32
- CHUNKED-DIMENSION-SIZES 2 2 2 2 2
- COMPRESSION-TYPE GZIP
- COMPRESSION-PARAM 7
- </pre>
-
-
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "gif2h5" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-GIF2H5">gif2h5</a>
-<dt><strong>Syntax:</strong>
- <dd><code>gif2h5</code>
- <em>gif_file</em> <em>h5_file</em>
-<dt><strong>Purpose:</strong>
- <dd>Converts a GIF file to an HDF5 file.
-<dt><strong>Description:</strong>
- <dd><code>gif2h5</code> accepts as input the GIF file <em>gif_file</em>
- and produces the HDF5 file <em>h5_file</em> as output.
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>gif_file&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">The name of the input GIF file</td></tr>
- <tr>
- <td valign="top"><em>h5_file</em></td>
- <td valign="top">The name of the output HDF5 file</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h52gif" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H52GIF">h52gif</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h52gif</code>
- <em>h5_file</em> <em>gif_file</em>
- <code>-i</code> <em>h5_image</em>
- <code>[-p</code> <em>h5_palette</em><code>]</code>
-<dt><strong>Purpose:</strong>
- <dd>Converts an HDF5 file to a GIF file.
-<dt><strong>Description:</strong>
- <dd><code>h52gif</code> accepts as input the HDF5 file <em>h5_file</em>
- and the names of images and associated palettes within that file
- as input and produces the GIF file <em>gif_file</em>,
- containing those images, as output.
- <p>
- <code>h52gif</code> expects <em>at least</em>
- one <em>h5_image</em>.
- You may repeat
- <br>
- &nbsp;&nbsp;&nbsp;&nbsp;
- <code>-i</code> <em>h5_image</em>
- <code>[-p</code> <em>h5_palette</em><code>]</code>
- <br>
- up to 50 times, for a maximum of 50 images.
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><em>h5_file</em></td>
- <td valign="top">The name of the input HDF5 file</td></tr>
- <tr>
- <td valign="top"><em>gif_file</em></td>
- <td valign="top">The name of the output GIF file</td></tr>
- <tr>
- <td valign="top"><code>-i</code> <em>h5_image</em></td>
- <td valign="top">Image option, specifying the name of an HDF5 image or
- dataset containing an image to be converted</td></tr>
- <tr>
- <td valign="top"><code>-p</code>&nbsp;<em>h5_palette&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">Palette option, specifying the name of an HDF5 dataset
- containing a palette to be used in an image conversion</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5toh4" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H5toh4">h5toh4</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5toh4 -h</code><br>
- <code>h5toh4 </code><em>
- h5file
- h4file</em><br>
- <code>h5toh4 </code><em>
- h5file</em><br>
- <code>h5toh4 -m </code><em>
- h5file1
- h5file2
- h5file3</em> ...
-<dt><strong>Purpose:</strong>
- <dd>Converts an HDF5 file into an HDF4 file.
-<dt><strong>Description:</strong>
- <dd><code>h5toh4</code> is an HDF5 utility which reads
- an HDF5 file, <em>h5file</em>, and converts all
- supported objects and pathways to produce an HDF4 file,
- <em>h4file</em>. If <em>h4file</em> already exists,
- it will be replaced.
- <p>
- If only one file name is given, the name must end in
- <code>.h5</code> and is assumed to represent the
- HDF5 input file. <code>h5toh4</code> replaces the
- <code>.h5</code> suffix with <code>.hdf</code> to form
- the name of the resulting HDF4 file and proceeds as above.
- If a file with the name of the intended HDF4 file already
- exists, <code>h5toh4</code> exits with an error without
- changing the contents of any file.
- <p>
- The <code>-m</code> option allows multiple HDF5 file
- arguments. Each file name is treated the same as the
- single file name case above.
- <p>
- The <code>-h</code> option causes the following
- syntax summary to be displayed:
- <pre> h5toh4 file.h5 file.hdf
- h5toh4 file.h5
- h5toh4 -m file1.h5 file2.h5 ...</pre>
-
- <p>
-
- The following HDF5 objects occurring in an HDF5 file are
- converted to HDF4 objects in the HDF4 file:
-
- <ul>
- <li>HDF5 group objects are converted into HDF4 Vgroup
- objects. HDF5 hard links and soft links pointing to
- objects are converted to HDF4 Vgroup references.
- <li>HDF5 dataset objects of integer datatype are
- converted into HDF4 SDS objects. These datasets
- may have up to 32 fixed dimensions.
- The slowest varying dimension may be extendable.
- 8-bit, 16-bit, and 32-bit integer datatypes are
- supported.
- <li>HDF5 dataset objects of floating point datatype
- are converted into HDF4 SDS objects.
- These datasets may have up to 32 fixed dimensions.
- The slowest varying dimension may be extendable.
- 32-bit and 64-bit floating point datatypes are
- supported.
- <li>HDF5 dataset objects of single dimension and
- compound datatype are converted into HDF4 Vdata
- objects. The length of that single dimension may
- be fixed or extendable. The members of the
- compound datatype are constrained to be no more
- than rank 4.
- <li>HDF5 dataset objects of single dimension and fixed length string
- datatype are converted into HDF4 Vdata objects. The HDF4 Vdata
- is a single field whose order is the length of the HDF5 string
- type. The number of records of the Vdata is the length of the
- single dimension which may be fixed or extendable.
- </ul>
-
- Other objects are not converted and are not recorded
- in the resulting <em>h4file</em>.
- <p>
- Attributes associated with any of the supported HDF5
- objects are carried over to the HDF4 objects.
- Attributes may be of integer, floating point, or fixed length
- string datatype and they may have up to 32 fixed dimensions.
- <p>
- All datatypes are converted to big-endian.
- Floating point datatypes are converted to IEEE format.
-
-<dt><strong>Note:</strong>
- <dd>The <code>h5toh4</code> and <code>h4toh5</code> utilities
- are no longer part of the HDF5 product;
- they are distributed separately through the page
- <a href="http://hdf.ncsa.uiuc.edu/h4toh5/">
- Converting between HDF (4.x) and HDF5</a>.
- </p>
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>-h</code></td>
- <td valign="top">Displays a syntax summary.</td></tr>
- <tr>
- <td valign="top"><code>-m</code></td>
- <td valign="top">Converts multiple HDF5 files to multiple HDF4 files.</td></tr>
- <tr>
- <td valign="top"><em>h5file&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">The HDF5 file to be converted.</td></tr>
- <tr>
- <td valign="top"><em>h4file</em></td>
- <td valign="top">The HDF4 file to be created.</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h4toh5" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H4toh5">h4toh5</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h4toh5 -h</code><br>
- <code>h4toh5 </code><em>
- h4file
- h5file</em><br>
- <code>h4toh5 </code><em>
- h4file</em><br>
- <!-- currently no -m option
- <code>h4toh5 -m </code><em>
- h4file1
- h4file2
- h4file3</em> ...
- -->
-<dt><strong>Purpose:</strong>
- <dd>Converts an HDF4 file to an HDF5 file.
-<dt><strong>Description:</strong>
- <dd><code>h4toh5</code> is a file conversion utility that reads
- an HDF4 file, <em>h4file</em> (<code>input.hdf</code> for example),
- and writes an HDF5 file, <em>h5file</em> (<code>output.h5</code>
- for example), containing the same data.
- <p>
- If no output file <em>h5file</em> is specified,
- <code>h4toh5</code> uses the input filename to designate
- the output file, replacing the extension <code>.hdf</code>
- with <code>.h5</code>.
- For example, if the input file <code>scheme3.hdf</code> is
- specified with no output filename, <code>h4toh5</code> will
- name the output file <code>scheme3.h5</code>.
- <p>
- <!-- currently no -m option
- The <code>-m</code> option allows multiple HDF5 file
- arguments. Each file name is treated the same as the
- single file name case above.
- <p>
- -->
- The <code>-h</code> option causes a syntax summary
- similar to the following to be displayed:
- <pre> h4toh5 inputfile.hdf outputfile.h5
- h4toh5 inputfile.hdf <!-- currently no -m option
- h4toh5 -m inputfile1.hdf inputfile2.hdf ... --> </pre>
- <p>
- Each object in the HDF4 file is converted to an equivalent
- HDF5 object, according to the mapping described in
- <a href="ADGuide/H4toH5Mapping.pdf" target=ExternalWinA>
- <cite>Mapping HDF4 Objects to HDF5 Objects</cite></a>.
- (If this mapping changes between HDF5 Library releases, a more up-to-date
- version may be available at
- <a href="http://hdf.ncsa.uiuc.edu/HDF5/papers/h4toh5/H4-to-H5MappingGuidelines.pdf" target=ExternalWinB>
- <cite>Mapping HDF4 Objects to HDF5 Objects</cite> on the HDF FTP server</a>.)
- <p>
- In this initial version, <code>h4toh5</code> converts the following
- HDF4 objects:
- <center>
- <table width=75% border=0>
- <tr><th width=40% valign=top align=left>
- HDF4 Object
- </td><th width=60% valign=top align=left>
- Resulting HDF5 Object
- </td></tr>
- <tr><td width=40% valign=top align=left>
- SDS
- </td><td width=60% valign=top align=left>
- Dataset
- </td></tr>
- <tr><td width=40% valign=top align=left>
- GR, RI8, and RI24 image
- </td><td width=60% valign=top align=left>
- Dataset
- </td></tr>
- <tr><td width=40% valign=top align=left>
- Vdata
- </td><td width=60% valign=top align=left>
- Dataset
- </td></tr>
- <tr><td width=40% valign=top align=left>
- Vgroup
- </td><td width=60% valign=top align=left>
- Group
- </td></tr>
- <tr><td width=40% valign=top align=left>
- Annotation
- </td><td width=60% valign=top align=left>
- Attribute
- </td></tr>
- <tr><td width=40% valign=top align=left>
- Palette
- </td><td width=60% valign=top align=left>
- Dataset
- </td></tr>
- </table>
- </center>
-<dt><strong>Note:</strong>
- <dd>The <code>h4toh5</code> and <code>h5toh4</code> utilities
- are no longer part of the HDF5 product;
- they are distributed separately through the page
- <a href="http://hdf.ncsa.uiuc.edu/h4toh5/">
- Converting between HDF (4.x) and HDF5</a>.
- </p>
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>-h</code></td>
- <td valign="top">Displays a syntax summary.</td></tr>
- <!-- currently no -m option
- <tr>
- <td valign="top"><code>-m</code></td>
- <td valign="top">Converts multiple HDF4 files to multiple HDF5 files.</td></tr>
- -->
- <tr>
- <td valign="top"><em>h4file&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">The HDF4 file to be converted.</td></tr>
- <tr>
- <td valign="top"><em>h5file</em></td>
- <td valign="top">The HDF5 file to be created.</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5perf" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Perf">h5perf</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5perf </code>[<code>-h </code>|<code> --help</code>]
- <dd><code>h5perf </code>[<em>options</em>]
-<!--
- [<code>-a</code> <em>size</em> | <code>--align=</code><em>size</em>]
- [<code>-A</code> <em>api_list</em> | <code>--api=</code><em>api_list</em>]
- [<code>-B</code> <em>size</em> | <code>--block-size=</code><em>size</em>]
- [<code>-c</code> | <code>--chunk</code>]
- [<code>-C</code> | <code>--collective</code>]
- [<code>-d</code> <em>N</em> | <code>--num-dsets</code><em>N</em>]
- [<code>-D</code> <em>debug_flags</em> | <code>--debug=</code><em>debug_flags</em>]
- [<code>-e</code> <em>size</em> | <code>--num-bytes=</code><em>size</em>]
- [<code>-F</code> <em>N</em> | <code>--num-files=</code><em>N</em>]
- [<code>-i</code> <em>N</em> | <code>--num-iterations=</code><em>N</em>]
- [<code>-I</code> | <code>--interleaved</code>]
- [<code>-m</code> | <code>--mpi-posix</code>]
- [<code>-n</code> | <code>--no-fill</code>]
- [<code>-o</code> <em>file</em> | <code> --output=</code><em>file</em>]
- [<code>-p</code> <em>N</em> | <code>--min-num-processes=</code><em>N</em>]
- [<code>-P</code> <em>N</em> | <code>--max-num-processes=</code><em>N</em>]
- [<code>-T</code> <em>size</em> | <code>--threshold=</code><em>size</em>]
- [<code>-w</code> | <code>--write-only</code>]
- [<code>-x</code> <em>size</em> | <code>--min-xfer-size=</code><em>size</em>]
- [<code>-X</code> <em>size</em> | <code>--max-xfer-size=</code>size<em></em>]
--->
-
-<dt><strong>Purpose:</strong>
- <dd>Tests Parallel HDF5 performance.
-<dt><strong>Description:</strong>
- <dd><code>h5perf</code> provides tools for testing the performance
- of the Parallel HDF5 library.
- <p>
- The following environment variables have the following
- effects on <code>H5perf</code> behavior:
- <table border=0>
- <tr align="left" valign="top"><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
- <code>HDF5_NOCLEANUP</code></td><td>
- If set, <code>h5perf</code> does not remove data files.
- (Default: Remove)</td></tr>
- <tr align="left" valign="top"><td>&nbsp;</td><td>
- <code>HDF5_MPI_INFO</code></td><td>
- Must be set to a string containing a list of semi-colon separated
- key=value pairs for the MPI <code>INFO</code> object.<br>
- Example:</td></tr>
- <tr align="left" valign="top"><td>&nbsp;</td><td>
- <code>HDF5_PARAPREFIX&nbsp;&nbsp;</code></td><td>
- Sets the prefix for parallel output data files.</td></tr>
- </table>
-
-<dt><strong>Options and Parameters:</strong>
-
- <ul>
- <table width="100%">
- <tr>
- <td valign="top" colspan="2">These terms are used as follows in this section:</td></tr>
- <tr>
- <td valign="top"><em>file&nbsp;&nbsp;</em></td>
- <td valign="top">A filename</td></tr>
- <tr>
- <td valign="top"><em>size</em></td>
- <td valign="top">A size specifier, expressed as an integer
- greater than or equal to 0 (zero) followed by a size indicator:<br>
- &nbsp;&nbsp;&nbsp;&nbsp;<code>K </code> for kilobytes (1024 bytes)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;<code>M </code> for megabytes (1048576 bytes)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;<code>G </code> for gigabytes (1073741824 bytes)<br>
- Example: <code>37M</code> specifies 37 megabytes or 38797312 bytes.</td></tr>
- <tr>
- <td valign="top"><em>N</em></td>
- <td valign="top">An integer greater than or equal to 0 (zero)</td></tr>
- </table><br>
-
- <table width="100%">
- <tr>
- <td valign="top" colspan="2"><code>-h</code>, <code>--help</code></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Prints a usage message and exits.</td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-a</code> <em>size</em>, <code>--align=</code><em>size</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Specifies the alignment of objects in the HDF5 file.
- (Default: 1)</td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-A</code> <em>api_list</em>, <code>--api=</code><em>api_list</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Specifies which APIs to test. <em>api_list</em>
- is a comma-separated list with the following valid values:
- <table border="0">
- <tr align="left" valign="top">
- <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td> <code>phdf5&nbsp;&nbsp;</code></td>
- <td>Parallel HDF5</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>mpiio</code></td>
- <td>MPI-I/O</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>posix</code></td>
- <td>POSIX</td>
- </tr>
- </table>
- (Default: All APIs)<br> <br>
- Example, <code>--api=mpiio,phdf5</code> specifies that the MPI I/O
- and parallel HDf5 APIs are to be monitored.</td>
- </tr>
-<!-- NEW PAGE -->
- <tr>
- <td valign="top" colspan="2"><code>-B</code> <em>size</em>, <code>--block-size=</code><em>size</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Specifies the block size within the transfer
- buffer. (Default: 128K)<br> <br>
- Block size versus transfer buffer size: The <em>transfer buffer size</em>
- is the size of a buffer in memory. The data in that buffer is broken
- into <em>block size</em> pieces and written to the file.<br> <br>
- Transfer block size is set by the <code>-x</code> (or <code>--min-xfer-size</code>)
- and <code>-X</code> (or <code>--max-xfer-size</code>) options.<br>
- The pattern in which the blocks are written to the file is described
- in the discussion of the <code>-I</code> (or <code>--interleaved</code>)
- option.<br></td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-c</code>, <code>--chunk</code></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Creates HDF5 datasets in chunked layout. (Default:
- Off)</td>
- </tr>
- <tr>
- <td valign="top" colspan="2"><code>-C</code>, <code>--collective</code></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Use collective I/O for the MPI I/O and
- Parallel HDF5 APIs.<br>
- (Default: Off, i.e., independent I/O)<br> <br>
- If this option is set and the MPI-I/O and PHDF5 APIs are in use, all
- the blocks in each transfer buffer will be written at once with an
- MPI derived type.<br></td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-d</code> <em>N</em>, <code>--num-dsets</code><em>N</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Sets the number of datasets per file. (Default: <code>1</code>)</td>
- </tr>
- <tr>
- <td valign="top" colspan="2"><code>-D</code> <em>debug_flags</em>, <code>--debug=</code><em>debug_flags</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Sets the debugging level. <em>debug_flags</em>
- is a comma-separated list of debugging flags with the following valid
- values:
- <table border="0">
- <tr align="left" valign="top">
- <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td> <code>1&nbsp;&nbsp;</code></td>
- <td>Minimal debugging</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>2</code></td>
- <td>Moderate debugging (&ldquo;not quite everything&rdquo;)</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>3</code></td>
- <td>Extensive debugging (&ldquo;everything&rdquo;)</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>4</code></td>
- <td>All possible debugging (&ldquo;the kitchen sink&rdquo;)</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>r</code></td>
- <td>Raw data I/O throughput information</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>t</code></td>
- <td>Times, in additions to throughputs</td>
- </tr>
- <tr align="left" valign="top">
- <td>&nbsp;</td>
- <td> <code>v</code></td>
- <td>Verify data correctness</td>
- </tr>
- </table>
- (Default: No debugging)<br> <br>
- Example: <code>--debug=2,r,t</code> specifies to run a moderate level
- of debugging while collecting raw data I/O throughput information
- and verifying the correctness of the data.<br></td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-e</code> <em>size</em>, <code>--num-bytes=</code><em>size</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Specifies the number of bytes per process per dataset.
- (Default: <code>256K</code>)</td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-F</code> <em>N</em>, <code>--num-files=</code><em>N</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Specifies the number of files. (Default: <code>1</code>)</td>
- </tr>
- <tr>
- <td colspan="2" valign="top"><code>-i</code> <em>N</em>, <code>--num-iterations=</code><em>N</em></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Sets the number of iterations to perform. (Default:
- <code>1</code>)</td>
- </tr>
- </table>
-
-<!-- NEW PAGE -->
- <table width="100%">
- <tr>
- <td valign="top" colspan="2"><code>-I</code>, <code>--interleaved</code></td>
- </tr>
- <tr>
- <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
- <td valign="top">Sets interleaved block I/O.<br>
- (Default: Contiguous block I/O)<br> <br>
- Interleaved vs. Contiguous blocks in a parallel environment:<br>
- When contiguous blocks are written to a dataset, the dataset is divided
- into <em>m</em> regions, where <em>m</em> is the number of processes
- writing separate portions of the dataset. Each process then writes
- data to its own region. When interleaved blocks are written to a dataset,
- space for the first block of the first process is allocated in the
- dataset, then space is allocated for the first block of the second
- process, etc., until space has been allocated for the first block
- of each process. Space is then allocated for the second block of the
- first process, the second block of the second process, etc.<br> <br>
- For example, in the case of a 4 process run with 1M bytes-per-process,
- 256K transfer buffer size, and 64KB block size, 16 <em>contiguous</em>
- blocks per process would be written to the file in the manner<br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;1111111111111111222222222222222233333333333333334444444444444444</code><br>
- while 16 interleaved blocks per process would be written to the file
- as <code>&nbsp;&nbsp;&nbsp;&nbsp;1234123412341234123412341234123412341234123412341234123412341234</code><br>
- If collective I/O is turned on, all of the four blocks per transfer
- buffer will be written in one collective I/O call.<br></td>
- </tr>
- </table>
- <table width="100%">
- <tr>
- <td valign="top"><code>-m</code>, <code>--mpi-posix</code></td>
- <td valign="top">Sets use of MPI-posix driver for HDF5 I/O. (Default:
- MPI-I/O driver)</td>
- </tr>
- <tr>
- <td valign="top"><code>-n</code>, <code>--no-fill</code></td>
- <td valign="top">Specifies to not write fill values to HDF5 datasets.
- This option is supported only in HDF5 Release v1.6 or later.<br>
- (Default: Off, i.e., write fill values)</td>
- </tr>
- <tr>
- <td valign="top"><code>-o</code> <em>file</em>, <code> --output=</code><em>file</em></td>
- <td valign="top">Sets the output file for raw data to <em>file</em>.
- (Default: None)</td>
- </tr>
- <tr>
- <td valign="top"><code>-p</code> <em>N</em>, <code>--min-num-processes=</code><em>N</em></td>
- <td valign="top">Sets the minimum number of processes to be used. (Default:
- <code>1</code>)</td>
- </tr>
- <tr>
- <td valign="top"><code>-P</code> <em>N</em>, <code>--max-num-processes=</code><em>N</em><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code>
- </td>
- <td valign="top">Sets the maximum number of processes to be used.<br>
- (Default: All <code>MPI_COMM_WORLD</code>processes)</td>
- </tr>
- <tr>
- <td valign="top"><code>-T</code> <em>size</em>, <code>--threshold=</code><em>size</em></td>
- <td valign="top">Sets the threshold for alignment of objects in the
- HDF5 file. (Default: <code>1</code>)</td>
- </tr>
- <tr>
- <td valign="top"><code>-w</code>, <code>--write-only</code></td>
- <td valign="top">Performs only write tests, not read tests. (Default:
- Read and write tests)</td>
- </tr>
- <tr>
- <td valign="top"><code>-x</code> <em>size</em>, <code>--min-xfer-size=</code><em>size</em></td>
- <td valign="top">Sets the minimum transfer buffer size. (Default: <code>128K</code>)</td>
- </tr>
- <tr>
- <td valign="top"><code>-X</code>&nbsp;<em>size</em>,&nbsp;<code>--max-xfer-size=</code>size&nbsp;&nbsp;&nbsp;&nbsp;<em></em></td>
- <td valign="top">Sets the maximum transfer buffer size. (Default: <code>1M</code>)</td>
- </tr>
- </table>
- </ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5redeploy" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-Redeploy">h5redeploy</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5redeploy </code>
- [<code>help </code> | <code>-help</code>]
- <dd><code>h5redeploy </code>
- [<code>-echo</code>]
- [<code>-force</code>]
- [<code>-prefix=</code><em>dir</em>]
- [<code>-tool=</code><em>tool</em>]
- [<code>-show</code>]
-<dt><strong>Purpose:</strong>
- <dd>Updates HDF5 compiler tools after an HDF5 software installation
- in a new location.
-<dt><strong>Description:</strong>
- <dd><code>h5redeploy</code> updates the HDF5 compiler tools after
- the HDF5 software has been installed in a new location.
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>help</code>, <code>-help</code></td>
- <td valign="top">Prints a help message.</td></tr>
- <tr>
- <td valign="top"><code>-echo</code></td>
- <td valign="top">Shows all the shell commands executed.</td></tr>
- <tr>
- <td valign="top"><code>-force</code></td>
- <td valign="top">Performs the requested action without offering any prompt
- requesting confirmation.</td></tr>
- <tr>
- <td valign="top"><code>-prefix=</code><em>dir&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">Specifies a new directory in which to find the
- HDF5 subdirectories <code>lib/</code> and <code>include/</code>.
- <br> (Default: current working directory)</td></tr>
- <tr>
- <td valign="top"><code>-tool=</code><em>tool</em></td>
- <td valign="top">Specifies the tool to update. <em>tool</em> must
- be in the current directory and must be writable.
- <br> (Default: <code>h5cc</code>)</td></tr>
- <tr>
- <td valign="top"><code>-show</code></td>
- <td valign="top">Shows all of the shell commands to be executed
- without actually executing them.</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
--->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5cc" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H5CC">h5cc</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5cc
- [</code><em>OPTIONS</em><code>]</code> <em>&lt;compile line&gt;</em>
-<dt><strong>Purpose:</strong>
- <dd>Helper script to compile HDF5 applications.
-<dt><strong>Description:</strong>
- <dd><code>h5cc</code> can be used in much the same way MPIch is used
- to compile an HDF5 program. It takes care of specifying where the
- HDF5 header files and libraries are on the command line.
- <p>
- <code>h5cc</code> supersedes all other compiler scripts in that
- if you've used them to compile the HDF5 library, then
- <code>h5cc</code> also uses those scripts. For example, when
- compiling an MPIch program, you use the <code>mpicc</code>
- script. If you've built HDF5 using MPIch, then <code>h5cc</code>
- uses the MPIch program for compilation.
- <p>
- Some programs use HDF5 in only a few modules. It isn't necessary
- to use <code>h5cc</code> to compile those modules which don't use
- HDF5. In fact, since <code>h5cc</code> is only a convenience
- script, you are still able to compile HDF5 modules in the normal
- way. In that case, you will have to specify the HDF5 libraries
- and include paths yourself.</p>
-
- An example of how to use <code>h5cc</code> to compile the program
- <code>hdf_prog</code>, which consists of modules
- <code>prog1.c</code> and <code>prog2.c</code> and uses the HDF5
- shared library, would be as follows:
-
- <pre>
- # h5cc -c prog1.c
- # h5cc -c prog2.c
- # h5cc -shlib -o hdf_prog prog1.o prog2.o</pre>
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>-help</code></td>
- <td valign="top">Prints a help message.</td></tr>
- <tr>
- <td valign="top"><code>-echo</code></td>
- <td valign="top">Show all the shell commands executed.</td></tr>
- <tr>
- <td valign="top"><code>-prefix=DIR</code></td>
- <td valign="top">Use the directory <code><em>DIR</em></code> to find the HDF5
- <code>lib/</code> and <code>include/</code> subdirectories.
- <br>
- Default: prefix specified when configuring HDF5.</td></tr>
- <tr>
- <td valign="top"><code>-show</code></td>
- <td valign="top">Show the commands without executing them.</td></tr>
- <tr>
- <td valign="top"><code>-shlib</code></td>
- <td valign="top">Compile using shared HDF5 libraries.</td></tr>
- <tr>
- <td valign="top"><code>-noshlib</code></td>
- <td valign="top">Compile using static HDF5 libraries [default].</td></tr>
- <tr>
- <td valign="top"><em>&lt;compile&nbsp;line&gt;&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">The normal compile line options for your compiler.
- <code>h5cc</code> uses the same compiler you used to compile HDF5.
- Check your compiler's manual for more information on which
- options are needed.</td></tr>
- </table></ul>
-<dt><strong>Environment Variables:</strong>
- <dd>When set, these environment variables override some of the built-in
- defaults of <code>h5cc</code>.
-
- <ul><table>
- <tr>
- <td valign="top"><code>HDF5_CC</code></td>
- <td valign="top">Use a different C compiler.</td></tr>
- <tr>
- <td valign="top"><code>HDF5_CLINKER</code></td>
- <td valign="top">Use a different linker.</td></tr>
- <tr>
- <td valign="top"><code>HDF5_USE_SHLIB=[yes|no]&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Use shared version of the HDF5 library [default: no].</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5fc" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H5FC">h5fc</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5fc
- [</code><em>OPTIONS</em><code>]</code> <em>&lt;compile line&gt;</em>
-<dt><strong>Purpose:</strong>
- <dd>Helper script to compile HDF5 Fortran90 applications.
-<dt><strong>Description:</strong>
- <dd><p>
- <code>h5fc</code> can be used in much the same way MPIch is used
- to compile an HDF5 program. It takes care of specifying where the
- HDF5 header files and libraries are on the command line.
- <p>
- <code>h5fc</code> supersedes all other compiler scripts in that
- if you've used them to compile the HDF5 Fortran library, then
- <code>h5fc</code> also uses those scripts. For example, when
- compiling an MPIch program, you use the <code>mpif90</code>
- script. If you've built HDF5 using MPIch, then <code>h5fc</code>
- uses the MPIch program for compilation.
- <p>
- Some programs use HDF5 in only a few modules. It isn't necessary
- to use <code>h5fc</code> to compile those modules which don't use
- HDF5. In fact, since <code>h5fc</code> is only a convenience
- script, you are still able to compile HDF5 Fortran modules in the
- normal way. In that case, you will have to specify the HDF5 libraries
- and include paths yourself.
- <p>
- An example of how to use <code>h5fc</code> to compile the program
- <code>hdf_prog</code>, which consists of modules
- <code>prog1.f90</code> and <code>prog2.f90</code>
- and uses the HDF5 Fortran library, would be as follows:
- <pre>
- # h5fc -c prog1.f90
- # h5fc -c prog2.f90
- # h5fc -o hdf_prog prog1.o prog2.o</pre>
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>-help</code></td>
- <td valign="top">Prints a help message.</td></tr>
- <tr>
- <td valign="top"><code>-echo</code></td>
- <td valign="top">Show all the shell commands executed.</td></tr>
- <tr>
- <td valign="top"><code>-prefix=DIR</code></td>
- <td valign="top">Use the directory <code>DIR</code> to find HDF5
- <code>lib/</code> and <code>include/</code> subdirectories
- <br>
- Default: prefix specified when configuring HDF5.</td></tr>
- <tr>
- <td valign="top"><code>-show</code></td>
- <td valign="top">Show the commands without executing them.</td></tr>
- <tr>
- <td valign="top"><em>&lt;compile&nbsp;line&gt;&nbsp;&nbsp;&nbsp;&nbsp;</em></td>
- <td valign="top">The normal compile line options for your compiler.
- <code>h5fc</code> uses the same compiler you used
- to compile HDF5. Check your compiler's manual for
- more information on which options are needed.</td></tr>
- </table></ul>
-<dt><strong>Environment Variables:</strong>
- <dd>When set, these environment variables override some of the built-in
- defaults of <code>h5cc</code>.
- <ul><table>
- <tr>
- <td valign="top"><code>HDF5_FC</code></td>
- <td valign="top">Use a different Fortran90 compiler.</td></tr>
- <tr>
- <td valign="top"><code>HDF5_FLINKER&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Use a different linker.</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
- -->
-</dl>
-
-<!-- NEW PAGE -->
-<!-- HEADER RIGHT "h5c++" -->
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H5C++">h5c++</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5c++
- [</code><em>OPTIONS</em><code>]</code> <em>&lt;compile line&gt;</em>
-<dt><strong>Purpose:</strong>
- <dd>Helper script to compile HDF5 C++ applications.
-<dt><strong>Description:</strong>
- <dd><p>
- <code>h5c++</code> can be used in much the same way MPIch is used
- to compile an HDF5 program. It takes care of specifying where the
- HDF5 header files and libraries are on the command line.
- <p>
- <code>h5c++</code> supersedes all other compiler scripts in that
- if you've used one set of compiler scripts to compile the
- HDF5 C++ library, then <code>h5c++</code> uses those same scripts.
- For example, when compiling an MPIch program,
- you use the <code>mpiCC</code> script.
- <p>
- Some programs use HDF5 in only a few modules. It isn't necessary
- to use <code>h5c++</code> to compile those modules which don't use
- HDF5. In fact, since <code>h5c++</code> is only a convenience
- script, you are still able to compile HDF5 C++ modules in the
- normal way. In that case, you will have to specify the HDF5 libraries
- and include paths yourself.
- <p>
- An example of how to use <code>h5c++</code> to compile the program
- <code>hdf_prog</code>, which consists of modules
- <code>prog1.cpp</code> and <code>prog2.cpp</code>
- and uses the HDF5 C++ library, would be as follows:
- <pre>
- # h5c++ -c prog1.cpp
- # h5c++ -c prog2.cpp
- # h5c++ -o hdf_prog prog1.o prog2.o</pre>
-
-<dt><strong>Options and Parameters:</strong>
- <ul><table>
- <tr>
- <td valign="top"><code>-help</code></td>
- <td valign="top">Prints a help message.</td></tr>
- <tr>
- <td valign="top"><code>-echo</code></td>
- <td valign="top">Show all the shell commands executed.</td></tr>
- <tr>
- <td valign="top"><code>-prefix=DIR</code></td>
- <td valign="top">Use the directory <code>DIR</code> to find HDF5
- <code>lib/</code> and <code>include/</code> subdirectories
- <br>
- Default: prefix specified when configuring HDF5.</td></tr>
- <tr>
- <td valign="top"><code>-show</code></td>
- <td valign="top">Show the commands without executing them.</td></tr>
- <tr>
- <td valign="top"><em>&lt;compile&nbsp;line&gt;</em><br>
- <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">The normal compile line options for your compiler.
- <code>h5c++</code> uses the same compiler you used
- to compile HDF5. Check your compiler's manual for
- more information on which options are needed.</td></tr>
- </table></ul>
-<dt><strong>Environment Variables:</strong>
- <dd>When set, these environment variables override some of the built-in
- defaults of <code>h5c++</code>.
- <ul><table>
- <tr>
- <td valign="top"><code>HDF5_CXX</code></td>
- <td valign="top">Use a different C++ compiler.</td></tr>
- <tr>
- <td valign="top"><code>HDF5_CXXLINKER&nbsp;&nbsp;&nbsp;&nbsp;</code></td>
- <td valign="top">Use a different linker.</td></tr>
- </table></ul>
-<!--
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
- -->
-</dl>
-
-
-<!-- Template, next 40 lines -->
-<!-- Template, next 40 lines -->
-<!-- Template, next 40 lines
-<hr>
-<dl>
-<dt><strong>Tool Name:</strong> <a name="Tools-H5toh4">h5toh4</a>
-<dt><strong>Syntax:</strong>
- <dd><code>h5toh4 -h</code><br>
- <code>h5toh4 </code><em>
- h5file
- h4file</em><br>
- <code>h5toh4 </code><em>
- h5file</em><br>
- <code>h5toh4 -m </code><em>
- h5file1
- h5file2
- h5file3</em> ...
-<dt><strong>Purpose:</strong>
- <dd>Purpose...
-<dt><strong>Description:</strong>
- <dd><code>TOOL</code> is an HDF5 utility which ...
- Paragraph
- <pre> sample code
- sample code
- sample code </pre>
- <p>
- Paragraph
- <p>
- Paragraph
-<dt><strong>Options and Parameters:</strong>
- <dl>
- <dt><code>-option</code>
- <dd>Description
- <dt><em>parameter</em>
- <dd>Description
- </dl>
-<dt><strong>Current Status:</strong>
- <dd>
-<dt><strong>See Also:</strong>
- <dd>
-</dl>
-
-
--->
-
-<!-- HEADER RIGHT " " -->
-
-
-<!-- #BeginLibraryItem "/ed_libs/NavBar_RM.lbi" --><hr>
-<center>
-<table border=0 width=98%>
-<tr><td valign=top align=left>
-<a href="index.html">HDF5 documents and links</a>&nbsp;<br>
-<a href="H5.intro.html">Introduction to HDF5</a>&nbsp;<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/doc/UG/index.html">HDF5 User Guide</a>&nbsp;<br>
-<!--
-<a href="Glossary.html">Glossary</a><br>
--->
-</td>
-<td valign=top align=right>
-And in this document, the
-<a href="RM_H5Front.html">HDF5 Reference Manual</a>&nbsp;&nbsp;
-<br>
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5im.html">H5IM</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5lt.html">H5LT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5pt.html">H5PT</a>&nbsp;&nbsp;
-<a href="http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb.html">H5TB</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5.html">H5</a>&nbsp;&nbsp;
-<a href="RM_H5A.html">H5A</a>&nbsp;&nbsp;
-<a href="RM_H5D.html">H5D</a>&nbsp;&nbsp;
-<a href="RM_H5E.html">H5E</a>&nbsp;&nbsp;
-<a href="RM_H5F.html">H5F</a>&nbsp;&nbsp;
-<a href="RM_H5G.html">H5G</a>&nbsp;&nbsp;
-<a href="RM_H5I.html">H5I</a>&nbsp;&nbsp;
-<a href="RM_H5P.html">H5P</a>&nbsp;&nbsp;
-<br>
-<a href="RM_H5R.html">H5R</a>&nbsp;&nbsp;
-<a href="RM_H5S.html">H5S</a>&nbsp;&nbsp;
-<a href="RM_H5T.html">H5T</a>&nbsp;&nbsp;
-<a href="RM_H5Z.html">H5Z</a>&nbsp;&nbsp;
-<a href="Tools.html">Tools</a>&nbsp;&nbsp;
-<a href="PredefDTypes.html">Datatypes</a>&nbsp;&nbsp;
-</td></tr>
-</table>
-</center>
-<hr><!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/Footer.lbi" --><address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-<br>
-Describes HDF5 Release 1.7, the unreleased development branch; working toward HDF5 Release 1.8.0
-</address><!-- #EndLibraryItem --><dl>
- <dt><dt><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-document.writeln("Last modified: 24 November 2004");
--->
-</SCRIPT>
-
-</body>
-</html>
diff --git a/doc/html/Tutor/Contents.html b/doc/html/Tutor/Contents.html
deleted file mode 100644
index d2584e5..0000000
--- a/doc/html/Tutor/Contents.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<html>
-
-<body bgcolor="#BBFFFF">
-
-
-<!--
-The following tag is for use only in the distributed doc set.
-Remove (or comment out) when served from HDF web server.
--->
-<center>
-<font size=-1><a href="../index.html" target=_top>Return to HDF5 Doc Set</a></font>
-</center>
-<br>
-
-<hr>
-
-<!--
-<A HREF="READ1ST.HTML" Target="RdFirstWin" onClick="window.open(&quot;READ1ST.HTML&quot;,&quot;RdFirstWin&quot;,&quot;toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=1,width=500,height=250,titlebar=yes&quot;)"><IMG SRC="GRAPHICS/READ1ST.GIF" BORDER=0 ALT="Read this first!"></A>
--->
-
-<a href="title.html" TARGET="CONTENT"><IMG SRC="Graphics/TitlePg.gif" BORDER=0 ALT="Tutorial Title Page"></a>
-<br>
-
-<hr>
-<a href="ContentsIntro.html" TARGET="BUTTONS"><IMG SRC="Graphics/IntroTopics.gif" BORDER=0 ALT="Introductory Topics"></a>
-<br>
-<!--
-<a href="intro.html" TARGET="CONTENT"><IMG SRC="Graphics/Intro.gif" BORDER=0 ALT="Introduction"></a>
-<br>
-<a href="fileorg.html" TARGET="CONTENT"><img src="Graphics/FileOrg.gif" BORDER=0 ALT="HDF5 File Organization"></a>
-<br>
-<a href="api.html" TARGET="CONTENT"><IMG SRC="Graphics/H5API.gif" BORDER=0 ALT="The HDF5 API"></a>
-<br>
-<a href="crtfile.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateFile.gif" BORDER=0 ALT="Creating an HDF5 File"></a>
-<br>
-<a href="crtdat.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateDset1.gif" BORDER=0 ALT="Creating a Dataset"></a>
-<br>
-<a href="rdwt.html" TARGET="CONTENT"><IMG SRC="Graphics/RdWrDataset.gif" BORDER=0 ALT="Reading from and Writing to a Dataset"></a>
-<br>
-<a href="crtatt.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateAttr.gif" BORDER=0 ALT="Creating an Attribute"></a>
-<br>
-<a href="crtgrp.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateGrp1.gif" BORDER=0 ALT="Creating a Group"></a>
-<br>
-<a href="crtgrpar.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateGrp2.gif" BORDER=0 ALT="Creating Groups Using Absolute and Relative Names"></a>
-<br>
-<a href="crtgrpd.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateDset2.gif" BORDER=0 ALT="Creating Datasets in a Group"></a>
-
-
-<br>
-<br>
-<a href="questions.html" TARGET="CONTENT"><IMG SRC="Graphics/Quiz.gif" BORDER=0 ALT="Quiz Questions"></a>
-<br>
-<a href="answers.html" TARGET="CONTENT"><IMG SRC="Graphics/QuizAns.gif" BORDER=0 ALT="Quiz Answers"></a>
--->
-
-<hr>
-<a href="ContentsAdv.html" TARGET="BUTTONS"><IMG SRC="Graphics/AdvTopics.gif" BORDER=0 ALT="Advanced Topics"></a>
-<!--
-<br>
-<a href="compound.html" TARGET="CONTENT"><IMG SRC="Graphics/CompDTypes.gif" BORDER=0 ALT="Compound Datatypes"></a>
-<br>
-<a href="select.html" TARGET="CONTENT"><IMG SRC="Graphics/SelectHyp.gif" BORDER=0 ALT="Dataspace Selection - Hyperslab"></a>
-<br>
-<a href="selectc.html" TARGET="CONTENT"><IMG SRC="Graphics/SelectElemCp.gif" BORDER=0 ALT="Dataspace Selection - Individual Points"></a>
-<br>
-<a href="reftoobj.html" TARGET="CONTENT"><IMG SRC="Graphics/RefObject.gif" BORDER=0 ALT="References to Objects"></a>
-<br>
-<a href="reftoreg.html" TARGET="CONTENT"><IMG SRC="Graphics/RefRegion.gif" BORDER=0 ALT="References to Dataset Regions"></a>
-<br>
-<a href="extend.html" TARGET="CONTENT"><IMG SRC="Graphics/ChunkExt.gif" BORDER=0 ALT="Chunking and Extendible Datasets"></a>
-<br>
-<a href="mount.html" TARGET="CONTENT"><IMG SRC="Graphics/MountFile.gif" BORDER=0 ALT="Mounting Files"></a>
-<br>
-<a href="iterate.html" TARGET="CONTENT"><IMG SRC="Graphics/Iterate.gif" BORDER=0 ALT="Group Iteration"></a>
--->
-
-
-<hr>
-<a href="ContentsAdd.html" TARGET="BUTTONS"><IMG SRC="Graphics/AddInfo.gif" BORDER=0 ALT="Additional Information"></a>
-<!--
-<br>
-<a href="util.html" TARGET="CONTENT"><IMG SRC="Graphics/Utilities.gif" BORDER=0 ALT="HDF5 Utilities -- h5ls and h5dump"></a>
-<br>
-<a href="glossary.html" TARGET="CONTENT"><IMG SRC="Graphics/Glossary.gif" BORDER=0 ALT="Glossary"></a>
-<br>
-<a href="references.html" TARGET="CONTENT"><IMG SRC="Graphics/References.gif" BORDER=0 ALT="References"></a>
-<br>
-<a href="examples/" TARGET="CONTENT"><IMG SRC="Graphics/Examples.gif" BORDER=0 ALT="Example Programs"></a>
--->
-
-
-<hr>
-<a href="ContentsFull.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCFull.gif" BORDER=0 ALT="Full TOC"></a>
-<br>
-
-
-<hr>
-<br>
-<a href="Copyright.html" TARGET="CONTENT"><IMG SRC="Graphics/Copy.gif" BORDER=0 ALT="Copyright, Etc."></a><br>
-
-
-</body>
-</html>
-
diff --git a/doc/html/Tutor/ContentsAdd.html b/doc/html/Tutor/ContentsAdd.html
deleted file mode 100644
index cd5d2e1..0000000
--- a/doc/html/Tutor/ContentsAdd.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<html>
-
-<body bgcolor="#BBFFFF">
-
-
-<!--
-The following tag is for use only in the distributed doc set.
-Remove (or comment out) when served from HDF web server.
--->
-<center>
-<font size=-1><a href="../index.html" target=_top>Return to HDF5 Doc Set</a></font>
-</center>
-<br>
-
-<hr>
-
-<!--
-<A HREF="READ1ST.HTML" Target="RdFirstWin" onClick="window.open(&quot;READ1ST.HTML&quot;,&quot;RdFirstWin&quot;,&quot;toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=1,width=500,height=250,titlebar=yes&quot;)"><IMG SRC="GRAPHICS/READ1ST.GIF" BORDER=0 ALT="Read this first!"></A>
--->
-
-
-<a href="Contents.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCShort.gif" BORDER=0 ALT="(Short TOC)"></a>
-<hr>
-
-<a href="title.html" TARGET="CONTENT"><IMG SRC="Graphics/TitlePg.gif" BORDER=0 ALT="Tutorial Title Page"></a>
-<hr>
-
-
-<a href="ContentsIntro.html" TARGET="BUTTONS"><IMG SRC="Graphics/IntroTopics.gif" BORDER=0 ALT="Introductory Topics"></a>
-<hr>
-
-
-<a href="ContentsAdv.html" TARGET="BUTTONS"><IMG SRC="Graphics/AdvTopics.gif" BORDER=0 ALT="Advanced Topics"></a>
-<hr>
-
-
-<IMG SRC="Graphics/AddInfo.gif" BORDER=0 ALT="Additional Information">
-<a href="util.html" TARGET="CONTENT"><IMG SRC="Graphics/Utilities.gif" BORDER=0 ALT="HDF5 Utilities -- h5ls and h5dump"></a>
-<a href="glossary.html" TARGET="CONTENT"><IMG SRC="Graphics/Glossary.gif" BORDER=0 ALT="Glossary"></a>
-<a href="references.html" TARGET="CONTENT"><IMG SRC="Graphics/References.gif" BORDER=0 ALT="References"></a>
-<a href="examples/" TARGET="CONTENT"><IMG SRC="Graphics/Examples.gif" BORDER=0 ALT="Example Programs"></a>
-<hr>
-
-
-<a href="ContentsFull.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCFull.gif" BORDER=0 ALT="Full TOC"></a>
-
-
-<hr>
-<a href="Copyright.html" TARGET="CONTENT"><IMG SRC="Graphics/Copy.gif" BORDER=0 ALT="Copyright, Etc."></a><br>
-
-
-</body>
-</html>
-
diff --git a/doc/html/Tutor/ContentsAdv.html b/doc/html/Tutor/ContentsAdv.html
deleted file mode 100644
index ac27c0e..0000000
--- a/doc/html/Tutor/ContentsAdv.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<html>
-
-<body bgcolor="#BBFFFF">
-
-
-<!--
-The following tag is for use only in the distributed doc set.
-Remove (or comment out) when served from HDF web server.
--->
-<center>
-<font size=-1><a href="../index.html" target=_top>Return to HDF5 Doc Set</a></font>
-</center>
-<br>
-
-<hr>
-
-<!--
-<A HREF="READ1ST.HTML" Target="RdFirstWin" onClick="window.open(&quot;READ1ST.HTML&quot;,&quot;RdFirstWin&quot;,&quot;toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=1,width=500,height=250,titlebar=yes&quot;)"><IMG SRC="GRAPHICS/READ1ST.GIF" BORDER=0 ALT="Read this first!"></A>
--->
-
-<a href="Contents.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCShort.gif" BORDER=0 ALT="(Short TOC)"></a>
-<hr>
-
-<a href="title.html" TARGET="CONTENT"><IMG SRC="Graphics/TitlePg.gif" BORDER=0 ALT="Tutorial Title Page"></a>
-<hr>
-
-
-<a href="ContentsIntro.html" TARGET="BUTTONS"><IMG SRC="Graphics/IntroTopics.gif" BORDER=0 ALT="Introductory Topics"></a>
-<hr>
-
-
-<IMG SRC="Graphics/AdvTopics.gif" BORDER=0 ALT="Advanced Topics">
-<a href="compound.html" TARGET="CONTENT"><IMG SRC="Graphics/CompDTypes.gif" BORDER=0 ALT="Compound Datatypes"></a>
-<a href="select.html" TARGET="CONTENT"><IMG SRC="Graphics/SelectHyp.gif" BORDER=0 ALT="Dataspace Selection - hyperslab"></a>
-<a href="selectc.html" TARGET="CONTENT"><IMG SRC="Graphics/SelectElemCp.gif" BORDER=0 ALT="Dataspace Selection - Individual Points"></a>
-<a href="reftoobj.html" TARGET="CONTENT"><IMG SRC="Graphics/RefObject.gif" BORDER=0 ALT="References to Objects"></a>
-<a href="reftoreg.html" TARGET="CONTENT"><IMG SRC="Graphics/RefRegion.gif" BORDER=0 ALT="References to Dataset Regions"></a>
-<a href="extend.html" TARGET="CONTENT"><IMG SRC="Graphics/ChunkExt.gif" BORDER=0 ALT="Chunking and Extendible Datasets"></a>
-<a href="mount.html" TARGET="CONTENT"><IMG SRC="Graphics/MountFile.gif" BORDER=0 ALT="Mounting Files"></a>
-<a href="iterate.html" TARGET="CONTENT"><IMG SRC="Graphics/Iterate.gif" BORDER=0 ALT="Group Iteration"></a>
-<hr>
-
-
-<a href="ContentsAdd.html" TARGET="BUTTONS"><IMG SRC="Graphics/AddInfo.gif" BORDER=0 ALT="Additional Information"></a>
-<hr>
-
-
-<a href="ContentsFull.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCFull.gif" BORDER=0 ALT="Full TOC"></a>
-<hr>
-
-
-<a href="Copyright.html" TARGET="CONTENT"><IMG SRC="Graphics/Copy.gif" BORDER=0 ALT="Copyright, Etc."></a><br>
-
-
-</body>
-</html>
-
diff --git a/doc/html/Tutor/ContentsFull.html b/doc/html/Tutor/ContentsFull.html
deleted file mode 100644
index d873f82..0000000
--- a/doc/html/Tutor/ContentsFull.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<html>
-
-<body bgcolor="#BBFFFF">
-
-
-<!--
-The following tag is for use only in the distributed doc set.
-Remove (or comment out) when served from HDF web server.
--->
-<center>
-<font size=-1><a href="../index.html" target=_top>Return to HDF5 Doc Set</a></font>
-</center>
-<br>
-
-<hr>
-
-<!--
-<A HREF="READ1ST.HTML" Target="RdFirstWin" onClick="window.open(&quot;READ1ST.HTML&quot;,&quot;RdFirstWin&quot;,&quot;toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=1,width=500,height=250,titlebar=yes&quot;)"><IMG SRC="GRAPHICS/READ1ST.GIF" BORDER=0 ALT="Read this first!"></A>
--->
-
-
-<a href="Contents.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCShort.gif" BORDER=0 ALT="(Short TOC)"></a>
-<hr>
-
-<a href="title.html" TARGET="CONTENT"><IMG SRC="Graphics/TitlePg.gif" BORDER=0 ALT="Tutorial Title Page"></a>
-
-<hr>
-<IMG SRC="Graphics/IntroTopics.gif" BORDER=0 ALT="Introductory Topics">
-<a href="intro.html" TARGET="CONTENT"><IMG SRC="Graphics/Intro.gif" BORDER=0 ALT="Introduction"></a>
-<a href="fileorg.html" TARGET="CONTENT"><img src="Graphics/FileOrg.gif" BORDER=0 ALT="HDF5 File Organization"></a>
-<a href="api.html" TARGET="CONTENT"><IMG SRC="Graphics/H5API.gif" BORDER=0 ALT="The HDF5 API"></a>
-<a href="crtfile.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateFile.gif" BORDER=0 ALT="Creating an HDF5 File"></a>
-<a href="crtdat.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateDset1.gif" BORDER=0 ALT="Creating a Dataset"></a>
-<a href="rdwt.html" TARGET="CONTENT"><IMG SRC="Graphics/RdWrDataset.gif" BORDER=0 ALT="Reading from and Writing to a Dataset"></a>
-<a href="crtatt.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateAttr.gif" BORDER=0 ALT="Creating an Attribute"></a>
-<a href="crtgrp.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateGrp1.gif" BORDER=0 ALT="Creating a Group"></a>
-<a href="crtgrpar.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateGrp2.gif" BORDER=0 ALT="Creating Groups Using Absolute and Relative Names"></a>
-<a href="crtgrpd.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateDset2.gif" BORDER=0 ALT="Creating Datasets in a Group"></a>
-
-<br>
-<a href="questions.html" TARGET="CONTENT"><IMG SRC="Graphics/Quiz.gif" BORDER=0 ALT="Quiz Questions"></a>
-<a href="answers.html" TARGET="CONTENT"><IMG SRC="Graphics/QuizAns.gif" BORDER=0 ALT="Quiz Answers"></a>
-
-
-<hr>
-<IMG SRC="Graphics/AdvTopics.gif" BORDER=0 ALT="Advanced Topics">
-<a href="compound.html" TARGET="CONTENT"><IMG SRC="Graphics/CompDTypes.gif" BORDER=0 ALT="Compound Datatypes"></a>
-<a href="select.html" TARGET="CONTENT"><IMG SRC="Graphics/SelectHyp.gif" BORDER=0 ALT="Dataspace Selection - Hyperslab"></a>
-<a href="selectc.html" TARGET="CONTENT"><IMG SRC="Graphics/SelectElemCp.gif" BORDER=0 ALT="Dataspace Selection - Individual Points"></a>
-<a href="reftoobj.html" TARGET="CONTENT"><IMG SRC="Graphics/RefObject.gif" BORDER=0 ALT="References to Objects"></a>
-<a href="reftoreg.html" TARGET="CONTENT"><IMG SRC="Graphics/RefRegion.gif" BORDER=0 ALT="References to Dataset Regions"></a>
-<a href="extend.html" TARGET="CONTENT"><IMG SRC="Graphics/ChunkExt.gif" BORDER=0 ALT="Chunking and Extendible Datasets"></a>
-<a href="mount.html" TARGET="CONTENT"><IMG SRC="Graphics/MountFile.gif" BORDER=0 ALT="Mounting Files"></a>
-<a href="iterate.html" TARGET="CONTENT"><IMG SRC="Graphics/Iterate.gif" BORDER=0 ALT="Group Iteration"></a>
-
-
-<hr>
-<IMG SRC="Graphics/AddInfo.gif" BORDER=0 ALT="Additional Information">
-<a href="util.html" TARGET="CONTENT"><IMG SRC="Graphics/Utilities.gif" BORDER=0 ALT="HDF5 Utilities -- h5ls and h5dump"></a>
-<a href="glossary.html" TARGET="CONTENT"><IMG SRC="Graphics/Glossary.gif" BORDER=0 ALT="Glossary"></a>
-<a href="references.html" TARGET="CONTENT"><IMG SRC="Graphics/References.gif" BORDER=0 ALT="References"></a>
-<a href="examples/" TARGET="CONTENT"><IMG SRC="Graphics/Examples.gif" BORDER=0 ALT="Example Programs"></a>
-
-
-<hr>
-<a href="Copyright.html" TARGET="CONTENT"><IMG SRC="Graphics/Copy.gif" BORDER=0 ALT="Copyright, Etc."></a><br>
-
-
-</body>
-</html>
-
diff --git a/doc/html/Tutor/ContentsIntro.html b/doc/html/Tutor/ContentsIntro.html
deleted file mode 100644
index 96bd716..0000000
--- a/doc/html/Tutor/ContentsIntro.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<html>
-
-<body bgcolor="#BBFFFF">
-
-
-<!--
-The following tag is for use only in the distributed doc set.
-Remove (or comment out) when served from HDF web server.
--->
-<center>
-<font size=-1><a href="../index.html" target=_top>Return to HDF5 Doc Set</a></font>
-</center>
-<br>
-
-<hr>
-
-<!--
-<A HREF="READ1ST.HTML" Target="RdFirstWin" onClick="window.open(&quot;READ1ST.HTML&quot;,&quot;RdFirstWin&quot;,&quot;toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=yes,resizable=1,width=500,height=250,titlebar=yes&quot;)"><IMG SRC="GRAPHICS/READ1ST.GIF" BORDER=0 ALT="Read this first!"></A>
--->
-
-
-<a href="Contents.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCShort.gif" BORDER=0 ALT="(Short TOC)"></a>
-<hr>
-
-<a href="title.html" TARGET="CONTENT"><IMG SRC="Graphics/TitlePg.gif" BORDER=0 ALT="Tutorial Title Page"></a>
-<hr>
-
-<IMG SRC="Graphics/IntroTopics.gif" BORDER=0 ALT="Introductory Topics">
-<a href="intro.html" TARGET="CONTENT"><IMG SRC="Graphics/Intro.gif" BORDER=0 ALT="Introduction"></a>
-<a href="fileorg.html" TARGET="CONTENT"><img src="Graphics/FileOrg.gif" BORDER=0 ALT="HDF5 File Organization"></a>
-<a href="api.html" TARGET="CONTENT"><IMG SRC="Graphics/H5API.gif" BORDER=0 ALT="The HDF5 API"></a>
-<a href="crtfile.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateFile.gif" BORDER=0 ALT="Creating an HDF5 File"></a>
-<a href="crtdat.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateDset1.gif" BORDER=0 ALT="Creating a Dataset"></a>
-<a href="rdwt.html" TARGET="CONTENT"><IMG SRC="Graphics/RdWrDataset.gif" BORDER=0 ALT="Reading from and Writing to a Dataset"></a>
-<a href="crtatt.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateAttr.gif" BORDER=0 ALT="Creating an Attribute"></a>
-<a href="crtgrp.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateGrp1.gif" BORDER=0 ALT="Creating a Group"></a>
-<a href="crtgrpar.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateGrp2.gif" BORDER=0 ALT="Creating Groups Using Absolute and Relative Names"></a>
-<a href="crtgrpd.html" TARGET="CONTENT"><IMG SRC="Graphics/CreateDset2.gif" BORDER=0 ALT="Creating Datasets in a Group"></a>
-
-<br>
-<a href="questions.html" TARGET="CONTENT"><IMG SRC="Graphics/Quiz.gif" BORDER=0 ALT="Quiz Questions"></a>
-<a href="answers.html" TARGET="CONTENT"><IMG SRC="Graphics/QuizAns.gif" BORDER=0 ALT="Quiz Answers"></a>
-<hr>
-
-
-<a href="ContentsAdv.html" TARGET="BUTTONS"><IMG SRC="Graphics/AdvTopics.gif" BORDER=0 ALT="Advanced Topics"></a>
-<hr>
-
-
-<a href="ContentsAdd.html" TARGET="BUTTONS"><IMG SRC="Graphics/AddInfo.gif" BORDER=0 ALT="Additional Information"></a>
-<hr>
-
-
-<a href="ContentsFull.html" TARGET="BUTTONS"><IMG SRC="Graphics/TOCFull.gif" BORDER=0 ALT="Full TOC"></a>
-<hr>
-
-
-<a href="Copyright.html" TARGET="CONTENT"><IMG SRC="Graphics/Copy.gif" BORDER=0 ALT="Copyright, Etc."></a><br>
-
-
-</body>
-</html>
-
diff --git a/doc/html/Tutor/Copyright.html b/doc/html/Tutor/Copyright.html
deleted file mode 100644
index d488a10..0000000
--- a/doc/html/Tutor/Copyright.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<html>
-<html>
- <head>
- <title>
- HDF5 Copyright Notice
- </title>
- </head>
-
- <body bgcolor="#FFFFFF">
-
-
-
-<hr>
-
-<h3>Copyright Notice and Statement for
-<br>
-NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities</h3>
-<hr>
-<p>
-
-
-NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities
-<br>
-Copyright 1998, 1999, 2000, 2001 by the Board of Trustees of the University of Illinois
-<br>
-<strong>All rights reserved.</strong>
-<p>
-
-Contributors: National Center for Supercomputing Applications (NCSA) at
-the University of Illinois at Urbana-Champaign (UIUC), Lawrence Livermore
-National Laboratory (LLNL), Sandia National Laboratories (SNL), Los Alamos
-National Laboratory (LANL), Jean-loup Gailly and Mark Adler (gzip library).
-<p>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted for any purpose (including commercial purposes)
-provided that the following conditions are met:
-<p>
-
-<ol>
-<li>Redistributions of source code must retain the above copyright notice,
-this list of conditions, and the following disclaimer.
-
-<li>Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions, and the following disclaimer in the
-documentation and/or materials provided with the distribution.
-
-<li>In addition, redistributions of modified forms of the source or binary
-code must carry prominent notices stating that the original code was
-changed and the date of the change.
-
-<li>All publications or advertising materials mentioning features or use of
-this software are asked, but not required, to acknowledge that it was
-developed by the National Center for Supercomputing Applications at the
-University of Illinois at Urbana-Champaign and to credit the contributors.
-
-<li>Neither the name of the University nor the names of the Contributors may
-be used to endorse or promote products derived from this software without
-specific prior written permission from the University or the Contributors.
-
-<li>THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND THE CONTRIBUTORS "AS IS"
-WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. In no event
-shall the University or the Contributors be liable for any damages suffered
-by the users arising out of the use of this software, even if advised of
-the possibility of such damage.
-
-</ol>
-
-
-
-
-<hr>
-Portions of HDF5 were developed with support from the University of
-California, Lawrence Livermore National Laboratory (UC LLNL).
-The following statment applies to those portions of the product
-and must be retained in any redistribution of source code, binaries,
-documentation, and/or accompanying materials:
-
-<dir>
-This work was partially produced at the University of California,
-Lawrence Livermore National Laboratory (UC LLNL) under contract no.
-W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy (DOE)
-and The Regents of the University of California (University) for the
-operation of UC LLNL.
-<p>
-<b>DISCLAIMER:</b>
-This work was prepared as an account of work sponsored by an agency of the
-United States Government. Neither the United States Government nor the
-University of California nor any of their employees, makes any warranty,
-express or implied, or assumes any liability or responsibility for the
-accuracy, completeness, or usefulness of any information, apparatus,
-product, or process disclosed, or represents that its use would not
-infringe privately-owned rights. Reference herein to any specific
-commercial products, process, or service by trade name, trademark,
-manufacturer, or otherwise, does not necessarily constitute or imply its
-endorsement, recommendation, or favoring by the United States Government
-or the University of California. The views and opinions of authors
-expressed herein do not necessarily state or reflect those of the United
-States Government or the University of California, and shall not be used
-for advertising or product endorsement purposes.
-</dir>
-
-
-
-
-<hr>
-
-<address>
-<a href="mailto:hdfhelp@ncsa.uiuc.edu">HDF Help Desk</a>
-</address>
-
-Last modified: 7 June 2000
-<br>
-
-</body>
-</html>
-
diff --git a/doc/html/Tutor/Graphics/AddInfo.gif b/doc/html/Tutor/Graphics/AddInfo.gif
deleted file mode 100644
index 335107f..0000000
--- a/doc/html/Tutor/Graphics/AddInfo.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/AdvTopics.gif b/doc/html/Tutor/Graphics/AdvTopics.gif
deleted file mode 100644
index 9cea247..0000000
--- a/doc/html/Tutor/Graphics/AdvTopics.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/BLANK.gif b/doc/html/Tutor/Graphics/BLANK.gif
deleted file mode 100644
index 03134e7..0000000
--- a/doc/html/Tutor/Graphics/BLANK.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/ChunkExt.gif b/doc/html/Tutor/Graphics/ChunkExt.gif
deleted file mode 100644
index 52f9130..0000000
--- a/doc/html/Tutor/Graphics/ChunkExt.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CompDTypes.gif b/doc/html/Tutor/Graphics/CompDTypes.gif
deleted file mode 100644
index 0549b32..0000000
--- a/doc/html/Tutor/Graphics/CompDTypes.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Copy.gif b/doc/html/Tutor/Graphics/Copy.gif
deleted file mode 100644
index 7df2e6a..0000000
--- a/doc/html/Tutor/Graphics/Copy.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CreateAttr.gif b/doc/html/Tutor/Graphics/CreateAttr.gif
deleted file mode 100644
index 82c7f72..0000000
--- a/doc/html/Tutor/Graphics/CreateAttr.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CreateDset1.gif b/doc/html/Tutor/Graphics/CreateDset1.gif
deleted file mode 100644
index 2641d88..0000000
--- a/doc/html/Tutor/Graphics/CreateDset1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CreateDset2.gif b/doc/html/Tutor/Graphics/CreateDset2.gif
deleted file mode 100644
index 294c0a5..0000000
--- a/doc/html/Tutor/Graphics/CreateDset2.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CreateFile.gif b/doc/html/Tutor/Graphics/CreateFile.gif
deleted file mode 100644
index e07d0aa..0000000
--- a/doc/html/Tutor/Graphics/CreateFile.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CreateGrp1.gif b/doc/html/Tutor/Graphics/CreateGrp1.gif
deleted file mode 100644
index 66be2fd..0000000
--- a/doc/html/Tutor/Graphics/CreateGrp1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/CreateGrp2.gif b/doc/html/Tutor/Graphics/CreateGrp2.gif
deleted file mode 100644
index 93a5c87..0000000
--- a/doc/html/Tutor/Graphics/CreateGrp2.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Examples.gif b/doc/html/Tutor/Graphics/Examples.gif
deleted file mode 100644
index d6b3ac6..0000000
--- a/doc/html/Tutor/Graphics/Examples.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/FileOrg.gif b/doc/html/Tutor/Graphics/FileOrg.gif
deleted file mode 100644
index a0f812d..0000000
--- a/doc/html/Tutor/Graphics/FileOrg.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/FullTOC1.gif b/doc/html/Tutor/Graphics/FullTOC1.gif
deleted file mode 100644
index 9a7a810..0000000
--- a/doc/html/Tutor/Graphics/FullTOC1.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/FullTOC2.gif b/doc/html/Tutor/Graphics/FullTOC2.gif
deleted file mode 100644
index 651e0c7..0000000
--- a/doc/html/Tutor/Graphics/FullTOC2.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Glossary.gif b/doc/html/Tutor/Graphics/Glossary.gif
deleted file mode 100644
index 157208a..0000000
--- a/doc/html/Tutor/Graphics/Glossary.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/H5API.gif b/doc/html/Tutor/Graphics/H5API.gif
deleted file mode 100644
index 7d5c8a6..0000000
--- a/doc/html/Tutor/Graphics/H5API.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Intro.gif b/doc/html/Tutor/Graphics/Intro.gif
deleted file mode 100644
index a9d299b..0000000
--- a/doc/html/Tutor/Graphics/Intro.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/IntroTopics.gif b/doc/html/Tutor/Graphics/IntroTopics.gif
deleted file mode 100644
index 384d7a7..0000000
--- a/doc/html/Tutor/Graphics/IntroTopics.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Iterate.gif b/doc/html/Tutor/Graphics/Iterate.gif
deleted file mode 100644
index 0dc68d5..0000000
--- a/doc/html/Tutor/Graphics/Iterate.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Makefile.am b/doc/html/Tutor/Graphics/Makefile.am
deleted file mode 100644
index 6e3a60e..0000000
--- a/doc/html/Tutor/Graphics/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-localdocdir = $(docdir)/hdf5/Tutor/Graphics
-
-# Public doc files (to be installed)...
-localdoc_DATA=AddInfo.gif AdvTopics.gif BLANK.gif ChunkExt.gif CompDTypes.gif \
- Copy.gif CreateAttr.gif CreateDset1.gif CreateDset2.gif \
- CreateFile.gif CreateGrp1.gif CreateGrp2.gif Examples.gif \
- FileOrg.gif FullTOC1.gif FullTOC2.gif Glossary.gif H5API.gif \
- Intro.gif IntroTopics.gif Iterate.gif MountFile.gif Quiz.gif \
- QuizAns.gif RdWrDataset.gif RefObject.gif RefRegion.gif \
- References.gif SelectElemCp.gif SelectHyp.gif TOC.gif \
- TOCFull.gif TOCShort.gif TitlePg.gif Utilities.gif
diff --git a/doc/html/Tutor/Graphics/Makefile.in b/doc/html/Tutor/Graphics/Makefile.in
deleted file mode 100644
index df5259b..0000000
--- a/doc/html/Tutor/Graphics/Makefile.in
+++ /dev/null
@@ -1,493 +0,0 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-#
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/config/commence-doc.am \
- $(top_srcdir)/config/commence.am
-subdir = doc/html/Tutor/Graphics
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/src/H5config.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(localdocdir)"
-localdocDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(localdoc_DATA)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-# Set the paths for AFS installs of autotools for Linux machines
-# Ideally, these tools should never be needed during the build.
-ACLOCAL = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/aclocal -I /afs/ncsa/projects/hdf/packages/libtool_1.5.14/Linux_2.4/share/aclocal
-ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AM_MAKEFLAGS = @AM_MAKEFLAGS@
-AR = @AR@
-AUTOCONF = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoconf
-AUTOHEADER = /afs/ncsa/projects/hdf/packages/autoconf_2.59/Linux_2.4/bin/autoheader
-AUTOMAKE = /afs/ncsa/projects/hdf/packages/automake_1.9.5/Linux_2.4/bin/automake
-AWK = @AWK@
-BUILD_CXX_CONDITIONAL_FALSE = @BUILD_CXX_CONDITIONAL_FALSE@
-BUILD_CXX_CONDITIONAL_TRUE = @BUILD_CXX_CONDITIONAL_TRUE@
-BUILD_FORTRAN_CONDITIONAL_FALSE = @BUILD_FORTRAN_CONDITIONAL_FALSE@
-BUILD_FORTRAN_CONDITIONAL_TRUE = @BUILD_FORTRAN_CONDITIONAL_TRUE@
-BUILD_HDF5_HL_CONDITIONAL_FALSE = @BUILD_HDF5_HL_CONDITIONAL_FALSE@
-BUILD_HDF5_HL_CONDITIONAL_TRUE = @BUILD_HDF5_HL_CONDITIONAL_TRUE@
-BUILD_PABLO_CONDITIONAL_FALSE = @BUILD_PABLO_CONDITIONAL_FALSE@
-BUILD_PABLO_CONDITIONAL_TRUE = @BUILD_PABLO_CONDITIONAL_TRUE@
-BUILD_PARALLEL_CONDITIONAL_FALSE = @BUILD_PARALLEL_CONDITIONAL_FALSE@
-BUILD_PARALLEL_CONDITIONAL_TRUE = @BUILD_PARALLEL_CONDITIONAL_TRUE@
-BUILD_PDB2HDF = @BUILD_PDB2HDF@
-BUILD_PDB2HDF_CONDITIONAL_FALSE = @BUILD_PDB2HDF_CONDITIONAL_FALSE@
-BUILD_PDB2HDF_CONDITIONAL_TRUE = @BUILD_PDB2HDF_CONDITIONAL_TRUE@
-BYTESEX = @BYTESEX@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_VERSION = @CC_VERSION@
-CFLAGS = @CFLAGS@
-CONFIG_DATE = @CONFIG_DATE@
-CONFIG_MODE = @CONFIG_MODE@
-CONFIG_USER = @CONFIG_USER@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_PKG = @DEBUG_PKG@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DYNAMIC_DIRS = @DYNAMIC_DIRS@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-
-# Make sure that these variables are exported to the Makefiles
-F9XMODEXT = @F9XMODEXT@
-F9XMODFLAG = @F9XMODFLAG@
-F9XSUFFIXFLAG = @F9XSUFFIXFLAG@
-FC = @FC@
-FCFLAGS = @FCFLAGS@
-FCLIBS = @FCLIBS@
-FFLAGS = @FFLAGS@
-FILTERS = @FILTERS@
-FSEARCH_DIRS = @FSEARCH_DIRS@
-H5_VERSION = @H5_VERSION@
-HADDR_T = @HADDR_T@
-HDF5_INTERFACES = @HDF5_INTERFACES@
-HID_T = @HID_T@
-HL = @HL@
-HL_FOR = @HL_FOR@
-HSIZET = @HSIZET@
-HSIZE_T = @HSIZE_T@
-HSSIZE_T = @HSSIZE_T@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_STATIC_EXEC = @LT_STATIC_EXEC@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MPE = @MPE@
-OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PARALLEL = @PARALLEL@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PTHREAD = @PTHREAD@
-RANLIB = @RANLIB@
-ROOT = @ROOT@
-RUNPARALLEL = @RUNPARALLEL@
-RUNSERIAL = @RUNSERIAL@
-R_INTEGER = @R_INTEGER@
-R_LARGE = @R_LARGE@
-SEARCH = @SEARCH@
-SETX = @SETX@
-SET_MAKE = @SET_MAKE@
-
-# Hardcode SHELL to be /bin/sh. Most machines have this shell, and
-# on at least one machine configure fails to detect its existence (janus).
-# Also, when HDF5 is configured on one machine but run on another,
-# configure's automatic SHELL detection may not work on the build machine.
-SHELL = /bin/sh
-SIZE_T = @SIZE_T@
-STATIC_SHARED = @STATIC_SHARED@
-STRIP = @STRIP@
-TESTPARALLEL = @TESTPARALLEL@
-TRACE_API = @TRACE_API@
-USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@
-USE_FILTER_FLETCHER32 = @USE_FILTER_FLETCHER32@
-USE_FILTER_NBIT = @USE_FILTER_NBIT@
-USE_FILTER_SCALEOFFSET = @USE_FILTER_SCALEOFFSET@
-USE_FILTER_SHUFFLE = @USE_FILTER_SHUFFLE@
-USE_FILTER_SZIP = @USE_FILTER_SZIP@
-VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_FC = @ac_ct_FC@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-
-# Install directories that automake doesn't know about
-includedir = $(exec_prefix)/include
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# Shell commands used in Makefiles
-RM = rm -f
-CP = cp
-
-# Some machines need a command to run executables; this is that command
-# so that our tests will run.
-# We use RUNTESTS instead of RUNSERIAL directly because it may be that
-# some tests need to be run with a different command. Older versions
-# of the makefiles used the command
-# $(LIBTOOL) --mode=execute
-# in some directories, for instance.
-RUNTESTS = $(RUNSERIAL)
-
-# Libraries to link to while building
-LIBHDF5 = $(top_builddir)/src/libhdf5.la
-LIBH5TEST = $(top_builddir)/test/libh5test.la
-LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la
-LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la
-LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la
-LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la
-LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la
-LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la
-LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la
-docdir = $(exec_prefix)/doc
-
-# Scripts used to build examples
-H5CC = $(bindir)/h5cc
-H5CC_PP = $(bindir)/h5pcc
-H5FC = $(bindir)/h5fc
-H5FC_PP = $(bindir)/h5pfc
-
-# .chkexe and .chksh files are used to mark tests that have run successfully.
-MOSTLYCLEANFILES = *.chkexe *.chksh
-localdocdir = $(docdir)/hdf5/Tutor/Graphics
-
-# Public doc files (to be installed)...
-localdoc_DATA = AddInfo.gif AdvTopics.gif BLANK.gif ChunkExt.gif CompDTypes.gif \
- Copy.gif CreateAttr.gif CreateDset1.gif CreateDset2.gif \
- CreateFile.gif CreateGrp1.gif CreateGrp2.gif Examples.gif \
- FileOrg.gif FullTOC1.gif FullTOC2.gif Glossary.gif H5API.gif \
- Intro.gif IntroTopics.gif Iterate.gif MountFile.gif Quiz.gif \
- QuizAns.gif RdWrDataset.gif RefObject.gif RefRegion.gif \
- References.gif SelectElemCp.gif SelectHyp.gif TOC.gif \
- TOCFull.gif TOCShort.gif TitlePg.gif Utilities.gif
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence-doc.am $(top_srcdir)/config/commence.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Tutor/Graphics/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign doc/html/Tutor/Graphics/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-localdocDATA: $(localdoc_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(localdocdir)" || $(mkdir_p) "$(DESTDIR)$(localdocdir)"
- @list='$(localdoc_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(localdocDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(localdocdir)/$$f'"; \
- $(localdocDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-
-uninstall-localdocDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(localdoc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(localdocdir)/$$f'"; \
- rm -f "$(DESTDIR)$(localdocdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/../../../../config
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(localdocdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-localdocDATA
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-localdocDATA
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-localdocDATA install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-info-am \
- uninstall-localdocDATA
-
-
-# Ignore most rules
-lib progs check test _test check-p check-s:
- @echo "Nothing to be done"
-
-tests dep depend:
- @@SETX@; for d in X $(SUBDIRS); do \
- if test $$d != X; then \
- (cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
- fi;
- done
-
-# In docs directory, install-doc is the same as install
-install-doc install-all:
- $(MAKE) $(AM_MAKEFLAGS) install
-uninstall-doc uninstall-all:
- $(MAKE) $(AM_MAKEFLAGS) uninstall
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/html/Tutor/Graphics/MountFile.gif b/doc/html/Tutor/Graphics/MountFile.gif
deleted file mode 100644
index fb476df..0000000
--- a/doc/html/Tutor/Graphics/MountFile.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Quiz.gif b/doc/html/Tutor/Graphics/Quiz.gif
deleted file mode 100644
index 5bba11e..0000000
--- a/doc/html/Tutor/Graphics/Quiz.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/QuizAns.gif b/doc/html/Tutor/Graphics/QuizAns.gif
deleted file mode 100644
index 6b73566..0000000
--- a/doc/html/Tutor/Graphics/QuizAns.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/RdWrDataset.gif b/doc/html/Tutor/Graphics/RdWrDataset.gif
deleted file mode 100644
index 962fed1..0000000
--- a/doc/html/Tutor/Graphics/RdWrDataset.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/RefObject.gif b/doc/html/Tutor/Graphics/RefObject.gif
deleted file mode 100755
index ae9dc05..0000000
--- a/doc/html/Tutor/Graphics/RefObject.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/RefRegion.gif b/doc/html/Tutor/Graphics/RefRegion.gif
deleted file mode 100755
index 250039f..0000000
--- a/doc/html/Tutor/Graphics/RefRegion.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/References.gif b/doc/html/Tutor/Graphics/References.gif
deleted file mode 100644
index 0d94116..0000000
--- a/doc/html/Tutor/Graphics/References.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/SelectElemCp.gif b/doc/html/Tutor/Graphics/SelectElemCp.gif
deleted file mode 100644
index ed8e976..0000000
--- a/doc/html/Tutor/Graphics/SelectElemCp.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/SelectHyp.gif b/doc/html/Tutor/Graphics/SelectHyp.gif
deleted file mode 100644
index 29ac707..0000000
--- a/doc/html/Tutor/Graphics/SelectHyp.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/TOC.gif b/doc/html/Tutor/Graphics/TOC.gif
deleted file mode 100644
index 0bc3251..0000000
--- a/doc/html/Tutor/Graphics/TOC.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/TOCFull.gif b/doc/html/Tutor/Graphics/TOCFull.gif
deleted file mode 100644
index bb1e982..0000000
--- a/doc/html/Tutor/Graphics/TOCFull.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/TOCShort.gif b/doc/html/Tutor/Graphics/TOCShort.gif
deleted file mode 100644
index a17aaee..0000000
--- a/doc/html/Tutor/Graphics/TOCShort.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/TitlePg.gif b/doc/html/Tutor/Graphics/TitlePg.gif
deleted file mode 100644
index 5f9a633..0000000
--- a/doc/html/Tutor/Graphics/TitlePg.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Graphics/Utilities.gif b/doc/html/Tutor/Graphics/Utilities.gif
deleted file mode 100644
index 62e1d78..0000000
--- a/doc/html/Tutor/Graphics/Utilities.gif
+++ /dev/null
Binary files differ
diff --git a/doc/html/Tutor/Makefile.am b/doc/html/Tutor/Makefile.am
deleted file mode 100644
index ed7ab7a..0000000
--- a/doc/html/Tutor/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-# HDF5 Library Doc Makefile(.in)
-#
-# Copyright (C) 1997, 2002
-# National Center for Supercomputing Applications.
-# All rights reserved.
-#
-##
-## Makefile.am
-## Run automake to generate a Makefile.in from this file.
-#
-
-include $(top_srcdir)/config/commence-doc.am
-
-SUBDIRS=Graphics examples
-localdocdir = $(docdir)/hdf5/Tutor
-
-# Public doc files (to be installed)...
-localdoc_DATA=Contents.html ContentsAdd.html ContentsAdv.html \
- ContentsFull.html ContentsIntro.html Copyright.html answers.html \
- api.html bighdf2sp.JPG compound.html crtatt.html crtdat.html \
- crtfile.html crtgrp.html crtgrpar.html crtgrpd.html extend.html \
- fileorg.html glossary.html img001.gif img002.gif img003.gif \
- img004.gif img005.gif index.html intro.html iterate.html \
- mount.html questions.html rdwt.html references.html reftoobj.html \
- reftoreg.html select.html selectc.html title.html util.html
diff --git a/doc/html/Tutor/Makefile.in b/doc/html/Tutor/Makefile.in
deleted file mode 100644