Commit Graph

102 Commits

Author SHA1 Message Date
Raymond Lu
479bdb0bbd [svn-r9984] Purpose: New feature and test
Description:  Added support of hardware conversion between "long double" and integers(mainly
in H5Tconv.c) and some test cases(mainly in test/dtypes.c).


Platforms tested:  h5committest and fuss.

Misc. update:  RELEASE.txt
2005-02-10 17:19:39 -05:00
Quincey Koziol
427ff7da28 [svn-r9727] Purpose:
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:
2004-12-29 09:26:20 -05:00
Quincey Koziol
0db364390b [svn-r9469] Purpose:
Code cleanup

Description:
    Clear up some inconsistencies, inefficiencies and possible errors between
the release and development branch.

Platforms tested:
    FreeBSD 4.10 (sleipnir) w/parallel
    Solaris 2.7 (arabica)
    Linux 2.4 (heping) w/C++ & FORTRAN
2004-10-27 12:07:41 -05:00
Raymond Lu
cacc8fa4c6 [svn-r9445] Purpose: Bug fix
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
2004-10-21 11:04:08 -05:00
Quincey Koziol
458576c826 [svn-r9375] Purpose:
Bug fix

Description:
    Close a couple of memory leaks

Platforms tested:
    FreeBSD 4.10 (sleipnir)
    Solaris 2.7 (arabica) w/purify
    Linux 2.4 (verbena)
    too minor for h5committest
2004-10-06 11:35:18 -05:00
Raymond Lu
753190f8c1 [svn-r9350] *** empty log message *** 2004-10-01 13:28:18 -05:00
James Laird
5c0011a713 [svn-r9329]
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:
2004-09-28 14:04:19 -05:00
Quincey Koziol
7c3df64cc4 [svn-r8731] Purpose:
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
2004-06-23 10:36:35 -05:00
Quincey Koziol
ef01629bb2 [svn-r8683] Purpose:
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
2004-06-14 14:32:02 -05:00
Quincey Koziol
ab989cd1a8 [svn-r8670] Purpose:
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
2004-06-12 22:11:27 -05:00
Quincey Koziol
13678f745b [svn-r8507] Purpose:
Code optimization

Description:
    Eliminate many redundant lookups to check for no-op type conversion by
remembering that a type conversion path is the no-op path.

    Also, don't allow non-no-op conversions which happen to be no-ops on a
particular machine (such as int<->long conversions on machines where int and
long are the same size and format, etc.) to replace the default no-op
conversion.

Platforms tested:
    Solaris 2.7 (arabica)
    FreeBSD 4.9 (sleipnir) w/parallel
2004-05-12 13:44:26 -05:00
Quincey Koziol
d992a4a387 [svn-r8427] Purpose:
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
2004-04-28 13:42:25 -05:00
Raymond Lu
b3d2f04490 [svn-r8424] *** empty log message *** 2004-04-27 14:16:54 -05:00
Quincey Koziol
77706cc276 [svn-r8416] Purpose:
Code cleanup

Description:
    Reduce warnings w/PC-Lint in various ways

Platforms tested:
    PC-Lint
    too minor to require h5committest

Misc. update:
2004-04-23 22:47:06 -05:00
Quincey Koziol
fad6801569 [svn-r8412] Purpose:
Code cleanup

Description:
    Run lint on module

Platforms tested:
    PC-Lint
    Too minor to require h5committest
2004-04-23 00:06:20 -05:00
Raymond Lu
dfe9639c9b [svn-r8344] Purpose: Internal function change
Description:  H5T_bit_shift wasn't general enough to handle arbitory start, length.

Solution:  Make it be so.

Platforms tested:  h5committest
2004-04-12 15:49:36 -05:00
Raymond Lu
3c9420c967 [svn-r8270] Purpose: code cleanup
Description:  took out function of older algorithm(H5T_bit_neg2).


Platforms tested: fuss
2004-03-22 09:20:38 -05:00
Raymond Lu
7fb0362eed [svn-r8266] Purpose: Internal function change
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.
2004-03-19 14:55:42 -05:00
Raymond Lu
e45e85190b [svn-r8265] Purpose: Code cleanup
Description:  Some printing commands left there for debugging.

Solution:  Took them out.

Platforms tested:  fuss(RH8).  Simple change
2004-03-18 13:48:02 -05:00
Raymond Lu
a8ec063090 [svn-r8264] Purpose: Internal algorithm change
Description:  The H5T_bit_dec algorithm wasn't general enough.

Solution:  Changed it to handle bit sequence starting at any position
and of any length.

Platforms tested: h5committest
2004-03-17 12:36:34 -05:00
Raymond Lu
95dc09ab4b [svn-r8259] *** empty log message *** 2004-03-13 12:39:41 -05:00
Quincey Koziol
aaeecad656 [svn-r8157] Purpose:
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
2004-02-06 10:31:23 -05:00
Quincey Koziol
ad6408e384 [svn-r8154] Purpose:
Code cleanup

Description:
    Minor tweaks, cleanups & optimizations to new bit operation routines.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    too minor to require h5committest
2004-02-05 11:10:40 -05:00
Raymond Lu
08aa29cd5e [svn-r8153] *** empty log message *** 2004-02-04 17:52:01 -05:00
Quincey Koziol
6cf56ca817 [svn-r8136] Purpose:
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
2004-01-31 10:28:40 -05:00
Quincey Koziol
6d8dd9c504 [svn-r7875] Purpose:
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...
2003-11-24 11:47:18 -05:00
Raymond Lu
c1e333f006 [svn-r7868] Purpose: new feature
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
2003-11-21 12:07:25 -05:00
Quincey Koziol
e1792ebb22 [svn-r7842] Purpose:
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
2003-11-13 10:19:50 -05:00
Quincey Koziol
324cd9d1e2 [svn-r7616] Purpose:
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
2003-10-13 14:31:33 -05:00
Quincey Koziol
965a4cd7c9 [svn-r7468] Purpose:
Code cleanup, etc.

Description:
    Generalize Ray's datatype fixes to handle packing compound datatypes which
are the base type of an array or variable-length type, etc.

    Also track "packedness" of a compound datatype from it's creation, instead
of only setting the 'packed' flag after the datatype was explicitly packed.

    Updated docs to reflect that a compound datatype is allowed to grow (but
not shrink).

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    h5committest
2003-09-11 23:35:48 -05:00
Raymond Lu
81c6851965 [svn-r7461] Purpose: bug #1017
Description: H5Tpack fails if called twice or datatype is locked.  Compound
datatype wasn't expandable.


Platforms tested: h5committest
2003-09-10 17:59:00 -05:00
Quincey Koziol
32a666f652 [svn-r7438] Purpose:
Code cleanup

Description:
    More de-linting...

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    too small to need h5committest
2003-09-02 10:04:36 -05:00
Quincey Koziol
f92d7f73df [svn-r7434] Purpose:
Bug Fix and code cleanup

Description:
    Correct error in H5T_detect_class that was causing nested compound datatypes
with to not detect the datatype class of fields correctly, which caused errors
with fill-values, variable-length datatypes and chunks later on.

    Return the rank of the array datatype from H5Tget_array_dims(), like
H5Sget_dims().

    Lots of cleanups to datatype code, to make the handling of arrays, compound
types, variable-length strings and sequences and enumerated types more
consistent and robust.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    h5committest
2003-08-30 20:48:01 -05:00
Quincey Koziol
00b7830ec5 [svn-r7431] Purpose:
Code cleanup

Description:
    De-linted more code.

Platforms tested:
    FreeBSD 4.9 (sleipnir)
    too small to need h5committest
2003-08-29 08:59:42 -05:00
Quincey Koziol
ed92f54f9b [svn-r7334] Purpose:
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
2003-08-11 07:43:04 -05:00
Quincey Koziol
390f1d0284 [svn-r6837] Purpose:
Code cleanup.

Description:
    Move many package or internal function prototypes and macro definitions
into tighter scope according to their current use.
    Added more comments where appropriate.
    Eliminate ancient, unused functions.
    Added a couple "accessor" functions to get parts of data structures which
were moved out of scope.

Platforms tested:
    h5committested
2003-05-08 15:09:07 -05:00
Bill Wendling
b5d7fa02a9 [svn-r6546] Purpose:
Update

Description:
    Updated copyright statement in files which hadn't been updated yet.

Platforms tested:
    Linux (Only comment change)

Misc. update:
2003-03-31 13:30:57 -05:00
Quincey Koziol
7d63d5e3ff [svn-r6395] Purpose:
Code cleanup.

Description:
    Break up the ~9350 line H5T.c module into smaller pieces, which contain
    code for a particular feature or support for a datatype class.

    This should make the "main" H5T code (still in H5T.c) easier to support,
    as well as removing some of the "minor" routines from the user applications
    which don't use them (my rough estimates show about 4% reduction (~30K on
    a FreeBSD machine) in optimized, staticly-linked binaries for very simple
    programs)

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
	modi4 (parallel, fortran)}

    FreeBSD 4.7 (sleipnir)

Misc. update:
    Update MANIFEST
2003-02-12 08:44:31 -05:00
Quincey Koziol
24d8506dd5 [svn-r6387] Purpose:
Bug Fix

Description:
    Metadata cache in parallel I/O can cause hangs in applications which
    perform independent I/O on chunked datasets, because the metadata cache
    can attempt to flush out dirty metadata from only a single process, instead
    of collectively from all processes.

Solution:
    Pass a dataset transfer property list down from every API function which
    could possibly trigger metadata I/O.

    Then, split the metadata cache into two sets of entries to allow dirty
    metadata to be set aside when a hash table collision occurs during
    independent I/O.

Platforms tested:
    Tested h5committest {arabica (fortran), eirene (fortran, C++)
        modi4 (parallel, fortran)}

    FreeBSD 4.7 (sleipnir) serial & parallel

Misc. update:
    Updated release_docs/RELEASE
2003-02-10 12:26:09 -05:00
Raymond Lu
dcd54d7624 [svn-r6195]
Purpose:
    Cleanup H5Tget_native_type code
Description:
    improve code cosmetics.
Solution:
Platforms tested:
    modi4, eirene, arabica
2002-12-11 11:19:14 -05:00
Raymond Lu
a9dea215ed [svn-r6060]
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.
2002-11-06 16:08:45 -05:00
MuQun Yang
e5b28ef37b [svn-r5931]
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
2002-09-20 15:36:09 -05:00
Raymond Lu
d934f081d2 [svn-r5764]
Purpose:
    Bug Fix.
Description:
    VL type memory leak when data is overwritten.
Solution:
    Free heap objects holding old data.
Platforms tested:
    Linux 2.2(eirene), IRIX 6.5(paz).
2002-07-03 16:06:55 -05:00
Raymond Lu
1c1653aa40 [svn-r5123]
Purpose:
    Bug fix(#697)
Description:
    Variable-length string wasn't treated as string.
Solution:
    Added character set and padding into VL string type.
Platforms tested:
    FreeBSD
2002-03-29 18:46:56 -05:00
Robb Matzke
dba8c269a5 [svn-r4863] ./hdf5-devel/src/H5Tpkg.h
More optimizing for byte order conversion. Mostly just making code
easier to follow by simplifying Duff's device coding of the loops.

I also split the conversion function into two functions with different
names so output from H5T debugging indicates whether the optimized or
unoptimized case was invoked.

2002-01-25 10:48:34 Robb Matzke  <matzke@arborea.spizella.com>
	*: Added prototype for H5T_conv_order_opt().
2002-01-25 11:21:37 -05:00
Raymond Lu
d28fd08f4a [svn-r4696]
Purpose:
    Modify H5Fclose behavior
Description:
    The HDF5 actual file close behaves in several ways in terms of if there
    are still objects(dataset, group, datatype) opened in file.
Solution:
    Added a new file access property, file close degree.  It has four values,
	H5F_CLOSE_DEFAULT
	H5F_CLOSE_WEAK
	H5F_CLOSE_SEMI
	H5F_CLOSE_STRONG
    The way a file is closed is decided by these values.
Platforms tested:
    IRIX64 6.5, SunOS 5.6, FreeBSD 4.4
2001-12-11 14:53:44 -05:00
Quincey Koziol
ff0f769b87 [svn-r4629] Purpose:
Bug fix for code cleanup... :-)
Description:
    Fix a few problems introduced in my previous code cleanup.
Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-11-20 17:29:15 -05:00
Quincey Koziol
e87fc517b8 [svn-r4355] Purpose:
Code cleanup (sorta)

Description:
    When the first versions of the HDF5 library were designed, I remembered
    vividly the difficulties of porting code from a 32-bit platform to a 16-bit
    platform and asked that people use intn & uintn instead of int & unsigned
    int, respectively.  However, in hindsight, this was overkill and
    unnecessary since we weren't going to be porting the HDF5 library to
    16-bit architectures.

    Currently, the extra uintn & intn typedefs are causing problems for users
    who'd like to include both the HDF5 and HDF4 header files in one source
    module (like Kent's h4toh5 library).

Solution:
    Changed the uintn & intn's to unsigned and int's respectively.

Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-08-14 17:09:56 -05:00
Quincey Koziol
95862451f7 [svn-r4324] Purpose:
New Features!
Description:
    Start migrating the internal use of property lists in the library from the
    older implementation to the new generic property lists.

    Currently, only the dataset transfer property lists are migrated to the
    new architecture, all the rest of the property list types are still using
    the older architecture.

    Also, the backward compatibility features are not implemented yet, so
    applications which use dataset transfer properties may need to make the
    following changes:
        H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW)
            and
        H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id)

    This still may have some bugs in it, especially with Fortran, but I should
    be wrapping up those later today.

Platforms tested:
    FreeBSD 4.4 (hawkwind)
2001-08-10 15:47:05 -05:00
Bill Wendling
5e483d0184 [svn-r3781] Purpose:
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
2001-04-05 12:29:14 -05:00