238 lines
10 KiB
Cython
238 lines
10 KiB
Cython
# This file is part of h5py, a Python interface to the HDF5 library.
|
|
#
|
|
# http://www.h5py.org
|
|
#
|
|
# Copyright 2008-2013 Andrew Collette and contributors
|
|
#
|
|
# License: Standard 3-clause BSD; see "license.txt" for full license terms
|
|
# and contributor agreement.
|
|
|
|
from api_types_hdf5 cimport *
|
|
|
|
# Auto-set exception. Returns 1 if exception set, 0 if no HDF5 error found.
|
|
cdef int set_exception() except -1
|
|
|
|
cdef extern from "hdf5.h":
|
|
|
|
ctypedef enum H5E_major_t:
|
|
H5E_NONE_MAJOR = 0, # special zero, no error
|
|
H5E_ARGS, # invalid arguments to routine
|
|
H5E_RESOURCE, # resource unavailable
|
|
H5E_INTERNAL, # Internal error (too specific to document)
|
|
H5E_FILE, # file Accessability
|
|
H5E_IO, # Low-level I/O
|
|
H5E_FUNC, # function Entry/Exit
|
|
H5E_ATOM, # object Atom
|
|
H5E_CACHE, # object Cache
|
|
H5E_BTREE, # B-Tree Node
|
|
H5E_SYM, # symbol Table
|
|
H5E_HEAP, # Heap
|
|
H5E_OHDR, # object Header
|
|
H5E_DATATYPE, # Datatype
|
|
H5E_DATASPACE, # Dataspace
|
|
H5E_DATASET, # Dataset
|
|
H5E_STORAGE, # data storage
|
|
H5E_PLIST, # Property lists
|
|
H5E_ATTR, # Attribute
|
|
H5E_PLINE, # Data filters
|
|
H5E_EFL, # External file list
|
|
H5E_REFERENCE, # References
|
|
H5E_VFL, # Virtual File Layer
|
|
# H5E_TBBT, # Threaded, Balanced, Binary Trees (not in 1.8)
|
|
H5E_TST, # Ternary Search Trees
|
|
H5E_RS, # Reference Counted Strings
|
|
H5E_ERROR, # Error API
|
|
H5E_SLIST # Skip Lists
|
|
|
|
ctypedef enum H5E_minor_t:
|
|
|
|
# Generic low-level file I/O errors
|
|
H5E_SEEKERROR # Seek failed
|
|
H5E_READERROR # Read failed
|
|
H5E_WRITEERROR # Write failed
|
|
H5E_CLOSEERROR # Close failed
|
|
H5E_OVERFLOW # Address overflowed
|
|
H5E_FCNTL # File control (fcntl) failed
|
|
|
|
# Resource errors
|
|
H5E_NOSPACE # No space available for allocation
|
|
H5E_CANTALLOC # Can't allocate space
|
|
H5E_CANTCOPY # Unable to copy object
|
|
H5E_CANTFREE # Unable to free object
|
|
H5E_ALREADYEXISTS # Object already exists
|
|
H5E_CANTLOCK # Unable to lock object
|
|
H5E_CANTUNLOCK # Unable to unlock object
|
|
H5E_CANTGC # Unable to garbage collect
|
|
H5E_CANTGETSIZE # Unable to compute size
|
|
H5E_OBJOPEN # Object is already open
|
|
|
|
# Heap errors
|
|
H5E_CANTRESTORE # Can't restore condition
|
|
H5E_CANTCOMPUTE # Can't compute value
|
|
H5E_CANTEXTEND # Can't extend heap's space
|
|
H5E_CANTATTACH # Can't attach object
|
|
H5E_CANTUPDATE # Can't update object
|
|
H5E_CANTOPERATE # Can't operate on object
|
|
|
|
# Function entry/exit interface errors
|
|
H5E_CANTINIT # Unable to initialize object
|
|
H5E_ALREADYINIT # Object already initialized
|
|
H5E_CANTRELEASE # Unable to release object
|
|
|
|
# Property list errors
|
|
H5E_CANTGET # Can't get value
|
|
H5E_CANTSET # Can't set value
|
|
H5E_DUPCLASS # Duplicate class name in parent class
|
|
|
|
# Free space errors
|
|
H5E_CANTMERGE # Can't merge objects
|
|
H5E_CANTREVIVE # Can't revive object
|
|
H5E_CANTSHRINK # Can't shrink container
|
|
|
|
# Object header related errors
|
|
H5E_LINKCOUNT # Bad object header link
|
|
H5E_VERSION # Wrong version number
|
|
H5E_ALIGNMENT # Alignment error
|
|
H5E_BADMESG # Unrecognized message
|
|
H5E_CANTDELETE # Can't delete message
|
|
H5E_BADITER # Iteration failed
|
|
H5E_CANTPACK # Can't pack messages
|
|
H5E_CANTRESET # Can't reset object count
|
|
|
|
# System level errors
|
|
H5E_SYSERRSTR # System error message
|
|
|
|
# I/O pipeline errors
|
|
H5E_NOFILTER # Requested filter is not available
|
|
H5E_CALLBACK # Callback failed
|
|
H5E_CANAPPLY # Error from filter 'can apply' callback
|
|
H5E_SETLOCAL # Error from filter 'set local' callback
|
|
H5E_NOENCODER # Filter present but encoding disabled
|
|
H5E_CANTFILTER # Filter operation failed
|
|
|
|
# Group related errors
|
|
H5E_CANTOPENOBJ # Can't open object
|
|
H5E_CANTCLOSEOBJ # Can't close object
|
|
H5E_COMPLEN # Name component is too long
|
|
H5E_PATH # Problem with path to object
|
|
|
|
# No error
|
|
H5E_NONE_MINOR # No error
|
|
|
|
# File accessability errors
|
|
H5E_FILEEXISTS # File already exists
|
|
H5E_FILEOPEN # File already open
|
|
H5E_CANTCREATE # Unable to create file
|
|
H5E_CANTOPENFILE # Unable to open file
|
|
H5E_CANTCLOSEFILE # Unable to close file
|
|
H5E_NOTHDF5 # Not an HDF5 file
|
|
H5E_BADFILE # Bad file ID accessed
|
|
H5E_TRUNCATED # File has been truncated
|
|
H5E_MOUNT # File mount error
|
|
|
|
# Object atom related errors
|
|
H5E_BADATOM # Unable to find atom information (already closed?)
|
|
H5E_BADGROUP # Unable to find ID group information
|
|
H5E_CANTREGISTER # Unable to register new atom
|
|
H5E_CANTINC # Unable to increment reference count
|
|
H5E_CANTDEC # Unable to decrement reference count
|
|
H5E_NOIDS # Out of IDs for group
|
|
|
|
# Cache related errors
|
|
H5E_CANTFLUSH # Unable to flush data from cache
|
|
H5E_CANTSERIALIZE # Unable to serialize data from cache
|
|
H5E_CANTLOAD # Unable to load metadata into cache
|
|
H5E_PROTECT # Protected metadata error
|
|
H5E_NOTCACHED # Metadata not currently cached
|
|
H5E_SYSTEM # Internal error detected
|
|
H5E_CANTINS # Unable to insert metadata into cache
|
|
H5E_CANTRENAME # Unable to rename metadata
|
|
H5E_CANTPROTECT # Unable to protect metadata
|
|
H5E_CANTUNPROTECT # Unable to unprotect metadata
|
|
H5E_CANTPIN # Unable to pin cache entry
|
|
H5E_CANTUNPIN # Unable to un-pin cache entry
|
|
H5E_CANTMARKDIRTY # Unable to mark a pinned entry as dirty
|
|
H5E_CANTDIRTY # Unable to mark metadata as dirty
|
|
H5E_CANTEXPUNGE # Unable to expunge a metadata cache entry
|
|
H5E_CANTRESIZE # Unable to resize a metadata cache entry
|
|
|
|
# Link related errors
|
|
H5E_TRAVERSE # Link traversal failure
|
|
H5E_NLINKS # Too many soft links in path
|
|
H5E_NOTREGISTERED # Link class not registered
|
|
H5E_CANTMOVE # Move callback returned error
|
|
H5E_CANTSORT # Can't sort objects
|
|
|
|
# Parallel MPI errors
|
|
H5E_MPI # Some MPI function failed
|
|
H5E_MPIERRSTR # MPI Error String
|
|
H5E_CANTRECV # Can't receive data
|
|
|
|
# Dataspace errors
|
|
H5E_CANTCLIP # Can't clip hyperslab region
|
|
H5E_CANTCOUNT # Can't count elements
|
|
H5E_CANTSELECT # Can't select hyperslab
|
|
H5E_CANTNEXT # Can't move to next iterator location
|
|
H5E_BADSELECT # Invalid selection
|
|
H5E_CANTCOMPARE # Can't compare objects
|
|
|
|
# Argument errors
|
|
H5E_UNINITIALIZED # Information is uinitialized
|
|
H5E_UNSUPPORTED # Feature is unsupported
|
|
H5E_BADTYPE # Inappropriate type
|
|
H5E_BADRANGE # Out of range
|
|
H5E_BADVALUE # Bad value
|
|
|
|
# B-tree related errors
|
|
H5E_NOTFOUND # Object not found
|
|
H5E_EXISTS # Object already exists
|
|
H5E_CANTENCODE # Unable to encode value
|
|
H5E_CANTDECODE # Unable to decode value
|
|
H5E_CANTSPLIT # Unable to split node
|
|
H5E_CANTREDISTRIBUTE # Unable to redistribute records
|
|
H5E_CANTSWAP # Unable to swap records
|
|
H5E_CANTINSERT # Unable to insert object
|
|
H5E_CANTLIST # Unable to list node
|
|
H5E_CANTMODIFY # Unable to modify record
|
|
H5E_CANTREMOVE # Unable to remove object
|
|
|
|
# Datatype conversion errors
|
|
H5E_CANTCONVERT # Can't convert datatypes
|
|
H5E_BADSIZE # Bad size for object
|
|
|
|
cdef enum H5E_direction_t:
|
|
H5E_WALK_UPWARD = 0 # begin deep, end at API function
|
|
H5E_WALK_DOWNWARD = 1 # begin at API function, end deep
|
|
|
|
ctypedef struct H5E_error_t:
|
|
H5E_major_t maj_num # major error number
|
|
H5E_minor_t min_num # minor error number
|
|
char *func_name # function in which error occurred
|
|
char *file_name # file in which error occurred
|
|
unsigned line # line in file where error occurs
|
|
char *desc # optional supplied description
|
|
|
|
char *H5Eget_major(H5E_major_t n)
|
|
char *H5Eget_minor(H5E_minor_t n)
|
|
herr_t H5Eclear() except *
|
|
|
|
ctypedef herr_t (*H5E_auto_t)(void *client_data)
|
|
herr_t H5Eset_auto(H5E_auto_t func, void *client_data)
|
|
herr_t H5Eget_auto(H5E_auto_t *func, void** client_data)
|
|
|
|
herr_t H5Eprint(void *stream)
|
|
|
|
ctypedef herr_t (*H5E_walk_t)(int n, H5E_error_t *err_desc, void* client_data)
|
|
herr_t H5Ewalk(H5E_direction_t direction, H5E_walk_t func, void* client_data)
|
|
|
|
# --- Functions for managing the HDF5 error callback mechanism ---
|
|
|
|
ctypedef struct err_cookie:
|
|
# Defines the error handler state (callback and callback data)
|
|
H5E_auto_t func
|
|
void *data
|
|
|
|
# Set (via H5Eset_auto) the HDF5 error handler for this thread. Returns
|
|
# the old (presently installed) handler.
|
|
cdef err_cookie set_error_handler(err_cookie handler)
|
|
|