mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
[svn-r12672] Purpose: Updating C++ examples
Description: Updated existing C++ examples to be similar to C examples. Platforms tested Linux 2.4 (heping) SunOS 5.9 (shanti) AIX 5.1 (copper)
This commit is contained in:
parent
b72f6dc836
commit
fc4e7f7606
@ -14,7 +14,7 @@
|
||||
|
||||
/*
|
||||
* This example shows how to read data from a chunked dataset.
|
||||
* We will read from the file created by extend.C
|
||||
* We will read from the file created by extend.cpp
|
||||
*/
|
||||
|
||||
#ifdef OLD_HEADER_FILENAME
|
||||
@ -46,191 +46,194 @@ const int RANKC = 1;
|
||||
|
||||
int main (void)
|
||||
{
|
||||
hsize_t i, j;
|
||||
hsize_t i, j;
|
||||
|
||||
// Try block to detect exceptions raised by any of the calls inside it
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Turn off the auto-printing when failure occurs so that we can
|
||||
* handle the errors appropriately
|
||||
*/
|
||||
Exception::dontPrint();
|
||||
// Try block to detect exceptions raised by any of the calls inside it
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Turn off the auto-printing when failure occurs so that we can
|
||||
* handle the errors appropriately
|
||||
*/
|
||||
Exception::dontPrint();
|
||||
|
||||
/*
|
||||
* Open the file and the dataset.
|
||||
*/
|
||||
H5File file( FILE_NAME, H5F_ACC_RDONLY );
|
||||
DataSet dataset = file.openDataSet( DATASET_NAME );
|
||||
/*
|
||||
* Open the file and the dataset.
|
||||
*/
|
||||
H5File file( FILE_NAME, H5F_ACC_RDONLY );
|
||||
DataSet dataset = file.openDataSet( DATASET_NAME );
|
||||
|
||||
/*
|
||||
* Get filespace for rank and dimension
|
||||
*/
|
||||
DataSpace filespace = dataset.getSpace();
|
||||
/*
|
||||
* Get filespace for rank and dimension
|
||||
*/
|
||||
DataSpace filespace = dataset.getSpace();
|
||||
|
||||
/*
|
||||
* Get number of dimensions in the file dataspace
|
||||
*/
|
||||
int rank = filespace.getSimpleExtentNdims();
|
||||
/*
|
||||
* Get number of dimensions in the file dataspace
|
||||
*/
|
||||
int rank = filespace.getSimpleExtentNdims();
|
||||
|
||||
/*
|
||||
* Get and print the dimension sizes of the file dataspace
|
||||
*/
|
||||
hsize_t dims[2]; // dataset dimensions
|
||||
rank = filespace.getSimpleExtentDims( dims );
|
||||
cout << "dataset rank = " << rank << ", dimensions "
|
||||
<< (unsigned long)(dims[0]) << " x " << (unsigned long)(dims[1])
|
||||
<< endl;
|
||||
/*
|
||||
* Get and print the dimension sizes of the file dataspace
|
||||
*/
|
||||
hsize_t dims[2]; // dataset dimensions
|
||||
rank = filespace.getSimpleExtentDims( dims );
|
||||
cout << "dataset rank = " << rank << ", dimensions "
|
||||
<< (unsigned long)(dims[0]) << " x "
|
||||
<< (unsigned long)(dims[1]) << endl;
|
||||
|
||||
/*
|
||||
* Get creation properties list.
|
||||
*/
|
||||
DSetCreatPropList cparms = dataset.getCreatePlist();
|
||||
/*
|
||||
* Define the memory space to read dataset.
|
||||
*/
|
||||
DataSpace mspace1(RANK, dims);
|
||||
|
||||
/*
|
||||
* Check if dataset is chunked.
|
||||
*/
|
||||
hsize_t chunk_dims[2];
|
||||
int rank_chunk;
|
||||
if( H5D_CHUNKED == cparms.getLayout() )
|
||||
{
|
||||
/*
|
||||
* Get chunking information: rank and dimensions
|
||||
*/
|
||||
rank_chunk = cparms.getChunk( 2, chunk_dims);
|
||||
cout << "chunk rank " << rank_chunk << "dimensions "
|
||||
<< (unsigned long)(chunk_dims[0]) << " x "
|
||||
<< (unsigned long)(chunk_dims[1]) << endl;
|
||||
}
|
||||
/*
|
||||
* Read dataset back and display.
|
||||
*/
|
||||
int data_out[NX][NY]; // buffer for dataset to be read
|
||||
dataset.read( data_out, PredType::NATIVE_INT, mspace1, filespace );
|
||||
|
||||
/*
|
||||
* Define the memory space to read dataset.
|
||||
*/
|
||||
DataSpace mspace1( RANK, dims );
|
||||
cout << "\n";
|
||||
cout << "Dataset: \n";
|
||||
for (j = 0; j < dims[0]; j++)
|
||||
{
|
||||
for (i = 0; i < dims[1]; i++)
|
||||
cout << data_out[j][i] << " ";
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read dataset back and display.
|
||||
*/
|
||||
int data_out[NX][NY]; // buffer for dataset to be read
|
||||
dataset.read( data_out, PredType::NATIVE_INT, mspace1, filespace );
|
||||
cout << "\n";
|
||||
cout << "Dataset: \n";
|
||||
for (j = 0; j < dims[0]; j++)
|
||||
{
|
||||
for (i = 0; i < dims[1]; i++)
|
||||
cout << data_out[j][i] << " ";
|
||||
cout << endl;
|
||||
}
|
||||
/*
|
||||
* dataset rank 2, dimensions 10 x 5
|
||||
* chunk rank 2, dimensions 2 x 5
|
||||
|
||||
/*
|
||||
* dataset rank 2, dimensions 10 x 5
|
||||
* chunk rank 2, dimensions 2 x 5
|
||||
* Dataset:
|
||||
* 1 1 1 3 3
|
||||
* 1 1 1 3 3
|
||||
* 1 1 1 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
*/
|
||||
|
||||
* Dataset:
|
||||
* 1 1 1 3 3
|
||||
* 1 1 1 3 3
|
||||
* 1 1 1 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
* 2 0 0 0 0
|
||||
*/
|
||||
/*
|
||||
* Read the third column from the dataset.
|
||||
* First define memory dataspace, then define hyperslab
|
||||
* and read it into column array.
|
||||
*/
|
||||
hsize_t col_dims[1];
|
||||
col_dims[0] = 10;
|
||||
DataSpace mspace2( RANKC, col_dims );
|
||||
|
||||
/*
|
||||
* Read the third column from the dataset.
|
||||
* First define memory dataspace, then define hyperslab
|
||||
* and read it into column array.
|
||||
*/
|
||||
hsize_t col_dims[1];
|
||||
col_dims[0] = 10;
|
||||
DataSpace mspace2( RANKC, col_dims );
|
||||
/*
|
||||
* Define the column (hyperslab) to read.
|
||||
*/
|
||||
hsize_t offset[2] = { 0, 2 };
|
||||
hsize_t count[2] = { 10, 1 };
|
||||
int column[10]; // buffer for column to be read
|
||||
|
||||
/*
|
||||
* Define the column (hyperslab) to read.
|
||||
*/
|
||||
hsize_t offset[2] = { 0, 2 };
|
||||
hsize_t count[2] = { 10, 1 };
|
||||
int column[10]; // buffer for column to be read
|
||||
/*
|
||||
* Define hyperslab and read.
|
||||
*/
|
||||
filespace.selectHyperslab( H5S_SELECT_SET, count, offset );
|
||||
dataset.read( column, PredType::NATIVE_INT, mspace2, filespace );
|
||||
|
||||
filespace.selectHyperslab( H5S_SELECT_SET, count, offset );
|
||||
dataset.read( column, PredType::NATIVE_INT, mspace2, filespace );
|
||||
cout << endl;
|
||||
cout << "Third column: " << endl;
|
||||
for (i = 0; i < 10; i++)
|
||||
cout << column[i] << endl;
|
||||
|
||||
cout << endl;
|
||||
cout << "Third column: " << endl;
|
||||
for (i = 0; i < 10; i++)
|
||||
cout << column[i] << endl;
|
||||
/*
|
||||
* Third column:
|
||||
* 1
|
||||
* 1
|
||||
* 1
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
*/
|
||||
|
||||
/*
|
||||
* Third column:
|
||||
* 1
|
||||
* 1
|
||||
* 1
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
* 0
|
||||
*/
|
||||
/*
|
||||
* Get creation properties list.
|
||||
*/
|
||||
DSetCreatPropList cparms = dataset.getCreatePlist();
|
||||
|
||||
/*
|
||||
* Define the memory space to read a chunk.
|
||||
*/
|
||||
DataSpace mspace3( rank_chunk, chunk_dims );
|
||||
/*
|
||||
* Check if dataset is chunked.
|
||||
*/
|
||||
hsize_t chunk_dims[2];
|
||||
int rank_chunk;
|
||||
if( H5D_CHUNKED == cparms.getLayout() )
|
||||
{
|
||||
/*
|
||||
* Get chunking information: rank and dimensions
|
||||
*/
|
||||
rank_chunk = cparms.getChunk( 2, chunk_dims);
|
||||
cout << "chunk rank " << rank_chunk << "dimensions "
|
||||
<< (unsigned long)(chunk_dims[0]) << " x "
|
||||
<< (unsigned long)(chunk_dims[1]) << endl;
|
||||
|
||||
/*
|
||||
* Define chunk in the file (hyperslab) to read.
|
||||
*/
|
||||
offset[0] = 2;
|
||||
offset[1] = 0;
|
||||
count[0] = chunk_dims[0];
|
||||
count[1] = chunk_dims[1];
|
||||
filespace.selectHyperslab( H5S_SELECT_SET, count, offset );
|
||||
/*
|
||||
* Define the memory space to read a chunk.
|
||||
*/
|
||||
DataSpace mspace3( rank_chunk, chunk_dims );
|
||||
|
||||
/*
|
||||
* Read chunk back and display.
|
||||
*/
|
||||
int chunk_out[2][5]; // buffer for chunk to be read
|
||||
dataset.read( chunk_out, PredType::NATIVE_INT, mspace3, filespace );
|
||||
cout << endl;
|
||||
cout << "Chunk:" << endl;
|
||||
for (j = 0; j < chunk_dims[0]; j++)
|
||||
{
|
||||
for (i = 0; i < chunk_dims[1]; i++)
|
||||
cout << chunk_out[j][i] << " ";
|
||||
cout << endl;
|
||||
}
|
||||
/*
|
||||
* Chunk:
|
||||
* 1 1 1 0 0
|
||||
* 2 0 0 0 0
|
||||
*/
|
||||
} // end of try block
|
||||
/*
|
||||
* Define chunk in the file (hyperslab) to read.
|
||||
*/
|
||||
offset[0] = 2;
|
||||
offset[1] = 0;
|
||||
count[0] = chunk_dims[0];
|
||||
count[1] = chunk_dims[1];
|
||||
filespace.selectHyperslab( H5S_SELECT_SET, count, offset );
|
||||
|
||||
// catch failure caused by the H5File operations
|
||||
catch( FileIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
* Read chunk back and display.
|
||||
*/
|
||||
int chunk_out[2][5]; // buffer for chunk to be read
|
||||
dataset.read( chunk_out, PredType::NATIVE_INT, mspace3, filespace );
|
||||
cout << endl;
|
||||
cout << "Chunk:" << endl;
|
||||
for (j = 0; j < chunk_dims[0]; j++)
|
||||
{
|
||||
for (i = 0; i < chunk_dims[1]; i++)
|
||||
cout << chunk_out[j][i] << " ";
|
||||
cout << endl;
|
||||
}
|
||||
/*
|
||||
* Chunk:
|
||||
* 1 1 1 0 0
|
||||
* 2 0 0 0 0
|
||||
*/
|
||||
}
|
||||
} // end of try block
|
||||
|
||||
// catch failure caused by the DataSet operations
|
||||
catch( DataSetIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
// catch failure caused by the H5File operations
|
||||
catch( FileIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// catch failure caused by the DataSpace operations
|
||||
catch( DataSpaceIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
// catch failure caused by the DataSet operations
|
||||
catch( DataSetIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
// catch failure caused by the DataSpace operations
|
||||
catch( DataSpaceIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ int main(void)
|
||||
{
|
||||
/* First structure and dataset*/
|
||||
typedef struct s1_t {
|
||||
int a;
|
||||
int a;
|
||||
float b;
|
||||
double c;
|
||||
} s1_t;
|
||||
@ -58,7 +58,7 @@ int main(void)
|
||||
/* Second structure (subset of s1_t) and dataset*/
|
||||
typedef struct s2_t {
|
||||
double c;
|
||||
int a;
|
||||
int a;
|
||||
} s2_t;
|
||||
|
||||
// Try block to detect exceptions raised by any of the calls inside it
|
||||
@ -67,8 +67,8 @@ int main(void)
|
||||
/*
|
||||
* Initialize the data
|
||||
*/
|
||||
int i;
|
||||
s1_t s1[LENGTH];
|
||||
int i;
|
||||
s1_t s1[LENGTH];
|
||||
for (i = 0; i< LENGTH; i++)
|
||||
{
|
||||
s1[i].a = i;
|
||||
@ -85,7 +85,7 @@ int main(void)
|
||||
/*
|
||||
* Create the data space.
|
||||
*/
|
||||
hsize_t dim[] = {LENGTH}; /* Dataspace dimensions */
|
||||
hsize_t dim[] = {LENGTH}; /* Dataspace dimensions */
|
||||
DataSpace space( RANK, dim );
|
||||
|
||||
/*
|
||||
@ -105,10 +105,10 @@ int main(void)
|
||||
* Create the dataset.
|
||||
*/
|
||||
DataSet* dataset;
|
||||
dataset = new DataSet( file->createDataSet( DATASET_NAME, mtype1, space ));
|
||||
dataset = new DataSet(file->createDataSet(DATASET_NAME, mtype1, space));
|
||||
|
||||
/*
|
||||
* Wtite data to the dataset;
|
||||
* Write data to the dataset;
|
||||
*/
|
||||
dataset->write( s1, mtype1 );
|
||||
|
||||
@ -118,16 +118,6 @@ int main(void)
|
||||
delete dataset;
|
||||
delete file;
|
||||
|
||||
// Get the class of the first member in mtype1, then get its type
|
||||
H5T_class_t member1_class = mtype1.getMemberClass( 2 );
|
||||
if( member1_class == H5T_FLOAT )
|
||||
{
|
||||
FloatType member2 = mtype1.getMemberFloatType( 2 );
|
||||
H5std_string norm_string;
|
||||
H5T_norm_t norm = member2.getNorm( norm_string );
|
||||
cout << "Normalization type is " << norm_string << endl;
|
||||
}
|
||||
|
||||
/*
|
||||
* Open the file and the dataset.
|
||||
*/
|
||||
@ -146,7 +136,7 @@ int main(void)
|
||||
* Read two fields c and a from s1 dataset. Fields in the file
|
||||
* are found by their names "c_name" and "a_name".
|
||||
*/
|
||||
s2_t s2[LENGTH];
|
||||
s2_t s2[LENGTH];
|
||||
dataset->read( s2, mtype2 );
|
||||
|
||||
/*
|
||||
@ -172,7 +162,7 @@ int main(void)
|
||||
/*
|
||||
* Read field b from s1 dataset. Field in the file is found by its name.
|
||||
*/
|
||||
float s3[LENGTH]; // Third "structure" - used to read float field of s1)
|
||||
float s3[LENGTH]; // Third "structure" - used to read float field of s1
|
||||
dataset->read( s3, mtype3 );
|
||||
|
||||
/*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Copyright by the Board of Trustees of the University of Illinois. *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Copyright by the Board of Trustees of the University of Illinois. *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
||||
* terms governing use, modification, and redistribution, is contained in *
|
||||
* the files COPYING and Copyright.html. COPYING can be found at the root *
|
||||
@ -41,8 +41,8 @@
|
||||
using namespace H5;
|
||||
#endif
|
||||
|
||||
const H5std_string FILE_NAME( "Group.h5" );
|
||||
const int RANK = 2;
|
||||
const H5std_string FILE_NAME( "Group.h5" );
|
||||
const int RANK = 2;
|
||||
|
||||
// Operator function
|
||||
extern "C" herr_t file_info(hid_t loc_id, const char *name, void *opdata);
|
||||
@ -53,159 +53,174 @@ int main(void)
|
||||
hsize_t dims[2];
|
||||
hsize_t cdims[2];
|
||||
|
||||
// Try block to detect exceptions raised by any of the calls inside it
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Turn off the auto-printing when failure occurs so that we can
|
||||
* handle the errors appropriately
|
||||
*/
|
||||
Exception::dontPrint();
|
||||
// Try block to detect exceptions raised by any of the calls inside it
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Turn off the auto-printing when failure occurs so that we can
|
||||
* handle the errors appropriately
|
||||
*/
|
||||
Exception::dontPrint();
|
||||
|
||||
/*
|
||||
* Create the named file, truncating the existing one if any,
|
||||
* using default create and access property lists.
|
||||
*/
|
||||
H5File *file = new H5File( FILE_NAME, H5F_ACC_TRUNC );
|
||||
/*
|
||||
* Create the named file, truncating the existing one if any,
|
||||
* using default create and access property lists.
|
||||
*/
|
||||
H5File *file = new H5File( FILE_NAME, H5F_ACC_TRUNC );
|
||||
|
||||
/*
|
||||
* Create a group in the file
|
||||
*/
|
||||
Group* group = new Group( file->createGroup( "/Data" ));
|
||||
/*
|
||||
* Create a group in the file
|
||||
*/
|
||||
Group* group = new Group( file->createGroup( "/Data" ));
|
||||
|
||||
/*
|
||||
* Create dataset "Compressed Data" in the group using absolute
|
||||
* name. Dataset creation property list is modified to use
|
||||
* GZIP compression with the compression effort set to 6.
|
||||
* Note that compression can be used only when dataset is chunked.
|
||||
*/
|
||||
dims[0] = 1000;
|
||||
dims[1] = 20;
|
||||
cdims[0] = 20;
|
||||
cdims[1] = 20;
|
||||
DataSpace dataspace( RANK, dims ); // create the new dataspace
|
||||
// for the dataset
|
||||
/*
|
||||
* Create dataset "Compressed Data" in the group using absolute
|
||||
* name. Dataset creation property list is modified to use
|
||||
* GZIP compression with the compression effort set to 6.
|
||||
* Note that compression can be used only when dataset is chunked.
|
||||
*/
|
||||
dims[0] = 1000;
|
||||
dims[1] = 20;
|
||||
cdims[0] = 20;
|
||||
cdims[1] = 20;
|
||||
DataSpace *dataspace = new DataSpace(RANK, dims); // create new dspace
|
||||
DSetCreatPropList ds_creatplist; // create dataset creation prop list
|
||||
ds_creatplist.setChunk( 2, cdims ); // then modify it for compression
|
||||
ds_creatplist.setDeflate( 6 );
|
||||
|
||||
DSetCreatPropList ds_creatplist; // create dataset creation prop list
|
||||
ds_creatplist.setChunk( 2, cdims ); // then modify it for compression
|
||||
ds_creatplist.setDeflate( 6 );
|
||||
/*
|
||||
* Create the first dataset.
|
||||
*/
|
||||
DataSet* dataset = new DataSet(file->createDataSet(
|
||||
"/Data/Compressed_Data", PredType::NATIVE_INT,
|
||||
*dataspace, ds_creatplist ));
|
||||
|
||||
DataSet* dataset = new DataSet( file->createDataSet( "/Data/Compressed_Data", PredType::NATIVE_INT, dataspace, ds_creatplist ));
|
||||
/*
|
||||
* Close the first dataset.
|
||||
*/
|
||||
delete dataset;
|
||||
delete dataspace;
|
||||
|
||||
/*
|
||||
* Close the dataset and the file.
|
||||
*/
|
||||
delete dataset;
|
||||
delete group;
|
||||
delete file;
|
||||
/*
|
||||
* Create the second dataset.
|
||||
*/
|
||||
dims[0] = 500;
|
||||
dims[1] = 20;
|
||||
dataspace = new DataSpace(RANK, dims); // create second dspace
|
||||
dataset = new DataSet(file->createDataSet("/Data/Float_Data",
|
||||
PredType::NATIVE_FLOAT, *dataspace));
|
||||
|
||||
/*
|
||||
* Now reopen the file and group in the file.
|
||||
*/
|
||||
file = new H5File( FILE_NAME, H5F_ACC_RDWR );
|
||||
group = new Group( file->openGroup( "Data" ));
|
||||
delete dataset;
|
||||
delete dataspace;
|
||||
delete group;
|
||||
delete file;
|
||||
|
||||
/*
|
||||
* Access "Compressed_Data" dataset in the group.
|
||||
*/
|
||||
try { // to determine if the dataset exists in the group
|
||||
dataset = new DataSet( group->openDataSet( "Compressed_Data" ));
|
||||
}
|
||||
catch( GroupIException not_found_error )
|
||||
{
|
||||
cout << " Dataset is not found." << endl;
|
||||
}
|
||||
cout << "dataset \"/Data/Compressed_Data\" is open" << endl;
|
||||
/*
|
||||
* Now reopen the file and group in the file.
|
||||
*/
|
||||
file = new H5File(FILE_NAME, H5F_ACC_RDWR);
|
||||
group = new Group(file->openGroup("Data"));
|
||||
|
||||
/*
|
||||
* Close the dataset.
|
||||
*/
|
||||
delete dataset;
|
||||
/*
|
||||
* Access "Compressed_Data" dataset in the group.
|
||||
*/
|
||||
try { // to determine if the dataset exists in the group
|
||||
dataset = new DataSet( group->openDataSet( "Compressed_Data" ));
|
||||
}
|
||||
catch( GroupIException not_found_error ) {
|
||||
cout << " Dataset is not found." << endl;
|
||||
}
|
||||
cout << "dataset \"/Data/Compressed_Data\" is open" << endl;
|
||||
|
||||
/*
|
||||
* Create hard link to the Data group.
|
||||
*/
|
||||
file->link( H5G_LINK_HARD, "Data", "Data_new" );
|
||||
/*
|
||||
* Close the dataset.
|
||||
*/
|
||||
delete dataset;
|
||||
|
||||
/*
|
||||
* We can access "Compressed_Data" dataset using created
|
||||
* hard link "Data_new".
|
||||
*/
|
||||
try { // to determine if the dataset exists in the file
|
||||
dataset = new DataSet( file->openDataSet( "/Data_new/Compressed_Data" ));
|
||||
}
|
||||
catch( FileIException not_found_error )
|
||||
{
|
||||
cout << " Dataset is not found." << endl;
|
||||
}
|
||||
cout << "dataset \"/Data_new/Compressed_Data\" is open" << endl;
|
||||
/*
|
||||
* Create hard link to the Data group.
|
||||
*/
|
||||
file->link( H5G_LINK_HARD, "Data", "Data_new" );
|
||||
|
||||
/*
|
||||
* Close the dataset.
|
||||
*/
|
||||
delete dataset;
|
||||
/*
|
||||
* We can access "Compressed_Data" dataset using created
|
||||
* hard link "Data_new".
|
||||
*/
|
||||
try { // to determine if the dataset exists in the file
|
||||
dataset = new DataSet(file->openDataSet( "/Data_new/Compressed_Data" ));
|
||||
}
|
||||
catch( FileIException not_found_error )
|
||||
{
|
||||
cout << " Dataset is not found." << endl;
|
||||
}
|
||||
cout << "dataset \"/Data_new/Compressed_Data\" is open" << endl;
|
||||
|
||||
/*
|
||||
* Use iterator to see the names of the objects in the file
|
||||
* root directory.
|
||||
*/
|
||||
cout << endl << "Iterating over elements in the file" << endl;
|
||||
herr_t idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL);
|
||||
cout << endl;
|
||||
/*
|
||||
* Close the dataset.
|
||||
*/
|
||||
delete dataset;
|
||||
|
||||
/*
|
||||
* Unlink name "Data" and use iterator to see the names
|
||||
* of the objects in the file root direvtory.
|
||||
*/
|
||||
cout << "Unlinking..." << endl;
|
||||
try { // attempt to unlink the dataset
|
||||
file->unlink( "Data" );
|
||||
}
|
||||
catch( FileIException unlink_error )
|
||||
{
|
||||
cout << " unlink failed." << endl;
|
||||
}
|
||||
cout << "\"Data\" is unlinked" << endl;
|
||||
/*
|
||||
* Use iterator to see the names of the objects in the file
|
||||
* root directory.
|
||||
*/
|
||||
cout << endl << "Iterating over elements in the file" << endl;
|
||||
herr_t idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL);
|
||||
cout << endl;
|
||||
|
||||
cout << endl << "Iterating over elements in the file again" << endl;
|
||||
idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL);
|
||||
cout << endl;
|
||||
/*
|
||||
* Unlink name "Data" and use iterator to see the names
|
||||
* of the objects in the file root direvtory.
|
||||
*/
|
||||
cout << "Unlinking..." << endl;
|
||||
try { // attempt to unlink the dataset
|
||||
file->unlink( "Data" );
|
||||
}
|
||||
catch( FileIException unlink_error )
|
||||
{
|
||||
cout << " unlink failed." << endl;
|
||||
}
|
||||
cout << "\"Data\" is unlinked" << endl;
|
||||
|
||||
/*
|
||||
* Close the file.
|
||||
*/
|
||||
delete file;
|
||||
cout << endl << "Iterating over elements in the file again" << endl;
|
||||
idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL);
|
||||
cout << endl;
|
||||
|
||||
} // end of try block
|
||||
/*
|
||||
* Close the group and file.
|
||||
*/
|
||||
delete group;
|
||||
delete file;
|
||||
} // end of try block
|
||||
|
||||
// catch failure caused by the H5File operations
|
||||
catch( FileIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
// catch failure caused by the H5File operations
|
||||
catch( FileIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// catch failure caused by the DataSet operations
|
||||
catch( DataSetIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
// catch failure caused by the DataSet operations
|
||||
catch( DataSetIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// catch failure caused by the DataSpace operations
|
||||
catch( DataSpaceIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
// catch failure caused by the DataSpace operations
|
||||
catch( DataSpaceIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// catch failure caused by the Attribute operations
|
||||
catch( AttributeIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
// catch failure caused by the Attribute operations
|
||||
catch( AttributeIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -227,5 +242,5 @@ file_info(hid_t loc_id, const char *name, void *opdata)
|
||||
|
||||
H5Gclose(group);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Copyright by the Board of Trustees of the University of Illinois. *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* Copyright by the Board of Trustees of the University of Illinois. *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
||||
* terms governing use, modification, and redistribution, is contained in *
|
||||
* the files COPYING and Copyright.html. COPYING can be found at the root *
|
||||
@ -48,208 +48,290 @@ const int MSPACE1_DIM = 50; // Dataset size in memory
|
||||
const int MSPACE2_RANK = 1; // Rank of the second dataset in memory
|
||||
const int MSPACE2_DIM = 4; // Dataset size in memory
|
||||
const int FSPACE_RANK = 2; // Dataset rank as it is stored in the file
|
||||
const int FSPACE_DIM1 = 8; // Dimension sizes of the dataset as it is...
|
||||
const int FSPACE_DIM2 = 12; // ...stored in the file
|
||||
const int MSPACE_DIM1 = 8; // We will read dataset back from the file...
|
||||
const int MSPACE_DIM2 = 12; // ...to the dataset in memory with these ...
|
||||
// ...dataspace parameters
|
||||
const int NPOINTS = 4; // Number of points that will be selected...
|
||||
// ...and overwritten
|
||||
const int FSPACE_DIM1 = 8; // Dimension sizes of the dataset as it is
|
||||
const int FSPACE_DIM2 = 12; // stored in the file
|
||||
const int MSPACE_RANK = 2; // Rank of the first dataset in memory
|
||||
const int MSPACE_DIM1 = 8; // We will read dataset back from the file
|
||||
const int MSPACE_DIM2 = 9; // to the dataset in memory with these
|
||||
// dataspace parameters
|
||||
const int NPOINTS = 4; // Number of points that will be selected
|
||||
// and overwritten
|
||||
|
||||
int main (void)
|
||||
{
|
||||
/*
|
||||
* Buffers' initialization.
|
||||
*/
|
||||
int i,j;
|
||||
int vector[MSPACE1_DIM];
|
||||
vector[0] = vector[MSPACE1_DIM - 1] = -1;
|
||||
for (i = 1; i < MSPACE1_DIM - 1; i++)
|
||||
vector[i] = i;
|
||||
int i,j; // loop indices */
|
||||
|
||||
int matrix[MSPACE_DIM1][MSPACE_DIM2];
|
||||
for (i = 0; i < MSPACE_DIM1; i++)
|
||||
{
|
||||
for (j = 0; j < MSPACE_DIM2; j++)
|
||||
matrix[i][j] = 0;
|
||||
}
|
||||
/*
|
||||
* Try block to detect exceptions raised by any of the calls inside it
|
||||
*/
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Turn off the auto-printing when failure occurs so that we can
|
||||
* handle the errors appropriately
|
||||
*/
|
||||
Exception::dontPrint();
|
||||
|
||||
// Try block to detect exceptions raised by any of the calls inside it
|
||||
try
|
||||
{
|
||||
/*
|
||||
* Turn off the auto-printing when failure occurs so that we can
|
||||
* handle the errors appropriately
|
||||
*/
|
||||
Exception::dontPrint();
|
||||
/*
|
||||
* Create a file.
|
||||
*/
|
||||
H5File* file = new H5File( FILE_NAME, H5F_ACC_TRUNC );
|
||||
|
||||
/*
|
||||
* Create a file.
|
||||
*/
|
||||
H5File* file = new H5File( FILE_NAME, H5F_ACC_TRUNC );
|
||||
/*
|
||||
* Create property list for a dataset and set up fill values.
|
||||
*/
|
||||
int fillvalue = 0; /* Fill value for the dataset */
|
||||
DSetCreatPropList plist;
|
||||
plist.setFillValue(PredType::NATIVE_INT, &fillvalue);
|
||||
|
||||
/*
|
||||
* Create dataspace for the dataset in the file.
|
||||
*/
|
||||
hsize_t fdim[] = {FSPACE_DIM1, FSPACE_DIM2}; // dim sizes of ds (on disk)
|
||||
DataSpace fspace( FSPACE_RANK, fdim );
|
||||
/*
|
||||
* Create dataspace for the dataset in the file.
|
||||
*/
|
||||
hsize_t fdim[] = {FSPACE_DIM1, FSPACE_DIM2}; // dim sizes of ds (on disk)
|
||||
DataSpace fspace( FSPACE_RANK, fdim );
|
||||
|
||||
/*
|
||||
* Create dataset and write it into the file.
|
||||
*/
|
||||
DataSet* dataset = new DataSet(
|
||||
file->createDataSet( DATASET_NAME, PredType::NATIVE_INT, fspace ));
|
||||
dataset->write( matrix, PredType::NATIVE_INT );
|
||||
/*
|
||||
* Create dataset and write it into the file.
|
||||
*/
|
||||
DataSet* dataset = new DataSet(file->createDataSet(
|
||||
DATASET_NAME, PredType::NATIVE_INT, fspace, plist));
|
||||
|
||||
/*
|
||||
* Select hyperslab for the dataset in the file, using 3x2 blocks,
|
||||
* (4,3) stride and (2,4) count starting at the position (0,1).
|
||||
*/
|
||||
hsize_t start[2]; // Start of hyperslab
|
||||
hsize_t stride[2]; // Stride of hyperslab
|
||||
hsize_t count[2]; // Block count
|
||||
hsize_t block[2]; // Block sizes
|
||||
start[0] = 0; start[1] = 1;
|
||||
stride[0] = 4; stride[1] = 3;
|
||||
count[0] = 2; count[1] = 4;
|
||||
block[0] = 3; block[1] = 2;
|
||||
fspace.selectHyperslab( H5S_SELECT_SET, count, start, stride, block);
|
||||
/*
|
||||
* Select hyperslab for the dataset in the file, using 3x2 blocks,
|
||||
* (4,3) stride and (2,4) count starting at the position (0,1).
|
||||
*/
|
||||
hsize_t start[2]; // Start of hyperslab
|
||||
hsize_t stride[2]; // Stride of hyperslab
|
||||
hsize_t count[2]; // Block count
|
||||
hsize_t block[2]; // Block sizes
|
||||
start[0] = 0; start[1] = 1;
|
||||
stride[0] = 4; stride[1] = 3;
|
||||
count[0] = 2; count[1] = 4;
|
||||
block[0] = 3; block[1] = 2;
|
||||
fspace.selectHyperslab( H5S_SELECT_SET, count, start, stride, block);
|
||||
|
||||
/*
|
||||
* Create dataspace for the first dataset.
|
||||
*/
|
||||
hsize_t dim1[] = {MSPACE1_DIM}; /* Dimension size of the first dataset
|
||||
(in memory) */
|
||||
DataSpace mspace1( MSPACE1_RANK, dim1 );
|
||||
/*
|
||||
* Create dataspace for the first dataset.
|
||||
*/
|
||||
hsize_t dim1[] = {MSPACE1_DIM}; /* Dimension size of the first dataset
|
||||
(in memory) */
|
||||
DataSpace mspace1( MSPACE1_RANK, dim1 );
|
||||
|
||||
/*
|
||||
* Select hyperslab.
|
||||
* We will use 48 elements of the vector buffer starting at the
|
||||
* second element. Selected elements are 1 2 3 . . . 48
|
||||
*/
|
||||
start[0] = 1;
|
||||
stride[0] = 1;
|
||||
count[0] = 48;
|
||||
block[0] = 1;
|
||||
mspace1.selectHyperslab( H5S_SELECT_SET, count, start, stride, block);
|
||||
/*
|
||||
* Select hyperslab.
|
||||
* We will use 48 elements of the vector buffer starting at the
|
||||
* second element. Selected elements are 1 2 3 . . . 48
|
||||
*/
|
||||
start[0] = 1;
|
||||
stride[0] = 1;
|
||||
count[0] = 48;
|
||||
block[0] = 1;
|
||||
mspace1.selectHyperslab( H5S_SELECT_SET, count, start, stride, block);
|
||||
|
||||
/*
|
||||
* Write selection from the vector buffer to the dataset in the file.
|
||||
*
|
||||
* File dataset should look like this:
|
||||
* 0 1 2 0 3 4 0 5 6 0 7 8
|
||||
* 0 9 10 0 11 12 0 13 14 0 15 16
|
||||
* 0 17 18 0 19 20 0 21 22 0 23 24
|
||||
* 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
* 0 25 26 0 27 28 0 29 30 0 31 32
|
||||
* 0 33 34 0 35 36 0 37 38 0 39 40
|
||||
* 0 41 42 0 43 44 0 45 46 0 47 48
|
||||
* 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
*/
|
||||
dataset->write( vector, PredType::NATIVE_INT, mspace1, fspace );
|
||||
/*
|
||||
* Write selection from the vector buffer to the dataset in the file.
|
||||
*
|
||||
* File dataset should look like this:
|
||||
* 0 1 2 0 3 4 0 5 6 0 7 8
|
||||
* 0 9 10 0 11 12 0 13 14 0 15 16
|
||||
* 0 17 18 0 19 20 0 21 22 0 23 24
|
||||
* 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
* 0 25 26 0 27 28 0 29 30 0 31 32
|
||||
* 0 33 34 0 35 36 0 37 38 0 39 40
|
||||
* 0 41 42 0 43 44 0 45 46 0 47 48
|
||||
* 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
*/
|
||||
int vector[MSPACE1_DIM]; // vector buffer for dset
|
||||
|
||||
/*
|
||||
* Reset the selection for the file dataspace fid.
|
||||
*/
|
||||
fspace.selectNone();
|
||||
/*
|
||||
* Buffer initialization.
|
||||
*/
|
||||
vector[0] = vector[MSPACE1_DIM - 1] = -1;
|
||||
for (i = 1; i < MSPACE1_DIM - 1; i++)
|
||||
vector[i] = i;
|
||||
|
||||
/*
|
||||
* Create dataspace for the second dataset.
|
||||
*/
|
||||
hsize_t dim2[] = {MSPACE2_DIM}; /* Dimension size of the second dataset
|
||||
(in memory */
|
||||
DataSpace mspace2( MSPACE2_RANK, dim2 );
|
||||
dataset->write( vector, PredType::NATIVE_INT, mspace1, fspace );
|
||||
|
||||
/*
|
||||
* Select sequence of NPOINTS points in the file dataspace.
|
||||
*/
|
||||
hsize_t coord[NPOINTS][FSPACE_RANK]; /* Array to store selected points
|
||||
from the file dataspace */
|
||||
coord[0][0] = 0; coord[0][1] = 0;
|
||||
coord[1][0] = 3; coord[1][1] = 3;
|
||||
coord[2][0] = 3; coord[2][1] = 5;
|
||||
coord[3][0] = 5; coord[3][1] = 6;
|
||||
/*
|
||||
* Reset the selection for the file dataspace fid.
|
||||
*/
|
||||
fspace.selectNone();
|
||||
|
||||
fspace.selectElements( H5S_SELECT_SET, NPOINTS, (const hsize_t **)coord);
|
||||
/*
|
||||
* Create dataspace for the second dataset.
|
||||
*/
|
||||
hsize_t dim2[] = {MSPACE2_DIM}; /* Dimension size of the second dataset
|
||||
(in memory */
|
||||
DataSpace mspace2( MSPACE2_RANK, dim2 );
|
||||
|
||||
/*
|
||||
* Write new selection of points to the dataset.
|
||||
*/
|
||||
int values[] = {53, 59, 61, 67}; /* New values to be written */
|
||||
dataset->write( values, PredType::NATIVE_INT, mspace2, fspace );
|
||||
/*
|
||||
* Select sequence of NPOINTS points in the file dataspace.
|
||||
*/
|
||||
hsize_t coord[NPOINTS][FSPACE_RANK]; /* Array to store selected points
|
||||
from the file dataspace */
|
||||
coord[0][0] = 0; coord[0][1] = 0;
|
||||
coord[1][0] = 3; coord[1][1] = 3;
|
||||
coord[2][0] = 3; coord[2][1] = 5;
|
||||
coord[3][0] = 5; coord[3][1] = 6;
|
||||
|
||||
/*
|
||||
* File dataset should look like this:
|
||||
* 53 1 2 0 3 4 0 5 6 0 7 8
|
||||
* 0 9 10 0 11 12 0 13 14 0 15 16
|
||||
* 0 17 18 0 19 20 0 21 22 0 23 24
|
||||
* 0 0 0 59 0 61 0 0 0 0 0 0
|
||||
* 0 25 26 0 27 28 0 29 30 0 31 32
|
||||
* 0 33 34 0 35 36 67 37 38 0 39 40
|
||||
* 0 41 42 0 43 44 0 45 46 0 47 48
|
||||
* 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
*
|
||||
*/
|
||||
fspace.selectElements( H5S_SELECT_SET, NPOINTS, (const hsize_t **)coord);
|
||||
|
||||
/*
|
||||
* Close the dataset and the file.
|
||||
*/
|
||||
delete dataset;
|
||||
delete file;
|
||||
/*
|
||||
* Write new selection of points to the dataset.
|
||||
*/
|
||||
int values[] = {53, 59, 61, 67}; /* New values to be written */
|
||||
dataset->write( values, PredType::NATIVE_INT, mspace2, fspace );
|
||||
|
||||
/*
|
||||
* Open the file.
|
||||
*/
|
||||
file = new H5File( FILE_NAME, H5F_ACC_RDONLY );
|
||||
/*
|
||||
* File dataset should look like this:
|
||||
* 53 1 2 0 3 4 0 5 6 0 7 8
|
||||
* 0 9 10 0 11 12 0 13 14 0 15 16
|
||||
* 0 17 18 0 19 20 0 21 22 0 23 24
|
||||
* 0 0 0 59 0 61 0 0 0 0 0 0
|
||||
* 0 25 26 0 27 28 0 29 30 0 31 32
|
||||
* 0 33 34 0 35 36 67 37 38 0 39 40
|
||||
* 0 41 42 0 43 44 0 45 46 0 47 48
|
||||
* 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Open the dataset.
|
||||
*/
|
||||
dataset = new DataSet( file->openDataSet( DATASET_NAME ));
|
||||
/*
|
||||
* Close the dataset and the file.
|
||||
*/
|
||||
delete dataset;
|
||||
delete file;
|
||||
|
||||
/*
|
||||
* Read data back to the buffer matrix.
|
||||
*/
|
||||
dataset->read( matrix, PredType::NATIVE_INT );
|
||||
/*
|
||||
* Open the file.
|
||||
*/
|
||||
file = new H5File( FILE_NAME, H5F_ACC_RDONLY );
|
||||
|
||||
/*
|
||||
* Display the result.
|
||||
*/
|
||||
for (i=0; i < MSPACE_DIM1; i++)
|
||||
{
|
||||
for(j=0; j < MSPACE_DIM2; j++)
|
||||
cout << matrix[i][j] << " ";
|
||||
cout << endl;
|
||||
}
|
||||
/*
|
||||
* Open the dataset.
|
||||
*/
|
||||
dataset = new DataSet( file->openDataSet( DATASET_NAME ));
|
||||
|
||||
/*
|
||||
* Close the dataset and the file.
|
||||
*/
|
||||
delete dataset;
|
||||
delete file;
|
||||
/*
|
||||
* Get dataspace of the dataset.
|
||||
*/
|
||||
fspace = dataset->getSpace();
|
||||
|
||||
/*
|
||||
* Select first hyperslab for the dataset in the file. The following
|
||||
* elements are selected:
|
||||
* 10 0 11 12
|
||||
* 18 0 19 20
|
||||
* 0 59 0 61
|
||||
*
|
||||
*/
|
||||
start[0] = 1; start[1] = 2;
|
||||
block[0] = 1; block[1] = 1;
|
||||
stride[0] = 1; stride[1] = 1;
|
||||
count[0] = 3; count[1] = 4;
|
||||
fspace.selectHyperslab(H5S_SELECT_SET, count, start, stride, block);
|
||||
|
||||
/*
|
||||
* Add second selected hyperslab to the selection.
|
||||
* The following elements are selected:
|
||||
* 19 20 0 21 22
|
||||
* 0 61 0 0 0
|
||||
* 27 28 0 29 30
|
||||
* 35 36 67 37 38
|
||||
* 43 44 0 45 46
|
||||
* 0 0 0 0 0
|
||||
* Note that two hyperslabs overlap. Common elements are:
|
||||
* 19 20
|
||||
* 0 61
|
||||
*/
|
||||
start[0] = 2; start[1] = 4;
|
||||
block[0] = 1; block[1] = 1;
|
||||
stride[0] = 1; stride[1] = 1;
|
||||
count[0] = 6; count[1] = 5;
|
||||
fspace.selectHyperslab(H5S_SELECT_OR, count, start, stride, block);
|
||||
|
||||
/*
|
||||
* Create memory dataspace.
|
||||
*/
|
||||
hsize_t mdim[] = {MSPACE_DIM1, MSPACE_DIM2}; /* Dimension sizes of the
|
||||
dataset in memory when we
|
||||
read selection from the
|
||||
dataset on the disk */
|
||||
DataSpace mspace(MSPACE_RANK, mdim);
|
||||
|
||||
/*
|
||||
* Select two hyperslabs in memory. Hyperslabs has the same
|
||||
* size and shape as the selected hyperslabs for the file dataspace.
|
||||
*/
|
||||
start[0] = 0; start[1] = 0;
|
||||
block[0] = 1; block[1] = 1;
|
||||
stride[0] = 1; stride[1] = 1;
|
||||
count[0] = 3; count[1] = 4;
|
||||
mspace.selectHyperslab(H5S_SELECT_SET, count, start, stride, block);
|
||||
start[0] = 1; start[1] = 2;
|
||||
block[0] = 1; block[1] = 1;
|
||||
stride[0] = 1; stride[1] = 1;
|
||||
count[0] = 6; count[1] = 5;
|
||||
mspace.selectHyperslab(H5S_SELECT_OR, count, start, stride, block);
|
||||
|
||||
/*
|
||||
* Initialize data buffer.
|
||||
*/
|
||||
int matrix_out[MSPACE_DIM1][MSPACE_DIM2];
|
||||
for (i = 0; i < MSPACE_DIM1; i++)
|
||||
for (j = 0; j < MSPACE_DIM2; j++)
|
||||
matrix_out[i][j] = 0;
|
||||
|
||||
/*
|
||||
* Read data back to the buffer matrix.
|
||||
*/
|
||||
dataset->read(matrix_out, PredType::NATIVE_INT, mspace, fspace);
|
||||
|
||||
/*
|
||||
* Display the result. Memory dataset is:
|
||||
*
|
||||
* 10 0 11 12 0 0 0 0 0
|
||||
* 18 0 19 20 0 21 22 0 0
|
||||
* 0 59 0 61 0 0 0 0 0
|
||||
* 0 0 27 28 0 29 30 0 0
|
||||
* 0 0 35 36 67 37 38 0 0
|
||||
* 0 0 43 44 0 45 46 0 0
|
||||
* 0 0 0 0 0 0 0 0 0
|
||||
* 0 0 0 0 0 0 0 0 0
|
||||
*/
|
||||
for (i=0; i < MSPACE_DIM1; i++)
|
||||
{
|
||||
for(j=0; j < MSPACE_DIM2; j++)
|
||||
cout << matrix_out[i][j] << " ";
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
/*
|
||||
* Close the dataset and the file.
|
||||
*/
|
||||
delete dataset;
|
||||
delete file;
|
||||
} // end of try block
|
||||
|
||||
// catch failure caused by the H5File operations
|
||||
catch( FileIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// catch failure caused by the DataSet operations
|
||||
catch( DataSetIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// catch failure caused by the DataSpace operations
|
||||
catch( DataSpaceIException error )
|
||||
{
|
||||
error.printError();
|
||||
return -1;
|
||||
error.printError();
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user