ess-dmsc / h5cpp Goto Github PK
View Code? Open in Web Editor NEWC++ wrapper for the HDF5 C-library
Home Page: https://ess-dmsc.github.io/h5cpp/
License: GNU Lesser General Public License v2.1
C++ wrapper for the HDF5 C-library
Home Page: https://ess-dmsc.github.io/h5cpp/
License: GNU Lesser General Public License v2.1
See interface declaration in
src/include/h5cpp/attribute/attribute_iterator.hpp
I thought to file this as an enhancement, but it looks like the way it's set up now, it actually prevents it from compiling on OSX. So everything to do with coverage should be a CMake option.
Use global context to do the following:
The prototypes of theses functions are defined in
src/include/h5cpp/node/functions.hpp
This includes the following tasks
No implementation for the array data type.
Currently all datasets have a static size. In order to implement partial IO we first need to implement
the functionality to extend a dataset in size.
With signature:
Dimensions Dataset::extent() const;
I have already begun this in the gtest branch.
./test/CMakeLists.txt has a short section of the find-replace steps that are needed to easily convert from boost unit test. Fixtures may require additional work.
Most tests and add_subdirectory statements are commented out pending conversion to gtest.
String need some special treatment in HDF5. Deal with this in this special issue.
This is referring to the gtest branch.
Taking example from Morten's EFU setup and my adaptation of it for daquiri, I have factored out code relevant to providing gcc test coverage and placed it all in here:
./cmake/TestCoverage.cmake
The functions are called in ./test/CMakeLists.txt
Everything is generated when I run it on my system, but on the Jenkins node it fails to produce browsable coverage reports. Last we looked with Afonso, it seemed that the coverage xml file was empty for whatever reason. The code is virtually identical to what I have for daquiri and they both run on the Fedora node, so I am quite puzzled as to why this is not coming out right.
Entire implementation is missing ;)
Quite a few along the lines of:
/home/bdv/dev/h5cpp/src/property/dataset_creation_list.cpp: In function βstd::ostream& hdf5::property::operator<<(std::ostream&, const hdf5::property::DatasetFillValueStatus&)β: /home/bdv/dev/h5cpp/src/property/dataset_creation_list.cpp:44:1: warning: control reaches end of non-void function [-Wreturn-type] } ^
This is after after switch statements for stream output of enums. Should theoretically never happen, but who knows. What's the right way to deal with this? Return stream unaltered or insert some sort of FU? :)
Right now, if you want to get the Node's parent, you can do this:
source.link().parent(), which give you a Group object, which is not bad
If you want it's path relative to the parent, you have to do this:
Path(object.link().path().back()) which is a bit crazy
Maybe there should be some more convenient functions for this? Or maybe we only need these internally and the user will never need them?
What comes to mind as a good example is something like boost::filesystem::path::stem() which gives you just the filename without the rest of the path. But maybe there is some deeper question here, or need of some general functions to resolve relative paths?
We need to implement the String data type.
Figure out a way to automatically publish generated docs
Function prototypes are declared in
src/include/h5cpp/node/functions.hpp
Taks
I definitely have to remove my eclipse files from the repository. They mess up the pull requestes and are only of importance to me. Thus I definitely should find a better way to distribute my Eclipse configurations.
We other copy constructors and assignment on the following types
These classes have a slightly different copy semantics than node objects.
This class is rather important and test coverage is not really good. Should be definitely improved before the next milestone.
Should be done using Object_id
Could act as a test case for datasets. Take care about trait construction of datatypes and dataspaces.
Base iterator class is missing tests for most functions, also has warnings.
See interface declaration in
src/include/h5cpp/attribute/attribute_manager.hpp
More tests needed for the Link class
This is for now externally blocked until we have a Jenkins job to automatically update gh-pages.
The header files in src/include/h5cpp/
include other headers either by relative path or by assuming that include/h5cpp/
is an include directory. This should probably changed such that paths are always absolute and that the root include path is include
and not include/h5cpp
. This is the method used by Boost and many other libraries as it prevents unintentionally including the wrong header file.
Please comment, I can make the relevant changes.
Need an implementation for compound datatypes
This includes implementation of the following classes
hdf5::attribute::Attribute
hdf5::attribute::AttributeManager
hdf5::attribute::AttributeIterator
See function prototypes in
src/include/h5cpp/node/functions.hpp
Tasks
There is an issue with GTest on Debian. Debian ships google tests for 8 as well as for 9 as a source distribution. It would be possible to use a conan package for the build but this would complicate things for
Debian package maintainers as conan
is not available in the current Debian distributions.
The source distribution shipped with Debian could be built from within cmake
using the ExternalProject
module.
The actual function prototypes are defined in
src/include/h5cpp/node/functions.hpp
Tasks
See interface in
src/include/h5cpp/attribute/attribute.hpp
Modifications to the interface are welcome and should be done if necessary.
Came across this while developing tests for node copy functions. I will attempt to develop a test suite for NodeView. Hopefully I can track down the problem myself. Else, you may have some insight.
Syntax such as copy(gt, g2, Path("gt")) feels superfluous.
Perhaps Path could be constructed from std::string implicitly?
We may keep it this way for now while we are testing and developing, but relax this later. Any arguments for or against?
This member method currently returns a value. As the path of an object cannot change once it is
created we could safely return a const reference here (to the internal path_).
Move the design and developer documentation to the common doc
directory in the source tree.
Create/Open implement SWMR functionality
Requisition and set up Windows build node
As Jonas pointed out there are some good reasons to have constructors. We should investigate this for future implementation.
As we have now a working ID implementation we could use this to implement the operators
bool operator==(const hdf5::node::Node &lhs,const hdf5::node::Node &rhs);
bool operator!=(const hdf5::node::Node &lhs,const hdf5::node::Node &rhs);
The implementation should be straight forward using the id()
member method.
Need more extensive tests for global node functions, such as node::copy to ensure all features of C API work correctly, i.e. copying must work across files.
Does it make sense that we test all permutations of property list settings, or is that redundant and we simply trust the underlying H5 functionality?
Missing wrapper for this:
https://support.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#ObjectCopyPropFuncs
And once it is defined, it should be added to the parameters of node::copy
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.