summaryrefslogtreecommitdiffstats
path: root/src/H5Tpublic.h
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r6269] Purpose:Quincey Koziol2003-01-131-4/+4
| | | | | | | | | | | | | Code cleanup Description: Various code cleanups to allow the development branch to be compiled with a C++ compiler (i.e. CC=g++ ) Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)} FreeBSD 4.7 (sleipnir) C++
* [svn-r6252] Purpose:Quincey Koziol2003-01-091-83/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lots of performance improvements & a couple new internal API interfaces. Description: Performance Improvements: - Cached file offset & length sizes in shared file struct, to avoid constantly looking them up in the FCPL. - Generic property improvements: - Added "revision" number to generic property classes to speed up comparisons. - Changed method of storing properties from using a hash-table to the TBBT routines in the library. - Share the propery names between classes and the lists derived from them. - Removed redundant 'def_value' buffer from each property. - Switching code to use a "copy on write" strategy for properties in each list, where the properties in each list are shared with the properties in the class, until a property's value is changed in a list. - Fixed error in layout code which was allocating too many buffers. - Redefined public macros of the form (H5open()/H5check, <variable>) internally to only be (<variable>), avoiding innumerable useless calls to H5open() and H5check_version(). - Reuse already zeroed buffers in H5F_contig_fill instead of constantly re-zeroing them. - Don't write fill values if writing entire dataset. - Use gettimeofday() system call instead of time() system when checking the modification time of a dataset. - Added reference counted string API and use it for tracking the names of objects opening in a file (for the ID->name code). - Removed redundant H5P_get() calls in B-tree routines. - Redefine H5T datatype macros internally to the library, to avoid calling H5check redundantly. - Keep dataspace information for dataset locally instead of reading from disk each time. Added new module to track open objects in a file, to allow this (which will be useful eventually for some FPH5 metadata caching issues). - Remove H5AC_find macro which was inlining metadata cache lookups, and call function instead. - Remove redundant memset() calls from H5G_namei() routine. - Remove redundant checking of object type when locating objects in metadata cache and rely on the address only. - Create default dataset object to use when default dataset creation property list is used to create datasets, bypassing querying for all the property list values. - Use default I/O vector size when performing raw data with the default dataset transfer property list, instead of querying for I/O vector size. - Remove H5P_DEFAULT internally to the library, replacing it with more specific default property list based on the type of property list needed. - Remove redundant memset() calls in object header message (H5O*) routines. - Remove redunant memset() calls in data I/O routines. - Split free-list allocation routines into malloc() and calloc()- like routines, instead of one combined routine. - Remove lots of indirection in H5O*() routines. - Simplify metadata cache entry comparison routine (used when flushing entire cache out). - Only enable metadata cache statistics when H5AC_DEBUG is turned on, instead of always tracking them. - Simplify address comparison macro (H5F_addr_eq). - Remove redundant metadata cache entry protections during dataset creation by protecting the object header once and making all the modifications necessary for the dataset creation before unprotecting it. - Reduce # of "number of element in extent" computations performed by computing and storing the value during dataspace creation. - Simplify checking for group location's file information, when file has not been involving in file-mounting operations. - Use binary encoding for modification time, instead of ASCII. - Hoist H5HL_peek calls (to get information in a local heap) out of loops in many group routine. - Use static variable for iterators of selections, instead of dynamically allocation them each time. - Lookup & insert new entries in one step, avoiding traversing group's B-tree twice. - Fixed memory leak in H5Gget_objname_idx() routine (tangential to performance improvements, but fixed along the way). - Use free-list for reference counted strings. - Don't bother copying object names into cached group entries, since they are re-created when an object is opened. The benchmark I used to measure these results created several thousand small (2K) datasets in a file and wrote out the data for them. This is Elena's "regular.c" benchmark. These changes resulted in approximately ~4.3x speedup of the development branch when compared to the previous code in the development branch and ~1.4x speedup compared to the release branch. Additionally, these changes reduce the total memory used (code and data) by the development branch by ~800KB, bringing the development branch back into the same ballpark as the release branch. I'll send out a more detailed description of the benchmark results as a followup note. New internal API routines: Added "reference counted strings" API for tracking strings that get used by multiple owners without duplicating the strings. Added "ternary search tree" API for text->object mappings. Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)} Other platforms/configurations tested? FreeBSD 4.7 (sleipnir) serial & parallel Solaris 2.6 (baldric) serial
* [svn-r6060] Raymond Lu2002-11-061-0/+9
| | | | | | | | | | | Purpose: Add new functions Description: add H5Tget_native_type and H5Tis_variable_str. Platforms tested: arabica, eirene, modi4 Misc. update: MANIFEST and release_docs/RELEASE updated.
* [svn-r5931] MuQun Yang2002-09-201-143/+143
| | | | | | | | | | | | Purpose: __DLL__ is a keyword in some platforms and __DLL__ is also defined as a macro for windows DLL applications. That causes problems. Description: Solution: Use H5_DLL*** to replace __DLL***__ at all header files. Change the macro defination at H5api_adpt.h. Platforms tested: linux2.2.18smp, irix64, solaris 2.7 and windows 2000
* [svn-r5195] Purpose:Quincey Koziol2002-04-171-2/+1
| | | | | | | | | | | | | | Code cleanup Description: Got rid of the "H5T_BKG_TEMP" setting that was used internally to the library, since temporary background buffers are now handled by the individual conversion routines instead of in a global background buffer. No APIs were changed or affected by this. Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5192] Purpose:Quincey Koziol2002-04-171-0/+7
| | | | | | | | | | Code cleanup Description: Move the H5T_bkg_t structure from H5Fpublic.h to H5Tpublic.h Platforms tested: FreeBSD 4.5 (sleipnir)
* [svn-r5147] Raymond Lu2002-04-051-0/+1
| | | | | | | | | | Purpose: New feature Description: Added a query function H5Tget_member_index for compound and enumeration data types, to retrieve member's index by its name. Platforms tested: Linux 2.2
* [svn-r4312] Purpose:Quincey Koziol2001-08-061-9/+0
| | | | | | | | | Feature shift Description: Take out the v1.2.x compatibility stubs and put in the hooks for v1.4.x compatibility when needed. Platforms tested: FreeBSD 4.3 (hawkwind)
* [svn-r3781] Purpose:Bill Wendling2001-04-051-2/+2
| | | | | | | | | | | | | | | | | | Update Description: Changed #include <hdf_file.h> construct to #include "hdf_file.h" so that the GNU compiler can more easily pick up the dependencies which it places in the .depend and Dependencies files. Also regenerated the Dependencies to go along with this. Platforms tested: Linux
* [svn-r3252] Purpose:Quincey Koziol2001-01-091-4/+3
| | | | | | | | | | | | | Code cleanup. Description: Fixed _lots_ (I mean _tons_) of warnings spit out by the gcc with the extra warnings. Including a few show-stoppers for compression on IRIX machines. Solution: Changed lots of variables' types to more sensible and consistent types, more range-checking, more variable typecasts, etc. Platforms tested: FreeBSD 4.2 (hawkwind), IRIX64-64 (modi4)
* [svn-r3020] Purpose:Quincey Koziol2000-11-291-0/+1
| | | | | | | | | | Code addition Description: The dumper needs to know when a datatype needs to be reclaimed, so I added a small helper function to detect if a particular datatype is or contains a particular class of datatypes. Platforms tested: Linux 2.2.16-3smp (eirene)
* [svn-r3005] Purpose:Quincey Koziol2000-11-271-2/+2
| | | | | | | | Backward compatibility code Description: Add in code to allow the library to emulate the v1.2 API and behavior. Platforms tested: FreeBSD 4.2 (hawkwind)
* [svn-r2886] Purpose:Quincey Koziol2000-11-131-0/+9
| | | | | | | | | | Backward compatibility additions Description: Created HDF5 v1.2 compatibility API functions (H5Tget_member_dims & H5Tinsert_array) which use the newer array datatypes underneath, but should ease user's transition to the 1.4 version of the library. Platforms tested: FreeBSD 4.1.1 (hawkwind)
* [svn-r2855] ./hdf5/src/H5Tpublic.hRobb Matzke2000-11-101-2/+2
|
* [svn-r2850] Purpose:Quincey Koziol2000-11-091-9/+1
| | | | | | | | | | | | | Added new function. Description: It's often convenient to query the class of a compound datatype's member to determine if it's an array and the previous way required you to open the member type to query it's class. Solution: Added new H5Tget_member_class function to directly ask for the member type's class. Platforms tested: FreeBSD 4.1.1 (hawkwind)
* [svn-r2843] Purpose:Quincey Koziol2000-11-091-0/+11
| | | | | | | | | | | | | | | New Feature Description: Added array datatype to library. See documentation at: http://hdf.ncsa.uiuc.edu/HDF5/planning/DP/ArrayType.html for complete details on the impact to the library. Solution: Changes to the base library include removing the ability of compound datatype fields to be an array (they can use an array type for the field, to duplicate the functionality) and adding in the new array datatype everywhere appropriate. (I hope :-) Platforms tested: FreeBSD 4.1.1 (hawkwind)
* [svn-r2693] Purpose:Quincey Koziol2000-10-181-1/+1
| | | | | | | | | | | Bug fix (bug #446) Description: H5Tget_offset return type was size_t and the error return value was 0, but 0 is also a valid successful return value. Solution: Changed the return type to int and the error return value to -1 Platforms tested: FreeBSD 4.1.1 (hawkwind)
* [svn-r2262] * 2000-05-18Robb Matzke2000-05-181-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ** src/H5Tconv.c ** src/H5Tpkg.h ** src/H5Tpublic.h The H5T_conv_struct_opt() function had a design flaw -- it didn't keep information about the stride to use to step through the temporary/background-value buffer and thus nested invocations would clobber each other's temp buffers. This was fixed by splitting the `stride' argument into `buf_stride' and `bkg_stride' arguments for all the conversion functions. THIS IS AN API CHANGE, but users will get a compiler warning when they pass their conversion function pointer to H5Tregister(). ** src/H5T.c ** src/H5Tprivate.h Added a bkg_stride argument to the H5T_convert() definition in order to fix a bug related to the optimized compound datatype conversion function. ** src/H5T.c ** src/H5A.c ** src/H5D.c ** src/H5Ofill.c ** src/H5P.c Added bkg_stride=0 argument to the H5T_convert() calls. ** test/dtypes.c Added a test for the H5T_conv_struct_opt() bug fixed above. ** src/H5FL.c The H5FL_term() function should return non-zero even when it couldn't free all the free lists do to their being used by some other package. When that other package terminates it will return non-zero, causing H5FL_term() to be called again. This fixes some of the `infinite loop closing library' messages. ** tools/pdb2hdf Uses print_version() instead of doing that itself. ** src/H5Ppublic.h Renamed H5Pget_gc_reference() declaration to make it match the definition. ** src/H5FDlog.c Added API tracing macros. Removed `const' qualifier from a `char*' member of a struct which was allocated on the heap. ** src/H5TB.c Added curly braces to a couple deeply-nested `if' statements to make them clearer and to shut up the increadibly stupid and just plain incorrect gcc warning about ambiguous `else'. ** test/titerate.c Removed incomplete initialization in favor of memset() for one auto variable to stop compiler warnings. ** tools/Depencencies Regenerated to remove references to h5dumputil.c
* [svn-r1689] Mainly adding support for "native" variable-length strings (C ↵Quincey Koziol1999-09-291-1/+2
| | | | | | | | only currently), but I fixed lots of misc. compiler warnings in other code and also tracked down the memory overwrite bug that was causing the development branch to core dump on most machines.
* [svn-r1599] Changed return type of H5Tenum_nameof and H5Tenum_valueof from ↵Quincey Koziol1999-08-251-2/+5
| | | | hid_t to herr_t
* [svn-r1572] Changes since 19990810Robb Matzke1999-08-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./MANIFEST ./src/H5FDmulti.c [NEW] ./src/H5FDmulti.h [NEW] ./src/Makefile.in ./src/hdf5.h The split driver was reimplemented as a more general "multi" driver which is capable of splitting data into multiple files like the family driver except the partioning is done by memory usage type instead of address. The H5Pset_fapl_split() function just calls H5Pset_fapl_multi() with arguments which prepare to split the address space into two files: meta and raw data. This is the first version. I plan to allow the open() call to relax a bit which would allow one to open an hdf5 file when only the meta-data file is present. This would allow a very large file to be split and stored on tape and the relatively small meta file to be mirrored on disk to allow limited browsing of the file (any request for raw data would fail). ./src/H5private.h ./src/H5F.c ./src/H5FD.c ./src/H5FDprivate.h ./src/H5FDpublic.h ./src/H5FDcore.c ./src/H5FDfamily.c ./src/H5FDmpio.c ./src/H5FDsec2.c Added the ability for a file driver to store information in the superblock which would be needed if the file were opened again later for reading. The format is driver-defined which allows users to extend it however they like. ./doc/html/H5.format.html Added information about the new driver information block of the superblock. This is where file drivers store information they need in order to reopen the file later. ./src/H5F.c ./src/H5Fprivate.h ./src/H5FD.c ./src/H5FDprivate.h ./src/H5FDpublic.h ./src/H5FDcore.c ./src/H5FDfamily.c ./src/H5FDmpio.c ./src/H5FDsec2.c ./src/H5Fistore.c ./src/H5R.c The file access properties and the file access property list were decoupled, which allows the property list to more cleanly contain properties for various levels of the file and which allows the property list to be modified more cleanly when opening files. ./src/H5.c ./src/H5FDpublic.h Removed H5FD_MEM_META and H5FD_MEM_GROUP since they're never used. ./src/H5D.c Changed the way we detect the MPIO driver in all these special cases. ./src/H5F.c ./src/H5Rpublic.h ./test/tfile.c The default file sizeof(offset) was changed to be a function of haddr_t instead of hsize_t. THE H5RPUBLIC.H DEFINITIONS WILL HAVE PROBLEMS IF THE USER CREATES A FILE WITH NON-DEFAULT OFFSET AND SIZE SIZES! ./src/H5F.c Fixed an uninitialized memory access bug in file closing related to the VFL. ./src/H5T.c ./src/H5Tpublic.h Added an H5T_NATIVE_HADDR predefined datatype which corresponds to the `haddr_t' type. ./test/Makefile.in Reformatted long lines. ./test/big.c ./test/cmpd_dset.c ./test/dsets.c ./test/dtypes.c ./test/extend.c ./test/external.c Removed the H5F_ACC_DEBUG flag from file creation/open calls. ./test/big.c Plugged a memory leak. ./test/h5test.c Added support for the `multi' driver. Removed #warning about not having the stdio driver. Plans are to not implement it since the sec2 driver serves the same purpose and testing didn't show any difference in execution times between the two.
* [svn-r1418] Modified H5Tconvert to require a dataset transfer property ↵Quincey Koziol1999-07-031-2/+2
| | | | | | | | | | | | | list ID as the final parameter (so that VL datatypes have a way to pass in the custom memory allocation routines). Fixed a conversion bug when VL fields were part of a compound datatype that was causing the no-op conversion routine to be used instead of the vlen routine. Added the H5Pset_vlen_mem_manager and H5Pget_vlen_mem_manager routines to allow users to provide their own custom memory allocation routines for VL data read in from the file and reclaimed with H5Dvlen_reclaim. Finished coding on H5Dvlen_reclaim so it works now.
* [svn-r1362] Robb Matzke1999-06-181-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes since 19990616 ---------------------- ./src/H5T.c ./src/H5Tconv.c All conversion functions take an extra argument called `stride' which is the number of bytes to advance the source and destination pointers after each element is converted. If the value is zero then the old behavior is preserved (source and destination values are packed). This feature was necessary to implement the compound datatype conversion optimizations and it causes a minor change to the API (application-defined type conversion functions take an extra size_t stride argument). ./src/H5Tconv.c An additional compound data type conversion function was added which is applied unless the destination type is larger than the source type. I'm measuring significant performance increases for certain operations: Test Name Struct-Conv Noop-Conv New(Old) MB/s New(Old) MB/s ---------- ------------- ------------- Reordering 2.062(0.3936) 54087(0.9047) Subsetting 2.901(0.6581) 40192(1.1100) Shrinking 1.976(0.3925) 33628(1.1500) ---------- ------------- ------------- ./test/dtypes.c Added various compound datatype conversion tests. Fixed return values from functions. ./src/H5T.c Conversion timers are updated only if H5T debugging is turned on a runtime (in addition to compile time). This allows the data type layer to be compiled with debugging support without having to pay a big runtime penalty if the debugging isn't actually used. ./src/H5A.c ./src/H5D.c ./src/H5Ofill.c ./src/H5P.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h Added the stride argument to the H5T_convert() calls. The stride is always zero, which means that the source and destination data values are packed. ./configure.in ./configure [REGENERATED] If API tracing is turned off then libhdf5.settings will say `no' instead of nothing. ./test/flush1.c ./test/flush2.c Added better error messages in a couple places.
* [svn-r1341] Robb Matzke1999-06-141-51/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes since 19990611 ---------------------- ./doc/html/H5.format.html Added documentation for opaque data types (bitfield types were already documented but they were out of order). ./src/H5E.c Fixed a bug with glibc2 on linux systems where `stdout' is an extern and can't be used to initialize static data. ./src/H5T.c ./src/H5Tpkg.h ./src/H5Tpublic.h ./src/H5detect.c Removed the `_T' from the new C9x types I just added so the names are consistent with existing types. Besides, the fact that something is a datatype is obvious because it starts with H5T_NATIVE_. ./tools/h5ls.c Added the new C9x data types. H5ls prints one of these types only if it doesn't match one of the builtin C types. Prints the OID for shared data types. Fixed a formatting bug with symbolic links which was introduced a few changes ago. The commandline has been changed so that objects from multiple files can be listed with a single command. Instead of specifying a file name and an optional list of objects, each thing to print is a file name and object concatenated. H5ls figures out how to devide the name into a file name and object name even when the file name part doesn't correspond to an actual Unix file. Old syntax: h5ls [OPTIONS] FILE [OBJECTS] New syntax: h5ls [OPTIONS] FILE[/OBJECT] [FILE[/OBJECT]]... Example ({X,Y} is expanded by the shell) Old command: h5ls -d ../test/x.data dir1 dir2 New command: h5ls -d ../test/x.data/{dir1,dir2} The filename is printed as part of the object name when full names are requested (--full or --recursive). If people really don't like this they can undefine a constant at the top of h5ls. Errors from the hdf5 library are turned off. Commandline switches of the form `--width 80' are accepted in addition to `--width=80'. This is more symmetric with single-letter switches that take two forms: `-w 80' and `-w80'. ./src/H5D.c Added tracing instrumentation for H5Dvlen_reclaim(). ./src/H5private.h Added casts to int for the isalpha() et al macros to shut up solaris warnings about char subscripts.
* [svn-r1328] Changes since 19990608Robb Matzke1999-06-111-1/+54
| | | | | | | | | | | | | | | | | | | | ---------------------- ./configure.in ./configure [REGENERATED] ./src/H5T.c ./src/H5Tpkg.h ./src/H5Tpublic.h ./src/H5config.h.in [REGENERATED] ./src/H5detect.c ./src/H5private.h Added checks for the C9x integer types like int32_t, int_least32_t, and int_fast32_t and the unsigned versions. HDF5 defines H5T_NATIVE_* versions (all caps) to be the same as the type provided by the C library, otherwise it defines them as integers exactly the specified size. Hardware type conversion functions are used when the types match some C-language type (like `int').
* [svn-r1305] Checkpointing the VL datatype code. I believe the core ↵Quincey Koziol1999-06-041-4/+15
| | | | | | | | functionality is here, accessed with H5Tvlen_create, but I need to start writing tests now. Also the more esoteric API calls (such as H5Tget_vlen_buf_size and the memory management calls) aren't implemented yet.
* [svn-r1292] Changes since 19990430Robb Matzke1999-06-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- Remove changes from CVS ./bin/release Added a `--nocheck' switch which causes the script to not check the contents of the MANIFEST file against CVS. This is sometimes useful when you need to make a quick snapshot but the MANIFEST file is not quite up to date. ./src/H5D.c Removed warnings for unused variables ./src/H5Fprivate.h Removed the WIN32 definition for `uint' and changed the data type for `eof_written' from `uint' to `uintn'. Shouldn't this really be `hbool_t'? ./src/H5Odtype.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tpublic.h ./test/dtypes.c ./doc/html/H5.format.html Added support for bitfields and opaque data types.
* [svn-r1204] Changes since 19990415Robb Matzke1999-04-231-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./config/depend.in Fixed automatic dependencies. We were storing dependencies for *.o files instead of *.lo files after shared libraries were added. ./config/gnu-flags ./config/linux-gnulibc1 Moved `-march=pentiumpro -mcpu=pentiumpro -malign-double' from the linux file to this file and caused it to depend on the CPU name. This fixes one of Elena's bugs. ./src/H5B.c ./src/H5Bprivate.h ./src/H5D.c ./src/H5Dprivate.h ./src/H5Dpublic.h ./src/H5F.c ./src/H5Farray.c ./src/H5Fistore.c ./src/H5Fmpio.c ./src/H5Fprivate.h ./src/H5Fpublic.h ./src/H5Gnode.c ./src/H5P.c ./src/H5RA.c ./src/H5Sall.c ./src/H5Shyper.c ./src/H5Smpio.c ./src/H5Spoint.c ./src/H5Sprivate.h ./src/H5Tpublic.h ./test/istore.c Added an H5Dget_storage_size() function that reports the amount of storage allocated for raw data in a dataset. Changed H5D_xfer_* to H5F_xfer_* because these properties are more general than datasets. This also allows some of the lower-level I/O functions to get this information easier. ./src/H5S.c ./src/H5Sall.c Added two new functions H5S_all_read() and H5S_all_write() which are optimizations that copy data directly between file and memory without having to go through the scatter gather step. This knocks quite a bit of time off the I/O and reading/writing entire datasets is a fairly common operation. ./tools/h5ls.c Reports the logical size of data, the allocated size of data, and the percent utilization. ./MANIFEST Removed old pablo files, added new files. Snapshots should now start to work again. ./src/H5D.c ./src/H5Fmpio.c Removed two warnings signed vs. unsigned comparisons and check for overflow.
* [svn-r1078] Changes since 19990215Robb Matzke1999-02-181-32/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./src/H5.c Fixed more dependency problems in H5_term_library(). There was a bug in the previous version that could cause the wrong EOF marker to be written to the boot block under certain circumstances. Hopefully this fixes it although I don't ready access to a test case (Mark Miller will test it). ./src/H5F.c ./src/H5Fprivate.h Added an H5F_close_all() that is similar to H5F_term_interface() but which doesn't close the interface. Files that don't have open object headers are closed, others are delayed until all object headers close. All files are flushed. ./src/H5ACprivate.h ./src/H5Bprivate.h ./src/H5Dprivate.h ./src/H5Eprivate.h ./src/H5Fprivate.h ./src/H5Gpkg.h ./src/H5Gprivate.h ./src/H5Gpublic.h ./src/H5HGprivate.h ./src/H5HLprivate.h ./src/H5Iprivate.h ./src/H5MFprivate.h ./src/H5MMprivate.h ./src/H5Oprivate.h ./src/H5Pprivate.h ./src/H5Ppublic.h ./src/H5RAprivate.h ./src/H5Sprivate.h ./src/H5Spublic.h ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h ./src/H5Vprivate.h ./src/H5Zprivate.h ./src/H5private.h ./src/H5public.h Reindented after __DLL__ was added.
* [svn-r1051] changed the HDF5DLL and HDF5GLOBAL to __DLL__ and __DLLVAR__Patrick Lu1999-02-021-111/+111
| | | | also exported all globals and non static functions to the dll
* [svn-r1032] Changes since 19990118Robb Matzke1999-01-211-16/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./tools/h5tools.c Strings are not converted to null-padding before being printed; they are printed with whatever byte values appear in the file. ./tools/h5ls.c Now able to display attribute data type and data. Added a `-f' or `--full' switch which causes the full name of each object to be displayed instead of just the base name. Added a `-r' or `--recursive' switch that recursively prints the contents of groups, avoiding cycles. More bulletproofing for non-printable characters in things like object names, attribute names, and comment strings. We don't want listing a file to send termal escape sequences because it's sometimes possible to execute commands that way. Since h5ls doesn't usually use quotes around object names we must sometimes escape space characters. External files are listed in a table to make the output less confusing. ./tools/h5tools.c ./tools/h5tools.h Changed h5dump() to h5dump_dset() and added h5dump_mem(). Also make h5dump_fixtype() public. ./test/dtypes.c Wrote some data to an attribute to test h5ls attribute printing. ./src/H5ACprivate.h ./src/H5Apublic.h ./src/H5Dprivate.h ./src/H5Dpublic.h ./src/H5Epublic.h ./src/H5Fprivate.h ./src/H5Fpublic.h ./src/H5Gprivate.h ./src/H5HLprivate.h ./src/H5Oprivate.h ./src/H5Ppublic.h ./src/H5RApublic.h ./src/H5Rpublic.h ./src/H5Spublic.h ./src/H5Tpkg.h ./src/H5Tpublic.h ./src/H5Vprivate.h ./src/H5Zpublic.h ./src/H5private.h ./src/H5public.h Reindented function prototypes after `HDF5API' was added. Also rewrapped long lines. ./src/H5Flow.c Added an `#ifdef WIN32' around an unused variable. ./src/H5api_adpt.h Removed extra carriage returns inserted by "broken" operating system. ./src/H5Dprivate.h ./src/H5Oprivate.h ./src/H5Vprivate.h ./src/H5private.h Removed extraneous inclusion of H5api_adpt.h since it's included in H5public.h which is included by everything. ./src/Makefile.in Added H5api_adpt.h to the list of public header files to fix broken `make install'.
* [svn-r1031] added necessary info to export info to the dllPatrick Lu1999-01-211-111/+111
|
* [svn-r1010] Changes since 19981217Robb Matzke1999-01-071-23/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./src/H5.c ./src/H5private.h Renamed `library_initialize_g' to `H5_libinit_g' to make it conform to our naming scheme. ./src/H5I.c Fixed a bug in H5I_dec_ref() that caused the return value to always be zero instead of the new reference count. ./src/H5.c ./src/H5Odtype.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h Added support for enumeration data types. ./src/H5RA.c Renamed H5T_insert() to H5T_struct_insert() and added H5T_enum_insert(). ./src/H5RA.c ./src/H5Shyper.c Added casts to size_t for the third argument of memcpy() to shut up a warning message from insure++. ./src/H5T.c Changed "can't" to "unable to" in some error messages to be more consistent. ./src/H5detect.c If fork() or waitpid() are unavailable then we assume no alignment constraints. Hopefully this is the case only on NT and Intel CPU's don't have alignment constraints. ./src/H5public.h Include <limits.h> because the H5T_NATIVE_CHAR macro needs the definition for CHAR_MIN.
* [svn-r971] Changes since 19981214Robb Matzke1998-12-171-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./INSTALL Added warning that enabling debugging code can adversely affect performance even when the debugging isn't turned on at run-time. Performance testing shows that under certain circumstances (like data type conversions of compound types) the H5_timer functions, although only a few lines each, contribute a fairly large percent to the execution time. ./src/H5T.c ./src/H5Tpkg.h ./src/H5Tpublic.h Improved the H5Tunregister() function to make unregistering more flexible. It takes the same arguments as H5Tregister() but also accepts wild cards. All conversion functions that match the H5Tunregister() search criteria are removed from the global type conversion table. The H5Tregister_hard() and H5Tregister_soft() were combined into a single function called H5Tregister() which is the counterpart to H5Tunregister(). A new `persistence' argument was added to differentiate between the two types of conversion functions. The application is allowed to register a hard conversion function for the no-op conversion path although the library isn't obligated to call it (it usually does). This is mostly for completeness, but the application might use it to help determine if the raw data pipeline was able to use the optimized path for the case when no type conversion is necessary. The library doesn't allow this path to be unregistered although the application can redefine it as often as it likes. Fixed the type conversion tables in preparation for MT-safety and to fix previosly-known design bugs wrt. unregistering conversion functions or changing the C function associated with a conversion path. The MT-safety stuff is documented in a separate white paper. Increased the conversion function debugging name from 9 characters to 31 characters so the output can be more descriptive. Moved conversion path statistics from the H5T_cdata_t member into the conversion path itself. This makes H5T_cdata_t contain only application-visible data structures. ./src/H5A.c ./src/H5D.c ./src/H5Ofill.c ./src/H5P.c ./src/H5T.c Improved the way type conversion functions are called so the caller doesn't have to check for data type debugging and increment type conversion timers and statistics. Changed check for no-op conversion since it is now application-definable and there may even be more than one definition at a time in a multi-threaded application (one thread might be using the no-op conversion path when some other thread changes its definition -- the first thread still sees the original defintion until it's done with the operation). ./doc/html/Datatypes.html Updated the user guide to reflect the changes to data type conversion registration functions. ./bin/trace ./src/H5.c Added tracing support for the new H5T_pers_t data type. ./test/dtypes.c Added printf to display alignment value if non-aligned data types are being tested. ./test/h5test.c Modified the H5Tunregister() calls to use the new arguments. All 94 of those calls can be replaced by a single call to the new H5Tunregister() function. ./src/H5.c Added HAVE_GETTIMEOFDAY around an auto variable and initialized the elapsed time to zero when gettimeofday() is not available. ./src/H5F.c ./src/H5Fprivate.h ./src/H5P.c Added an H5*_init() functions which do the same thing as H5*_init_interface() but can be called from other packages and don't do anything if the interface is already initialized. This fixes a couple memory leaks in applications that repeatedly close and open the library with H5close(). ./src/H5Tconv.c Optimized some data alignment code in the hardware conversion functions. Hardware conversions accumulate statistics about source and destination data alignment and print that information when the conversion function is unregistered (usually when the application exits) if data type debugging is compiled into the library and enabled at run-time. The conversion caching was cleaned up for the compound data type conversion function. It now caches conversion paths in a manner that will be MT-safe and is much simpler than the old method. Also cleaned up some array index maps. ./src/H5detect.c Fixd mispelling of alingemnt. ./src/H5private.h Changed `TRUE' to `1' in assignment to interface_initialize_g in FUNC_ENTER macro definition. ./tools/testh5dump.sh Completely rewritten to make it shorter, better documented, and conforming to most of the other test outputs. The comparison of the actual output with the expected output is insensitive to differences in white space. The test now passes for the first time on Linux where the output width wasn't as expected but the output was otherwise correct. ./tools/testfiles/tall-1.ddl ./tools/testfiles/tall-2.ddl ./tools/testfiles/tall-3.ddl ./tools/testfiles/tattr-1.ddl ./tools/testfiles/tattr-2.ddl ./tools/testfiles/tattr-3.ddl ./tools/testfiles/tattr-4.ddl ./tools/testfiles/tcomp-1.ddl ./tools/testfiles/tcomp-2.ddl ./tools/testfiles/tcomp-3.ddl ./tools/testfiles/tcomp-4.ddl ./tools/testfiles/tdset-1.ddl ./tools/testfiles/tdset-2.ddl ./tools/testfiles/tdset-3.ddl ./tools/testfiles/tdset-4.ddl ./tools/testfiles/tgroup-1.ddl ./tools/testfiles/tgroup-2.ddl ./tools/testfiles/tgroup-3.ddl ./tools/testfiles/tlink-1.ddl ./tools/testfiles/tlink-2.ddl ./tools/testfiles/tlink-3.ddl ./tools/testfiles/tlink-4.ddl ./tools/testfiles/tlink-5.ddl ./tools/testfiles/tslink-1.ddl ./tools/testfiles/tslink-2.ddl Changed `../h5dump' to just `h5dump'. ./config/alpha-dec-osf4.0 Added more warning and optimization switches to the native compiler.
* [svn-r952] Changes since 19981125Robb Matzke1998-11-251-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./doc/html/Datatypes.html ./src/H5.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tpublic.h ./src/H5detect.c ./test/chunk.c ./test/dtypes.c ./test/h5test.c ./test/mtime.c ./test/tattr.c ./test/th5s.c ./tools/h5dump.c ./tools/h5dumputil.c ./tools/h5import.c ./tools/h5ls.c ./tools/h5toh4.c ./tools/h5tools.c Renamed the old H5T_NATIVE_CHAR type to H5T_NATIVE_SCHAR to denote that it is always signed. Added a new H5T_NATIVE_CHAR type which has the same range, representation, and behavior as either H5T_NATIVE_SCHAR or H5T_NATIVE_UCHAR depending on the compiler and its command-line switches for the application source file which references H5T_NATIVE_CHAR. If source files are compiled with different switches then each source file will resolve H5T_NATIVE_CHAR appropriately so it matches the C type `char' in that source file. NOTE: THERE ARE OTHER DOCUMENTATION FILES THAT I DIDN'T CHANGE BECAUSE I CAN'T MODIFY THE SOURCE. ./test/extend.c Swapped two lines to prevent diagnostic messages from messing up the formatted output.
* [svn-r928] Changes since 19981118Robb Matzke1998-11-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./src/H5.c ./src/H5Smpio.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpublic.h ./src/H5detect.c ./src/H5private.h ./src/H5public.h ./test/big.c The `long long' type isn't quite as prevalent as we had hoped; there is at least one system that defines `__int64' but not `long long'. Therefore, I've temporarily changed all occurrences of `long long' to `long_long' and then #define that in H5private.h based on the existence of `long long' or `__int64'. This gets rid of some #ifdef's in other parts of the code. The semantics of the hdf5 types are: *int8_t Exactly one byte *int16_t At least two bytes. We favor 32-bit integers over 16-bit integers if the 16-bit integer is 4-bytes wide (Cray) *int32_t At least four bytes. *int64_t At least eight bytes long_long The widest integral integer type The H5Smpio.c contains debugging code which is non-portable. ./tools/h5ls.c Changed the order native types are detected so we favor the name `int' over `short' or `long' if two of them are the same. ./config/conclude.in Added a rule to make test programs depend on the hdf5 library. This fixes a minor bug where changing H5detect.c and then running `make test' caused H5Tinit.c to not be recompiled and therefore the test files are not relinked.
* [svn-r925] Changes since 19981116Robb Matzke1998-11-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./INSTALL.parallel [NEW] We're beginning to unify some of the parallel installation steps. This file will contain general information for installing the parallel library. It's not complete yet. ./configure.in ./configure [REGENERATED] ./src/H5config.h.in [REGENERATED] Check for xdr_int() in libnsl required on Solaris when linking with hdf4. It's found on the Irix system I tested which complains that `-lnsl' didn't resolve any symbols. Oh well. Fixed the order of searching for libdf and libmfhdf for hdf4 linking. ./configure.in ./configure [REGENERATED] ./src/H5config.h.in [REGENERATED] ./src/H5Z.c Check for compress() in libz in order to find older versions of the library that will still work for hdf4. Added a separate check for compress2() that hdf5 will use. ./configure.in ./configure [REGENERATED] ./src/H5config.h.in [REGENERATED] ./src/H5.c ./src/H5private.h ./src/H5A.c ./src/H5B.c ./src/H5Bprivate.h ./src/H5D.c ./src/H5F.c ./src/H5Farray.c ./src/H5Fcore.c ./src/H5Ffamily.c ./src/H5Fistore.c ./src/H5Flow.c ./src/H5Fmpio.c ./src/H5Fprivate.h ./src/H5Fsec2.c ./src/H5Fsplit.c ./src/H5Fstdio.c ./src/H5Gent.c ./src/H5Gnode.c ./src/H5Gpkg.h ./src/H5Gprivate.h ./src/H5HG.c ./src/H5HL.c ./src/H5O.c ./src/H5Oattr.c ./src/H5Ocomp.c ./src/H5Ocont.c ./src/H5Odtype.c ./src/H5Oefl.c ./src/H5Ofill.c ./src/H5Olayout.c ./src/H5Omtime.c ./src/H5Oname.c ./src/H5Oprivate.h ./src/H5Osdspace.c ./src/H5Oshared.c ./src/H5Ostab.c ./src/H5R.c ./src/H5RA.c ./src/H5Sall.c ./src/H5Shyper.c ./src/H5Snone.c ./src/H5Spoint.c ./src/H5Sprivate.h ./src/H5Sselect.c ./src/H5T.c ./src/H5Tbit.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5V.c ./test/bittests.c ./test/gheap.c ./test/hyperslab.c ./test/istore.c ./test/tmeta.c ./test/trefer.c ./test/tselect.c ./tools/h5debug.c ./tools/h5tols.c Added checks for Posix.1g types like `int8_t'. If not defined then H5private.h defines them. Changed all `int8' etc. to `int8_t'. ./src/H5A.c ./src/H5D.c ./src/H5F.c ./src/H5G.c ./src/H5I.c ./src/H5P.c ./src/H5R.c ./src/H5RA.c ./src/H5S.c ./src/H5T.c ./src/H5TB.c ./src/H5Z.c Calling H5*_term_interface() resets interface_initialize_g to FALSE so a subsequent call to H5open() (implied or explicit) reinitializes global variables properly. ./src/H5private.h ./src/H5Oefl.c ./src/H5S.c Changed MAX_SIZET, MAX_SSIZET, MAX_HSIZET, and MAX_HSSIZET to SIZET_MAX, SSIZET_MAX, HSIZET_MAX, and HSSIZE_MAX to they match the Posix.1 constants in <limits.h>. ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5detect.c Added 36 more integer hardware conversion functions to the type conversion table for conversions to/from `long long' and `unsigned long long'. The `long long' names will be changed shortly to make them portable to Win32. Changed H5T_init() to H5T_native_open() and added an H5T_native_close() to open and close the predefined native data types. Increased the initial size of the type conversion table from 64 to 128 entries. Reordered the 90 new integer conversion functions so the names that are printed favor `int' over `short' or `long' when two of them are the same. ./test/dtypes.c Added hardware and software integer conversion tests for the 56 functions I added recently but not the additional 36 checked in this time. That will come next. Call H5close() after each test so type conversion statistics are easier to follow. Try this: $ HDF5_DEBUG=t ./dtypes Added more debugging output for when things go wrong. ./src/H5private.h Removed trailing carriage-returns inserted by broken operating system ;-)
* [svn-r904] Fixed bug in H5dont_atexit.Quincey Koziol1998-11-131-0/+2
| | | | | | | Plugged a memory leak in the union of hyperslabs code. Checkpointing dataset region references, which are working, but not stored in file yet.
* [svn-r800] Made a "htri_t" as a return value from "boolean" functions returningQuincey Koziol1998-10-261-2/+2
| | | | TRUE/FALSE/FAIL, hbool_t is now strictly for true boolean values.
* [svn-r790] Updated parameters for H5R API and changed constants from ↵Quincey Koziol1998-10-261-3/+3
| | | | pointers to references
* [svn-r766] Checkpointing the reference code.Quincey Koziol1998-10-191-2/+2
|
* [svn-r737] Changed H5I groups to have a H5I_ prefix before them, to better ↵Quincey Koziol1998-10-051-1/+4
| | | | | | align with the library.
* [svn-r609] Debugging.htmlRobb Matzke1998-08-201-1/+1
| | | | | | | | | | | | | | | | | | | | | Fixed errors H5.c Fixed core dump with setvbuf() for debugging. H5Fistore.c Fixed bug with sparse datasets. H5Omtime.c Found a typo in "Posix Programmer's Guide". The `%z' in the strftime() should be `%Z' instead. H5T.c H5Tpublic.h Improved api tracing for H5Tinsert_array(). h5tools.c Doesn't dump core for empty datasets.
* [svn-r603] Changes since 19980818Robb Matzke1998-08-181-2/+9
| | | | | | | | | | | | | | | | | | | | | ---------------------- ./src/H5.c Fixed an argument promotion bug in HDfprintf() ./src/H5Fistore.c Fixed a array bounds read error. ./src/H5HG.c Fixed uninitialized (but unused) data appearing in the hdf5 file, a potential security problem. ./src/H5T.c ./src/H5Tpublic.h Added new data types for hdf5 types: H5T_NATIVE_HSIZE, H5T_NATIVE_HSSIZE, H5T_NATIVE_HERR, and H5T_NATIVE_HBOOL. I did not add H5T_NATIVE_HID since I couldn't think of a reason that it would be stored in a file anyway.
* [svn-r584] Changes since 19980806Robb Matzke1998-08-101-8/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./doc/html/Datatypes.html ./doc/html/H5.format.html ./src/H5.c ./src/H5Odtype.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tpublic.h ./test/dtypes.c Changed the values of the H5T_str_t type in order to make a distinction between C's null terminated strings and strings which are not null terminated. The string character set and padding method are saved to the hdf5 file instead of using defaults. Added conversion function from one fixed-length string type to another. ./test/chunk.c Fixed to work with new filter API
* [svn-r469] Changes since 19980707Robb Matzke1998-07-081-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./bin/trace ./src/H5.c Added tracing support for H5S_seloper_t and H5S_class_t. ./src/H5Sselect.c ./src/H5S.c Added tracing statements that weren't inserted previously because of formatting problems. ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h ./test/cmpd_dset.c Added H5Tinsert_array() for inserting an array member into a compound data type. Added support to the struct conversion function for member arrays. The index permutation is not supported yet in the conversion (source and destination must have the same permutations).
* [svn-r460] Changes since 19980707Robb Matzke1998-07-071-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./bin/trace ./src/H5.c ./src/H5private.h ./src/H5A.c ./src/H5D.c ./src/H5F.c ./src/H5G.c ./src/H5P.c ./src/H5Pprivate.h ./src/H5S.c ./src/H5T.c Output-only arguments have their addresses printed during tracing and added symbolic output for the H5F_driver_t arguments. That's another reason that we should be careful to add `/*out*/' after arguments that are output-only and `/*in,out*/' after arguments that are used for both input and output values. No internal function calls H5Pget_class() anymore. ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tpublic.h Added H5Tget_overflow() and H5Tset_overflow() so the application can query or set a function that will be called whenever an overflow occurs. Implemented as documented in previous e-mail except the overflow handler gets two buffers: one that contains the source value and one to receive the optional destination value. ./test/dtypes.c Tests overflow handler. ./src/H5.c We have to declare fdopen() because I'm getting errors when compiling on Irix64 even though we include <stdio.h> as documented in the fdopen() man page.
* [svn-r432] Changes since 19980617Robb Matzke1998-06-181-71/+170
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- ./html/Datatypes.html ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tpublic.h ./src/H5detect.c ./test/cmpd_dset.c ./test/dsets.c ./test/dtypes.c ./test/external.c ./test/tattr.c ./test/th5s.c Organized the predefined data types. ./html/H5.intro.html NO MODIFICATIONS! This file is a mess (obviously generated from something else) so I skipped updating it! ./src/h5ls.c ./test/dsets.c ./test/tattr.c ./test/th5s.c Added extra argument to H5Sget_dims() calls per Albert's last update.
* [svn-r425] Changes since 19980610Robb Matzke1998-06-121-1/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- THIS CHECKIN IS FOR QUINCEY -- NOT EVERYTHING WORKS (but it compiles) MOST OF THE CHANGES ARE FOR BETTER TYPE CONVERSION IN THE NEXT ALPHA ./MANIFEST ./src/H5Tbit.c NEW ./src/Makefile.in Bit vector operations (not done yet) ./configure.in Added -lm to the library list, needed by bit-vector operations and conversion functions. Removed vestiges of PARALLEL_SRC no longer used by the makefiles. Albert came up with a better way (that actually works :-) ./src/H5D.c No code changes. Split a couple of long lines, refilled a couple multi-line comments. ./src/H5T.c ./src/H5Tpublic.h Fixed a bug reported by Jim Reus regarding conversion of compound data types whose members require conversions which are satisfied by as-yet unregistered soft conversion functions. Added H5T_IEEE architecture, but the funny-looking integer types will be changed to H5T_BE_ and H5T_LE_ architectures with the type names changed to match the H5T_NATIVE_ integers. Added an H5Tconvert() but it hasn't been documented or tested yet. ./src/H5Tconv.c ./src/H5Tpkg.h Registered conversion functions integer->integer (a general case) and integer->float (for a specific case). The integer->integer conversion depends on the bitvector operations which aren't finished yet and the int->float conversion hasn't been retested since it was borrowed from AIO. Don't look at them yet, they're ugly :-) ./src/H5detect.c Fixed a typo which caused the msb_pad field of an atomic type to not be initialized. ./test/dtypes.c Added a test for number conversions but it's commented out until the conversion stuff is truly working.
* [svn-r407] ./src/H5A.cRobb Matzke1998-06-041-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ./src/H5D.c ./src/H5Tconv.c ./src/H5detect.c Updated to work with new internal H5T functions. Fixed some data type memory leaks during error recovery. ./src/H5Dprivate.h Added H5D_typeof() similar to H5D_entof() that returns a pointer directly to the dataset's type. This is used by H5Tcopy() when invoked on a dataset (see below). ./src/H5Epublic.h Fixed typos in H5E_BEGIN_TRY and H5E_END_TRY macros. ./src/H5F.c Closing a file with objects still open reports the file name in the warning message. Removed unnecessary invalidation of shared data types. ./src/H5Gent.c ./src/H5Gpkg.h ./src/H5Gprivate.h Added `const' to some arguments. ./src/H5O.c ./src/H5Oprivate.h ./src/H5Oshared.c An object header message can now be a pointer to a message in some other object header. The pointer is to the first message of the appropriate type in the other object header and hard link counts are maintained automatically to prevent dangling pointers. The old global heap method of message sharing is also supported although nothing actually uses it. ./src/H5Oattr.c ./src/H5Ocomp.c ./src/H5Ocont.c ./src/H5Odtype.c ./src/H5Oefl.c ./src/H5Olayout.c ./src/H5Oname.c ./src/H5Osdspace.c ./src/H5Oshare.c ./src/H5Ostab.c Changed the data type for the shared message info struct to H5O_shared_t and added an extra initializer to the class methods struct for the set_share method. ./src/H5Odtype.c Added the ability to share data type messages by pointing to other object headers. ./src/H5T.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h Added named data types and changed the functionality of some API functions as follows: * The term `read-only' means that a type handle cannot be modified with functions like H5Tset_*() or H5Tinsert(). * The term `immutable' means the same as `read-only' with the added restriction that H5Tclose() cannot be called for the type. A transient type is made immutable by calling H5Tlock(). * Handles to named types are always read-only. * Handles to predefined types are immutable. * A transient type can be converted to a named type by calling H5Tcommit(). This function will fail if the type is already named or is immutable. * The API function H5Tcommitted() returns an indication of whether a data type has been commited (or is named). If H5Tcommitted() returns TRUE for a data type obtained by calling H5Dget_type() on a dataset, then the dataset is using a shared data type. * H5Topen() returns a handle to a named type. * H5Tcopy() always returns a handle to a modifiable transient type even when invoked on a named type. Also, when invoked on a dataset it returns a modifiable transient type which is a copy of the dataset's data type. * Using a named data type in the call to H5Dcreate() causes the dataset object header to point to the named data type, but using a transient type causes the type to be copied into the dataset's object header. * The data type returned from H5Dget_type() is a named data type or a read-only transient data type depending on whether the dataset points to a named data type. The old behavior, to return a modifiable transient type, is accomplished by overloading H5Tcopy() to operate on datasets (see above). * H5Tshare(), H5Tunshare(), and H5Tis_shared() have been removed from the API. The following features were *not* implemented because they need more discussion: * A named data type can be opened by applying H5Topen() to a dataset in which case the data type is the data type of the dataset (or the data type to which the dataset points if the dataset has a shared data type). * A named data type can have attributes like groups or datasets. * The members of a compound data type can point to named data types. ./src/h5ls.c Reports `Data type' for named data type objects in the file.