Commit Graph
37 Commits
Author SHA1 Message Date
Binh-Minh Ribler 88ce565d7d [svn-r22235] Purpose: Fixed bugs HDFFV-2761 & HDFFV-7852
Description:
    - Replaced PredType::NotAtexit() with PredType::AtExit(H5CPP_EXITED);
      and used PredType::AtExit as a flag to detect when all predefined
      types have been destroyed.  Then, H5close will be called to terminate
      the library after its being re-initiated when the PredType destructors
      were activated.  This change removed the memory leaks shown by the
      user's sample program.
    - Added H5CPP_EXITED for PredType::AtExit to use as a flag
    - Updated some inaccurate comments
    - Removed stream functions from FileAccPropList
    - Replaced H5_VMS with appropriate macro in H5IdComponent.cpp
    - Corrected many URLs (hdfgroup vs. ncsa) in comments
    - Replaced std::string with H5std_string in comments
Platforms tested:
    Linux/32 2.6 (jam)
    Linux/64 2.6 (amani)
    SunOS 5.10 (linew)
2012-04-01 22:14:19 -05:00
Binh-Minh Ribler aa0772d9b2 [svn-r19395] Purpose: Fixed bug 1903
Description:
    After a C++ API object is closed, its id should be reset regardless
    of the reference count of the underlying HDF5 object.  User reported
    the bug for Group, but it's applicable to all other objects.  Fixed.
Platforms tested:
    Linux/32 2.6 (jam)
    FreeBSD/64 6.3 (liberty)
    SunOS 5.10 (linew)
2010-09-16 00:59:39 -05:00
Binh-Minh Ribler 18fb7d1a78 [svn-r15407] Purpose: Fix bug
Description:
    Changed all subclasses' setId to protected p_setId and put back setId
    in IdComponent.  p_setId is used in the library where the id provided
    by a C API passed on to user's application in the form of a C++ API
    object, which will be destroyed properly, and so p_setId does not
    call incRefCount.  On the other hand, the public version setId is
    used by other applications, in which the id passed to setId needs
    to be closed properly by the application, so setId must call incRefCount
    for the new object to prevent prematurely closing of the id.

Platforms tested:
    Linux 2.6 (kagiso)
    SunOS 5.10 (linew)
    FreeBSD (duty)
2008-07-25 16:51:01 -05:00
Raymond Lu 8704820d1c [svn-r15395] When an attribute was opened twice and data was written with one of the handles,
the file didn't have the data.  It happened because each handle had its own
object structure, and the empty one overwrote the data with fill value.  This is
fixed by making some attribute information like the data be shared in the
attribute structure.

Tested on smirom, kagiso, and linew.
2008-07-22 15:36:31 -05:00
Binh-Minh Ribler e5df9bb33a [svn-r15309] Purpose: Fixed bugs
Description:
    The class hierarchy was revised to address the problem reported in
    bugzilla #1068.  Classes AbstractDS and Attribute are moved out of
    H5Object.  Class Attribute now multiply inherits from IdComponent and
    AbstractDs and class DataSet from H5Object and AbstractDs.

    In addition, data member IdComponent::id was moved into subclasses:
    Attribute, DataSet, DataSpace, DataType, H5File, Group, and PropList.

Platforms tested:
    SunOS 5.10 (linew)
    Linux 2.6 (kagiso)
    FreeBSD (duty)
2008-07-02 09:56:42 -05:00
Quincey Koziol e622f33515 [svn-r14420] Description:
Correct the prototype for H5Sselect_elements() to take an 'hsize_t *' for
the coordinates, instead of 'hsize_t **'.

Tested on:
    Mac OS X/32 10.5.1 (amazon)
2008-01-15 16:10:42 -05:00
Albert Cheng ed7d456e51 [svn-r13253] Updated all C and C++ style source code files with the THG 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.
2007-02-07 09:56:24 -05:00
Binh-Minh Ribler 134352c456 [svn-r13200] Purpose: Adding wrappers and fixing a bug
Description:
    - Added overloaded function DataType::copy to take a DataSet
    - Added overloaded DataType::commit
    - Fixed bugzilla 797
    - Fixed a warning in DataSpace::operator=
    - Set PropList parameter to default in DataType::convert

Platforms tested
    AIX 5.1 (copper)
    SunOS 5.8 64-bit (sol)
    HPUX 11.00 (kelgia)
2007-01-26 00:34:10 -05:00
Binh-Minh Ribler 32d3e6f04f [svn-r12404] Purpose: Fix typos/formats
Description:
    Fixed typos and re-arranged some functions to be in sync with 1.6.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.9 (shanti)
    AIX 5.1 (copper)
2006-06-05 11:17:36 -05:00
Binh-Minh Ribler deec486732 [svn-r12368] Purpose: Fixed bug
Description:
    Shanti compiler destroy unnamed objects later than others, which caused
    some reference counting test fail.  Revised the test so that destructors
    are called at the same time, regardless the differences of compiler
    implementation.

    Revised some constructors, close, operator=, and destructors to make
    sure that all the object ids are handled properly.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.9 (shanti)
    HPUX 11.00 (kelgia)
    AIX 5.1 (copper)
2006-05-23 12:59:40 -05:00
Binh-Minh Ribler 92178e5fff [svn-r12185] Purpose: Code cleanup
Description:
    Removed an empty #ifdef block that was left by mistake.

Platforms tested:
    Linux 2.4 (heping) - very minor
2006-03-31 11:32:31 -05:00
Binh-Minh Ribler a7e993d72b [svn-r12180] Purpose: Maintenance
Description:
    Added alias H5_std so either the global or std namespace can be
    used, depending on H5_NO_STD.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.8 64-bit (sol)
    AIX 5.1 (copper)
2006-03-30 13:06:58 -05:00
Binh-Minh Ribler 5ed48cf279 [svn-r11755] Purpose: Code improvement
Description:
    There was a workaround for predefined types, in the C++ library,
    implemented when the C++ library was handling the reference
    counting of the object ids on its own.  Currently, the C++ library
    is using the available APIs from the C library for that purpose,
    and there were bugs reported involving that part of the C++ library.
    So, I decided to remove the workaround completely.

    Also, improved the use of std members.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.8 64-bit (sol)
    Linux 2.4 w/PGI (colonelk)
2005-12-03 07:21:25 -05:00
Binh-Minh Ribler cbf1ec6eb4 [svn-r11517] Purpose: Fixed comments
Description:
    Fixed the description of two parameters that were swapped by
    mistake.

Platforms tested:
    Linux 2.4 (heping) - very minor
2005-10-10 11:25:47 -05:00
Quincey Koziol 6e7ed46998 [svn-r11487] Purpose:
Code cleanup

Description:
    Tweak copyright on C++ source files to reduce whining by copyright checking
script.

Platforms tested:
    FreeBSD 4.11 (sleipnir) w/C++
2005-10-01 10:29:18 -05:00
Binh-Minh Ribler 6496413284 [svn-r11264] Purpose: Additional code improvement
Description:
    Used "using" declaration and directive better to reduce namespace
    pollution.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.8 64-bit (sol)
2005-08-18 17:16:56 -05:00
Quincey Koziol 6b45f5172c [svn-r11245] Purpose:
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
2005-08-13 15:53:35 -05:00
Binh-Minh Ribler fab172d704 [svn-r11151] Purpose: Fix bugzilla #407 and #408
Description:
    PropList::copyProp has incorrect prototype; although it works,
    it does cause users inconvenience.

Solution:
    Added another overloaded function with correct prototype.  The
    old version will be removed in a future release.  In the meantime,
    "Obsolete" will be displayed in its RM page.

    Also, changed several checks on the returned value of a C API from
    non-positive to negative because id = 0 is no longer significant,
    now that the C++ reference counting had been removed.

Platforms tested:
    Linux 2.4 (heping)
    IRIX64 with -n32 (modi4)
    Linux 2.4 w/PGI (colonelk)
2005-07-24 22:37:21 -05:00
Binh-Minh Ribler b14a4fd95f [svn-r11060] Purpose: Fix bug (reported by user)
Description:
    The use of FileCreatPropList::DEFAULT sometimes caused failure
    in the reference counting area.  This occurs to all the default
    property lists, which also include FileAccPropList::DEFAULT,
    DSetCreatPropList::DEFAULT, and DSetMemXferPropList::DEFAULT.
    H5P_DEFAULT was used to create these default prop lists and
    because its value is 0, the id of these prop lists are 0, which
    is rejected by the H5I functions during the reference counting.

Solution:
    The main action to fix the above problem was to use
        H5P_FILE_CREATE
        H5P_FILE_ACCESS
        H5P_DATASET_CREATE
        H5P_DATASET_XFER
    to define the default property lists accordingly.  Yet, when this
    fix was applied, some bug in reference counting was revealed.
    It appeared that some ids were not incremented but were passed in
    for decrementing.  The following actions were then taken to fix and
    improve the current use of reference counting H5I functions.

        * added private func IdComponent::p_valid_id to verify that the
          id is a valid id and can be passed into an H5I function
        * used p_valid_id to validate an id before calling an H5I functions
          in the reference-counting member functions incRefCount,
          decRefCount, and getCounter
        * changed to use member function incRefCount, decRefCount, and
          getCounter instead of the C APIs H5Iinc_ref, H5Idec_ref, and
          H5Iget_ref throughout IdComponent.

    In addition, overloadings were added for incRefCount, decRefCount,
    and getCounter to take an id different than the id of the current
    instance; they can be convenient during debugging.

Platforms tested:
    Linux 2.4 (heping)
    SunOS 5.8 64-bit (sol)
    AIX 5.1 (copper)
2005-07-10 06:26:56 -05:00
Binh-Minh Ribler 3c48d3637b [svn-r10825] Purpose: Fix RM bug
Description:
    Doxygen 1.4.2 has a bug that when an \exception immediately
    follows a \brief, the exception will be displayed prominently
    in the brief section.

Solution:
    Temporarily added /// to after \brief to work around this
    problem and notified the Doxygen's author.

Platforms tested:
    Linux 2.4 (heping) - only in documentation sections
2005-05-29 17:26:56 -05:00
Binh-Minh Ribler 49fa4563ef [svn-r10212] Purpose: Added more wrappers
Description:
    Added the following to the C++ library
        + overloaded functions:
                string CommonFG::getObjnameByIdx(hsize_t idx)
                H5T_order_t AtomType::getOrder()
        + wrappers for H5*close
        + wrappers for H5Arename, H5Aget_storage_size, and H5Dget_storage_size

Platforms tested:
    Linux 2.4 (heping)
    AIX 5.1 (copper)
    SunOS 5.8 64-bit (sol)
2005-03-14 14:32:26 -05:00
Binh-Minh Ribler 6f2de2c62c [svn-r10050] Purpose: Fix bugzilla #241
Description:
    Checked return value from C API for failure condition.
    Added/Modified some comments appropriately.

Platforms tested:
    Linux 2.4 (heping)
    AIX 5.1 (copper) - tests passed but there were some old warnings about
			duplicate symbols on std::string; I'll check on that.
2005-02-20 15:45:44 -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
Binh-Minh Ribler 824ba5e2fd [svn-r9129] Purpose: Updating documentation
Description:
    Updated various function headers for the RM as reviewing progresses.
    Rearranged functions in header files for more sensible look of the RM.

Platforms tested:
    SunOS 5.7 (arabica)
    Linux 2.4 (eirene)
2004-08-19 23:35:18 -05:00
Binh-Minh Ribler c3bfac0639 [svn-r8837] Purpose: Update doc and fix minor bug
Description:
    H5IdComponent.cpp: initialized a pointer to NULL
    H5Object.cpp: removed functions being added by mistake
    Update function headers for the rest.

Platforms tested:
    SunOS 5.7 (arabica)
    Linux 2.4 (eirene)
2004-07-08 14:48:45 -05:00
Quincey Koziol 2ca10d0ace [svn-r8602] Purpose:
Code update

Description:
    Update C++ wrappers to use new ID reference counting mechanisms.

Platforms tested:
    FreeBSD 4.9 (sleipnir) w/C++
    Too focused to require h5committest
2004-06-01 09:47:19 -05:00
Binh-Minh Ribler dee9ad2b7e [svn-r8595] Purpose:
Add/Improve documentation

Description
    Added doxygen documentation to H5PredType.cpp and made minor changes
    to the others for either correction or clarification.

Platforms:
    SunOS 5.7 (arabica)
    Linux 2.4 (eirene)

Misc. update:
2004-05-28 01:25:56 -05:00
Binh-Minh Ribler 80816a3dde [svn-r8576] Purpose:
Add more C++ wrapper and documentation - incrementally check-in

Description:
    Added doxygen documentation to:
        H5DataSet.cpp
        H5DataSpace.cpp
        H5CommonFG.cpp

    and a wrapper for H5Rcreate to H5Object.* with tests will be added
    later.

    There are more documentation need to be added to these files but
    to preserve the changes, I check them in now.

Platforms:
    SunOS 5.7 (arabica)
    Linux 2.4 (eirene)


Misc. update:
2004-05-26 02:02:51 -05:00
Binh-Minh Ribler 5d1b56cb81 [svn-r6990] Purpose:
Bug fix and minor code enhancement

Description:
    Missing methods to read/write C++ String for an attribute and
    a dataset.

Solution:
    Added overloaded functions read and write to H5::Attribute and
    H5::DataSet.

    Also, added another constructor StrType so the need to separately
    set the length of the string type can be eliminated.  It's minor
    but convenient.

    Made some minor changes to make error messages more readable.

Platforms:
    SunOS 5.7 (arabica)
    Linux 2.4 (eirene)
    IRIX 6.5.11 (modi4)
    HPUX 11.00 (kelgia)
2003-06-06 23:02:11 -05:00
Quincey Koziol bb042d83c7 [svn-r6950] Purpose:
API tweak.

Description:
    The H5Sget_select_bounds() API call was using hsize_t arrays for retrieving
the 'start' and 'end' coordinates, which is counter to the rest of the dataspace
API.

Solution:
    Change the arrays to be hssize_t instead.

Platforms tested:
    FreeBSD 4.8 (sleipnir) w/C++
    FreeBSD 4.8 (sleipnir) w/parallel
    h5committested

Misc. update:
    Updated all docs for this change.

    Added 1.4 compatibility #ifdef's
2003-06-04 10:22:23 -05:00
Binh-Minh Ribler 5cc6567850 [svn-r6509] Purpose:
Adding new platform support

Description:
    Added support for the C++ API on hpux11.00 with the compiler aCC.
    Because aCC doesn't use "std," a new macro H5_NO_STD is provided
    and used where "std" is presented in the library.

    In addition, changed several cout's when reporting errors to cerr's.


Platforms tested:
    HPUX 11.00 (kelgia)
    Linux 2.2x (eirene)
    IRIX 6.5.11 (modi4)
    SunOS 5.7 (arabica) - by Elena


Misc. update:
2003-03-19 21:10:46 -05:00
Binh-Minh Ribler 7fd449cb79 [svn-r6236] Purpose: Copyright
Description:
    Added copyright notice to C++ API files, including *.h, *.cpp, and
    Makefile.in

Platforms:
    Linux 6.2 (eirene)
2003-01-06 23:22:12 -05:00
Binh-Minh Ribler 0bb7111f43 [svn-r5030]
Purpose:
    Small bug fixing
Description:
    Replaced NULL by 0 for initializing or passing null "string".
    The problem showed up on platinum.
Platforms tested:
    SunOS 5.7 (arabica)
    Linux 6.2 (eirene)
    IA-32 Linux Cluster (platinum)
2002-03-01 16:10:29 -05:00
Binh-Minh Ribler ba6cba5d30 [svn-r3707] Purpose: Bug fixes and code clean up
Description and Solution:

	- Predefined type objects become outdated when the application calls
	H5close and then H5open to use the library again.

	Solution:
	    + Reimplemented PredType using enum type to obtain up-to-date
		values for predefined types, i.e. H5T_xxx_yyy's, when they
		are used.
	    + Added to PredType its own version of getId() to return the
		appropriate predefined type id according to the enum value.
	    + Made IdComponent::getId() a virtual function

	- Since Albert already fixed the "multiply defined RcsId" problem,
	removed the now become unnessary "#undef RCSID" from H5Include.h

	- Added a check for func_name != NULL in one of the Exception
	constructors because seg. fault. might occur in some situations.

	- It is more convenient to make a copy of a datatype, dataspace,
	or property list by using assignment operator

	Solution:
	    + Added assignment operator to DataType, DataSpace, and
		PropList so that they will invoke H5Tcopy, H5Scopy,
		and H5Pcopy, respectively, instead of just simply
		copying the data members as for other classes.  So,
		now a type, space, or property list can be copied by
		either :
			mytype = original_type, or
			mytype.copy(original_type)
		Note that copy constructors are still just copying the
		data members.
	    + Added an assignment operator to DataType that takes a
		predefined type.
	    + Made IdComponent::operator= a virtual function

Platforms tested:
	arabica (sparc-sun-solaris 2.7)
2001-03-24 23:37:22 -05:00
Binh-Minh Ribler 9cd9f7f521 [svn-r3602]
Purpose: Usability enhancement

Description:
	- Added more information about the failure to all the throw's,
	i.e, member function name and more detail about the failure, where
	appropriate.  Also, added exception throws for private functions,
	such as p_close to provide more specific details.

	- Added two api functions: Exception::getFuncName() and
	Exception::getCFuncName() to provide the name of the member
	function where failure occurs.

	- Fixed some typos, one of which caused segn. fault in some
	situations (resetIdComponent was accidentally called twice
	in a couple of places :)

Platforms:
	arabica (sparc-sun-solaris 2.7)
2001-03-09 22:59:46 -05:00
Binh-Minh Ribler d24bacb8a4 [svn-r3199]
Purpose: bug fix

Description:
	I found a couple of places where virtual destructors were missing
	and could cause small memory leaks.  Also, some destructors were
	not virtual when they should be.

Solution:
	- added virtual destructors, which also free dynamically allocated
	  memory
	- added virtual to several destructors
	- also, fixed several typos

Platforms tested:
	Solaris 2.7 (arabica)
2000-12-23 08:17:32 -05:00
Binh-Minh Ribler f148ff3caf [svn-r3080]
Purpose:
	Support portability
Description:
	I forgot that source file extension .C will not work on Windows.
Solution:
	Changed all source file from *.C to *.cpp for portability.
Platforms tested:
	arabica (sparc-sun-solaris 2.7)
2000-12-06 19:04:08 -05:00