summaryrefslogtreecommitdiffstats
path: root/src/H5Tconv.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r14187] Description:Quincey Koziol2007-10-041-1/+1
| | | | | | | | | | | | | | | | | | | | Put H5Acreate() under API versioning, with all internal usage shifted to H5Acreate2(). Add regression tests for H5Acreate1(). Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.4.10 (amazon) in debug mode
* [svn-r14144] Description:Quincey Koziol2007-09-131-1/+1
| | | | | | | | | | | | | | | | Move H5Gget_objinfo() to deprecated symbols section and retarget internal usage to H5Lget_info()/H5Oget_info(). Misc. other code cleanups... Tested on: FreeBSD/32 6.2 (duty) FreeBSD/64 6.2 (liberty) Linux/32 2.6 (kagiso) Linux/64 2.6 (smirom) AIX/32 5.3 (copper) Solaris/32 2.10 (linew) Mac OS X/32 10.4.10 (amazon)
* [svn-r14015] Refactoring part of the code. Tested only on liberty becauseRaymond Lu2007-07-251-24/+1
| | | | the change is simple.
* [svn-r14011] Refactored part of the code in H5T_conv_struct_opt. Tested only Raymond Lu2007-07-241-28/+19
| | | | on smirom because it's a simple change.
* [svn-r14003] Description:Quincey Koziol2007-07-241-8/+6
| | | | | | | | | | Code cleanup & whitespace fixups Tested on: FreeBSD/32 6.2 (duty) FreeBSD/64 6.2 (liberty) Linux/32 2.6 (kagiso) Mac OS X/32 10.4.10 (amazon)
* [svn-r13926] Description:Quincey Koziol2007-06-291-8/+9
| | | | | | | | | | | | Add small interface to "wrap" a static buffer (usually on the stack), but still allow for buffers larger than the static buffer to be allocated. This can eliminate _many_ short-lived buffer allocations in situations where the buffer is a predictable size (or at least a "very likely" size). Also, some minor code cleanups, particularly in the SOHM caching code. Tested on: Mac OS X/32 10.4.10 (amazon)
* [svn-r13885] Modify the comment from the checkin last round.Raymond Lu2007-06-191-3/+3
| | | | No test is needed.
* [svn-r13884] The second step of optimization for compound data for the ChicagoRaymond Lu2007-06-191-31/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | company. The I/O is optimized when the source and destination members are a subset of each other one way or another, and the order is the same, and no conversion is needed. For example: struct source { struct destination { TYPE1 A; --> TYPE1 A; TYPE2 B; --> TYPE2 B; TYPE3 C; --> TYPE3 C; }; TYPE4 D; TYPE5 E; }; or struct destination { struct source { TYPE1 A; --> TYPE1 A; TYPE2 B; --> TYPE2 B; TYPE3 C; --> TYPE3 C; }; TYPE4 D; TYPE5 E; }; The optimization is simply moving data from the source to the appropriate places in the buffer and bypass the reading of the background data and data conversion. Tested on smirom, liberty, sol, and copper.
* [svn-r13841] Description:Quincey Koziol2007-06-081-2/+2
| | | | | | | | | | Add a little more information to the debugging routine, for VL datatypes. Minor code cleanups Tested on: Mac OS X/32 10.4.9 (duty) Too minor to require h5committest
* [svn-r13803] Optimization of reading compound data.Raymond Lu2007-05-231-59/+139
| | | | | | | | | | | | | | | | | Optimize a special case when the source members are a subset of destination, and the order is the same, and no conversion is needed. For example: struct source { struct destination { TYPE1 A; --> TYPE1 A; TYPE2 B; --> TYPE2 B; TYPE3 C; --> TYPE3 C; }; TYPE4 D; TYPE5 E; }; The optimization is simply moving data to the appropriate places in the buffer. This optimization work is for the Chicago company. Tested on sol, copper, smirom, liberty.
* [svn-r13544] Some minor adjustment from last round of checkin. Tested on kagisoRaymond Lu2007-03-261-4/+3
| | | | only because the changes are simple.
* [svn-r13542] Added a detection for zero-length VL data in H5T_conv_vlen to ↵Raymond Lu2007-03-261-1/+7
| | | | | | handle the case properly. This fix was discovered by the user while Bug #717 was being fixed. Modefied the test, too.
* [svn-r13348] Minor change - a void pointer wasn't cast to a byte pointer.Raymond Lu2007-02-201-1/+1
|
* [svn-r13342] Bug fix (#717): Nested VL data failed to free the space when ↵Raymond Lu2007-02-201-4/+4
| | | | | | the data is over- written with shorter length.
* [svn-r13253] Updated all C and C++ style source code files with the THG ↵Albert Cheng2007-02-071-2/+3
| | | | | | | | | copyright notice. Tested platform: Kagiso only since it is only a comment block change. If it works in one machine, it should work in all, I hope. Still need to check the parallel build on copper.
* [svn-r12828] Description:Quincey Koziol2006-10-301-39/+39
| | | | | | | | Clean up compiler warnings... Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12821] Description:Quincey Koziol2006-10-281-28/+28
| | | | | | | | | Clean up compiler warnings, esp. on 64-bit Linux boxes. Tested on: FreeBSD/32 4.11 (sleipnir) w/threadsafe Linux/32 2.4 (heping) w/C++ & FORTRAN Linux/64 2.4 (mir) w/build-all & 1.6 compat
* [svn-r12803] Description:Quincey Koziol2006-10-231-1/+1
| | | | | | | | | | | | | | Finish new version of the I/O pipeline message, which is much smaller than the previous version. This version is used with the "use the latest version of the format" flag. Closed several memory leaks/overruns (found with valgrind). Also, lots of compiler & formatting cleanups. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12736] Description:Quincey Koziol2006-10-091-38/+31
| | | | | | | | | | | | | | | | | | | Add "use the latest format" support for dataspace object header encode/ decode routines and clean up format a bit for the latest format (new to 1.8.x releases) Remove storing 'perm' parameter for array datatypes in memory and the file, and add test to make certain that if any user applications are attempting to store them, we get some reports back. (Should be unlikely, since the RefMan says that the parameter is not implemented and is unsupported). Carry those changes into the tests, etc. Clean up a bunch more compiler warnings. Tested on: FreeBSD/32 4.11 (sleipnir) w/threadsafe Linux/32 2.4 (heping) w/FORTRAN & C++ Linux/64 2.4 (mir) w/enable-1.6-compat
* [svn-r12706] Description:Quincey Koziol2006-10-021-29/+27
| | | | | | | | | Clean up some of the warnings on 64-bit Linux... Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2) Too minor to require h5committest
* [svn-r12680] Description:Quincey Koziol2006-09-251-1/+1
| | | | | | | | | Review, revise & checkin in Peter's latest round of object copy changes, which add basic support for datasets & attributes with reference datatypes. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12440] Purpose:Quincey Koziol2006-06-271-21/+21
| | | | | | | | | | | Code cleanup Description: Trim trailing whitespace in Makefile.am and C/C++ source files to make diffing changes easier. Platforms tested: None necessary, whitespace only change
* [svn-r12435] Purpose: Bug fixRaymond Lu2006-06-231-2/+2
| | | | | | | | | | | | Description: Mac OS 10.4 on PowerPC chip has some errors to convert (unsigned) long long to long double. When the bit sequences are 0x003ff..., 0x007fff..., 0x00ffff..., 0x01ffff..., 0x7fffff..., the converted values are twice as big as they should be. Solution: Detect the error in configure and disable the compiler conversion and test case. Platforms tested: h5committest, Mac OS 10.4, and fuss.
* [svn-r12107] Purpose: Minor changeRaymond Lu2006-03-161-3/+3
| | | | | | | Description: Changed macro from VMS to H5_VMS. Platforms tested: no test needed.
* [svn-r12091] Purpose: Support for VAX floating-point types.Raymond Lu2006-03-141-19/+103
| | | | | | | | | | | | Solution: Support VAX float and double types with new byte order. There're some details not yet included, 1. the alignment detection for VAX order in H5detect.c. 2. support for special values in library conversion functions. 3. the infinity for VAX in H5T_init_inf. 4. support for VAX types in printing hexadecimal format. Platforms tested: h5committest and fuss.
* [svn-r11966] Purpose:Quincey Koziol2006-02-271-8/+8
| | | | | | | | | | | | Code cleanup Description: Style fixes for consistency & other minor cleanups Platforms tested: FreeBSD 4.11 (sleipnir) Mac OSX (amazon) Linux 2.4
* [svn-r11712] Purpose:Quincey Koziol2005-11-151-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New feature Description: Check in baseline for compact group revisions, which radically revises the source code for managing groups and object headers. WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! This initiates the "unstable" phase of the 1.7.x branch, leading up to the 1.8.0 release. Please test this code, but do _NOT_ keep files created with it - the format will change again before the release and you will not be able to read your old files!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! Solution: There's too many changes to really describe them all, but some of them include: - Stop abusing the H5G_entry_t structure and split it into two separate structures for non-symbol table node use within the library: H5O_loc_t for object locations in a file and H5G_name_t to store the path to an opened object. H5G_entry_t is now only used for storing symbol table entries on disk. - Retire H5G_namei() in favor of a more general mechanism for traversing group paths and issuing callbacks on objects located. This gets us out of the business of hacking H5G_namei() for new features, generally. - Revised H5O* routines to take a H5O_loc_t instead of H5G_entry_t - Lots more... Platforms tested: h5committested and maybe another dozen configurations.... :-)
* [svn-r11424] Purpose:Quincey Koziol2005-09-171-233/+255
| | | | | | | | | | | | | | | | | | | | | Code cleanup/bug fix Description: Hoist function call out of inner loop of type conversion by retrieving source & destination precisions once, outside the loop. There's still some overhead because this information is stored in variables set at run-time, when it's really constant for the particular machine. Further work to set compiler macros would allow this code to be optimized better by the compiler with dead code removal. We'll continue to work on this area... Also, made new internal H5T_compiler_conv routine static instead of of private, until we need to reference it from another source code module. Platforms tested: h5committest FreeBSD 4.11 (sleipnir)
* [svn-r11415] Purpose: Internal design change.Raymond Lu2005-09-141-3/+3
| | | | | | | | | | | | | | | | | Description: H5T_register() replaces any existing data conversion path with a new path. Solution: Added a parameter to H5T_register() and H5T_path_find() to signal the library whether the new conversion path is from API function H5Tregister() or from private function like H5T_init_interface(). If it is from H5Tregister(), replace existing path. If it's from H5T_init_interface() and the library is trying to register default hard conversion functions, don't replace existing path because the path is registered by the library. For example, the library registered H5T_conv_int_float() and is trying to register H5T_conv_long_float(). The size of long is equal to int. There's no need to replace the path H5T_conv_int_float(). Platforms tested: h5committest and fuss.
* [svn-r11395] Purpose: Bug fixRaymond Lu2005-09-121-238/+235
| | | | | | | | | | | | | | | | | | Description: Quincey added the condition branch (else if (*((ST*)S) != (ST)((DT)(*((ST*)S))))) in the definition of the macro H5T_CONV_Fx_CORE. It handles a special situation when the source is "float" and assigned the value of "INT_MAX". Compilers do roundup making this value "INT_MAX+1". This branch is to check that situation and return exception for some compilers, mainly GCC. The branch if (*((ST*)S) > (DT)(D_MAX) || (S_PREC < D_PREC && *((ST*)S) == (DT)(D_MAX))) is for some compilers like Sun, HP, IBM, and SGI where under the same situation the "int" doesn't overflow. A test was added to dt_arith.c to check 2 conversions, from float to int where the float is INT_MAX, and from double to signed char where the double is SCHAR_MAX. Platforms tested: h5committest and fuss.
* [svn-r11346] Purpose:Quincey Koziol2005-09-031-413/+466
| | | | | | | | | | | | | | | | | Bug fix & code cleanup Description: Fix problem with detecting precision overflows in a more portable way. (I was depending on the compiler not removing some temporary variables, which was a bad bet... :-) Also, hoist the checking for the exception handling routine out of the inner conversion loop, which should speed up conversions which don't have an exception handling routine defined. Platforms tested: FreeBSD 4.11 (sleipnir) h5committest
* [svn-r11345] Purpose:Quincey Koziol2005-09-031-53/+114
| | | | | | | | | | | | | | | | Bug fix & code cleanup Description: Address most of datatype conversion exception handling bug that Ed Hartnett reported. (He's reported a different problem now, but we're closer at least). Also, condense exception handling #ifdef's into one location instead of spread out in so many places. Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r11332] Purpose: Minor Change to Macro NamesRaymond Lu2005-09-011-68/+68
| | | | | | | | | Description: Changed the names of macros defined in H5Tpkg.h from H5T_CONV_INTERIM_XXX_XXX to H5T_CONV_INTERNAL_XXX_XXX to be more descriptive. Platforms tested: fuss - simple change
* [svn-r11317] Purpose: Minor change to macro namesRaymond Lu2005-08-301-67/+67
| | | | | | | | | | | | Description: Changed the names of the interim macros for data conversion checked in yesterday from the SOURCE_DESTINATION style (like FP_FP or LDOUBLE_LLONG) to the H5T_CONV_INTERIM_SOURCE_DESTINATION style (like H5T_CONV_INTERIM_FP_FP OR H5T_CONV_INTERIM_LDOUBLE_LLONG), to be more descriptive. These macros are defined in H5Tpkg.h and used in H5Tconv.c and H5T.c for interim purpose. Platforms tested: fuss - simple change.
* [svn-r11311] Purpose: New features.Raymond Lu2005-08-291-75/+127
| | | | | | | | | | | | | | | | | | | | Description: Added 2 new configure options, --enable-exception and --enable-accuracy. --enable-exception lets the library check whether user's exception handling functions are present during compiler data conversions and use them if they are. When it's disabled, this step is skipped to improve conversion speed. This step isn't implemented yet for soft conversions because there would be little gain in speed. --enable-accuracy guarantees data accuracy during data conversions. It means the library will choose compiler conversions only if the accurate data is secured. Otherwise, the library will go for the library's own conversions. If this option is disabled, the library uses compiler conversions in favor of their speed as long as they work even if data can be incorrect. Platforms tested: h5committest and fuss. Some systems may fail after this checkin.
* [svn-r11254] Purpose: Bug fixRaymond Lu2005-08-171-3/+3
| | | | | | | | | | Description: In some macro definition, some constant values like D_MIN and D_MAX were not casted to the destination type. They may cause problems for some system like TFLOPS. Solution: Cast them to destination type. Platforms tested: fuss - very simple changes.
* [svn-r11245] Purpose:Quincey Koziol2005-08-131-326/+326
| | | | | | | | | | | | | | | | | | | | Code cleanup Description: Trim trailing whitespace, which is making 'diff'ing the two branches difficult. Solution: Ran this script in each directory: foreach f (*.[ch] *.cpp) sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f end Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r11233] Purpose: Bug fixRaymond Lu2005-08-111-1/+1
| | | | | | | | | | | Description: In the macro H5T_CONV_Xx_CORE definition, one line said "} else if (*((ST*)S) < (D_MIN)) {". It caused problem on TFLOPS because it defines LLONG_MIN as a hexadecimal value instead of decimal value. Solution: Changed the line to "} else if (*((ST*)S) < (DT)(D_MIN)) {" to avoid the problem. (Need to change other similar places when time permits.) Platforms tested: fuss - simple change.
* [svn-r11144] Purpose:Quincey Koziol2005-07-231-2/+67
| | | | | | | | | | | New port Description: Elena asked me to check in her NEC SX-6 work, so here it is! :-) Platforms tested: FreeBSD 4.11 (sleipnir) NEC SX-6 (by Elena)
* [svn-r11001] Purpose: Add more comment.Raymond Lu2005-06-291-1/+2
|
* [svn-r10998] Purpose: Bug fix.Raymond Lu2005-06-291-1/+9
| | | | | | | | | | | | | Description: For the definition of the macro H5T_CONV_Xx_CORE, added a condition branch (else if (*((ST*)S) == (DT)(D_MAX))) which seems redundant. It handles a special situation when the source is "float" and assigned the value of "INT_MAX". A compiler may do roundup making this value "INT_MAX+1". However, when do comparison "if (*((ST*)S) > (DT)(D_MAX))", the compiler may consider them equal. Platforms tested: fuss - simple change.
* [svn-r10919] Purpose: Take Out An Unused FunctionRaymond Lu2005-06-141-391/+0
| | | | | | | | | | | Description: Data conversion function H5T_conv_i32le_f64le() was unused. Because we have new conversion functions for integers and floating numbers, this old function is taken out. Platforms tested: fuss - simple change. Misc. update:
* [svn-r10918] Purpose: Bug fixRaymond Lu2005-06-141-2/+2
| | | | | | | | Description: Fix the codes of last checkin(Bug #341). Some failures happened in daily test from last checkin. Try to fix them in this checkin. Platforms tested: modi4, mir, and tg-login2.
* [svn-r10785] Purpose:James Laird2005-05-231-2/+4
| | | | | | | | | | | | | | | | | Feature Description: Added "support" for UTF-8 character encoding. Solution: Wrote tests to check that UTF-8 can be used in a number of places in HDF5 (object names, data, etc.). These tests live in test/tunicode.c. Added a new UTF-8 character encoding for datatypes. Platforms tested: mir, modi4, heping Misc. update:
* [svn-r10731] Purpose: Bug fixRaymond Lu2005-05-051-0/+2
| | | | | | | | | Description: A user reported conversion of floating-point numbers returned some wrong value. It turned out a variable in H5T_conv_f_f() wasn't reset after being used for each element. See bug #356 for details. Solution: Simple reset it. Platforms tested: fuss; also tested with the program user provided. Very simple change.
* [svn-r10469] Purpose: Minor typo fixRaymond Lu2005-03-281-9/+9
| | | | | | | | | | Description: During last change, part of the code wasn't updated in copy and paste accordingly. It was in the exception handling of NaN in H5T_conv_f_f(). Solution: Corrected. Platforms tested: No test needed - trivial.
* [svn-r10456] Purpose: New way to do conversion test from floating-points to ↵Raymond Lu2005-03-261-39/+203
| | | | | | | | | | | | | | | | | | | integers. Description: The 6th step of changing conversion test. This checkin is only for conversion of special values from floating-points to integers. Solution: This test is seperated from regular value conversion. It reuses the same function test_conv_int_float() in test/dtypes.c. The source buffer of floating-point type is filled up with 8 special values, +/-0, +/-infinity, +/-QNaN, +/-SNaN. Also added 3 new conversion exception values H5T_CONV_EXCEPT_PINF, H5T_CONV_EXCEPT_NINF, H5T_CONV_EXCEPT_NAN, for floating-point special values positive infinity, negative infinity, and NaN. These values are for conversion exception callback function defined through H5Pset_type_conv_cb(). (Remember to update the document!) Platforms tested: h5committest
* [svn-r10402] Purpose: New way to do conversion test between floating-point ↵Raymond Lu2005-03-241-6/+26
| | | | | | | | | | | | | types. Description: The 5th step of changing conversion test. This checkin is only for conversion of special values between floating-point types. Solution: This test is seperated from regular value conversion. It reuse the same function test_conv_flt_1() in test/dtypes.c. The source buffer of floating-point type is filled up with 8 special values, +/-0, +/-infinity, +/-QNaN, +/-SNaN. Platforms tested: h5committest, fuss, and modi4.
* [svn-r10266] Purpose: Bug fixRaymond Lu2005-03-221-31/+29
| | | | | | | | | | Description: The recent change of conversion between floating-point and floating-point types in dtypes.c have detected some bugs in H5T_conv_f_f in H5Tconv.c. Solution: This checkin is to fix these bugs. They happened in a few places in H5T_conv_f_f causing incorrect rounding, denormalization, etc. Platforms tested: h5committest and modi4
* [svn-r10113] Purpose: Bug fixRaymond Lu2005-03-011-0/+2
| | | | | | | | | | | Description: Condition check of macro H5_ULLONG_TO_FP_CAST_WORKS was accidentally taken out in last revision. This macro is defined for Windows because Windows doesn't support conversion from "unsigned long long" to any floating-point type. Solution: Added it back to H5T_conv_ullong_xxx() functions(xxx is any of "float", "double", or "long double"). Platforms tested: tested on Windows.