![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 /**
00002 * MOAB, a Mesh-Oriented datABase, is a software component for creating,
00003 * storing and accessing finite element mesh data.
00004 *
00005 * Copyright 2004 Sandia Corporation. Under the terms of Contract
00006 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00007 * retains certain rights in this software.
00008 *
00009 * This library is free software; you can redistribute it and/or
00010 * modify it under the terms of the GNU Lesser General Public
00011 * License as published by the Free Software Foundation; either
00012 * version 2.1 of the License, or (at your option) any later version.
00013 *
00014 */
00015
00016 #include
00017 #include
00018 #include
00019 #include
00020 #include "file-handle.h"
00021 #include "status.h"
00022 #include "util.h"
00023
00024 #define FILE_HANDLE_MAGIC 0xFEEDFEED
00025
00026 int mhdf_check_valid_file( FileHandle* handle, mhdf_Status* status )
00027 {
00028 if( !handle )
00029 {
00030 mhdf_setFail( status, "NULL file handle." );
00031 return 0;
00032 }
00033
00034 if( handle->magic != FILE_HANDLE_MAGIC )
00035 {
00036 mhdf_setFail( status, "Invalid file handle." );
00037 return 0;
00038 }
00039
00040 return 1;
00041 }
00042
00043 FileHandle* mhdf_alloc_FileHandle( hid_t hdf_table, hid_t id_type, mhdf_Status* status )
00044 {
00045 FileHandle* rval;
00046
00047 /* check that id_type is sane */
00048 if( id_type == -1 )
00049 {
00050 id_type = H5T_NATIVE_ULONG;
00051 }
00052 else if( H5T_INTEGER != H5Tget_class( id_type ) )
00053 {
00054 mhdf_setFail( status, "Invalid ID type: not integer class" );
00055 return 0;
00056 }
00057
00058 rval = (FileHandle*)mhdf_malloc( sizeof( FileHandle ), status );
00059 if( !rval ) return NULL;
00060
00061 rval->magic = FILE_HANDLE_MAGIC;
00062 rval->hdf_handle = hdf_table;
00063 rval->open_handle_count = 0;
00064 rval->id_type = id_type;
00065 rval->max_id = 0L;
00066 return rval;
00067 }