summaryrefslogtreecommitdiffstats
path: root/doc/arch/README.md
blob: 125e5a2004d26ab5ab5351e3e8041c608b856f56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# An Overview of the HDF5 Library Architecture

## [Purpose, Objectives, and Values](./purpose_objectives_values.md)

## Data and Metadata

### Mapping User Data to HDF5 Files

#### The HDF5 File Format

### Mapping User Data to Storage

### Data Retained in the Library

## Functional Decomposition

### Components

#### Selection
#### Datatype Conversion
#### Filter Pipeline
#### Caching & Buffering
#### File-space Management
#### Opening a File
#### Creating an Object
#### Dataset I/O

### Use Cases

#### Parallel HDF5
#### SWMR
#### VDS
#### Paged Allocation
#### …

### Feature (In-)Compatibility Matrix

## Modular Library Organization

### Library Internals

#### Boilerplate and Misc.
#### Memory Allocation and Free Lists
#### API Contexts
#### Metadata Cache
#### Files and the Open File List
#### Platform Independence

### Modules

#### IDs
#### Property Lists
#### Error Handling
#### File Objects
#### Datasets
#### Groups and Links
#### Datatypes
#### Dataspaces
#### Attributes

### Extension Interfaces

#### Filters
#### Virtual File Layer and Virtual File Drivers
#### Virtual Object Layer

### Language Bindings

#### General Considerations
#### Fortran
#### Java

## Performance Considerations

## Library Development and Maintenance

### Build Process

### Testing

#### Macro Schemes
#### `testhdf5`
#### Other Test Programs
#### (Power)Shell Scripts
#### CMake vs Autotools
#### VOL and VFD Inclusion/Exclusion

### Versioning and Releases

## References