# H5 Objects

種々のH5オブジェクトのプロパティを説明

## 内容

- H5ファイル

- H5グループ

- H5データセット

- H5データスペース

- H5属性

- H5型

- H5リファレンス

## 説明

H5オブジェクトはアクセス可能なプロパティを有します.

全てのプロパティ名は,大文字小文字を区別します(パス名およびオブジェクト名を

除きます).

## H5ファイル

以下のプロパティにアクセス可能です:

- name: ファイル名;

- size: ファイルの大きさ;

- version: HDF5ライブラリのバージョン;

- root: ルートグループ "/".

フィールド名が'/'で始まる場合,

パスとみなされ, 戻り値はこのパスに対応するH5オブジェクトとなります.

    x = [1 2;3 4];
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");

    // aはファイル
    h5isFile(a)

    // プロパティにアクセス
    a.name, a.size, a.version, a.root

    // データセットxをオープン
    a("/x")

    // 全リソースを解放
    h5close(a);

## H5グループ

以下のプロパティがアクセス可能:

- attributes: 属性名;

- groups: サブグループ名;

- datasets: データセット名;

- types: 型名;

- externals: 外部リンク名;

- softs: ソフトリンク名;

- danglings: ダングリングリンク名;

- hards: ハードリンク名;

- links: リンク名と型;

- name: グループ名;

- path: グループのパス.

フィールド名が過去のリストにない場合, 他のH5オブジェクトへのローカルパスとみなされます.

    x = [1 2;3 4];
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");
    root = a.root;

    // rootはグループ
    h5isGroup(root)

    // プロパティにアクセス
    root.name, root.path, root.datasets, root.attributes

    // データセットxをオープン
    dset_x = root.x

    // 全リソースを解放
    h5close(a);

## H5 Dataset

以下のプロパティにアクセス可能です:

- attributes: 属性名;

- type: データセット型;

- dataspace: データセット空間;

- data: データセットデータ;

- name: グループ名;

- path: グループパス.

フィールド名が過去のリストに存在しない場合, 属性名とみなされます.

    x = [1 2;3 4];
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");
    dset_x = a.root.x;

    // dset_x がデータセットです
    h5isSet(dset_x)

    // プロパティにアクセス
    dset_x.attributes, dset_x.type, dset_x.dataspace, dset_x.data

    // 属性xをオープン
    attr_x = dset_x.SCILAB_Class

    // 全リソースを解放
    h5close(a);

## H5データスペース

以下のプロパティにアクセスできます:

- dims: データスペースの次元;

- extents: データスペースの最大次元;

- type: データスペースの型: "scalar", "simple" または "null";

- name: 親の名前.

- path: 親のパス.

    x = [1 2;3 4];
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");
    dspace_x = a.root.x.dataspace;

    // dspace_x はスペース
    h5isSpace(dspace_x)

    // プロパティにアクセス
    dspace_x.dims, dspace_x.extents, dspace_x.type

    // 全リソースを解放
    h5close(a);

## H5属性

以下のプロパティにアクセス可能です:

- type: 属性の型;

- dataspace: 属性のデータスペース;

- data: 属性データ;

- name: 属性名.

- path: 親のパス.

    x = [1 2;3 4];
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");
    attr_x = a.root.x.SCILAB_Class;

    // attr_x は属性
    h5isAttr(attr_x)

    // プロパティにアクセス
    attr_x.type, attr_x.dataspace, attr_x.data

    // 全リソースを解放
    h5close(a);

## H5型

以下のプロパティにアクセス可能です:

- class: 型のクラス;

- type: 型名;

- size: 大きさ(単位:バイト);

- nativetype: この型に関連するネーティブ型;

- nativesize: ネーティブ型の大きさ.

- name: 親の名前.

- path: 親のパス.

    x = [1 2;3 4];
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");
    type_x = a.root.x.type;

    // type_x は型
    h5isType(type_x)

    // プロパティにアクセス
    type_x.class, type_x.type, type_x.size, type_x.nativetype, type_x.nativesize,

    // 全リソースを解放
    h5close(a);

## H5リファレンス

H5リファレンスオブジェクトは,各要素がH5オブジェクトへのリファレンスであるハイパー行列オブジェクト

をラップします.

    x = list([1 2;3 4], "Hello", uint32(123));
    save(TMPDIR + "/x.sod", "x");
    a = h5open(TMPDIR + "/x.sod");
    dims_x = a.root.x.dataspace.dims
    ref_x = a.root.x.data;

    // ref_x はリファレンス
    h5isRef(ref_x)

    // 3個の要素を取得
    x1 = ref_x(1), x2 = ref_x(2), x3 = ref_x(3)

    // データを取得
    x1.data, x2.data, x3.data

    // 全リソース解放
    h5close(a);

## 参照

- h5attr

- h5close

- h5cp

- h5dataset

- h5dump

- h5exists

- h5flush

- h5get

- h5group

- h5isAttr

- h5isFile

- h5isGroup

- h5isRef

- h5isSet

- h5isSpace

- h5isType

- h5label

- h5ln

- h5ls

- h5mount

- h5mv

- h5open

- h5read

- h5rm

- h5umount

- h5write

- h5writeattr

## 履歴

5.5.0
HDF5モジュールが導入されました.