summaryrefslogtreecommitdiffstats
path: root/c++/src/H5DataType.C
diff options
context:
space:
mode:
Diffstat (limited to 'c++/src/H5DataType.C')
-rw-r--r--c++/src/H5DataType.C341
1 files changed, 0 insertions, 341 deletions
diff --git a/c++/src/H5DataType.C b/c++/src/H5DataType.C
deleted file mode 100644
index b376f61..0000000
--- a/c++/src/H5DataType.C
+++ /dev/null
@@ -1,341 +0,0 @@
-#include <string>
-
-#include "H5Include.h"
-#include "H5RefCounter.h"
-#include "H5Exception.h"
-#include "H5IdComponent.h"
-#include "H5Idtemplates.h"
-#include "H5PropList.h"
-#include "H5Object.h"
-#include "H5DataType.h"
-#include "H5AtomType.h"
-#include "H5PredType.h"
-
-#ifndef H5_NO_NAMESPACE
-namespace H5 {
-#endif
-
-// Constructor creates a copy of an existing DataType using its id.
-// 'predefined' is default to false; when a default datatype is
-// created, this argument is set to true so H5Tclose will not be
-// called on it later.
-DataType::DataType( const hid_t existing_id, bool predefined ) : H5Object( existing_id ), is_predtype( predefined ) {
-}
-
-// Creates a datatype given its class and size
-DataType::DataType( const H5T_class_t type_class, size_t size ) : H5Object(), is_predtype( false )
-{
- // Call C routine to create the new datatype
- id = H5Tcreate( type_class, size );
- if( id <= 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Default constructor
-DataType::DataType() : H5Object(), is_predtype( false )
-{
-}
-
-// Copy constructor: makes a copy of this DataType object.
-DataType::DataType( const DataType& original ) : H5Object( original )
-{
- is_predtype = original.is_predtype; // copy data member from original
-}
-
-// Copies an existing datatype to this datatype object
-void DataType::copy( const DataType& like_type )
-{
- // reset the identifier of this instance, H5Tclose will be called
- // if needed
- resetIdComponent( this );
-
- // call C routine to copy the datatype
- id = H5Tcopy( like_type.getId() );
- ref_count = like_type.ref_count;
-
- // increment ref counter to indicate additional references to this id
- ref_count->increment();
-
- if( id <= 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Determines whether two datatypes are the same. ???
-bool DataType::operator==(const DataType& compared_type ) const
-{
- // Call C routine H5Tequal to determines whether two datatype
- // identifiers refer to the same datatype
- htri_t ret_value = H5Tequal( id, compared_type.getId() );
- if( ret_value > 0 )
- return true;
- else if( ret_value == 0 )
- return false;
- else
- {
- throw DataTypeIException();
- }
-}
-
-// Operates a user's function on each attribute of an object - commented
-// out because it should use the one from H5Object; need to check
-// the parameter list???
-//int DataType::iterate( unsigned * idx, H5A_operator_t op, void *op_data )
-//{
- // Call C routine H5Aiterate to iterate the object's attributes
- //int ret_value = H5Aiterate( id, idx, op, op_data );
- //if( ret_value >= 0 )
- //return( ret_value );
- //else
- //{
- //throw DataTypeIException();
- //}
-//}
-
-// Creates a new variable-length datatype - Note: make it inheritance???
-//DataType DataType::vlenCreate( const DataType& base_type )
-//{
- // Call C routine to create a new VL datatype
- //hid_t type_id = H5Tvlen_create( id );
- //if( type_id > 0 )
- //id_obj->setId( type_id );
- //else
- //{
- //throw DataTypeIException();
- //}
-//}
-
-// Commits a transient datatype to a file, creating a new named datatype
-void DataType::commit( H5Object& loc, const string& name ) const
-{
- commit( loc, name.c_str() );
-}
-void DataType::commit( H5Object& loc, const char* name ) const
-{
- hid_t loc_id = loc.getId(); // get location id for C API
-
- // Call C routine to commit the transient datatype
- herr_t ret_value = H5Tcommit( loc_id, name, id );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Determines whether a datatype is a named type or a transient type.
-bool DataType::committed() const
-{
- // Call C function to determine if a datatype is a named one
- htri_t committed = H5Tcommitted( id );
- if( committed > 0 )
- return true;
- else if( committed == 0 )
- return false;
- else
- {
- throw DataTypeIException();
- }
-}
-
-// Finds a conversion function.
-H5T_conv_t DataType::find( const DataType& dest, H5T_cdata_t **pcdata ) const
-{
- // Call C routine to find the conversion function
- H5T_conv_t func = H5Tfind( id, dest.getId(), pcdata );
- if( func == NULL )
- {
- throw DataTypeIException();
- }
- return( func );
-}
-
-// Converts data from between specified datatypes.
-void DataType::convert( const DataType& dest, size_t nelmts, void *buf, void *background, PropList& plist ) const
-{
- // Get identifiers for C API
- hid_t dest_id = dest.getId();
- hid_t plist_id = plist.getId();
-
- // Call C routine H5Tconvert to convert the data
- herr_t ret_value;
- ret_value = H5Tconvert( id, dest_id, nelmts, buf, background, plist_id );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Sets the overflow handler to a specified function.
-void DataType::setOverflow( H5T_overflow_t func ) const
-{
- // Call C routine H5Tset_overflow to set the overflow handler
- herr_t ret_value = H5Tset_overflow( func );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Returns a pointer to the current global overflow function.
-H5T_overflow_t DataType::getOverflow(void) const
-{
- return( H5Tget_overflow()); // C routine
- // NULL can be returned as well
-}
-
-// Locks a datatype.
-void DataType::lock() const
-{
- // Call C routine to lock the datatype
- herr_t ret_value = H5Tlock( id );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Returns the datatype class identifier.
-H5T_class_t DataType::getClass() const
-{
- H5T_class_t type_class = H5Tget_class( id );
-
- // Return datatype class identifier if successful
- if( type_class == H5T_NO_CLASS )
- {
- throw DataTypeIException();
- }
- return( type_class );
-}
-
-// Returns the size of a datatype.
-size_t DataType::getSize() const
-{
- // Call C routine to get the datatype size
- size_t type_size = H5Tget_size( id );
- if( type_size <= 0 ) // Is 0 valid value ???
- {
- throw DataTypeIException();
- }
- return( type_size );
-}
-
-// Returns the base datatype from which a datatype is derived.
-// - just for DataType?
-DataType DataType::getSuper() const
-{
- // Call C routine to get the base datatype from which the specified
- // datatype is derived.
- hid_t base_type_id = H5Tget_super( id );
-
- // If H5Tget_super returns a valid datatype id, create and return
- // the base type, otherwise, raise exception
- if( base_type_id > 0 )
- {
- DataType base_type( base_type_id );
- return( base_type );
- }
- else {}
- {
- throw DataTypeIException();
- }
-}
-
-// Registers the specified conversion function.
-void DataType::registerFunc( H5T_pers_t pers, const string& name, const DataType& dest, H5T_conv_t func ) const
-{
- registerFunc( pers, name.c_str(), dest, func );
-}
-void DataType::registerFunc( H5T_pers_t pers, const char* name, const DataType& dest, H5T_conv_t func ) const
-{
- hid_t dest_id = dest.getId(); // get id of the destination datatype
-
- // Call C routine H5Tregister to register the conversion function
- herr_t ret_value = H5Tregister( pers, name, id, dest_id, func );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Removes a conversion function from all conversion paths.
-void DataType::unregister( H5T_pers_t pers, const string& name, const DataType& dest, H5T_conv_t func ) const
-{
- unregister( pers, name.c_str(), dest, func );
-}
-void DataType::unregister( H5T_pers_t pers, const char* name, const DataType& dest, H5T_conv_t func ) const
-{
- hid_t dest_id = dest.getId(); // get id of the dest datatype for C API
-
- // Call C routine H5Tunregister to remove the conversion function
- herr_t ret_value = H5Tunregister( pers, name, id, dest_id, func );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Tags an opaque datatype.
-void DataType::setTag( const string& tag ) const
-{
- setTag( tag.c_str());
-}
-void DataType::setTag( const char* tag ) const
-{
- // Call C routine H5Tset_tag to tag an opaque datatype.
- herr_t ret_value = H5Tset_tag( id, tag );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
-}
-
-// Gets the tag associated with an opaque datatype.
-string DataType::getTag() const
-{
- char* tag_Cstr = H5Tget_tag( id );
-
- // if the tag C-string returned is not NULL, convert it to C++ string
- // and return it, otherwise, raise an exception
- if( tag_Cstr != NULL )
- {
- string tag = string( tag_Cstr );
- return( tag );
- }
- else
- {
- throw DataTypeIException();
- }
-}
-
-// This private function calls the C API H5Tclose to close this datatype.
-// Used by H5Object::p_reset.
-void DataType::p_close() const
-{
- // If this datatype is not a predefined type, call H5Tclose on it.
- if( is_predtype == false )
- {
- herr_t ret_value = H5Tclose( id );
- if( ret_value < 0 )
- {
- throw DataTypeIException();
- }
- }
-}
-
-// The destructor of this instance calls IdComponent::reset to
-// reset its identifier - no longer true
-// Older compilers (baldric) don't support template member functions
-// and IdComponent::reset is one; so at this time, the resetId is not
-// a member function so it can be template to work around that problem.
-DataType::~DataType()
-{
- // The datatype id will be closed properly
- resetIdComponent( this );
-}
-
-#ifndef H5_NO_NAMESPACE
-} // end namespace
-#endif