magicdgs / hdf5j Goto Github PK
View Code? Open in Web Editor NEW**Under development** HDF5 java Implementation
License: BSD 3-Clause "New" or "Revised" License
**Under development** HDF5 java Implementation
License: BSD 3-Clause "New" or "Revised" License
The FileAddress
and FileAddressManager
interfaces should be refactored after #24, to be in the utils package. Maybe they can live in the package for the implementation of the file format, but that requires to start the implementation after the layaout is included.
Because each block has it's own version, we require a block interface to be able to add some common checking of versioning independently of the block. This block requires:
After #18, we should create an annotation to indicate in block interfaces/implementations which methods are allowed for each version. Some ideas:
More ideas will come, but this is once the project is a bit more mature...
Maybe it is a good idea to implement a multi-module structure for the HDF5j project: one with the API/layout (to allow custom implementations) and another one with the pure java implementation.
The idea behind this is to being able to have a plugin to use the native code with our own layout, but that is a future plan for compare performance and implementation differences.
This will allow to keep a clean documentation for the whole library.
Because java is always signed, the interfaces force to return int
for unsigned bytes/shorts and long
for unsigned integers. In addition, the signatures are also encoded as unsigned byte arrays. Thus, the API user should be cautious on how we treat this values for: encoding/decoding, operating with returned values, enforce the values to fit into the range, etc. For instance, we can change the signature for the returned values to be the correct one (byte
or short
), and then the user should be aware that they should operate as unsigned values (e.g., using Guava).
One idea is to implement some annotations to mark how HDF5 specifies this fields. Something like @HDF5UnsignedByte
will be enough. Maybe this will be also useful to perform encoding/decoding by getting the annotations for each field, but that's a different topic.
We should implement reading/writing of superblock version 0, 1, 2 and 3.
To make the interface independent of our FileAddress
object, we should return a number value instead of the object itself to allow other implementations to get rid of our abstraction. There are two possibilities:
long
. This will allow to seek directly a file by using the returned value, and it will enforce a maximum value for the implementations. We are not planning to support pointers larger than a long yet (I have to think how that can be done).Number
. Like that, some implementations can use BigInteger
or their own number implementation: e.g., our FileAddress
can extend Number
to be used directly. In this case, we should point in our javadoc that the number will be converted to long
for being seek, so arithmetic exceptions should be considered.I prefer the first point, because like that all the enforcing is implementation-dependent. Something similar will be done with the object sizes.
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.