From 1b28d0a5e3ed457094834452a8a3f46dc63ffb30 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Mon, 17 May 2004 23:38:23 -0500 Subject: [svn-r8535] Purpose: Add more C++ wrappers and documentation - incrementally check-in Description: Added class VarLenType to provide wrapper for: H5Tvlen_create Added wrapper for H5Tis_variable_str to DataType class Tests for the new wrappers will follow in a few weeks. Platforms: SunOS 5.7 (arabica) Linux 2.4 (eirene) Windows 2000 --- c++/src/H5VarLenType.cpp | 83 ++++++++++++++++++++++++++++++++++++++++++++++++ c++/src/H5VarLenType.h | 47 +++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 c++/src/H5VarLenType.cpp create mode 100644 c++/src/H5VarLenType.h diff --git a/c++/src/H5VarLenType.cpp b/c++/src/H5VarLenType.cpp new file mode 100644 index 0000000..45524f0 --- /dev/null +++ b/c++/src/H5VarLenType.cpp @@ -0,0 +1,83 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include + +#include "H5Include.h" +#include "H5RefCounter.h" +#include "H5Exception.h" +#include "H5IdComponent.h" +#include "H5PropList.h" +#include "H5Object.h" +#include "H5DataType.h" +#include "H5VarLenType.h" + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + + +//-------------------------------------------------------------------------- +// Function: VarLenType default constructor +///\brief Default constructor: Creates a stub variable-length datatype. +//-------------------------------------------------------------------------- +VarLenType::VarLenType() : DataType() {} + +//-------------------------------------------------------------------------- +// Function: VarLenType overloaded constructor +///\brief Creates an VarLenType object using an existing id. +///\param existing_id - IN: Id of an existing datatype +///\exception H5::DataTypeIException +// Programmer Binh-Minh Ribler - May, 2004 +//-------------------------------------------------------------------------- +VarLenType::VarLenType(const hid_t existing_id) : DataType(existing_id) {} + +//-------------------------------------------------------------------------- +// Function: VarLenType copy constructor +///\brief Copy constructor: makes a copy of the original VarLenType object. +// Programmer Binh-Minh Ribler - May, 2004 +//-------------------------------------------------------------------------- +VarLenType::VarLenType(const VarLenType& original) : DataType(original) {} + +//-------------------------------------------------------------------------- +// Function: VarLenType overloaded constructor +///\brief Creates a new variable-length datatype based on the specified +/// \a base_type. +///\param base_type - IN: Pointer to existing datatype +///\exception H5::DataTypeIException +// Description +// DataType passed by pointer to avoid clashing with copy +// constructor. +// Programmer Binh-Minh Ribler - May, 2004 +//-------------------------------------------------------------------------- +VarLenType::VarLenType(const DataType* base_type) : DataType() +{ + id = H5Tvlen_create(base_type->getId()); + if (id <= 0) + { + throw DataTypeIException("VarLenType constructor", + "H5Tvlen_create returns negative value"); + } +} + +//-------------------------------------------------------------------------- +// Function: VarLenType destructor +///\brief Properly terminates access to this datatype. +// Programmer Binh-Minh Ribler - May, 2004 +//-------------------------------------------------------------------------- +VarLenType::~VarLenType() {} + +#ifndef H5_NO_NAMESPACE +} // end namespace +#endif diff --git a/c++/src/H5VarLenType.h b/c++/src/H5VarLenType.h new file mode 100644 index 0000000..8a2572b --- /dev/null +++ b/c++/src/H5VarLenType.h @@ -0,0 +1,47 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * 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 * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +// Class VarLenType inherits from DataType and provides wrappers for +// the HDF5 C's Variable-length Datatypes. + +#ifndef _H5VarLenType_H +#define _H5VarLenType_H + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif +class H5_DLLCPP VarLenType : public DataType { + public: + // Constructor that creates a variable-length datatype based + // on the specified base type. + VarLenType(const DataType* base_type); + + // Copy constructor - makes copy of the original object + VarLenType( const VarLenType& original ); + + // Default destructor + virtual ~VarLenType(); + + protected: + // Default constructor + VarLenType(); + + // Constructor that takes an existing id + VarLenType( const hid_t existing_id ); +}; +#ifndef H5_NO_NAMESPACE +} +#endif +#endif -- cgit v0.12