Commit Graph

31 Commits

Author SHA1 Message Date
Sean McBride
68eba3da69
Many clang -Wextra-semi-stmt fixes (#2537)
* Adds semicolons to function-like macros
* Adds a do..while(0) loop to some macros
* Removes semicolons when inappropriate, especially H5E_TRY_BEGIN/END
2023-06-15 21:49:02 -07:00
Allen Byrne
ae414872f5
Develop clang 13 format (#1933)
* Update format source to clang 13

* More format changes
2022-07-26 14:45:46 -07:00
Dana Robinson
50d0888f49
C++ warning and build fixes (#707)
* Committing clang-format changes

* C++ build and warning updates

* Fixes all warnings on C++ (with gcc 9.3)
* Updates CMake and Autotools C++ builds

* Undo warning clobber

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2021-06-01 08:49:39 -05:00
Sean McBride
d7b40604ef
Fixed all clang-tidy bugprone-suspicious-string-compare warnings (#451)
* Fixed all clang-tidy bugprone-suspicious-string-compare warnings

This change was generated entirely by clang-tidy itself.

* Reformat code with clang v10.0.1.

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
2021-03-10 12:42:35 -06:00
Sean McBride
20c452fe5c
Removed checks/workarounds for pre-C++89 compatibility (#449)
After 30+ years, just assume that the following exist:
- extension-less includes
- namespaces
- std::
- static_cast
- bool
2021-03-10 11:51:45 -06:00
Larry Knox
2ea165efd0
Update license url part2 (#333)
* Modify temporary rpath for testing in java example scripts.

* Update URL in source file Copyright headers for web copy of COPYING
    file - files not in src or test.
2021-02-17 08:52:36 -06:00
Allen Byrne
b2d661b508 Clang-format of source files 2020-09-30 09:27:10 -05:00
Dana Robinson
a92c735c9b Squashed commit of the token_refactoring branch: 2020-01-16 13:29:34 -08:00
Binh-Minh Ribler
6c212353c4 Code improvement
Description:
    Removed dead code and accidentally leftover code
Platforms tested:
    Linux/64 (jelly) - very minor
2019-02-16 00:47:47 -06:00
Binh-Minh Ribler
4a4ec03dfd Adding a C++ wrapper
Description:
    - Added a wrapper for H5Ovisit2 to class H5Object
        // Recursively visit elements reachable from this object.
        void visit(H5_index_t idx_type, H5_iter_order_t order,
                   visit_operator_t user_op, void *op_data, unsigned int fields);
    - Fixed various typos in documentation
Platforms tested:
    Linux/64 (jelly)
    Linux/64 (platypus)
    Darwin (osx1011test)
2019-02-14 15:35:04 -06:00
Quincey Koziol
d442fe2d98 Add support for "make check-vol", along with a few minor cleanups, etc. 2018-11-28 19:07:30 -06:00
Binh-Minh Ribler
14bf28780a Fixed HDFFV-10458 partially
Description:
    Added wrappers for H5Oget_info2 and H5Oget_info_by_name2.

    // Returns information about an HDF5 object.
    void getInfo(H5O_info_t& objinfo, unsigned fields = H5O_INFO_BASIC)

    // Returns information about an HDF5 object, given its name.
    void getInfo(const char* name, H5O_info_t& objinfo,
                 unsigned fields = H5O_INFO_BASIC,
                 const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
    void getInfo(const H5std_string& name, H5O_info_t& objinfo,
                 unsigned fields = H5O_INFO_BASIC,
                 const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
Platforms tested:
    Linux/64 (jelly)
    Linux/32 (jam)
    Darwin (osx1010test)
2018-07-17 01:09:45 -05:00
Binh-Minh Ribler
b638bbd74b Code improvement
Description:
    - Removed memory leaks caused by accidentally invoking p_get_member_type
    - Added the call to test_lcpl, missed previously
Platforms tested:
    Linux/64 (jelly)
    Linux/ppc64 (ostrich)
    Darwin (osx1010test)
2018-03-12 00:53:16 -05:00
Binh-Minh Ribler
3494282d42 HDFFV-10149 continued
Description:
    - Moved the new wrappers committed on Mar 9:
        43158f3bb3
      to H5Location and renamed some of them for overloading.
      This is because the loc_id in the C APIs can be file, group, dataset,
      named datatype, and attribute.  Previous implementation was wrong
      following some inaccurate C API reference manual.

    - Only the following wrappers are modified or added:
      + H5Lcreate_soft: changed name from newLink to link
        // Creates a soft link from link_name to target_name.
        void link(const char *target_name, const char *link_name,...)
        void link(const H5std_string& target_name,...)

      + H5Lcreate_hard: changed name from newLink to link
        // Creates a hard link from new_name to curr_name.
        void link(const char *curr_name, const Group& new_loc,...)
        void link(const H5std_string& curr_name, const Group& new_loc,...)

        // Creates a hard link from new_name to curr_name in same location.
        void link(const char *curr_name, const hid_t same_loc,...)
        void link(const H5std_string& curr_name, const hid_t same_loc,...)

      + H5Ldelete: modified existing functions to add 2nd argument
        // Removes the specified link from this location.
        void unlink(const char *link_name,
            const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)
        void unlink(const H5std_string& link_name,
            const LinkAccPropList& lapl = LinkAccPropList::DEFAULT)

    - copyLink and moveLink were only moved from Group to H5Location, no change

    - Added class LinkCreatPropList

    - Added overloaded functions H5Location::createGroup to take a link creation
      property list
        Group createGroup(const char* name, const LinkCreatPropList& lcpl)
        Group createGroup(const H5std_string& name, const LinkCreatPropList& lcpl)
    - Added wrapper for H5Lget_info() to H5Location
        H5L_info_t getLinkInfo(const H5std_string& link_name,...)

Platforms tested:
    Linux/64 (jelly)
    Linux/ppc64 (ostrich)
    Darwin (osx1010test)
2018-03-11 23:36:48 -05:00
Binh-Minh Ribler
539f4691fa Added C++ wrappers - HDFFV-10149
Description:
    Added the following wrappers to class H5::Group:
    + H5Lcreate_soft:
        // Creates a soft link from link_name to target_name.
        void newLink(const char *target_name, const char *link_name,...)
        void newLink(const H5std_string& target_name,...)

    + H5Lcreate_hard:
        // Creates a hard link from new_name to curr_name.
        void newLink(const char *curr_name, const Group& new_loc,...)
        void newLink(const H5std_string& curr_name, const Group& new_loc,...)

        // Creates a hard link from new_name to curr_name in same location.
        void newLink(const char *curr_name, const hid_t same_loc,...)
        void newLink(const H5std_string& curr_name, const hid_t same_loc,...)

    + H5Lcopy:
        // Copy an object from a group of file to another.
        void copyLink(const char *src_name, const Group& dst,...)
        void copyLink(const H5std_string& src_name, const Group& dst,...)

        // Copy an object from a group of file to the same location.
        void copyLink(const char *src_name, const char *dst_name,...)
        void copyLink(const H5std_string& src_name,...)

    + H5Lmove:
        // Rename an object in a group or file to a new location.
        void moveLink(const char* src_name, const Group& dst,...)
        void moveLink(const H5std_string& src_name, const Group& dst,...)

        // Rename an object in a group or file to the same location.
        void moveLink(const char* src_name, const char* dst_name,...)
        void moveLink(const H5std_string& src_name,...)
Platforms tested:
    Linux/64 (jelly)
    Linux/ppc64 (ostrich)
    Darwin (osx1010test)
2018-03-09 21:29:28 -06:00
Binh-Minh Ribler
e33d677636 Various code cleanup
Description:
    - Replaced H5Location::exists with H5Location::nameExists and marked
      H5Location::exists as deprecated.
    - Miscellaneous test cleanup for consistency.
Platforms tested:
    Linux/32 2.6 (jam)
    Linux/64 (jelly)
    Darwin (osx1010test)
2017-12-04 12:21:12 -06:00
Larry Knox
89fbe00dec Merge pull request #426 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10 to hdf5_1_10
* commit '54957d37f5aa73912763dbb6e308555e863c43f4':
  Commit copyright header change for src/H5PLpkg.c which was added after running script to make changes.
  Add new files in release_docs to MANIFEST. Cimmit changes to Makefile.in(s) and H5PL.c that resulted from running autogen.sh.
  Merge pull request #407 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10_1 to hdf5_1_10_1
  Change copyright headers to replace url referring to file to be removed and replace it with new url for COPYING file.
2017-04-25 16:05:36 -05:00
Binh-Minh Ribler
a48c9c4024 Purpose: Add new C++ wrappers
Description:
    Added wrappers for H5Iis_valid, H5Ps/get_nlinks, H5Tget_create_plist,
    H5Oopen, H5Oclose and H5Pset_virtual

        // Checks if the given ID is valid.
        static bool isValid(hid_t an_id);

        // Sets the number of soft or user-defined links that can be
        // traversed before a failure occurs.
        void setNumLinks(size_t nlinks) const;

        // Gets the number of soft or user-defined link traversals allowed
        size_t getNumLinks() const;

        // Returns a copy of the creation property list of a datatype.
        PropList getCreatePlist() const;

        // Opens an object within a group or a file, i.e., root group.
        hid_t getObjId(const char* name,...);
        hid_t getObjId(const H5std_string& name,...);

        // Closes an object opened by getObjId().
        void closeObjId(hid_t obj_id) const;

        // Maps elements of a virtual dataset to elements of the source dataset.
        void setVirtual(const DataSpace& vspace, const char *src_fname,...);
        void setVirtual(const DataSpace& vspace, const H5std_string src_fname,...);

Platforms tested:
    Linux/32 2.6 (jam)
    Linux/64 (platypus)
    Darwin (osx1010test)
2017-03-13 22:53:43 -05:00
Binh-Minh Ribler
861a849530 Description:
Only format changes: mostly tabs vs. spaces
Platforms tested:
    Linux/64 (jelly) - very minor
2017-03-03 08:45:57 -06:00
Binh-Minh Ribler
cd3bd5576f Purpose: Add new wrappers
Description:
    Added wrappers H5Location::exists() for H5Lexists.
    Added wrapper H5Object::objVersion() to return the header version
        of an HDF5 object.
    Added new class LinkAccPropList to be used by H5Location::exists()
    Added new exception: ObjHeaderIException for H5Object::objVersion()
    Rearranged source files in Makefile.am
Platforms tested:
    Linux/32 2.6 (jam)
    Linux/64 (platypus)
    Darwin (osx1010test)
2016-12-28 08:44:01 -06:00
Binh-Minh Ribler
a903cbafa8 Description:
Removed obsolet macros from C++ API:
	H5_NO_NAMESPACE, H5_NO_STD, __cplusplus
    Leave OLD_HEADER_FILENAME because iostream.h might still be in use,
    until further checking is done.
Platforms tested:
    Linux/32 2.6 (jam)
    Linux/64 (platypus)
    Darwin (osx1010test)
    Jelly
2016-10-19 15:50:17 -05:00
Binh-Minh Ribler
c37607eb58 [svn-r29759] Purpose: Code improvements
Description:
    - Changed object in catch statements to reference
    - Replaced old-style casts or reinterpret_cast with static_cast
    - Removed unused name H5Library::need_cleanup
    - Removed Exception::printError from documentation
Platforms tested:
    Linux/32 2.6 (jam)
    Linux/64 (platypus)
    Darwin (osx1010test)
2016-04-22 06:22:34 -05:00
Jerome Soumagne
2094d86461 [svn-r28138] Add first support for _Bool and make hbool_t a "real" _Bool if available
Fix tests accordingly and fix misuse of hbool_t in various places

Fix initialization of H5Pgcpl/ocpl structs in property decoding routines

Tested on:
    Linux/32 (jam)
    Linux/64 (platypus)
    Linux/PPC64 (ostrich)
    MacOSX/64 10.11
2015-10-20 01:28:17 -05:00
Quincey Koziol
1023374492 [svn-r27768] Description:
Complete revamp of package initialization/shutdown mechanism in the library.
Each package now has a single init/term routine.

    This new way should avoid packages being re-initialized during library
shutdown and is also be _much_ more proactive about giving feedback for
resource leaks internal to the library.

    Introduces a new "module" header file for packages in the library
(e.g src/H5Fmodule.h) which sets up some necessary package configuration macros
for the FUNC_ENTER/LEAVE macros.  (The VFL drivers have their own slightly
modified version of this header, src/H5FDdrvr_module.h)

    Also cleaned up a bunch of resources leaks all across the library and tests,
along with addressing many warnings, as I encountered them.

Tested on:
    MacOSX/64 10.10.5 (amazon) w/serial & parallel
    Linux/64 3.10.x (kituo) w/serial & parallel
    Linux/64 2.6.x (ostrich) w/serial
2015-09-13 22:58:59 -05:00
Dana Robinson
2e6100fb23 [svn-r27572] Removed VMS-specific code from the library.
The only remaining code consists of a few floating-point tests
that rely on pre-generated and checked-in VMS files. These have
been left alone, even though they will not be possible to
recreate, since testing VMS float behavior is still important.

Tested on: h5committest
2015-08-24 15:19:39 -05:00
Binh-Minh Ribler
0befe65753 [svn-r25632] Purpose: Fixed HDFFV-8852
Description:
    H5F_ACC_CREAT was included in the C++ API while the C library doesn't
    allow it yet.  Possibly, in the future, but not now.  In addition, the
    two flags H5F_ACC_RDONLY and H5F_ACC_RDWR were missing from the
    documentation, causing confusion that appending is not supported.
Solution:
    - Removed H5F_ACC_CREAT from the function until the C library support it
    - Added H5F_ACC_RDONLY and H5F_ACC_RDWR to the comments to update the
      documentation
Platforms tested:
    Linux/ppc64 (ostrich)
    Linux/32 2.6 (jam)
    SunOS 5.11 (emu)
2014-09-29 15:52:08 -05:00
Binh-Minh Ribler
c8018386da [svn-r23427] Purpose: Fix bug HDFFV-8067
Description:
  + The C++ test failed with the new PGI compilers versions 12.4 and 12.5
  + An exception thrown by an internal function, which was called by
    a constructor, was not propagating to the test program during the stack
    unwinding, so it couldn't be caught by the test and the program terminated.
  + Various trials and errors indicated that the problem is where an STD string
    converted to a char* being passed to the internal function, but confirmation
    has not been found yet.  It could be a compiler bug.
Solution:
  + Added a try/catch in the constructor around the internal function and
    re-throw the exception when it is caught.  This is a workaround.
  + Unrelated minor fixes: removed unused variables and MESSAGE's; commented
    out tvlstr.cpp/test_read_vl_string_attribute because it may be redundant,
    and commented out H5Tpkg.h inclusion because TEST_ALIGNMENT is not added
    yet and probably not necessary in the C++ API.
Platforms tested:
    Linux/32 2.6 (jam) with PGI compilers
    Linux/32 2.6 (jam) with GNU compilers
    Linux/64 2.6 (koala)
2013-03-22 12:56:05 -05:00
Quincey Koziol
ff845ed8b1 [svn-r20052] Description:
Clean up Coverity warnings, and fix some style issues:

r19735:
Fix for memory leak in test/mf found by valgrind.

r19736:
Fix memory leak in h5repack.  The buffer in copy_objects, when copying the
entire dataset at once, was not checked for the presence of a vlen, and vlen
storage was never reclaimed.  Added check and call to H5D_vlen_reclaim().

r19772:
Change H5assert() to
   if (H5T_VLEN != src->shared->type || H5T_VLEN != dst->shared->type)
          HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a H5T_VLEN datatype")

r19774:
removed unused priv.

r19775:
removed unused variables

r19778:
Fix memory leak comparing for variable length data types.

r19834:
Fixed memory leaks found by valgrind.  Memory errors remain for another day.

Tested on:
    Mac OS X/32 10.6.6 (amazon) w/debug & production
    (h5committested on branch)
2011-02-05 22:24:42 -05:00
Binh-Minh Ribler
c90711e713 [svn-r18335] Description:
Removed header file testhdf5.h from C++ tests to eliminate a non-standard
    problem on OpenVMS.  It wasn't essential.

Platforms tested:
    Linux/32 2.6 (jam)
    FreeBSD/64 6.3 (liberty)
    Ray agreed to test on OpenVMS.
2010-02-26 11:55:49 -05:00
Quincey Koziol
fd70b2afa8 [svn-r18197] Description:
Trim trailing whitespace from source code files with this command:

find . \( -name "*.[ch]" -or -name "*.cpp" -or -name "*.f90" \) -print |xargs -n 1 sed -i "" 's/[[:blank:]]*$//'

Tested on:
    None - eyeballed only
2010-01-29 23:29:13 -05:00
Binh-Minh Ribler
fa406155ab [svn-r17690] Purpose: Code improvement
Description:
    Fixed CommonFG::getComment and CommonFG::getLinkval to provide
    default values for buffer size to improve usability.

    Added test file tlinks.cpp, which only contains test for getLinkval
    and will expand when C++ wrappers for H5L functions are implemented.

Platforms tested:
    Linux/32 2.6 (jam)
    FreeBSD/64 6.3 (liberty)
    SunOS 5.10 (linew)
2009-10-20 13:14:34 -05:00