summaryrefslogtreecommitdiffstats
path: root/src/H5Tconv.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r9755] Purpose: New featureRaymond Lu2005-01-061-29/+25
| | | | | | | | | | | | | Description: Start to support software conversion between long double and all integers. Solution: No major changes to the algorithm. Changes to configure is to exclude SGI for long double to integers test because there're too many problems in their compiler. Platforms tested: h5committest, modi4, fuss, Teragrid, arabica Misc. update: RELEASE.txt
* [svn-r9727] Purpose:Quincey Koziol2004-12-291-115/+163
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-) Description: Generally speaking, this is the "signed->unsigned" change to selections. However, in the process of merging code back, things got stickier and stickier until I ended up doing a big "sync the two branches up" operation. So... I brought back all the "infrastructure" fixes from the development branch to the release branch (which I think were actually making some improvement in performance) as well as fixed several bugs which had been fixed in one branch, but not the other. I've also tagged the repository before making this checkin with the label "before_signed_unsigned_changes". Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel & fphdf5 FreeBSD 4.10 (sleipnir) w/threadsafe FreeBSD 4.10 (sleipnir) w/backward compatibility Solaris 2.7 (arabica) w/"purify options" Solaris 2.8 (sol) w/FORTRAN & C++ AIX 5.x (copper) w/parallel & FORTRAN IRIX64 6.5 (modi4) w/FORTRAN Linux 2.4 (heping) w/FORTRAN & C++ Misc. update:
* [svn-r9445] Purpose: Bug fixRaymond Lu2004-10-211-20/+20
| | | | | | | | | | | Description: "char" was considered as always "signed char" in data type conversion. However, ISO C leaves the definition of "char" to individual implementation. i.e. for IBM AIX C compiler, it's treated as "unsigned char". Solution: Changed all "char" to "signed char". Don't even do "char" anymore because its definition is up to each vendor. Platforms tested: h5committest
* [svn-r9329] James Laird2004-09-281-459/+459
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Purpose: Feature Description: Datatypes and groups now use H5FO "file object" code that was previously only used by datasets. These objects will hold a file open if the file is closed but they have not yet been closed. If these objects are unlinked then relinked, they will not be destroyed. If they are opened twice (even by two different names), both IDs will "see" changes made to the object using the other ID. When an object is opened using two different names (e.g., if a dataset was opened under one name, then mounted and opened under its new name), calling H5Iget_name() on a given hid_t will return the name used to open that hid_t, not the current name of the object (this is a feature, and a change from the previous behavior of datasets). Solution: Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's, and H5G_t's into a "shared" struct and a private struct. The shared structs (H5D_shared_t, etc.) hold the object's information and are used by all IDs that point to a given object in the file. The private structs are pointed to by the hid_t and contain the object's group entry information (including its name) and a pointer to the shared struct for that object. This changed the naming of structs throughout the library (e.g., datatype->size is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip. Platforms tested: Visual Studio 7, sleipnir, arabica, verbena Misc. update:
* [svn-r9053] Purpose:Quincey Koziol2004-08-081-0/+6
| | | | | | | | | | | | | | | | | | | Bug fix Description: Correct possible core dump when a datatype conversion function is registered with the library after a compound datatype has been converted (having it's type conversion information cached by the library). The compound datatype must have been created by inserting the fields in non-increasing offset order to see the bug. Solution: Re-sort the fields in the compound datatypes before recalculating the cached information when performing the conversion on them. Platforms tested: FreeBSD 4.10 (sleipnir) h5committested
* [svn-r8944] Purpose:Quincey Koziol2004-07-261-2/+4
| | | | | | | | | | | | Code optimization Description: Eliminate duplicated call to H5T_detect_class() Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8877] James Laird2004-07-141-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Purpose: Bug Fix Description: If an HDF5 file grows larger than its address space, it dies and is unable to write any data. This is more likely to happen since users are able to change the number of bytes used to store addresses in the file. Solution: HDF5 now throws an error instead of dying. In addition, it "reserves" address space for the local heap and for object headers (which do not allocate space immediately). This ensures that after the error occurs, there is enough address space left to flush the entire file to disk, so no data is lost. A more complete explanation is at /doc/html/TechNotes/ReservedFileSpace.html Platforms tested: sleipnir, copper (parallel), verbena, arabica, Windows (Visual Studio 7) Solution: Platforms tested: Misc. update:
* [svn-r8782] Purpose:Quincey Koziol2004-07-011-1/+1
| | | | | | | | | | | Code cleanup Description: Clean up almost all warnings from Windows builds. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8731] Purpose:Quincey Koziol2004-06-231-30/+25
| | | | | | | | | | | | | | | Code cleanup & minor optimization Description: Re-work the way interface initialization routines are specified in the library to avoid the overhead of checking for them in routines where there is no interface initialization routine. This cleans up warnings with gcc 3.4, reduces the library binary size a bit (about 2-3%) and should speedup the library's execution slightly. Platforms tested: FreeBSD 4.10 (sleipnir) w/gcc34 h5committest
* [svn-r8705] Purpose: Bug fix and new test.Raymond Lu2004-06-181-1/+1
| | | | | | | | | | Description: This is an enhancement after a user reported data writing failure for array datatype of compound type with variable-length type in the v1.6 branch. Solution: Added new test and ran with Purify. Fixed memory errors and leaks in H5Tconv.c. Platforms tested: h5committest
* [svn-r8692] Purpose:Quincey Koziol2004-06-151-2/+3
| | | | | | | | | | | | | Code optimization Description: Avoid making copy of default vlen allocation info when default DXPL is used. Just retarget pointer to point to default info directly. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8683] Purpose:Quincey Koziol2004-06-141-196/+195
| | | | | | | | | | | | | Code optimization Description: Use 'size_t' instead of 'hsize_t' to track the number of elements in memory buffers, especially for type conversion. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8670] Purpose:Quincey Koziol2004-06-131-16/+36
| | | | | | | | | | | | | Code optimization Description: Avoid a memory copy by directly reading from the variable-length sequence buffer when there is no type conversion on the way to disk. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8668] Purpose:Quincey Koziol2004-06-131-54/+63
| | | | | | | | | | | | | | Code optimization Description: Avoid running conversion routine when it's a noop. Also, pick a minimum size for the variable-sized sequence conversion buffer, instead of allocating lots of small buffers. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel
* [svn-r8666] Purpose:Quincey Koziol2004-06-131-163/+146
| | | | | | | | | | | | | | Code optimization Description: Restructure conversion loop of variable-length objects to avoid walking through memory backwards and allocating as many temporary buffers. (This uses the optimized method used in the atomic type conversions) Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8656] Purpose:Quincey Koziol2004-06-111-5/+0
| | | | | | | | | | | | | Code optimization Description: Eliminate redundant memory allocation for type conversion of variable-length sequences. Platforms tested: Solaris 2.7 (arabica) FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest
* [svn-r8487] Purpose: Internal function changeRaymond Lu2004-05-061-48/+54
| | | | | | | | | Description: H5T_reverse_order was declared as private function. Solution: Change it to static local function in H5Tconv.c since it's not used by any function in other file. Platforms tested: RH 8(fuss)
* [svn-r8427] Purpose:Quincey Koziol2004-04-281-0/+2
| | | | | | | | | | | | | | | | Bug fix (sorta) Description: Add hack to allow the MS Visual Studio 6 compiler to build the library. It cannot cast unsigned long long values to float or double values. So, add another configuration macro to disable this conversion in the library. Just the "hardware" conversion is disabled, so the library will still correctly convert unsigned long long to float and double values, it will just happen more slowly with the "software" conversion routine. Platforms tested: FreeBSD 4.9 (sleipnir) with "Windows" setting faked inappropriate for h5committest
* [svn-r8425] Purpose:Quincey Koziol2004-04-281-2/+2
| | | | | | | | | | | | | | | Bug fix (sorta) Description: The SGI machines have problems accurately (and consistently) converting unsigned long values to float and double values, so put in a bit of a hack in the datatype conversion test code to allow them to get "close enough". This hack is enabled at configure time by a flag which should only be set on machines with this problem. Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r8424] *** empty log message ***Raymond Lu2004-04-271-132/+616
|
* [svn-r8383] Purpose:Quincey Koziol2004-04-181-8/+2
| | | | | | | | | | | | | Code cleanup Description: Clean up lots of warnings based on those reported from the SGI compilers as well as gcc. Platforms tested: SGI O3900, IRIX64 6.5 (Cheryl's SGI machine) FreeBSD 4.9 (sleipnir) w/ & w/o parallel h5committest
* [svn-r8344] Purpose: Internal function changeRaymond Lu2004-04-121-4/+4
| | | | | | | | Description: H5T_bit_shift wasn't general enough to handle arbitory start, length. Solution: Make it be so. Platforms tested: h5committest
* [svn-r8287] Purpose:Quincey Koziol2004-03-301-4/+4
| | | | | | | | | | | | | | Bug fix/code cleanup Description: Copy Robb's feature in SSlib that checks that the name of the function used in the FUNC_ENTER macro is actually the name of function. Fixed a bunch of typos & copy-n-pasto's for functions with incorrect names. Platforms tested: FreeBSD 4.9 (sleipnir) w/parallel too minor to require h5committest
* [svn-r8266] Purpose: Internal function changeRaymond Lu2004-03-191-1/+0
| | | | | | | | | Description: The algorithm of H5T_bit_neg wasn't general enough. Solution: Changed it to handle arbitory starting position and size in a bit sequence. Platforms tested: h5committest.
* [svn-r8265] Purpose: Code cleanupRaymond Lu2004-03-181-64/+11
| | | | | | | | Description: Some printing commands left there for debugging. Solution: Took them out. Platforms tested: fuss(RH8). Simple change
* [svn-r8259] *** empty log message ***Raymond Lu2004-03-131-7/+380
|
* [svn-r8157] Purpose:Quincey Koziol2004-02-061-1/+6
| | | | | | | | | | | | Code cleanup/optimization Description: Hoist property list queries up out of inner loops to cache the values at a higher level and pass them into the lower-level routines. Platforms tested: IBM p690 (copper) w/parallel & fphdf5 h5committest
* [svn-r8154] Purpose:Quincey Koziol2004-02-051-4/+3
| | | | | | | | | | | Code cleanup Description: Minor tweaks, cleanups & optimizations to new bit operation routines. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
* [svn-r8153] *** empty log message ***Raymond Lu2004-02-041-0/+382
|
* [svn-r8136] Purpose:Quincey Koziol2004-01-311-7/+1
| | | | | | | | | | | | | Optimization Description: Speed up various parts of the library by setting a global variable for the endianness of the machine at library startup and use that variable instead of repeatedly querying the endianness of the native int datatype. Platforms tested: IBM p690 (copper) too minor to require h5committest
* [svn-r7988] Purpose:Quincey Koziol2003-12-291-1/+1
| | | | | | | | | | | Bug fixes & code cleanup Description: Back out some of the debugging that was inadvertently checked in recently. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
* [svn-r7984] Purpose: bug fixRaymond Lu2003-12-291-2/+3
| | | | | | | Description: VL datatype fails in certain way(hard to describe) Platforms tested: h5committest
* [svn-r7917] Purpose:Quincey Koziol2003-12-061-2/+2
| | | | | | | | | | | | | | | | | | | Code cleanup Description: Clean up compiler warnings, especially the 'FUNC' variable not used which comes out in production mode. Solution: Had to add a new FUNC_ENTER_NOAPI_NOINIT_NOFUNC macro for those non-API functions which don't need the 'FUNC' variable defined. (This will be _so_ much easier when C99 is standard on all our supposed platforms, since it has a __FUNC__ macro... ) Platforms tested: FreeBSD 4.9 (sleipnir) too minor for h5committest (although there were lots of files changed, the change was minor in each one)
* [svn-r7875] Purpose:Quincey Koziol2003-11-241-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Omnibus floating-point bug fix changes Description: There are a number of problems in the floating-point conversion code that were exposed by Ray's recent int<->float checkin: - The 'my_isnan' code in test/dtypes.c was broken and would always return true. The meant that the actual values in the float<->float conversion tests were _never_ checked, hiding the other bugs included in this checkin. - A recent change I made to the type conversion code used "FLT_MIN" instead of "-FLT_MAX" for the most negative 'float' value for the double->float conversion, which meant that any the negative number that was converted from a double to a float would have been mapped to zero, essentially. - A change that Robb appeared to have made ~2.5 years ago to the "generic" float->float conversion routine appears to be incorrect and I've backed it out. - Floating-point conversions on SGI's which converted denormalized values would be mapped to zero instead of being propertly preserved in the new type. This was addressed by an SGI-specific system call to prevent the behavior. Solution: Described above, generally. Platforms tested: FreeBSD 4.9 (sleipnir) h5committest Misc. update: release_docs/RELEASE update forthcoming...
* [svn-r7873] Purpose:Quincey Koziol2003-11-211-12/+6
| | | | | | | | | | | | Code cleanup Description: Remove an unused typedef, fix a LONG->LLONG typo and use LLONG_MIN where appropriate. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
* [svn-r7868] Purpose: new featureRaymond Lu2003-11-211-0/+1303
| | | | | | | | | | Description: data type conversion between integers and float numbers. (Cover your ears. It's going to explode.:) Solution: covers all native type conversion. Mainly uses hardware conversion but handles overflow more gracefully. Platforms tested: h5committest
* [svn-r7842] Purpose:Quincey Koziol2003-11-131-72/+80
| | | | | | | | | | | | | | | | | | | Bug fix Description: Variable length strings and sequences with NULL pointers were not handled by library, causing problems access the data. This also affected fill values for variable-length datatypes. Solution: Address the issues in the library by detecting NULL sequences/strings and avoid trying to convert them. Patched up dumper to display NULL sequences/strings. Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r7824] Purpose:Quincey Koziol2003-11-071-53/+96
| | | | | | | | | | | | | | | Code optimization Description: Improved integer & floating-point datatype conversions by removing some corner cases. Got rid of algorithm which walked the buffer of elements to convert backwards, switching to algorithm which computes the non-overlapping space in the buffer and repeatedly converts it in the forward direction. Platforms tested: FreeBSD 4.9 (sleipnir) h5committest Cray SV1 & T3E (T90 is not accessible)
* [svn-r7667] Purpose:Quincey Koziol2003-10-181-7/+6
| | | | | | | | | | | Optimize code Description: Eliminate some computations from inner loop, giving about a 5% speedup. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to h5committest
* [svn-r7666] Purpose:Quincey Koziol2003-10-181-125/+81
| | | | | | | | | | | Code cleanup Description: Remove duplicated "core" conversion macros. Platforms tested: FreeBSD 4.9 (sleipnir) too minor for h5committest
* [svn-r7665] Purpose:Quincey Koziol2003-10-181-203/+58
| | | | | | | | | | | | Refactored code Description: Switched float->double and double->int conversions to use new, more generic conversion looping macros. Platforms tested: FreeBSD 4.9 (sleipnir) too small to require h5committest
* [svn-r7664] Purpose:Quincey Koziol2003-10-181-75/+124
| | | | | | | | | | | | | | More refactoring Description: Re-wrote inner loop of integer conversion routines with "psuedo-template" macros, to hoist 'if-else's out of inner loop in an easy to understand way. This speeds up the integer type conversions by 15-20%. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
* [svn-r7662] Purpose:Quincey Koziol2003-10-181-194/+222
| | | | | | | | | | | | | | | | | Refactor integer conversion macros Description: Turned integer conversion macros "inside" out, using an interlocking macro technique similar to templates in C++. The macro which actually performs the conversion is now invoked "genericly" from inside another macro, which will allow the inner conversion loop to be optimized in a much easier way. This "psuedo-template" technique could be useful for other semi-repetitious patterns in the library - possibly the datatype initialization code... Platforms tested: FreeBSD 4.9 (sleipnir) h5committest
* [svn-r7616] Purpose:Quincey Koziol2003-10-131-20/+23
| | | | | | | | | | | | | | | Code cleanup Description: Change field member count and indices for compound and enumerated types from 'int' to 'unsigned' to better reflect actual use. Cleaned up a few other minor compiler warnings, etc. Platforms tested: FreeBSD 4.9 (sleipnir) Linux 2.4 (verbena) too minor to require h5committest
* [svn-r7591] Purpose:Quincey Koziol2003-10-101-3/+1
| | | | | | | | | | | | Bug fix Description: Correct the size of the buffer needed for the destination value to use the actual destination type size. Platforms tested: FreeBSD 4.9 (sleipnir) too minor to require h5committest
* [svn-r7580] Purpose:Quincey Koziol2003-10-091-10/+13
| | | | | | | | | | | | | | | | | Bug fix Description: The VL type conversion routine attempt to align it's destination buffer to an offer that will work for both hvl_t and char * types, but the algorithm used fails to work correctly on Cray machines. Solution: Give up on attempting to align the buffer when it's allocated on the stack. Just dynamically allocate it instead. Platforms tested: FreeBSD 4.9 (sleipnir) Cray SV1 (wind)
* [svn-r7334] Purpose:Quincey Koziol2003-08-111-5/+33
| | | | | | | | | | | | | | Bug fix Description: Object references were not getting written out correctly to the file, with recent changes to their memory structure. Solution: Convert the object references correctly. Platforms tested: h5committested
* [svn-r7219] Purpose:Quincey Koziol2003-07-141-3/+3
| | | | | | | | | | | | | | Bug fix Description: H5T_BKG_TEMP was accidentally removed from library code, but is used by application's datatype conversion routines. Solution: Revert removal of H5T_BKG_TEMP. Platforms tested: h5committest
* [svn-r7173] Purpose:Quincey Koziol2003-07-071-2/+8
| | | | | | | | | | | | | | | Bug fix Description: Fix "unaligned access" warning on IA64 (and alpha, probably) machines. Solution: Make certain that temporary destination buffer is aligned on correct boundary for type conversion. Platforms tested: IA64 Linux cluster (titan) too small for h5committest
* [svn-r7116] Purpose:Quincey Koziol2003-06-271-2/+4
| | | | | | | | | | | | Update code Description: Move "PABLO_MASK" definition above header file inclusion to avoid problems with inline functions in header files. Platforms tested: FreeBSD 4.8 (sleipnir) h5committest