1use std::collections::HashMap;
41use std::fmt::{self, Display};
42use std::sync::LazyLock;
43
44use hdf5_sys::h5i::hid_t;
45
46use crate::globals::*;
47
48macro_rules! error_codes {
56 (
57 $(#[$emeta:meta])*
58 $name:ident, $table:ident;
59
60 variants { $( $(#[$vdoc:meta])* $variant:ident, )* }
61 symbols { $( $([$scfg:meta])? $global:ident => $svariant:ident, )* }
62 meta { $( $([$mcfg:meta])? $mvariant:ident => ($cname:literal, $desc:literal), )* }
63 ) => {
64 $(#[$emeta])*
65 #[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
66 #[non_exhaustive]
67 pub enum $name {
68 $(
69 $(#[$vdoc])*
70 $variant,
71 )*
72 Other(hid_t),
76 }
77
78 pub(crate) static $table: LazyLock<HashMap<hid_t, $name>> = LazyLock::new(|| {
82 let mut map = HashMap::new();
83 $(
84 $(#[cfg($scfg)])?
85 map.insert(*$global, $name::$svariant);
86 )*
87 map
88 });
89
90 impl $name {
91 #[must_use]
93 pub fn from_id(id: hid_t) -> Self {
94 $table.get(&id).copied().unwrap_or(Self::Other(id))
95 }
96
97 #[must_use]
101 pub fn name(self) -> Option<&'static str> {
102 match self {
103 $( $(#[cfg($mcfg)])? Self::$mvariant => Some($cname), )*
104 Self::Other(_) => None,
105 }
106 }
107
108 #[must_use]
112 pub fn description(self) -> Option<&'static str> {
113 match self {
114 $( $(#[cfg($mcfg)])? Self::$mvariant => Some($desc), )*
115 Self::Other(_) => None,
116 }
117 }
118
119 #[must_use]
121 pub fn all() -> &'static [Self] {
122 &[ $( Self::$variant, )* ]
123 }
124 }
125
126 impl Display for $name {
127 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
128 match *self {
129 Self::Other(id) => write!(f, "unknown error code ({id})"),
130 ref code => f.write_str(code.description().unwrap_or("unknown error code")),
131 }
132 }
133 }
134 };
135}
136
137error_codes! {
138 MajorErrorCode, MAJOR_CODES;
140
141 variants {
142 Args,
144 Attr,
146 BTree,
148 Cache,
150 Context,
152 Dataset,
154 Dataspace,
156 Datatype,
158 ErrorApi,
160 EventSet,
162 ExtensibleArray,
164 ExternalFileList,
166 File,
168 FixedArray,
170 FreeSpace,
172 Func,
174 Heap,
176 Id,
178 Internal,
180 Io,
182 Lib,
184 Link,
186 Map,
188 NoneMajor,
190 ObjectHeader,
192 PageBuffering,
194 Pipeline,
196 Plugin,
198 PropertyList,
200 RTree,
202 RefCountedString,
204 Reference,
206 Resource,
208 SharedObjectHeaderMessage,
210 SkipList,
212 Storage,
214 SymbolTable,
216 TernarySearchTree,
218 Threadsafety,
220 VirtualFileLayer,
222 VirtualObjectLayer,
224 }
225
226 symbols {
227 H5E_ARGS => Args,
228 H5E_ATTR => Attr,
229 H5E_BTREE => BTree,
230 H5E_CACHE => Cache,
231 [feature = "1.10.3"] H5E_CONTEXT => Context,
232 H5E_DATASET => Dataset,
233 H5E_DATASPACE => Dataspace,
234 H5E_DATATYPE => Datatype,
235 H5E_ERROR => ErrorApi,
236 [feature = "1.14.0"] H5E_EVENTSET => EventSet,
237 [feature = "1.10.0"] H5E_EARRAY => ExtensibleArray,
238 H5E_EFL => ExternalFileList,
239 H5E_FILE => File,
240 [feature = "1.10.0"] H5E_FARRAY => FixedArray,
241 H5E_FSPACE => FreeSpace,
242 H5E_FUNC => Func,
243 H5E_HEAP => Heap,
244 [not(feature = "1.14.0")] H5E_ATOM => Id,
245 [feature = "1.14.0"] H5E_ID => Id,
246 H5E_INTERNAL => Internal,
247 H5E_IO => Io,
248 [feature = "1.12.1"] H5E_LIB => Lib,
249 H5E_LINK => Link,
250 [feature = "1.12.0"] H5E_MAP => Map,
251 H5E_NONE_MAJOR => NoneMajor,
252 H5E_OHDR => ObjectHeader,
253 [feature = "1.10.1"] H5E_PAGEBUF => PageBuffering,
254 H5E_PLINE => Pipeline,
255 [feature = "1.8.11"] H5E_PLUGIN => Plugin,
256 H5E_PLIST => PropertyList,
257 [feature = "2.0.0"] H5E_RTREE => RTree,
258 H5E_RS => RefCountedString,
259 H5E_REFERENCE => Reference,
260 H5E_RESOURCE => Resource,
261 H5E_SOHM => SharedObjectHeaderMessage,
262 H5E_SLIST => SkipList,
263 H5E_STORAGE => Storage,
264 H5E_SYM => SymbolTable,
265 H5E_TST => TernarySearchTree,
266 [feature = "2.0.0"] H5E_THREADSAFE => Threadsafety,
267 H5E_VFL => VirtualFileLayer,
268 [feature = "1.12.0"] H5E_VOL => VirtualObjectLayer,
269 }
270
271 meta {
272 Args => ("H5E_ARGS", "Invalid arguments to routine"),
273 Attr => ("H5E_ATTR", "Attribute"),
274 BTree => ("H5E_BTREE", "B-Tree node"),
275 Cache => ("H5E_CACHE", "Object cache"),
276 Context => ("H5E_CONTEXT", "API Context"),
277 Dataset => ("H5E_DATASET", "Dataset"),
278 Dataspace => ("H5E_DATASPACE", "Dataspace"),
279 Datatype => ("H5E_DATATYPE", "Datatype"),
280 ErrorApi => ("H5E_ERROR", "Error API"),
281 EventSet => ("H5E_EVENTSET", "Event Set"),
282 ExtensibleArray => ("H5E_EARRAY", "Extensible Array"),
283 ExternalFileList => ("H5E_EFL", "External file list"),
284 File => ("H5E_FILE", "File accessibility"),
285 FixedArray => ("H5E_FARRAY", "Fixed Array"),
286 FreeSpace => ("H5E_FSPACE", "Free Space Manager"),
287 Func => ("H5E_FUNC", "Function entry/exit"),
288 Heap => ("H5E_HEAP", "Heap"),
289 [feature = "1.14.0"] Id => ("H5E_ID", "Object ID"),
290 [not(feature = "1.14.0")] Id => ("H5E_ATOM", "Object atom"),
291 Internal => ("H5E_INTERNAL", "Internal error (too specific to document in detail)"),
292 Io => ("H5E_IO", "Low-level I/O"),
293 Lib => ("H5E_LIB", "General library infrastructure"),
294 Link => ("H5E_LINK", "Links"),
295 Map => ("H5E_MAP", "Map"),
296 NoneMajor => ("H5E_NONE_MAJOR", "No error"),
297 ObjectHeader => ("H5E_OHDR", "Object header"),
298 PageBuffering => ("H5E_PAGEBUF", "Page Buffering"),
299 Pipeline => ("H5E_PLINE", "Data filters"),
300 Plugin => ("H5E_PLUGIN", "Plugin for dynamically loaded library"),
301 PropertyList => ("H5E_PLIST", "Property lists"),
302 RTree => ("H5E_RTREE", "R-Tree spatial index"),
303 RefCountedString => ("H5E_RS", "Reference Counted Strings"),
304 Reference => ("H5E_REFERENCE", "References"),
305 Resource => ("H5E_RESOURCE", "Resource unavailable"),
306 SharedObjectHeaderMessage => ("H5E_SOHM", "Shared Object Header Messages"),
307 SkipList => ("H5E_SLIST", "Skip Lists"),
308 Storage => ("H5E_STORAGE", "Data storage"),
309 SymbolTable => ("H5E_SYM", "Symbol table"),
310 TernarySearchTree => ("H5E_TST", "Ternary Search Trees"),
311 Threadsafety => ("H5E_THREADSAFE", "Threadsafety"),
312 VirtualFileLayer => ("H5E_VFL", "Virtual File Layer"),
313 VirtualObjectLayer => ("H5E_VOL", "Virtual Object Layer"),
314 }
315}
316
317error_codes! {
318 MinorErrorCode, MINOR_CODES;
320
321 variants {
322 Alignment,
324 AlreadyExists,
326 AlreadyInit,
328 BadFile,
330 BadGroup,
332 BadId,
334 BadIter,
336 BadMessage,
338 BadRange,
340 BadSelect,
342 BadSize,
344 BadType,
346 BadValue,
348 Callback,
350 CanApply,
352 CantAlloc,
354 CantAppend,
356 CantAttach,
358 CantCancel,
360 CantClean,
362 CantClip,
364 CantCloseFile,
366 CantCloseObj,
368 CantCompare,
370 CantCompute,
372 CantConvert,
374 CantCopy,
376 CantCork,
378 CantCount,
380 CantCreate,
382 CantDec,
384 CantDecode,
386 CantDelete,
388 CantDeleteFile,
390 CantDepend,
392 CantDirty,
394 CantEncode,
396 CantExpunge,
398 CantExtend,
400 CantFilter,
402 CantFind,
404 CantFlush,
406 CantFree,
408 CantGather,
410 CantGc,
412 CantGet,
414 CantGetSize,
416 CantInc,
418 CantInit,
420 CantIns,
422 CantInsert,
424 CantList,
426 CantLoad,
428 CantLock,
430 CantLockFile,
432 CantMarkClean,
434 CantMarkDirty,
436 CantMarkSerialized,
438 CantMarkUnserialized,
440 CantMerge,
442 CantModify,
444 CantMove,
446 CantNext,
448 CantNotify,
450 CantOpenFile,
452 CantOpenObj,
454 CantOperate,
456 CantPack,
458 CantPin,
460 CantProtect,
462 CantPut,
464 CantRecv,
466 CantRedistribute,
468 CantRegister,
470 CantRelease,
472 CantRemove,
474 CantRename,
476 CantReset,
478 CantResize,
480 CantRestore,
482 CantRevive,
484 CantSelect,
486 CantSerialize,
488 CantSet,
490 CantShrink,
492 CantSort,
494 CantSplit,
496 CantSwap,
498 CantTag,
500 CantUncork,
502 CantUndepend,
504 CantUnlock,
506 CantUnlockFile,
508 CantUnpin,
510 CantUnprotect,
512 CantUnserialize,
514 CantUpdate,
516 CantWait,
518 CloseError,
520 CompLen,
522 DupClass,
524 Exists,
526 Fcntl,
528 FileExists,
530 FileOpen,
532 InconsistentState,
534 LinkCount,
536 Logging,
538 Mount,
540 Mpi,
542 MpiErrStr,
544 NLinks,
546 NoEncoder,
548 NoFilter,
550 NoIds,
552 NoIndependent,
554 NoSpace,
556 NoneMinor,
558 NotCached,
560 NotFound,
562 NotHdf5,
564 NotRegistered,
566 ObjOpen,
568 OpenError,
570 Overflow,
572 Path,
574 Protect,
576 ReadError,
578 SeekError,
580 SetDisallowed,
582 SetLocal,
584 SysErrStr,
586 System,
588 Traverse,
590 Truncated,
592 Uninitialized,
594 Unmount,
596 Unsupported,
598 Version,
600 WriteError,
602 }
603
604 symbols {
605 H5E_ALIGNMENT => Alignment,
606 H5E_ALREADYEXISTS => AlreadyExists,
607 H5E_ALREADYINIT => AlreadyInit,
608 H5E_BADFILE => BadFile,
609 H5E_BADGROUP => BadGroup,
610 [not(feature = "1.14.0")] H5E_BADATOM => BadId,
611 [feature = "1.14.0"] H5E_BADID => BadId,
612 H5E_BADITER => BadIter,
613 H5E_BADMESG => BadMessage,
614 H5E_BADRANGE => BadRange,
615 H5E_BADSELECT => BadSelect,
616 H5E_BADSIZE => BadSize,
617 H5E_BADTYPE => BadType,
618 H5E_BADVALUE => BadValue,
619 H5E_CALLBACK => Callback,
620 H5E_CANAPPLY => CanApply,
621 H5E_CANTALLOC => CantAlloc,
622 [feature = "1.10.0"] H5E_CANTAPPEND => CantAppend,
623 H5E_CANTATTACH => CantAttach,
624 [feature = "1.14.0"] H5E_CANTCANCEL => CantCancel,
625 [feature = "1.10.1"] H5E_CANTCLEAN => CantClean,
626 H5E_CANTCLIP => CantClip,
627 H5E_CANTCLOSEFILE => CantCloseFile,
628 H5E_CANTCLOSEOBJ => CantCloseObj,
629 H5E_CANTCOMPARE => CantCompare,
630 H5E_CANTCOMPUTE => CantCompute,
631 H5E_CANTCONVERT => CantConvert,
632 H5E_CANTCOPY => CantCopy,
633 [feature = "1.10.0"] H5E_CANTCORK => CantCork,
634 H5E_CANTCOUNT => CantCount,
635 H5E_CANTCREATE => CantCreate,
636 H5E_CANTDEC => CantDec,
637 H5E_CANTDECODE => CantDecode,
638 H5E_CANTDELETE => CantDelete,
639 [feature = "1.12.0"] H5E_CANTDELETEFILE => CantDeleteFile,
640 [feature = "1.10.0"] H5E_CANTDEPEND => CantDepend,
641 H5E_CANTDIRTY => CantDirty,
642 H5E_CANTENCODE => CantEncode,
643 H5E_CANTEXPUNGE => CantExpunge,
644 H5E_CANTEXTEND => CantExtend,
645 H5E_CANTFILTER => CantFilter,
646 [feature = "1.14.0"] H5E_CANTFIND => CantFind,
647 H5E_CANTFLUSH => CantFlush,
648 H5E_CANTFREE => CantFree,
649 [feature = "1.10.2"] H5E_CANTGATHER => CantGather,
650 H5E_CANTGC => CantGc,
651 H5E_CANTGET => CantGet,
652 H5E_CANTGETSIZE => CantGetSize,
653 H5E_CANTINC => CantInc,
654 H5E_CANTINIT => CantInit,
655 H5E_CANTINS => CantIns,
656 H5E_CANTINSERT => CantInsert,
657 H5E_CANTLIST => CantList,
658 H5E_CANTLOAD => CantLoad,
659 H5E_CANTLOCK => CantLock,
660 [any(all(feature = "1.10.7", not(feature = "1.12.0")), feature = "1.12.1")] H5E_CANTLOCKFILE => CantLockFile,
661 [feature = "1.10.1"] H5E_CANTMARKCLEAN => CantMarkClean,
662 H5E_CANTMARKDIRTY => CantMarkDirty,
663 [feature = "1.10.1"] H5E_CANTMARKSERIALIZED => CantMarkSerialized,
664 [feature = "1.10.1"] H5E_CANTMARKUNSERIALIZED => CantMarkUnserialized,
665 H5E_CANTMERGE => CantMerge,
666 H5E_CANTMODIFY => CantModify,
667 H5E_CANTMOVE => CantMove,
668 H5E_CANTNEXT => CantNext,
669 [feature = "1.10.0"] H5E_CANTNOTIFY => CantNotify,
670 H5E_CANTOPENFILE => CantOpenFile,
671 H5E_CANTOPENOBJ => CantOpenObj,
672 H5E_CANTOPERATE => CantOperate,
673 H5E_CANTPACK => CantPack,
674 H5E_CANTPIN => CantPin,
675 H5E_CANTPROTECT => CantProtect,
676 [feature = "1.14.0"] H5E_CANTPUT => CantPut,
677 H5E_CANTRECV => CantRecv,
678 H5E_CANTREDISTRIBUTE => CantRedistribute,
679 H5E_CANTREGISTER => CantRegister,
680 H5E_CANTRELEASE => CantRelease,
681 H5E_CANTREMOVE => CantRemove,
682 H5E_CANTRENAME => CantRename,
683 H5E_CANTRESET => CantReset,
684 H5E_CANTRESIZE => CantResize,
685 H5E_CANTRESTORE => CantRestore,
686 H5E_CANTREVIVE => CantRevive,
687 H5E_CANTSELECT => CantSelect,
688 H5E_CANTSERIALIZE => CantSerialize,
689 H5E_CANTSET => CantSet,
690 H5E_CANTSHRINK => CantShrink,
691 H5E_CANTSORT => CantSort,
692 H5E_CANTSPLIT => CantSplit,
693 H5E_CANTSWAP => CantSwap,
694 [feature = "1.10.0"] H5E_CANTTAG => CantTag,
695 [feature = "1.10.0"] H5E_CANTUNCORK => CantUncork,
696 [feature = "1.10.0"] H5E_CANTUNDEPEND => CantUndepend,
697 H5E_CANTUNLOCK => CantUnlock,
698 [any(all(feature = "1.10.7", not(feature = "1.12.0")), feature = "1.12.1")] H5E_CANTUNLOCKFILE => CantUnlockFile,
699 H5E_CANTUNPIN => CantUnpin,
700 H5E_CANTUNPROTECT => CantUnprotect,
701 [feature = "1.10.1"] H5E_CANTUNSERIALIZE => CantUnserialize,
702 H5E_CANTUPDATE => CantUpdate,
703 [feature = "1.14.0"] H5E_CANTWAIT => CantWait,
704 H5E_CLOSEERROR => CloseError,
705 H5E_COMPLEN => CompLen,
706 H5E_DUPCLASS => DupClass,
707 H5E_EXISTS => Exists,
708 H5E_FCNTL => Fcntl,
709 H5E_FILEEXISTS => FileExists,
710 H5E_FILEOPEN => FileOpen,
711 [feature = "1.10.7"] H5E_INCONSISTENTSTATE => InconsistentState,
712 H5E_LINKCOUNT => LinkCount,
713 [all(feature = "1.10.0", not(feature = "1.12.0"))] H5E_LOGFAIL => Logging,
714 [feature = "1.10.5"] H5E_LOGGING => Logging,
715 H5E_MOUNT => Mount,
716 H5E_MPI => Mpi,
717 H5E_MPIERRSTR => MpiErrStr,
718 H5E_NLINKS => NLinks,
719 H5E_NOENCODER => NoEncoder,
720 H5E_NOFILTER => NoFilter,
721 H5E_NOIDS => NoIds,
722 [feature = "1.10.2"] H5E_NO_INDEPENDENT => NoIndependent,
723 H5E_NOSPACE => NoSpace,
724 H5E_NONE_MINOR => NoneMinor,
725 H5E_NOTCACHED => NotCached,
726 H5E_NOTFOUND => NotFound,
727 H5E_NOTHDF5 => NotHdf5,
728 H5E_NOTREGISTERED => NotRegistered,
729 H5E_OBJOPEN => ObjOpen,
730 [feature = "1.8.11"] H5E_OPENERROR => OpenError,
731 H5E_OVERFLOW => Overflow,
732 H5E_PATH => Path,
733 H5E_PROTECT => Protect,
734 H5E_READERROR => ReadError,
735 H5E_SEEKERROR => SeekError,
736 [feature = "1.8.9"] H5E_SETDISALLOWED => SetDisallowed,
737 H5E_SETLOCAL => SetLocal,
738 H5E_SYSERRSTR => SysErrStr,
739 H5E_SYSTEM => System,
740 H5E_TRAVERSE => Traverse,
741 H5E_TRUNCATED => Truncated,
742 H5E_UNINITIALIZED => Uninitialized,
743 [feature = "1.14.0"] H5E_UNMOUNT => Unmount,
744 H5E_UNSUPPORTED => Unsupported,
745 H5E_VERSION => Version,
746 H5E_WRITEERROR => WriteError,
747 }
748
749 meta {
750 Alignment => ("H5E_ALIGNMENT", "Alignment error"),
751 AlreadyExists => ("H5E_ALREADYEXISTS", "Object already exists"),
752 AlreadyInit => ("H5E_ALREADYINIT", "Object already initialized"),
753 BadFile => ("H5E_BADFILE", "Bad file ID accessed"),
754 BadGroup => ("H5E_BADGROUP", "Unable to find ID group information"),
755 [feature = "1.14.0"] BadId => ("H5E_BADID", "Unable to find ID information (already closed?)"),
756 [not(feature = "1.14.0")] BadId => ("H5E_BADATOM", "Unable to find atom information (already closed?)"),
757 BadIter => ("H5E_BADITER", "Iteration failed"),
758 BadMessage => ("H5E_BADMESG", "Unrecognized message"),
759 BadRange => ("H5E_BADRANGE", "Out of range"),
760 BadSelect => ("H5E_BADSELECT", "Invalid selection"),
761 BadSize => ("H5E_BADSIZE", "Bad size for object"),
762 BadType => ("H5E_BADTYPE", "Inappropriate type"),
763 BadValue => ("H5E_BADVALUE", "Bad value"),
764 Callback => ("H5E_CALLBACK", "Callback failed"),
765 CanApply => ("H5E_CANAPPLY", "Error from filter 'can apply' callback"),
766 CantAlloc => ("H5E_CANTALLOC", "Can't allocate space"),
767 CantAppend => ("H5E_CANTAPPEND", "Can't append object"),
768 CantAttach => ("H5E_CANTATTACH", "Can't attach object"),
769 CantCancel => ("H5E_CANTCANCEL", "Can't cancel operation"),
770 CantClean => ("H5E_CANTCLEAN", "Unable to mark metadata as clean"),
771 CantClip => ("H5E_CANTCLIP", "Can't clip hyperslab region"),
772 CantCloseFile => ("H5E_CANTCLOSEFILE", "Unable to close file"),
773 CantCloseObj => ("H5E_CANTCLOSEOBJ", "Can't close object"),
774 CantCompare => ("H5E_CANTCOMPARE", "Can't compare objects"),
775 CantCompute => ("H5E_CANTCOMPUTE", "Can't compute value"),
776 CantConvert => ("H5E_CANTCONVERT", "Can't convert datatypes"),
777 CantCopy => ("H5E_CANTCOPY", "Unable to copy object"),
778 CantCork => ("H5E_CANTCORK", "Unable to cork an object"),
779 CantCount => ("H5E_CANTCOUNT", "Can't count elements"),
780 CantCreate => ("H5E_CANTCREATE", "Unable to create file"),
781 CantDec => ("H5E_CANTDEC", "Unable to decrement reference count"),
782 CantDecode => ("H5E_CANTDECODE", "Unable to decode value"),
783 CantDelete => ("H5E_CANTDELETE", "Can't delete message"),
784 CantDeleteFile => ("H5E_CANTDELETEFILE", "Unable to delete file"),
785 CantDepend => ("H5E_CANTDEPEND", "Unable to create a flush dependency"),
786 CantDirty => ("H5E_CANTDIRTY", "Unable to mark metadata as dirty"),
787 CantEncode => ("H5E_CANTENCODE", "Unable to encode value"),
788 CantExpunge => ("H5E_CANTEXPUNGE", "Unable to expunge a metadata cache entry"),
789 CantExtend => ("H5E_CANTEXTEND", "Can't extend heap's space"),
790 CantFilter => ("H5E_CANTFILTER", "Filter operation failed"),
791 CantFind => ("H5E_CANTFIND", "Unable to check for record"),
792 CantFlush => ("H5E_CANTFLUSH", "Unable to flush data from cache"),
793 CantFree => ("H5E_CANTFREE", "Unable to free object"),
794 CantGather => ("H5E_CANTGATHER", "Can't gather data"),
795 CantGc => ("H5E_CANTGC", "Unable to garbage collect"),
796 CantGet => ("H5E_CANTGET", "Can't get value"),
797 CantGetSize => ("H5E_CANTGETSIZE", "Unable to compute size"),
798 CantInc => ("H5E_CANTINC", "Unable to increment reference count"),
799 CantInit => ("H5E_CANTINIT", "Unable to initialize object"),
800 CantIns => ("H5E_CANTINS", "Unable to insert metadata into cache"),
801 CantInsert => ("H5E_CANTINSERT", "Unable to insert object"),
802 CantList => ("H5E_CANTLIST", "Unable to list node"),
803 CantLoad => ("H5E_CANTLOAD", "Unable to load metadata into cache"),
804 CantLock => ("H5E_CANTLOCK", "Unable to lock object"),
805 CantLockFile => ("H5E_CANTLOCKFILE", "Unable to lock file"),
806 CantMarkClean => ("H5E_CANTMARKCLEAN", "Unable to mark a pinned entry as clean"),
807 CantMarkDirty => ("H5E_CANTMARKDIRTY", "Unable to mark a pinned entry as dirty"),
808 CantMarkSerialized => ("H5E_CANTMARKSERIALIZED", "Unable to mark an entry as serialized"),
809 CantMarkUnserialized => ("H5E_CANTMARKUNSERIALIZED", "Unable to mark an entry as unserialized"),
810 CantMerge => ("H5E_CANTMERGE", "Can't merge objects"),
811 CantModify => ("H5E_CANTMODIFY", "Unable to modify record"),
812 CantMove => ("H5E_CANTMOVE", "Can't move object"),
813 CantNext => ("H5E_CANTNEXT", "Can't move to next iterator location"),
814 CantNotify => ("H5E_CANTNOTIFY", "Unable to notify object about action"),
815 CantOpenFile => ("H5E_CANTOPENFILE", "Unable to open file"),
816 CantOpenObj => ("H5E_CANTOPENOBJ", "Can't open object"),
817 CantOperate => ("H5E_CANTOPERATE", "Can't operate on object"),
818 CantPack => ("H5E_CANTPACK", "Can't pack messages"),
819 CantPin => ("H5E_CANTPIN", "Unable to pin cache entry"),
820 CantProtect => ("H5E_CANTPROTECT", "Unable to protect metadata"),
821 CantPut => ("H5E_CANTPUT", "Can't put value"),
822 CantRecv => ("H5E_CANTRECV", "Can't receive data"),
823 CantRedistribute => ("H5E_CANTREDISTRIBUTE", "Unable to redistribute records"),
824 CantRegister => ("H5E_CANTREGISTER", "Unable to register new ID"),
825 CantRelease => ("H5E_CANTRELEASE", "Unable to release object"),
826 CantRemove => ("H5E_CANTREMOVE", "Unable to remove object"),
827 CantRename => ("H5E_CANTRENAME", "Unable to rename object"),
828 CantReset => ("H5E_CANTRESET", "Can't reset object"),
829 CantResize => ("H5E_CANTRESIZE", "Unable to resize a metadata cache entry"),
830 CantRestore => ("H5E_CANTRESTORE", "Can't restore condition"),
831 CantRevive => ("H5E_CANTREVIVE", "Can't revive object"),
832 CantSelect => ("H5E_CANTSELECT", "Can't select hyperslab"),
833 CantSerialize => ("H5E_CANTSERIALIZE", "Unable to serialize data from cache"),
834 CantSet => ("H5E_CANTSET", "Can't set value"),
835 CantShrink => ("H5E_CANTSHRINK", "Can't shrink container"),
836 CantSort => ("H5E_CANTSORT", "Can't sort objects"),
837 CantSplit => ("H5E_CANTSPLIT", "Unable to split node"),
838 CantSwap => ("H5E_CANTSWAP", "Unable to swap records"),
839 CantTag => ("H5E_CANTTAG", "Unable to tag metadata in the cache"),
840 CantUncork => ("H5E_CANTUNCORK", "Unable to uncork an object"),
841 CantUndepend => ("H5E_CANTUNDEPEND", "Unable to destroy a flush dependency"),
842 CantUnlock => ("H5E_CANTUNLOCK", "Unable to unlock object"),
843 CantUnlockFile => ("H5E_CANTUNLOCKFILE", "Unable to unlock file"),
844 CantUnpin => ("H5E_CANTUNPIN", "Unable to un-pin cache entry"),
845 CantUnprotect => ("H5E_CANTUNPROTECT", "Unable to unprotect metadata"),
846 CantUnserialize => ("H5E_CANTUNSERIALIZE", "Unable to mark metadata as unserialized"),
847 CantUpdate => ("H5E_CANTUPDATE", "Can't update object"),
848 CantWait => ("H5E_CANTWAIT", "Can't wait on operation"),
849 CloseError => ("H5E_CLOSEERROR", "Close failed"),
850 CompLen => ("H5E_COMPLEN", "Name component is too long"),
851 DupClass => ("H5E_DUPCLASS", "Duplicate class name in parent class"),
852 Exists => ("H5E_EXISTS", "Object already exists"),
853 Fcntl => ("H5E_FCNTL", "File control (fcntl) failed"),
854 FileExists => ("H5E_FILEEXISTS", "File already exists"),
855 FileOpen => ("H5E_FILEOPEN", "File already open"),
856 InconsistentState => ("H5E_INCONSISTENTSTATE", "Internal states are inconsistent"),
857 LinkCount => ("H5E_LINKCOUNT", "Bad object header link count"),
858 [all(feature = "1.10.0", not(feature = "1.10.5"))] Logging => ("H5E_LOGFAIL", "Failure in the cache logging framework"),
859 [not(all(feature = "1.10.0", not(feature = "1.10.5")))] Logging => ("H5E_LOGGING", "Failure in the cache logging framework"),
860 Mount => ("H5E_MOUNT", "File mount error"),
861 Mpi => ("H5E_MPI", "Some MPI function failed"),
862 MpiErrStr => ("H5E_MPIERRSTR", "MPI Error String"),
863 NLinks => ("H5E_NLINKS", "Too many soft links in path"),
864 NoEncoder => ("H5E_NOENCODER", "Filter present but encoding disabled"),
865 NoFilter => ("H5E_NOFILTER", "Requested filter is not available"),
866 NoIds => ("H5E_NOIDS", "Out of IDs for group"),
867 NoIndependent => ("H5E_NO_INDEPENDENT", "Can't perform independent IO"),
868 NoSpace => ("H5E_NOSPACE", "No space available for allocation"),
869 NoneMinor => ("H5E_NONE_MINOR", "No error"),
870 NotCached => ("H5E_NOTCACHED", "Metadata not currently cached"),
871 NotFound => ("H5E_NOTFOUND", "Object not found"),
872 NotHdf5 => ("H5E_NOTHDF5", "Not an HDF5 file"),
873 NotRegistered => ("H5E_NOTREGISTERED", "Link class not registered"),
874 ObjOpen => ("H5E_OBJOPEN", "Object is already open"),
875 OpenError => ("H5E_OPENERROR", "Can't open directory or file"),
876 Overflow => ("H5E_OVERFLOW", "Address overflowed"),
877 Path => ("H5E_PATH", "Problem with path to object"),
878 Protect => ("H5E_PROTECT", "Protected metadata error"),
879 ReadError => ("H5E_READERROR", "Read failed"),
880 SeekError => ("H5E_SEEKERROR", "Seek failed"),
881 SetDisallowed => ("H5E_SETDISALLOWED", "Disallowed operation"),
882 SetLocal => ("H5E_SETLOCAL", "Error from filter 'set local' callback"),
883 SysErrStr => ("H5E_SYSERRSTR", "System error message"),
884 System => ("H5E_SYSTEM", "Internal error detected"),
885 Traverse => ("H5E_TRAVERSE", "Link traversal failure"),
886 Truncated => ("H5E_TRUNCATED", "File has been truncated"),
887 Uninitialized => ("H5E_UNINITIALIZED", "Information is uinitialized"),
888 Unmount => ("H5E_UNMOUNT", "File unmount error"),
889 Unsupported => ("H5E_UNSUPPORTED", "Feature is unsupported"),
890 Version => ("H5E_VERSION", "Wrong version number"),
891 WriteError => ("H5E_WRITEERROR", "Write failed"),
892 }
893}