LCOV - code coverage report
Current view: top level - error - error_t.hpp (source / functions) Coverage Total Hit
Test: mxlib Lines: 1.4 % 440 6
Test Date: 2026-02-19 16:58:26 Functions: 50.0 % 2 1

            Line data    Source code
       1              : /** \file error_t.hpp
       2              :  *  \brief The mxlib error_t type and utilities
       3              :  *  \ingroup error_handling_files
       4              :  */
       5              : 
       6              : /* **********  THIS FILE IS GENERATED  ********** */
       7              : /* ********** DO NOT MODIFY OR COMMIT  ********** */
       8              : 
       9              : #include <fitsio.h>
      10              : 
      11              : #ifdef MXLIB_CUDA
      12              : #include <cuda_runtime.h>
      13              : #endif //MXLIB_CUDA
      14              : 
      15              : #ifndef mx_error_t_hpp
      16              : #define mx_error_t_hpp
      17              : 
      18              : namespace mx
      19              : {
      20              : 
      21              : 
      22              : /// The mxlib error codes
      23              : /** \ingroup error_handling_codes
      24              :  */
      25              : enum class error_t
      26              : {
      27              :     noerror,                                ///< No error has occurred
      28              :     error,                                  ///< A general error has occurred
      29              :     invalidarg,                             ///< An argument was invalid
      30              :     invalidconfig,                          ///< A config setting was invalid
      31              :     notimpl,                                ///< A component or technique is not implemented
      32              :     paramnotset,                            ///< A parameter was not set
      33              :     envnotset,                              ///< A environment variable was not set
      34              :     notfound,                               ///< An item was not found
      35              :     sizeerr,                                ///< A size was invalid or calculated incorrectly
      36              :     allocerr,                               ///< An error occurred during memory allocation
      37              :     freeerr,                                ///< An error occurred during memory de-allocation
      38              :     parseerr,                               ///< A parsing error occurred
      39              :     filesystem,                             ///< A general filesystem error occurred
      40              :     fileoerr,                               ///< An error occurred while opening a file
      41              :     filewerr,                               ///< An error occurred while writing to a file
      42              :     filererr,                               ///< An error occurred while reading from a file
      43              :     filecerr,                               ///< An error occurred while closing a file
      44              :     filenotfound,                           ///< The file was not found
      45              :     fileempty,                              ///< The file is empty
      46              :     dirnotfound,                            ///< The directory was not found
      47              :     dirempty,                               ///< The directory was empty
      48              :     procerr,                                ///< An error occurred while starting a process
      49              :     timeout,                                ///< A timeout occurred
      50              :     liberr,                                 ///< An error was returned by a library
      51              :     exception,                              ///< An exception was thrown
      52              :     std_exception,                          ///< An exception was thrown
      53              :     std_bad_alloc,                          ///< A bad allocation exception was thrown
      54              :     std_logic_error,                        ///< A logic error exception was thrown
      55              :     std_invalid_argument,                   ///< An invalid argument exception was thrown
      56              :     std_domain_error,                       ///< A domain error exception was thrown
      57              :     std_length_error,                       ///< A length error exception was thrown
      58              :     std_out_of_range,                       ///< An out of range exception was thrown
      59              :     std_future_error,                       ///< A future error exception was thrown
      60              :     std_bad_optional_access,                ///< A bad optional access exception was thrown
      61              :     std_filesystem_error,                   ///< A filesystem error exception was thrown
      62              :     std_runtime_error,                      ///< A runtime error exception was thrown
      63              :     std_range_error,                        ///< A range error exception was thrown
      64              :     std_overflow_error,                     ///< An overflow exception was thrown
      65              :     std_underflow_error,                    ///< An underflow exception was thrown
      66              :     std_ios_base_failure,                   ///< An ios::base::failure exception was thrown
      67              :     std_format_error,                       ///< A format library exception was thrown
      68              :     gnuploterr,                             ///< An error was returned by gnuplot
      69              :     lapackerr,                              ///< An error was returned by Lapack
      70              :     e2big,                                  ///< Argument list too long (E2BIG)
      71              :     eacces,                                 ///< Permission denied (EACCES)
      72              :     eaddrinuse,                             ///< Address already in use (EADDRINUSE)
      73              :     eaddrnotavail,                          ///< Cannot assign requested address (EADDRNOTAVAIL)
      74              :     eafnosupport,                           ///< Address family not supported by protocol (EAFNOSUPPORT)
      75              :     eagain,                                 ///< Resource temporarily unavailable (EAGAIN)
      76              :     ealready,                               ///< Operation already in progress (EALREADY)
      77              :     ebadf,                                  ///< Bad file descriptor (EBADF)
      78              :     ebadmsg,                                ///< Bad message (EBADMSG)
      79              :     ebusy,                                  ///< Device or resource busy (EBUSY)
      80              :     ecanceled,                              ///< Operation canceled (ECANCELED)
      81              :     echild,                                 ///< No child processes (ECHILD)
      82              :     econnaborted,                           ///< Software caused connection abort (ECONNABORTED)
      83              :     econnrefused,                           ///< Connection refused (ECONNREFUSED)
      84              :     econnreset,                             ///< Connection reset by peer (ECONNRESET)
      85              :     edestaddrreq,                           ///< Destination address required (EDESTADDRREQ)
      86              :     edom,                                   ///< Numerical argument out of domain (EDOM)
      87              :     eexist,                                 ///< File exists (EEXIST)
      88              :     efault,                                 ///< Bad address (EFAULT)
      89              :     efbig,                                  ///< File too large (EFBIG)
      90              :     ehostunreach,                           ///< No route to host (EHOSTUNREACH)
      91              :     eidrm,                                  ///< Identifier removed (EIDRM)
      92              :     eilseq,                                 ///< Invalid or incomplete multibyte or wide character (EILSEQ)
      93              :     einprogress,                            ///< Operation now in progress (EINPROGRESS)
      94              :     eintr,                                  ///< Interrupted system call (EINTR)
      95              :     einval,                                 ///< Invalid argument (EINVAL)
      96              :     eio,                                    ///< Input/output error (EIO)
      97              :     eisconn,                                ///< Transport endpoint is already connected (EISCONN)
      98              :     eisdir,                                 ///< Is a directory (EISDIR)
      99              :     eloop,                                  ///< Too many levels of symbolic links (ELOOP)
     100              :     emfile,                                 ///< Too many open files (EMFILE)
     101              :     emlink,                                 ///< Too many links (EMLINK)
     102              :     emsgsize,                               ///< Message too long (EMSGSIZE)
     103              :     enametoolong,                           ///< File name too long (ENAMETOOLONG)
     104              :     enetdown,                               ///< Network is down (ENETDOWN)
     105              :     enetreset,                              ///< Network dropped connection on reset (ENETRESET)
     106              :     enetunreach,                            ///< Network is unreachable (ENETUNREACH)
     107              :     enfile,                                 ///< Too many open files in system (ENFILE)
     108              :     enobufs,                                ///< No buffer space available (ENOBUFS)
     109              :     enodata,                                ///< No data available (ENODATA)
     110              :     enodev,                                 ///< No such device (ENODEV)
     111              :     enoent,                                 ///< No such file or directory (ENOENT)
     112              :     enoexec,                                ///< Exec format error (ENOEXEC)
     113              :     enolck,                                 ///< No locks available (ENOLCK)
     114              :     enolink,                                ///< Link has been severed (ENOLINK)
     115              :     enomem,                                 ///< Cannot allocate memory (ENOMEM)
     116              :     enomsg,                                 ///< No message of desired type (ENOMSG)
     117              :     enoprotoopt,                            ///< Protocol not available (ENOPROTOOPT)
     118              :     enospc,                                 ///< No space left on device (ENOSPC)
     119              :     enosr,                                  ///< Out of streams resources (ENOSR)
     120              :     enostr,                                 ///< Device not a stream (ENOSTR)
     121              :     enosys,                                 ///< Function not implemented (ENOSYS)
     122              :     enotconn,                               ///< Transport endpoint is not connected (ENOTCONN)
     123              :     enotdir,                                ///< Not a directory (ENOTDIR)
     124              :     enotempty,                              ///< Directory not empty (ENOTEMPTY)
     125              :     enotrecoverable,                        ///< State not recoverable (ENOTRECOVERABLE)
     126              :     enotsock,                               ///< Socket operation on non-socket (ENOTSOCK)
     127              :     enotsup,                                ///< Operation not supported (ENOTSUP)
     128              :     enotty,                                 ///< Inappropriate ioctl for device (ENOTTY)
     129              :     enxio,                                  ///< No such device or address (ENXIO)
     130              :     eopnotsupp,                             ///< Operation not supported (EOPNOTSUPP)
     131              :     eoverflow,                              ///< Value too large for defined data type (EOVERFLOW)
     132              :     eownerdead,                             ///< Owner died (EOWNERDEAD)
     133              :     eperm,                                  ///< Operation not permitted (EPERM)
     134              :     epipe,                                  ///< Broken pipe (EPIPE)
     135              :     eproto,                                 ///< Protocol error (EPROTO)
     136              :     eprotonosupport,                        ///< Protocol not supported (EPROTONOSUPPORT)
     137              :     eprototype,                             ///< Protocol wrong type for socket (EPROTOTYPE)
     138              :     erange,                                 ///< Numerical result out of range (ERANGE)
     139              :     erofs,                                  ///< Read-only file system (EROFS)
     140              :     espipe,                                 ///< Illegal seek (ESPIPE)
     141              :     esrch,                                  ///< No such process (ESRCH)
     142              :     etime,                                  ///< Timer expired (ETIME)
     143              :     etimedout,                              ///< Connection timed out (ETIMEDOUT)
     144              :     etxtbsy,                                ///< Text file busy (ETXTBSY)
     145              :     ewouldblock,                            ///< Resource temporarily unavailable (EWOULDBLOCK)
     146              :     exdev,                                  ///< Invalid cross-device link (EXDEV)
     147              :     fits_same_file,                         ///< FITS: input and output files are the same
     148              :     fits_too_many_files,                    ///< FITS: tried to open too many FITS files at once
     149              :     fits_file_not_opened,                   ///< FITS: could not open the named file
     150              :     fits_file_not_created,                  ///< FITS: could not create the named file
     151              :     fits_write_error,                       ///< FITS: error writing to FITS file
     152              :     fits_end_of_file,                       ///< FITS: tried to move past end of file
     153              :     fits_read_error,                        ///< FITS: error reading from FITS file
     154              :     fits_file_not_closed,                   ///< FITS: could not close the file
     155              :     fits_array_too_big,                     ///< FITS: array dimensions exceed internal limit
     156              :     fits_readonly_file,                     ///< FITS: Cannot write to readonly file
     157              :     fits_memory_allocation,                 ///< FITS: Could not allocate memory
     158              :     fits_bad_fileptr,                       ///< FITS: invalid fitsfile pointer
     159              :     fits_null_input_ptr,                    ///< FITS: NULL input pointer to routine
     160              :     fits_seek_error,                        ///< FITS: error seeking position in file
     161              :     fits_bad_nettimeout,                    ///< FITS: bad value for file download timeout setting
     162              :     fits_bad_url_prefix,                    ///< FITS: invalid URL prefix on file name
     163              :     fits_too_many_drivers,                  ///< FITS: tried to register too many IO drivers
     164              :     fits_driver_init_failed,                ///< FITS: driver initialization failed
     165              :     fits_no_matching_driver,                ///< FITS: matching driver is not registered
     166              :     fits_url_parse_error,                   ///< FITS: failed to parse input file URL
     167              :     fits_range_parse_error,                 ///< FITS: parse error in range list
     168              :     fits_shared_badarg,                     ///< FITS: bad argument in shared memory driver
     169              :     fits_shared_nulptr,                     ///< FITS: null pointer passed as an argument
     170              :     fits_shared_tabfull,                    ///< FITS: no more free shared memory handles
     171              :     fits_shared_notinit,                    ///< FITS: shared memory driver is not initialized
     172              :     fits_shared_ipcerr,                     ///< FITS: IPC error returned by a system call
     173              :     fits_shared_nomem,                      ///< FITS: no memory in shared memory driver
     174              :     fits_shared_again,                      ///< FITS: resource deadlock would occur
     175              :     fits_shared_nofile,                     ///< FITS: attempt to open/create lock file failed
     176              :     fits_shared_noresize,                   ///< FITS: shared memory block cannot be resized at the moment
     177              :     fits_header_not_empty,                  ///< FITS: header already contains keywords
     178              :     fits_key_no_exist,                      ///< FITS: keyword not found in header
     179              :     fits_key_out_bounds,                    ///< FITS: keyword record number is out of bounds
     180              :     fits_value_undefined,                   ///< FITS: keyword value field is blank
     181              :     fits_no_quote,                          ///< FITS: string is missing the closing quote
     182              :     fits_bad_index_key,                     ///< FITS: illegal indexed keyword name (e.g. 'TFORM1000')
     183              :     fits_bad_keychar,                       ///< FITS: illegal character in keyword name or card
     184              :     fits_bad_order,                         ///< FITS: required keywords out of order
     185              :     fits_not_pos_int,                       ///< FITS: keyword value is not a positive integer
     186              :     fits_no_end,                            ///< FITS: couldn't find END keyword
     187              :     fits_bad_bitpix,                        ///< FITS: illegal BITPIX keyword value
     188              :     fits_bad_naxis,                         ///< FITS: illegal NAXIS keyword value
     189              :     fits_bad_naxes,                         ///< FITS: illegal NAXISn keyword value
     190              :     fits_bad_pcount,                        ///< FITS: illegal PCOUNT keyword value
     191              :     fits_bad_gcount,                        ///< FITS: illegal GCOUNT keyword value
     192              :     fits_bad_tfields,                       ///< FITS: illegal TFIELDS keyword value
     193              :     fits_neg_width,                         ///< FITS: negative table row size
     194              :     fits_neg_rows,                          ///< FITS: negative number of rows in table
     195              :     fits_col_not_found,                     ///< FITS: column with this name not found in table
     196              :     fits_bad_simple,                        ///< FITS: illegal value of SIMPLE keyword
     197              :     fits_no_simple,                         ///< FITS: Primary array doesn't start with SIMPLE
     198              :     fits_no_bitpix,                         ///< FITS: Second keyword not BITPIX
     199              :     fits_no_naxis,                          ///< FITS: Third keyword not NAXIS
     200              :     fits_no_naxes,                          ///< FITS: Couldn't find all the NAXISn keywords
     201              :     fits_no_xtension,                       ///< FITS: HDU doesn't start with XTENSION keyword
     202              :     fits_not_atable,                        ///< FITS: the CHDU is not an ASCII table extension
     203              :     fits_not_btable,                        ///< FITS: the CHDU is not a binary table extension
     204              :     fits_no_pcount,                         ///< FITS: couldn't find PCOUNT keyword
     205              :     fits_no_gcount,                         ///< FITS: couldn't find GCOUNT keyword
     206              :     fits_no_tfields,                        ///< FITS: couldn't find TFIELDS keyword
     207              :     fits_no_tbcol,                          ///< FITS: couldn't find TBCOLn keyword
     208              :     fits_no_tform,                          ///< FITS: couldn't find TFORMn keyword
     209              :     fits_not_image,                         ///< FITS: the CHDU is not an IMAGE extension
     210              :     fits_bad_tbcol,                         ///< FITS: TBCOLn keyword value < 0 or > rowlength
     211              :     fits_not_table,                         ///< FITS: the CHDU is not a table
     212              :     fits_col_too_wide,                      ///< FITS: column is too wide to fit in table
     213              :     fits_col_not_unique,                    ///< FITS: more than 1 column name matches template
     214              :     fits_bad_row_width,                     ///< FITS: sum of column widths not = NAXIS1
     215              :     fits_unknown_ext,                       ///< FITS: unrecognizable FITS extension type
     216              :     fits_unknown_rec,                       ///< FITS: unknown record; 1st keyword not SIMPLE or XTENSION
     217              :     fits_end_junk,                          ///< FITS: END keyword is not blank
     218              :     fits_bad_header_fill,                   ///< FITS: Header fill area contains non-blank chars
     219              :     fits_bad_data_fill,                     ///< FITS: Illegal data fill bytes (not zero or blank)
     220              :     fits_bad_tform,                         ///< FITS: illegal TFORM format code
     221              :     fits_bad_tform_dtype,                   ///< FITS: unrecognizable TFORM data type code
     222              :     fits_bad_tdim,                          ///< FITS: illegal TDIMn keyword value
     223              :     fits_bad_heap_ptr,                      ///< FITS: invalid BINTABLE heap pointer is out of range
     224              :     fits_bad_hdu_num,                       ///< FITS: HDU number < 1
     225              :     fits_bad_col_num,                       ///< FITS: column number < 1 or > tfields
     226              :     fits_neg_file_pos,                      ///< FITS: tried to move to negative byte location in file
     227              :     fits_neg_bytes,                         ///< FITS: tried to read or write negative number of bytes
     228              :     fits_bad_row_num,                       ///< FITS: illegal starting row number in table
     229              :     fits_bad_elem_num,                      ///< FITS: illegal starting element number in vector
     230              :     fits_not_ascii_col,                     ///< FITS: this is not an ASCII string column
     231              :     fits_not_logical_col,                   ///< FITS: this is not a logical data type column
     232              :     fits_bad_atable_format,                 ///< FITS: ASCII table column has wrong format
     233              :     fits_bad_btable_format,                 ///< FITS: Binary table column has wrong format
     234              :     fits_no_null,                           ///< FITS: null value has not been defined
     235              :     fits_not_vari_len,                      ///< FITS: this is not a variable length column
     236              :     fits_bad_dimen,                         ///< FITS: illegal number of dimensions in array
     237              :     fits_bad_pix_num,                       ///< FITS: first pixel number greater than last pixel
     238              :     fits_zero_scale,                        ///< FITS: illegal BSCALE or TSCALn keyword = 0
     239              :     fits_neg_axis,                          ///< FITS: illegal axis length < 1
     240              :     fits_not_group_table,                   ///< FITS: Grouping function error
     241              :     fits_hdu_already_member,                ///< FITS: hdu already member
     242              :     fits_member_not_found,                  ///< FITS: member not found
     243              :     fits_group_not_found,                   ///< FITS: group not found
     244              :     fits_bad_group_id,                      ///< FITS: bad group id
     245              :     fits_too_many_hdus_tracked,             ///< FITS: too many hdus tracked
     246              :     fits_hdu_already_tracked,               ///< FITS: hdu already tracked
     247              :     fits_bad_option,                        ///< FITS: bad option
     248              :     fits_identical_pointers,                ///< FITS: identical pointers
     249              :     fits_bad_group_attach,                  ///< FITS: bad group attach
     250              :     fits_bad_group_detach,                  ///< FITS: bad group detach
     251              :     fits_ngp_no_memory,                     ///< FITS: malloc failed
     252              :     fits_ngp_read_err,                      ///< FITS: read error from file
     253              :     fits_ngp_nul_ptr,                       ///< FITS: null pointer passed as an argument.
     254              :     fits_ngp_empty_curline,                 ///< FITS: line read seems to be empty (used
     255              :     fits_ngp_unread_queue_full,             ///< FITS: cannot unread more then 1 line
     256              :     fits_ngp_inc_nesting,                   ///< FITS: too deep include file nesting 
     257              :     fits_ngp_err_fopen,                     ///< FITS: fopen() failed, cannot open template file
     258              :     fits_ngp_eof,                           ///< FITS: end of file encountered and not expected
     259              :     fits_ngp_bad_arg,                       ///< FITS: bad arguments passed.
     260              :     fits_ngp_token_not_expect,              ///< FITS: token not expected here
     261              :     fits_bad_i2c,                           ///< FITS: bad int to formatted string conversion
     262              :     fits_bad_f2c,                           ///< FITS: bad float to formatted string conversion
     263              :     fits_bad_intkey,                        ///< FITS: can't interpret keyword value as integer
     264              :     fits_bad_logicalkey,                    ///< FITS: can't interpret keyword value as logical
     265              :     fits_bad_floatkey,                      ///< FITS: can't interpret keyword value as float
     266              :     fits_bad_doublekey,                     ///< FITS: can't interpret keyword value as double
     267              :     fits_bad_c2i,                           ///< FITS: bad formatted string to int conversion
     268              :     fits_bad_c2f,                           ///< FITS: bad formatted string to float conversion
     269              :     fits_bad_c2d,                           ///< FITS: bad formatted string to double conversion
     270              :     fits_bad_datatype,                      ///< FITS: illegal datatype code value
     271              :     fits_bad_decim,                         ///< FITS: bad number of decimal places specified
     272              :     fits_num_overflow,                      ///< FITS: overflow during data type conversion
     273              :     fits_data_compression_err,              ///< FITS: error compressing image
     274              :     fits_data_decompression_err,            ///< FITS: error uncompressing image
     275              :     fits_bad_date,                          ///< FITS: error in date or time conversion
     276              :     fits_parse_syntax_err,                  ///< FITS: syntax error in parser expression
     277              :     fits_parse_bad_type,                    ///< FITS: expression did not evaluate to desired type
     278              :     fits_parse_lrg_vector,                  ///< FITS: vector result too large to return in array
     279              :     fits_parse_no_output,                   ///< FITS: data parser failed not sent an out column
     280              :     fits_parse_bad_col,                     ///< FITS: bad data encounter while parsing column
     281              :     fits_parse_bad_output,                  ///< FITS: Output file not of proper type
     282              :     fits_angle_too_big,                     ///< FITS: celestial angle too large for projection
     283              :     fits_bad_wcs_val,                       ///< FITS: bad celestial coordinate or pixel value
     284              :     fits_wcs_error,                         ///< FITS: error in celestial coordinate calculation
     285              :     fits_bad_wcs_proj,                      ///< FITS: unsupported type of celestial projection
     286              :     fits_no_wcs_key,                        ///< FITS: celestial coordinate keywords not found
     287              :     fits_approx_wcs_key,                    ///< FITS: approximate wcs keyword values were returned
     288              :     cuda_success,                           ///< CUDA: no error
     289              :     cuda_invalid_value,                     ///< CUDA: invalid argument
     290              :     cuda_memory_allocation,                 ///< CUDA: out of memory
     291              :     cuda_initialization_error,              ///< CUDA: initialization error
     292              :     cuda_cudart_unloading,                  ///< CUDA: driver shutting down
     293              :     cuda_profiler_disabled,                 ///< CUDA: profiler disabled while using external profiling tool
     294              :     cuda_profiler_not_initialized,          ///< CUDA: profiler not initialized: call cudaProfilerInitialize()
     295              :     cuda_profiler_already_started,          ///< CUDA: profiler already started
     296              :     cuda_profiler_already_stopped,          ///< CUDA: profiler already stopped
     297              :     cuda_invalid_configuration,             ///< CUDA: invalid configuration argument
     298              :     cuda_invalid_pitch_value,               ///< CUDA: invalid pitch argument
     299              :     cuda_invalid_symbol,                    ///< CUDA: invalid device symbol
     300              :     cuda_invalid_host_pointer,              ///< CUDA: invalid host pointer
     301              :     cuda_invalid_device_pointer,            ///< CUDA: invalid device pointer
     302              :     cuda_invalid_texture,                   ///< CUDA: invalid texture reference
     303              :     cuda_invalid_texture_binding,           ///< CUDA: texture is not bound to a pointer
     304              :     cuda_invalid_channel_descriptor,        ///< CUDA: invalid channel descriptor
     305              :     cuda_invalid_memcpy_direction,          ///< CUDA: invalid copy direction for memcpy
     306              :     cuda_address_of_constant,               ///< CUDA: invalid address of constant
     307              :     cuda_texture_fetch_failed,              ///< CUDA: fetch from texture failed
     308              :     cuda_texture_not_bound,                 ///< CUDA: cannot fetch from a texture that is not bound
     309              :     cuda_synchronization_error,             ///< CUDA: incorrect use of __syncthreads()
     310              :     cuda_invalid_filter_setting,            ///< CUDA: linear filtering not supported for non-float type
     311              :     cuda_invalid_norm_setting,              ///< CUDA: read as normalized float not supported for 32-bit non float type
     312              :     cuda_mixed_device_execution,            ///< CUDA: device emulation mode and device execution mode cannot be mixed
     313              :     cuda_not_yet_implemented,               ///< CUDA: feature not yet implemented
     314              :     cuda_memory_value_too_large,            ///< CUDA: memory size or pointer value too large to fit in 32 bit
     315              :     cuda_stub_library,                      ///< CUDA: CUDA driver is a stub library
     316              :     cuda_insufficient_driver,               ///< CUDA: CUDA driver version is insufficient for CUDA runtime version
     317              :     cuda_call_requires_newer_driver,        ///< CUDA: API call is not supported in the installed CUDA driver
     318              :     cuda_invalid_surface,                   ///< CUDA: invalid surface reference
     319              :     cuda_duplicate_variable_name,           ///< CUDA: duplicate global variable looked up by string name
     320              :     cuda_duplicate_texture_name,            ///< CUDA: duplicate texture looked up by string name
     321              :     cuda_duplicate_surface_name,            ///< CUDA: duplicate surface looked up by string name
     322              :     cuda_devices_unavailable,               ///< CUDA: CUDA-capable device(s) is/are busy or unavailable
     323              :     cuda_incompatible_driver_context,       ///< CUDA: incompatible driver context
     324              :     cuda_missing_configuration,             ///< CUDA: __global__ function call is not configured
     325              :     cuda_prior_launch_failure,              ///< CUDA: unspecified launch failure in prior launch
     326              :     cuda_launch_max_depth_exceeded,         ///< CUDA: launch would exceed maximum depth of nested launches
     327              :     cuda_launch_file_scoped_tex,            ///< CUDA: launch failed because kernel uses unsupported, file-scoped textures (texture objects are supported)
     328              :     cuda_launch_file_scoped_surf,           ///< CUDA: launch failed because kernel uses unsupported, file-scoped surfaces (surface objects are supported)
     329              :     cuda_sync_depth_exceeded,               ///< CUDA: cudaDeviceSynchronize failed because caller's grid depth exceeds cudaLimitDevRuntimeSyncDepth
     330              :     cuda_launch_pending_count_exceeded,     ///< CUDA: launch failed because launch would exceed cudaLimitDevRuntimePendingLaunchCount
     331              :     cuda_invalid_device_function,           ///< CUDA: invalid device function
     332              :     cuda_no_device,                         ///< CUDA: no CUDA-capable device is detected
     333              :     cuda_invalid_device,                    ///< CUDA: invalid device ordinal
     334              :     cuda_device_not_licensed,               ///< CUDA: device doesn't have valid Grid license
     335              :     cuda_software_validity_not_established, ///< CUDA: integrity checks failed
     336              :     cuda_startup_failure,                   ///< CUDA: startup failure in cuda runtime
     337              :     cuda_invalid_kernel_image,              ///< CUDA: device kernel image is invalid
     338              :     cuda_device_uninitialized,              ///< CUDA: invalid device context
     339              :     cuda_map_buffer_object_failed,          ///< CUDA: mapping of buffer object failed
     340              :     cuda_unmap_buffer_object_failed,        ///< CUDA: unmapping of buffer object failed
     341              :     cuda_array_is_mapped,                   ///< CUDA: array is mapped
     342              :     cuda_already_mapped,                    ///< CUDA: resource already mapped
     343              :     cuda_no_kernel_image_for_device,        ///< CUDA: no kernel image is available for execution on the device
     344              :     cuda_already_acquired,                  ///< CUDA: resource already acquired
     345              :     cuda_not_mapped,                        ///< CUDA: resource not mapped
     346              :     cuda_not_mapped_as_array,               ///< CUDA: resource not mapped as array
     347              :     cuda_not_mapped_as_pointer,             ///< CUDA: resource not mapped as pointer
     348              :     cuda_e_c_c_uncorrectable,               ///< CUDA: uncorrectable ECC error encountered
     349              :     cuda_unsupported_limit,                 ///< CUDA: limit is not supported on this architecture
     350              :     cuda_device_already_in_use,             ///< CUDA: exclusive-thread device already in use by a different thread
     351              :     cuda_peer_access_unsupported,           ///< CUDA: peer access is not supported between these two devices
     352              :     cuda_invalid_ptx,                       ///< CUDA: a PTX JIT compilation failed
     353              :     cuda_invalid_graphics_context,          ///< CUDA: invalid OpenGL or DirectX context
     354              :     cuda_nvlink_uncorrectable,              ///< CUDA: uncorrectable NVLink error detected during the execution
     355              :     cuda_jit_compiler_not_found,            ///< CUDA: PTX JIT compiler library not found
     356              :     cuda_unsupported_ptx_version,           ///< CUDA: the provided PTX was compiled with an unsupported toolchain.
     357              :     cuda_jit_compilation_disabled,          ///< CUDA: PTX JIT compilation was disabled
     358              :     cuda_unsupported_exec_affinity,         ///< CUDA: the provided execution affinity is not supported
     359              :     cuda_invalid_source,                    ///< CUDA: device kernel image is invalid
     360              :     cuda_file_not_found,                    ///< CUDA: file not found
     361              :     cuda_shared_object_symbol_not_found,    ///< CUDA: shared object symbol not found
     362              :     cuda_shared_object_init_failed,         ///< CUDA: shared object initialization failed
     363              :     cuda_operating_system,                  ///< CUDA: OS call failed or operation not supported on this OS
     364              :     cuda_invalid_resource_handle,           ///< CUDA: invalid resource handle
     365              :     cuda_illegal_state,                     ///< CUDA: the operation cannot be performed in the present state
     366              :     cuda_symbol_not_found,                  ///< CUDA: named symbol not found
     367              :     cuda_not_ready,                         ///< CUDA: device not ready
     368              :     cuda_illegal_address,                   ///< CUDA: an illegal memory access was encountered
     369              :     cuda_launch_out_of_resources,           ///< CUDA: too many resources requested for launch
     370              :     cuda_launch_timeout,                    ///< CUDA: the launch timed out and was terminated
     371              :     cuda_launch_incompatible_texturing,     ///< CUDA: launch uses incompatible texturing mode
     372              :     cuda_peer_access_already_enabled,       ///< CUDA: peer access is already enabled
     373              :     cuda_peer_access_not_enabled,           ///< CUDA: peer access has not been enabled
     374              :     cuda_set_on_active_process,             ///< CUDA: cannot set while device is active in this process
     375              :     cuda_context_is_destroyed,              ///< CUDA: context is destroyed
     376              :     cuda_assert,                            ///< CUDA: device-side assert triggered
     377              :     cuda_too_many_peers,                    ///< CUDA: peer mapping resources exhausted
     378              :     cuda_host_memory_already_registered,    ///< CUDA: part or all of the requested memory range is already mapped
     379              :     cuda_host_memory_not_registered,        ///< CUDA: pointer does not correspond to a registered memory region
     380              :     cuda_hardware_stack_error,              ///< CUDA: hardware stack error
     381              :     cuda_illegal_instruction,               ///< CUDA: an illegal instruction was encountered
     382              :     cuda_misaligned_address,                ///< CUDA: misaligned address
     383              :     cuda_invalid_address_space,             ///< CUDA: operation not supported on global/shared address space
     384              :     cuda_invalid_pc,                        ///< CUDA: invalid program counter
     385              :     cuda_launch_failure,                    ///< CUDA: unspecified launch failure
     386              :     cuda_cooperative_launch_too_large,      ///< CUDA: too many blocks in cooperative launch
     387              :     cuda_not_permitted,                     ///< CUDA: operation not permitted
     388              :     cuda_not_supported,                     ///< CUDA: operation not supported
     389              :     cuda_system_not_ready,                  ///< CUDA: system not yet initialized
     390              :     cuda_system_driver_mismatch,            ///< CUDA: system has unsupported display driver / cuda driver combination
     391              :     cuda_compat_not_supported_on_device,    ///< CUDA: forward compatibility was attempted on non supported HW
     392              :     cuda_mps_connection_failed,             ///< CUDA: MPS client failed to connect to the MPS control daemon or the MPS server
     393              :     cuda_mps_rpc_failure,                   ///< CUDA: the remote procedural call between the MPS server and the MPS client failed
     394              :     cuda_mps_server_not_ready,              ///< CUDA: MPS server is not ready to accept new MPS client requests
     395              :     cuda_mps_max_clients_reached,           ///< CUDA: the hardware resources required to create MPS client have been exhausted
     396              :     cuda_mps_max_connections_reached,       ///< CUDA: the hardware resources required to support device connections have been exhausted
     397              :     cuda_mps_client_terminated,             ///< CUDA: the MPS client has been terminated by the server
     398              :     cuda_cdp_not_supported,                 ///< CUDA: is using CUDA Dynamic Parallelism, but the current configuration, like MPS, does not support it
     399              :     cuda_cdp_version_mismatch,              ///< CUDA: unsupported interaction between different versions of CUDA Dynamic Parallelism
     400              :     cuda_stream_capture_unsupported,        ///< CUDA: operation not permitted when stream is capturing
     401              :     cuda_stream_capture_invalidated,        ///< CUDA: operation failed due to a previous error during capture
     402              :     cuda_stream_capture_merge,              ///< CUDA: operation would result in a merge of separate capture sequences
     403              :     cuda_stream_capture_unmatched,          ///< CUDA: capture was not ended in the same stream as it began
     404              :     cuda_stream_capture_unjoined,           ///< CUDA: capturing stream has unjoined work
     405              :     cuda_stream_capture_isolation,          ///< CUDA: dependency created on uncaptured work in another stream
     406              :     cuda_stream_capture_implicit,           ///< CUDA: operation would make the legacy stream depend on a capturing blocking stream
     407              :     cuda_captured_event,                    ///< CUDA: operation not permitted on an event last recorded in a capturing stream
     408              :     cuda_stream_capture_wrong_thread,       ///< CUDA: attempt to terminate a thread-local capture sequence from another thread
     409              :     cuda_timeout,                           ///< CUDA: wait operation timed out
     410              :     cuda_graph_exec_update_failure,         ///< CUDA: the graph update was not performed because it included changes which violated constraints specific to instantiated graph update
     411              :     cuda_external_device,                   ///< CUDA: an async error has occured in external entity outside of CUDA
     412              :     cuda_invalid_cluster_size,              ///< CUDA: a kernel launch error has occurred due to cluster misconfiguration
     413              :     cuda_unknown,                           ///< CUDA: unknown error
     414              :     cuda_api_failure_base,                  ///< CUDA: api failure base
     415              :     __sentinel                              ///< do not use
     416              : }; //enum class error_t
     417              : 
     418              : /// Convert a \ref error_t code to its name
     419              : /**
     420              :  * \returns the name of the \ref error_t code
     421              :  *
     422              :  * \ingroup error_handling_codes
     423              :  */
     424              : static constexpr const char * errorName( const error_t & errc /**< [in] the error code to convert*/)
     425              : {
     426              :     switch(errc)
     427              :     {
     428              :         case error_t::noerror:
     429              :             return "noerror";
     430              :         case error_t::error:
     431              :             return "error";
     432              :         case error_t::invalidarg:
     433              :             return "invalidarg";
     434              :         case error_t::invalidconfig:
     435              :             return "invalidconfig";
     436              :         case error_t::notimpl:
     437              :             return "notimpl";
     438              :         case error_t::paramnotset:
     439              :             return "paramnotset";
     440              :         case error_t::envnotset:
     441              :             return "envnotset";
     442              :         case error_t::notfound:
     443              :             return "notfound";
     444              :         case error_t::sizeerr:
     445              :             return "sizeerr";
     446              :         case error_t::allocerr:
     447              :             return "allocerr";
     448              :         case error_t::freeerr:
     449              :             return "freeerr";
     450              :         case error_t::parseerr:
     451              :             return "parseerr";
     452              :         case error_t::filesystem:
     453              :             return "filesystem";
     454              :         case error_t::fileoerr:
     455              :             return "fileoerr";
     456              :         case error_t::filewerr:
     457              :             return "filewerr";
     458              :         case error_t::filererr:
     459              :             return "filererr";
     460              :         case error_t::filecerr:
     461              :             return "filecerr";
     462              :         case error_t::filenotfound:
     463              :             return "filenotfound";
     464              :         case error_t::fileempty:
     465              :             return "fileempty";
     466              :         case error_t::dirnotfound:
     467              :             return "dirnotfound";
     468              :         case error_t::dirempty:
     469              :             return "dirempty";
     470              :         case error_t::procerr:
     471              :             return "procerr";
     472              :         case error_t::timeout:
     473              :             return "timeout";
     474              :         case error_t::liberr:
     475              :             return "liberr";
     476              :         case error_t::exception:
     477              :             return "exception";
     478              :         case error_t::std_exception:
     479              :             return "std_exception";
     480              :         case error_t::std_bad_alloc:
     481              :             return "std_bad_alloc";
     482              :         case error_t::std_logic_error:
     483              :             return "std_logic_error";
     484              :         case error_t::std_invalid_argument:
     485              :             return "std_invalid_argument";
     486              :         case error_t::std_domain_error:
     487              :             return "std_domain_error";
     488              :         case error_t::std_length_error:
     489              :             return "std_length_error";
     490              :         case error_t::std_out_of_range:
     491              :             return "std_out_of_range";
     492              :         case error_t::std_future_error:
     493              :             return "std_future_error";
     494              :         case error_t::std_bad_optional_access:
     495              :             return "std_bad_optional_access";
     496              :         case error_t::std_filesystem_error:
     497              :             return "std_filesystem_error";
     498              :         case error_t::std_runtime_error:
     499              :             return "std_runtime_error";
     500              :         case error_t::std_range_error:
     501              :             return "std_range_error";
     502              :         case error_t::std_overflow_error:
     503              :             return "std_overflow_error";
     504              :         case error_t::std_underflow_error:
     505              :             return "std_underflow_error";
     506              :         case error_t::std_ios_base_failure:
     507              :             return "std_ios_base_failure";
     508              :         case error_t::std_format_error:
     509              :             return "std_format_error";
     510              :         case error_t::gnuploterr:
     511              :             return "gnuploterr";
     512              :         case error_t::lapackerr:
     513              :             return "lapackerr";
     514              :         case error_t::e2big:
     515              :             return "e2big";
     516              :         case error_t::eacces:
     517              :             return "eacces";
     518              :         case error_t::eaddrinuse:
     519              :             return "eaddrinuse";
     520              :         case error_t::eaddrnotavail:
     521              :             return "eaddrnotavail";
     522              :         case error_t::eafnosupport:
     523              :             return "eafnosupport";
     524              :         case error_t::eagain:
     525              :             return "eagain";
     526              :         case error_t::ealready:
     527              :             return "ealready";
     528              :         case error_t::ebadf:
     529              :             return "ebadf";
     530              :         case error_t::ebadmsg:
     531              :             return "ebadmsg";
     532              :         case error_t::ebusy:
     533              :             return "ebusy";
     534              :         case error_t::ecanceled:
     535              :             return "ecanceled";
     536              :         case error_t::echild:
     537              :             return "echild";
     538              :         case error_t::econnaborted:
     539              :             return "econnaborted";
     540              :         case error_t::econnrefused:
     541              :             return "econnrefused";
     542              :         case error_t::econnreset:
     543              :             return "econnreset";
     544              :         case error_t::edestaddrreq:
     545              :             return "edestaddrreq";
     546              :         case error_t::edom:
     547              :             return "edom";
     548              :         case error_t::eexist:
     549              :             return "eexist";
     550              :         case error_t::efault:
     551              :             return "efault";
     552              :         case error_t::efbig:
     553              :             return "efbig";
     554              :         case error_t::ehostunreach:
     555              :             return "ehostunreach";
     556              :         case error_t::eidrm:
     557              :             return "eidrm";
     558              :         case error_t::eilseq:
     559              :             return "eilseq";
     560              :         case error_t::einprogress:
     561              :             return "einprogress";
     562              :         case error_t::eintr:
     563              :             return "eintr";
     564              :         case error_t::einval:
     565              :             return "einval";
     566              :         case error_t::eio:
     567              :             return "eio";
     568              :         case error_t::eisconn:
     569              :             return "eisconn";
     570              :         case error_t::eisdir:
     571              :             return "eisdir";
     572              :         case error_t::eloop:
     573              :             return "eloop";
     574              :         case error_t::emfile:
     575              :             return "emfile";
     576              :         case error_t::emlink:
     577              :             return "emlink";
     578              :         case error_t::emsgsize:
     579              :             return "emsgsize";
     580              :         case error_t::enametoolong:
     581              :             return "enametoolong";
     582              :         case error_t::enetdown:
     583              :             return "enetdown";
     584              :         case error_t::enetreset:
     585              :             return "enetreset";
     586              :         case error_t::enetunreach:
     587              :             return "enetunreach";
     588              :         case error_t::enfile:
     589              :             return "enfile";
     590              :         case error_t::enobufs:
     591              :             return "enobufs";
     592              :         case error_t::enodata:
     593              :             return "enodata";
     594              :         case error_t::enodev:
     595              :             return "enodev";
     596              :         case error_t::enoent:
     597              :             return "enoent";
     598              :         case error_t::enoexec:
     599              :             return "enoexec";
     600              :         case error_t::enolck:
     601              :             return "enolck";
     602              :         case error_t::enolink:
     603              :             return "enolink";
     604              :         case error_t::enomem:
     605              :             return "enomem";
     606              :         case error_t::enomsg:
     607              :             return "enomsg";
     608              :         case error_t::enoprotoopt:
     609              :             return "enoprotoopt";
     610              :         case error_t::enospc:
     611              :             return "enospc";
     612              :         case error_t::enosr:
     613              :             return "enosr";
     614              :         case error_t::enostr:
     615              :             return "enostr";
     616              :         case error_t::enosys:
     617              :             return "enosys";
     618              :         case error_t::enotconn:
     619              :             return "enotconn";
     620              :         case error_t::enotdir:
     621              :             return "enotdir";
     622              :         case error_t::enotempty:
     623              :             return "enotempty";
     624              :         case error_t::enotrecoverable:
     625              :             return "enotrecoverable";
     626              :         case error_t::enotsock:
     627              :             return "enotsock";
     628              :         case error_t::enotsup:
     629              :             return "enotsup";
     630              :         case error_t::enotty:
     631              :             return "enotty";
     632              :         case error_t::enxio:
     633              :             return "enxio";
     634              :         case error_t::eopnotsupp:
     635              :             return "eopnotsupp";
     636              :         case error_t::eoverflow:
     637              :             return "eoverflow";
     638              :         case error_t::eownerdead:
     639              :             return "eownerdead";
     640              :         case error_t::eperm:
     641              :             return "eperm";
     642              :         case error_t::epipe:
     643              :             return "epipe";
     644              :         case error_t::eproto:
     645              :             return "eproto";
     646              :         case error_t::eprotonosupport:
     647              :             return "eprotonosupport";
     648              :         case error_t::eprototype:
     649              :             return "eprototype";
     650              :         case error_t::erange:
     651              :             return "erange";
     652              :         case error_t::erofs:
     653              :             return "erofs";
     654              :         case error_t::espipe:
     655              :             return "espipe";
     656              :         case error_t::esrch:
     657              :             return "esrch";
     658              :         case error_t::etime:
     659              :             return "etime";
     660              :         case error_t::etimedout:
     661              :             return "etimedout";
     662              :         case error_t::etxtbsy:
     663              :             return "etxtbsy";
     664              :         case error_t::ewouldblock:
     665              :             return "ewouldblock";
     666              :         case error_t::exdev:
     667              :             return "exdev";
     668              :         case error_t::fits_same_file:
     669              :             return "fits_same_file";
     670              :         case error_t::fits_too_many_files:
     671              :             return "fits_too_many_files";
     672              :         case error_t::fits_file_not_opened:
     673              :             return "fits_file_not_opened";
     674              :         case error_t::fits_file_not_created:
     675              :             return "fits_file_not_created";
     676              :         case error_t::fits_write_error:
     677              :             return "fits_write_error";
     678              :         case error_t::fits_end_of_file:
     679              :             return "fits_end_of_file";
     680              :         case error_t::fits_read_error:
     681              :             return "fits_read_error";
     682              :         case error_t::fits_file_not_closed:
     683              :             return "fits_file_not_closed";
     684              :         case error_t::fits_array_too_big:
     685              :             return "fits_array_too_big";
     686              :         case error_t::fits_readonly_file:
     687              :             return "fits_readonly_file";
     688              :         case error_t::fits_memory_allocation:
     689              :             return "fits_memory_allocation";
     690              :         case error_t::fits_bad_fileptr:
     691              :             return "fits_bad_fileptr";
     692              :         case error_t::fits_null_input_ptr:
     693              :             return "fits_null_input_ptr";
     694              :         case error_t::fits_seek_error:
     695              :             return "fits_seek_error";
     696              :         case error_t::fits_bad_nettimeout:
     697              :             return "fits_bad_nettimeout";
     698              :         case error_t::fits_bad_url_prefix:
     699              :             return "fits_bad_url_prefix";
     700              :         case error_t::fits_too_many_drivers:
     701              :             return "fits_too_many_drivers";
     702              :         case error_t::fits_driver_init_failed:
     703              :             return "fits_driver_init_failed";
     704              :         case error_t::fits_no_matching_driver:
     705              :             return "fits_no_matching_driver";
     706              :         case error_t::fits_url_parse_error:
     707              :             return "fits_url_parse_error";
     708              :         case error_t::fits_range_parse_error:
     709              :             return "fits_range_parse_error";
     710              :         case error_t::fits_shared_badarg:
     711              :             return "fits_shared_badarg";
     712              :         case error_t::fits_shared_nulptr:
     713              :             return "fits_shared_nulptr";
     714              :         case error_t::fits_shared_tabfull:
     715              :             return "fits_shared_tabfull";
     716              :         case error_t::fits_shared_notinit:
     717              :             return "fits_shared_notinit";
     718              :         case error_t::fits_shared_ipcerr:
     719              :             return "fits_shared_ipcerr";
     720              :         case error_t::fits_shared_nomem:
     721              :             return "fits_shared_nomem";
     722              :         case error_t::fits_shared_again:
     723              :             return "fits_shared_again";
     724              :         case error_t::fits_shared_nofile:
     725              :             return "fits_shared_nofile";
     726              :         case error_t::fits_shared_noresize:
     727              :             return "fits_shared_noresize";
     728              :         case error_t::fits_header_not_empty:
     729              :             return "fits_header_not_empty";
     730              :         case error_t::fits_key_no_exist:
     731              :             return "fits_key_no_exist";
     732              :         case error_t::fits_key_out_bounds:
     733              :             return "fits_key_out_bounds";
     734              :         case error_t::fits_value_undefined:
     735              :             return "fits_value_undefined";
     736              :         case error_t::fits_no_quote:
     737              :             return "fits_no_quote";
     738              :         case error_t::fits_bad_index_key:
     739              :             return "fits_bad_index_key";
     740              :         case error_t::fits_bad_keychar:
     741              :             return "fits_bad_keychar";
     742              :         case error_t::fits_bad_order:
     743              :             return "fits_bad_order";
     744              :         case error_t::fits_not_pos_int:
     745              :             return "fits_not_pos_int";
     746              :         case error_t::fits_no_end:
     747              :             return "fits_no_end";
     748              :         case error_t::fits_bad_bitpix:
     749              :             return "fits_bad_bitpix";
     750              :         case error_t::fits_bad_naxis:
     751              :             return "fits_bad_naxis";
     752              :         case error_t::fits_bad_naxes:
     753              :             return "fits_bad_naxes";
     754              :         case error_t::fits_bad_pcount:
     755              :             return "fits_bad_pcount";
     756              :         case error_t::fits_bad_gcount:
     757              :             return "fits_bad_gcount";
     758              :         case error_t::fits_bad_tfields:
     759              :             return "fits_bad_tfields";
     760              :         case error_t::fits_neg_width:
     761              :             return "fits_neg_width";
     762              :         case error_t::fits_neg_rows:
     763              :             return "fits_neg_rows";
     764              :         case error_t::fits_col_not_found:
     765              :             return "fits_col_not_found";
     766              :         case error_t::fits_bad_simple:
     767              :             return "fits_bad_simple";
     768              :         case error_t::fits_no_simple:
     769              :             return "fits_no_simple";
     770              :         case error_t::fits_no_bitpix:
     771              :             return "fits_no_bitpix";
     772              :         case error_t::fits_no_naxis:
     773              :             return "fits_no_naxis";
     774              :         case error_t::fits_no_naxes:
     775              :             return "fits_no_naxes";
     776              :         case error_t::fits_no_xtension:
     777              :             return "fits_no_xtension";
     778              :         case error_t::fits_not_atable:
     779              :             return "fits_not_atable";
     780              :         case error_t::fits_not_btable:
     781              :             return "fits_not_btable";
     782              :         case error_t::fits_no_pcount:
     783              :             return "fits_no_pcount";
     784              :         case error_t::fits_no_gcount:
     785              :             return "fits_no_gcount";
     786              :         case error_t::fits_no_tfields:
     787              :             return "fits_no_tfields";
     788              :         case error_t::fits_no_tbcol:
     789              :             return "fits_no_tbcol";
     790              :         case error_t::fits_no_tform:
     791              :             return "fits_no_tform";
     792              :         case error_t::fits_not_image:
     793              :             return "fits_not_image";
     794              :         case error_t::fits_bad_tbcol:
     795              :             return "fits_bad_tbcol";
     796              :         case error_t::fits_not_table:
     797              :             return "fits_not_table";
     798              :         case error_t::fits_col_too_wide:
     799              :             return "fits_col_too_wide";
     800              :         case error_t::fits_col_not_unique:
     801              :             return "fits_col_not_unique";
     802              :         case error_t::fits_bad_row_width:
     803              :             return "fits_bad_row_width";
     804              :         case error_t::fits_unknown_ext:
     805              :             return "fits_unknown_ext";
     806              :         case error_t::fits_unknown_rec:
     807              :             return "fits_unknown_rec";
     808              :         case error_t::fits_end_junk:
     809              :             return "fits_end_junk";
     810              :         case error_t::fits_bad_header_fill:
     811              :             return "fits_bad_header_fill";
     812              :         case error_t::fits_bad_data_fill:
     813              :             return "fits_bad_data_fill";
     814              :         case error_t::fits_bad_tform:
     815              :             return "fits_bad_tform";
     816              :         case error_t::fits_bad_tform_dtype:
     817              :             return "fits_bad_tform_dtype";
     818              :         case error_t::fits_bad_tdim:
     819              :             return "fits_bad_tdim";
     820              :         case error_t::fits_bad_heap_ptr:
     821              :             return "fits_bad_heap_ptr";
     822              :         case error_t::fits_bad_hdu_num:
     823              :             return "fits_bad_hdu_num";
     824              :         case error_t::fits_bad_col_num:
     825              :             return "fits_bad_col_num";
     826              :         case error_t::fits_neg_file_pos:
     827              :             return "fits_neg_file_pos";
     828              :         case error_t::fits_neg_bytes:
     829              :             return "fits_neg_bytes";
     830              :         case error_t::fits_bad_row_num:
     831              :             return "fits_bad_row_num";
     832              :         case error_t::fits_bad_elem_num:
     833              :             return "fits_bad_elem_num";
     834              :         case error_t::fits_not_ascii_col:
     835              :             return "fits_not_ascii_col";
     836              :         case error_t::fits_not_logical_col:
     837              :             return "fits_not_logical_col";
     838              :         case error_t::fits_bad_atable_format:
     839              :             return "fits_bad_atable_format";
     840              :         case error_t::fits_bad_btable_format:
     841              :             return "fits_bad_btable_format";
     842              :         case error_t::fits_no_null:
     843              :             return "fits_no_null";
     844              :         case error_t::fits_not_vari_len:
     845              :             return "fits_not_vari_len";
     846              :         case error_t::fits_bad_dimen:
     847              :             return "fits_bad_dimen";
     848              :         case error_t::fits_bad_pix_num:
     849              :             return "fits_bad_pix_num";
     850              :         case error_t::fits_zero_scale:
     851              :             return "fits_zero_scale";
     852              :         case error_t::fits_neg_axis:
     853              :             return "fits_neg_axis";
     854              :         case error_t::fits_not_group_table:
     855              :             return "fits_not_group_table";
     856              :         case error_t::fits_hdu_already_member:
     857              :             return "fits_hdu_already_member";
     858              :         case error_t::fits_member_not_found:
     859              :             return "fits_member_not_found";
     860              :         case error_t::fits_group_not_found:
     861              :             return "fits_group_not_found";
     862              :         case error_t::fits_bad_group_id:
     863              :             return "fits_bad_group_id";
     864              :         case error_t::fits_too_many_hdus_tracked:
     865              :             return "fits_too_many_hdus_tracked";
     866              :         case error_t::fits_hdu_already_tracked:
     867              :             return "fits_hdu_already_tracked";
     868              :         case error_t::fits_bad_option:
     869              :             return "fits_bad_option";
     870              :         case error_t::fits_identical_pointers:
     871              :             return "fits_identical_pointers";
     872              :         case error_t::fits_bad_group_attach:
     873              :             return "fits_bad_group_attach";
     874              :         case error_t::fits_bad_group_detach:
     875              :             return "fits_bad_group_detach";
     876              :         case error_t::fits_ngp_no_memory:
     877              :             return "fits_ngp_no_memory";
     878              :         case error_t::fits_ngp_read_err:
     879              :             return "fits_ngp_read_err";
     880              :         case error_t::fits_ngp_nul_ptr:
     881              :             return "fits_ngp_nul_ptr";
     882              :         case error_t::fits_ngp_empty_curline:
     883              :             return "fits_ngp_empty_curline";
     884              :         case error_t::fits_ngp_unread_queue_full:
     885              :             return "fits_ngp_unread_queue_full";
     886              :         case error_t::fits_ngp_inc_nesting:
     887              :             return "fits_ngp_inc_nesting";
     888              :         case error_t::fits_ngp_err_fopen:
     889              :             return "fits_ngp_err_fopen";
     890              :         case error_t::fits_ngp_eof:
     891              :             return "fits_ngp_eof";
     892              :         case error_t::fits_ngp_bad_arg:
     893              :             return "fits_ngp_bad_arg";
     894              :         case error_t::fits_ngp_token_not_expect:
     895              :             return "fits_ngp_token_not_expect";
     896              :         case error_t::fits_bad_i2c:
     897              :             return "fits_bad_i2c";
     898              :         case error_t::fits_bad_f2c:
     899              :             return "fits_bad_f2c";
     900              :         case error_t::fits_bad_intkey:
     901              :             return "fits_bad_intkey";
     902              :         case error_t::fits_bad_logicalkey:
     903              :             return "fits_bad_logicalkey";
     904              :         case error_t::fits_bad_floatkey:
     905              :             return "fits_bad_floatkey";
     906              :         case error_t::fits_bad_doublekey:
     907              :             return "fits_bad_doublekey";
     908              :         case error_t::fits_bad_c2i:
     909              :             return "fits_bad_c2i";
     910              :         case error_t::fits_bad_c2f:
     911              :             return "fits_bad_c2f";
     912              :         case error_t::fits_bad_c2d:
     913              :             return "fits_bad_c2d";
     914              :         case error_t::fits_bad_datatype:
     915              :             return "fits_bad_datatype";
     916              :         case error_t::fits_bad_decim:
     917              :             return "fits_bad_decim";
     918              :         case error_t::fits_num_overflow:
     919              :             return "fits_num_overflow";
     920              :         case error_t::fits_data_compression_err:
     921              :             return "fits_data_compression_err";
     922              :         case error_t::fits_data_decompression_err:
     923              :             return "fits_data_decompression_err";
     924              :         case error_t::fits_bad_date:
     925              :             return "fits_bad_date";
     926              :         case error_t::fits_parse_syntax_err:
     927              :             return "fits_parse_syntax_err";
     928              :         case error_t::fits_parse_bad_type:
     929              :             return "fits_parse_bad_type";
     930              :         case error_t::fits_parse_lrg_vector:
     931              :             return "fits_parse_lrg_vector";
     932              :         case error_t::fits_parse_no_output:
     933              :             return "fits_parse_no_output";
     934              :         case error_t::fits_parse_bad_col:
     935              :             return "fits_parse_bad_col";
     936              :         case error_t::fits_parse_bad_output:
     937              :             return "fits_parse_bad_output";
     938              :         case error_t::fits_angle_too_big:
     939              :             return "fits_angle_too_big";
     940              :         case error_t::fits_bad_wcs_val:
     941              :             return "fits_bad_wcs_val";
     942              :         case error_t::fits_wcs_error:
     943              :             return "fits_wcs_error";
     944              :         case error_t::fits_bad_wcs_proj:
     945              :             return "fits_bad_wcs_proj";
     946              :         case error_t::fits_no_wcs_key:
     947              :             return "fits_no_wcs_key";
     948              :         case error_t::fits_approx_wcs_key:
     949              :             return "fits_approx_wcs_key";
     950              :         case error_t::cuda_success:
     951              :             return "cuda_success";
     952              :         case error_t::cuda_invalid_value:
     953              :             return "cuda_invalid_value";
     954              :         case error_t::cuda_memory_allocation:
     955              :             return "cuda_memory_allocation";
     956              :         case error_t::cuda_initialization_error:
     957              :             return "cuda_initialization_error";
     958              :         case error_t::cuda_cudart_unloading:
     959              :             return "cuda_cudart_unloading";
     960              :         case error_t::cuda_profiler_disabled:
     961              :             return "cuda_profiler_disabled";
     962              :         case error_t::cuda_profiler_not_initialized:
     963              :             return "cuda_profiler_not_initialized";
     964              :         case error_t::cuda_profiler_already_started:
     965              :             return "cuda_profiler_already_started";
     966              :         case error_t::cuda_profiler_already_stopped:
     967              :             return "cuda_profiler_already_stopped";
     968              :         case error_t::cuda_invalid_configuration:
     969              :             return "cuda_invalid_configuration";
     970              :         case error_t::cuda_invalid_pitch_value:
     971              :             return "cuda_invalid_pitch_value";
     972              :         case error_t::cuda_invalid_symbol:
     973              :             return "cuda_invalid_symbol";
     974              :         case error_t::cuda_invalid_host_pointer:
     975              :             return "cuda_invalid_host_pointer";
     976              :         case error_t::cuda_invalid_device_pointer:
     977              :             return "cuda_invalid_device_pointer";
     978              :         case error_t::cuda_invalid_texture:
     979              :             return "cuda_invalid_texture";
     980              :         case error_t::cuda_invalid_texture_binding:
     981              :             return "cuda_invalid_texture_binding";
     982              :         case error_t::cuda_invalid_channel_descriptor:
     983              :             return "cuda_invalid_channel_descriptor";
     984              :         case error_t::cuda_invalid_memcpy_direction:
     985              :             return "cuda_invalid_memcpy_direction";
     986              :         case error_t::cuda_address_of_constant:
     987              :             return "cuda_address_of_constant";
     988              :         case error_t::cuda_texture_fetch_failed:
     989              :             return "cuda_texture_fetch_failed";
     990              :         case error_t::cuda_texture_not_bound:
     991              :             return "cuda_texture_not_bound";
     992              :         case error_t::cuda_synchronization_error:
     993              :             return "cuda_synchronization_error";
     994              :         case error_t::cuda_invalid_filter_setting:
     995              :             return "cuda_invalid_filter_setting";
     996              :         case error_t::cuda_invalid_norm_setting:
     997              :             return "cuda_invalid_norm_setting";
     998              :         case error_t::cuda_mixed_device_execution:
     999              :             return "cuda_mixed_device_execution";
    1000              :         case error_t::cuda_not_yet_implemented:
    1001              :             return "cuda_not_yet_implemented";
    1002              :         case error_t::cuda_memory_value_too_large:
    1003              :             return "cuda_memory_value_too_large";
    1004              :         case error_t::cuda_stub_library:
    1005              :             return "cuda_stub_library";
    1006              :         case error_t::cuda_insufficient_driver:
    1007              :             return "cuda_insufficient_driver";
    1008              :         case error_t::cuda_call_requires_newer_driver:
    1009              :             return "cuda_call_requires_newer_driver";
    1010              :         case error_t::cuda_invalid_surface:
    1011              :             return "cuda_invalid_surface";
    1012              :         case error_t::cuda_duplicate_variable_name:
    1013              :             return "cuda_duplicate_variable_name";
    1014              :         case error_t::cuda_duplicate_texture_name:
    1015              :             return "cuda_duplicate_texture_name";
    1016              :         case error_t::cuda_duplicate_surface_name:
    1017              :             return "cuda_duplicate_surface_name";
    1018              :         case error_t::cuda_devices_unavailable:
    1019              :             return "cuda_devices_unavailable";
    1020              :         case error_t::cuda_incompatible_driver_context:
    1021              :             return "cuda_incompatible_driver_context";
    1022              :         case error_t::cuda_missing_configuration:
    1023              :             return "cuda_missing_configuration";
    1024              :         case error_t::cuda_prior_launch_failure:
    1025              :             return "cuda_prior_launch_failure";
    1026              :         case error_t::cuda_launch_max_depth_exceeded:
    1027              :             return "cuda_launch_max_depth_exceeded";
    1028              :         case error_t::cuda_launch_file_scoped_tex:
    1029              :             return "cuda_launch_file_scoped_tex";
    1030              :         case error_t::cuda_launch_file_scoped_surf:
    1031              :             return "cuda_launch_file_scoped_surf";
    1032              :         case error_t::cuda_sync_depth_exceeded:
    1033              :             return "cuda_sync_depth_exceeded";
    1034              :         case error_t::cuda_launch_pending_count_exceeded:
    1035              :             return "cuda_launch_pending_count_exceeded";
    1036              :         case error_t::cuda_invalid_device_function:
    1037              :             return "cuda_invalid_device_function";
    1038              :         case error_t::cuda_no_device:
    1039              :             return "cuda_no_device";
    1040              :         case error_t::cuda_invalid_device:
    1041              :             return "cuda_invalid_device";
    1042              :         case error_t::cuda_device_not_licensed:
    1043              :             return "cuda_device_not_licensed";
    1044              :         case error_t::cuda_software_validity_not_established:
    1045              :             return "cuda_software_validity_not_established";
    1046              :         case error_t::cuda_startup_failure:
    1047              :             return "cuda_startup_failure";
    1048              :         case error_t::cuda_invalid_kernel_image:
    1049              :             return "cuda_invalid_kernel_image";
    1050              :         case error_t::cuda_device_uninitialized:
    1051              :             return "cuda_device_uninitialized";
    1052              :         case error_t::cuda_map_buffer_object_failed:
    1053              :             return "cuda_map_buffer_object_failed";
    1054              :         case error_t::cuda_unmap_buffer_object_failed:
    1055              :             return "cuda_unmap_buffer_object_failed";
    1056              :         case error_t::cuda_array_is_mapped:
    1057              :             return "cuda_array_is_mapped";
    1058              :         case error_t::cuda_already_mapped:
    1059              :             return "cuda_already_mapped";
    1060              :         case error_t::cuda_no_kernel_image_for_device:
    1061              :             return "cuda_no_kernel_image_for_device";
    1062              :         case error_t::cuda_already_acquired:
    1063              :             return "cuda_already_acquired";
    1064              :         case error_t::cuda_not_mapped:
    1065              :             return "cuda_not_mapped";
    1066              :         case error_t::cuda_not_mapped_as_array:
    1067              :             return "cuda_not_mapped_as_array";
    1068              :         case error_t::cuda_not_mapped_as_pointer:
    1069              :             return "cuda_not_mapped_as_pointer";
    1070              :         case error_t::cuda_e_c_c_uncorrectable:
    1071              :             return "cuda_e_c_c_uncorrectable";
    1072              :         case error_t::cuda_unsupported_limit:
    1073              :             return "cuda_unsupported_limit";
    1074              :         case error_t::cuda_device_already_in_use:
    1075              :             return "cuda_device_already_in_use";
    1076              :         case error_t::cuda_peer_access_unsupported:
    1077              :             return "cuda_peer_access_unsupported";
    1078              :         case error_t::cuda_invalid_ptx:
    1079              :             return "cuda_invalid_ptx";
    1080              :         case error_t::cuda_invalid_graphics_context:
    1081              :             return "cuda_invalid_graphics_context";
    1082              :         case error_t::cuda_nvlink_uncorrectable:
    1083              :             return "cuda_nvlink_uncorrectable";
    1084              :         case error_t::cuda_jit_compiler_not_found:
    1085              :             return "cuda_jit_compiler_not_found";
    1086              :         case error_t::cuda_unsupported_ptx_version:
    1087              :             return "cuda_unsupported_ptx_version";
    1088              :         case error_t::cuda_jit_compilation_disabled:
    1089              :             return "cuda_jit_compilation_disabled";
    1090              :         case error_t::cuda_unsupported_exec_affinity:
    1091              :             return "cuda_unsupported_exec_affinity";
    1092              :         case error_t::cuda_invalid_source:
    1093              :             return "cuda_invalid_source";
    1094              :         case error_t::cuda_file_not_found:
    1095              :             return "cuda_file_not_found";
    1096              :         case error_t::cuda_shared_object_symbol_not_found:
    1097              :             return "cuda_shared_object_symbol_not_found";
    1098              :         case error_t::cuda_shared_object_init_failed:
    1099              :             return "cuda_shared_object_init_failed";
    1100              :         case error_t::cuda_operating_system:
    1101              :             return "cuda_operating_system";
    1102              :         case error_t::cuda_invalid_resource_handle:
    1103              :             return "cuda_invalid_resource_handle";
    1104              :         case error_t::cuda_illegal_state:
    1105              :             return "cuda_illegal_state";
    1106              :         case error_t::cuda_symbol_not_found:
    1107              :             return "cuda_symbol_not_found";
    1108              :         case error_t::cuda_not_ready:
    1109              :             return "cuda_not_ready";
    1110              :         case error_t::cuda_illegal_address:
    1111              :             return "cuda_illegal_address";
    1112              :         case error_t::cuda_launch_out_of_resources:
    1113              :             return "cuda_launch_out_of_resources";
    1114              :         case error_t::cuda_launch_timeout:
    1115              :             return "cuda_launch_timeout";
    1116              :         case error_t::cuda_launch_incompatible_texturing:
    1117              :             return "cuda_launch_incompatible_texturing";
    1118              :         case error_t::cuda_peer_access_already_enabled:
    1119              :             return "cuda_peer_access_already_enabled";
    1120              :         case error_t::cuda_peer_access_not_enabled:
    1121              :             return "cuda_peer_access_not_enabled";
    1122              :         case error_t::cuda_set_on_active_process:
    1123              :             return "cuda_set_on_active_process";
    1124              :         case error_t::cuda_context_is_destroyed:
    1125              :             return "cuda_context_is_destroyed";
    1126              :         case error_t::cuda_assert:
    1127              :             return "cuda_assert";
    1128              :         case error_t::cuda_too_many_peers:
    1129              :             return "cuda_too_many_peers";
    1130              :         case error_t::cuda_host_memory_already_registered:
    1131              :             return "cuda_host_memory_already_registered";
    1132              :         case error_t::cuda_host_memory_not_registered:
    1133              :             return "cuda_host_memory_not_registered";
    1134              :         case error_t::cuda_hardware_stack_error:
    1135              :             return "cuda_hardware_stack_error";
    1136              :         case error_t::cuda_illegal_instruction:
    1137              :             return "cuda_illegal_instruction";
    1138              :         case error_t::cuda_misaligned_address:
    1139              :             return "cuda_misaligned_address";
    1140              :         case error_t::cuda_invalid_address_space:
    1141              :             return "cuda_invalid_address_space";
    1142              :         case error_t::cuda_invalid_pc:
    1143              :             return "cuda_invalid_pc";
    1144              :         case error_t::cuda_launch_failure:
    1145              :             return "cuda_launch_failure";
    1146              :         case error_t::cuda_cooperative_launch_too_large:
    1147              :             return "cuda_cooperative_launch_too_large";
    1148              :         case error_t::cuda_not_permitted:
    1149              :             return "cuda_not_permitted";
    1150              :         case error_t::cuda_not_supported:
    1151              :             return "cuda_not_supported";
    1152              :         case error_t::cuda_system_not_ready:
    1153              :             return "cuda_system_not_ready";
    1154              :         case error_t::cuda_system_driver_mismatch:
    1155              :             return "cuda_system_driver_mismatch";
    1156              :         case error_t::cuda_compat_not_supported_on_device:
    1157              :             return "cuda_compat_not_supported_on_device";
    1158              :         case error_t::cuda_mps_connection_failed:
    1159              :             return "cuda_mps_connection_failed";
    1160              :         case error_t::cuda_mps_rpc_failure:
    1161              :             return "cuda_mps_rpc_failure";
    1162              :         case error_t::cuda_mps_server_not_ready:
    1163              :             return "cuda_mps_server_not_ready";
    1164              :         case error_t::cuda_mps_max_clients_reached:
    1165              :             return "cuda_mps_max_clients_reached";
    1166              :         case error_t::cuda_mps_max_connections_reached:
    1167              :             return "cuda_mps_max_connections_reached";
    1168              :         case error_t::cuda_mps_client_terminated:
    1169              :             return "cuda_mps_client_terminated";
    1170              :         case error_t::cuda_cdp_not_supported:
    1171              :             return "cuda_cdp_not_supported";
    1172              :         case error_t::cuda_cdp_version_mismatch:
    1173              :             return "cuda_cdp_version_mismatch";
    1174              :         case error_t::cuda_stream_capture_unsupported:
    1175              :             return "cuda_stream_capture_unsupported";
    1176              :         case error_t::cuda_stream_capture_invalidated:
    1177              :             return "cuda_stream_capture_invalidated";
    1178              :         case error_t::cuda_stream_capture_merge:
    1179              :             return "cuda_stream_capture_merge";
    1180              :         case error_t::cuda_stream_capture_unmatched:
    1181              :             return "cuda_stream_capture_unmatched";
    1182              :         case error_t::cuda_stream_capture_unjoined:
    1183              :             return "cuda_stream_capture_unjoined";
    1184              :         case error_t::cuda_stream_capture_isolation:
    1185              :             return "cuda_stream_capture_isolation";
    1186              :         case error_t::cuda_stream_capture_implicit:
    1187              :             return "cuda_stream_capture_implicit";
    1188              :         case error_t::cuda_captured_event:
    1189              :             return "cuda_captured_event";
    1190              :         case error_t::cuda_stream_capture_wrong_thread:
    1191              :             return "cuda_stream_capture_wrong_thread";
    1192              :         case error_t::cuda_timeout:
    1193              :             return "cuda_timeout";
    1194              :         case error_t::cuda_graph_exec_update_failure:
    1195              :             return "cuda_graph_exec_update_failure";
    1196              :         case error_t::cuda_external_device:
    1197              :             return "cuda_external_device";
    1198              :         case error_t::cuda_invalid_cluster_size:
    1199              :             return "cuda_invalid_cluster_size";
    1200              :         case error_t::cuda_unknown:
    1201              :             return "cuda_unknown";
    1202              :         case error_t::cuda_api_failure_base:
    1203              :             return "cuda_api_failure_base";
    1204              :         default:
    1205              :             return "unknown error_t (bug)";
    1206              :     }
    1207              : } //errorName
    1208              : 
    1209              : /// Get the descriptive message for a \ref error_t code.
    1210              : /**
    1211              :  * \returns the descriptive message corresponding to the \ref error_t code
    1212              :  *
    1213              :  * \ingroup error_handling_codes
    1214              :  */
    1215              : static constexpr const char * errorMessage( const error_t & errc /**< [in] the error code for which to get the message*/)
    1216              : {
    1217              :     switch(errc)
    1218              :     {
    1219              :         case error_t::noerror:
    1220              :             return "No error has occurred";
    1221              :         case error_t::error:
    1222              :             return "A general error has occurred";
    1223              :         case error_t::invalidarg:
    1224              :             return "An argument was invalid";
    1225              :         case error_t::invalidconfig:
    1226              :             return "A config setting was invalid";
    1227              :         case error_t::notimpl:
    1228              :             return "A component or technique is not implemented";
    1229              :         case error_t::paramnotset:
    1230              :             return "A parameter was not set";
    1231              :         case error_t::envnotset:
    1232              :             return "A environment variable was not set";
    1233              :         case error_t::notfound:
    1234              :             return "An item was not found";
    1235              :         case error_t::sizeerr:
    1236              :             return "A size was invalid or calculated incorrectly";
    1237              :         case error_t::allocerr:
    1238              :             return "An error occurred during memory allocation";
    1239              :         case error_t::freeerr:
    1240              :             return "An error occurred during memory de-allocation";
    1241              :         case error_t::parseerr:
    1242              :             return "A parsing error occurred";
    1243              :         case error_t::filesystem:
    1244              :             return "A general filesystem error occurred";
    1245              :         case error_t::fileoerr:
    1246              :             return "An error occurred while opening a file";
    1247              :         case error_t::filewerr:
    1248              :             return "An error occurred while writing to a file";
    1249              :         case error_t::filererr:
    1250              :             return "An error occurred while reading from a file";
    1251              :         case error_t::filecerr:
    1252              :             return "An error occurred while closing a file";
    1253              :         case error_t::filenotfound:
    1254              :             return "The file was not found";
    1255              :         case error_t::fileempty:
    1256              :             return "The file is empty";
    1257              :         case error_t::dirnotfound:
    1258              :             return "The directory was not found";
    1259              :         case error_t::dirempty:
    1260              :             return "The directory was empty";
    1261              :         case error_t::procerr:
    1262              :             return "An error occurred while starting a process";
    1263              :         case error_t::timeout:
    1264              :             return "A timeout occurred";
    1265              :         case error_t::liberr:
    1266              :             return "An error was returned by a library";
    1267              :         case error_t::exception:
    1268              :             return "An exception was thrown";
    1269              :         case error_t::std_exception:
    1270              :             return "An exception was thrown";
    1271              :         case error_t::std_bad_alloc:
    1272              :             return "A bad allocation exception was thrown";
    1273              :         case error_t::std_logic_error:
    1274              :             return "A logic error exception was thrown";
    1275              :         case error_t::std_invalid_argument:
    1276              :             return "An invalid argument exception was thrown";
    1277              :         case error_t::std_domain_error:
    1278              :             return "A domain error exception was thrown";
    1279              :         case error_t::std_length_error:
    1280              :             return "A length error exception was thrown";
    1281              :         case error_t::std_out_of_range:
    1282              :             return "An out of range exception was thrown";
    1283              :         case error_t::std_future_error:
    1284              :             return "A future error exception was thrown";
    1285              :         case error_t::std_bad_optional_access:
    1286              :             return "A bad optional access exception was thrown";
    1287              :         case error_t::std_filesystem_error:
    1288              :             return "A filesystem error exception was thrown";
    1289              :         case error_t::std_runtime_error:
    1290              :             return "A runtime error exception was thrown";
    1291              :         case error_t::std_range_error:
    1292              :             return "A range error exception was thrown";
    1293              :         case error_t::std_overflow_error:
    1294              :             return "An overflow exception was thrown";
    1295              :         case error_t::std_underflow_error:
    1296              :             return "An underflow exception was thrown";
    1297              :         case error_t::std_ios_base_failure:
    1298              :             return "An ios::base::failure exception was thrown";
    1299              :         case error_t::std_format_error:
    1300              :             return "A format library exception was thrown";
    1301              :         case error_t::gnuploterr:
    1302              :             return "An error was returned by gnuplot";
    1303              :         case error_t::lapackerr:
    1304              :             return "An error was returned by Lapack";
    1305              :         case error_t::e2big:
    1306              :             return "Argument list too long";
    1307              :         case error_t::eacces:
    1308              :             return "Permission denied";
    1309              :         case error_t::eaddrinuse:
    1310              :             return "Address already in use";
    1311              :         case error_t::eaddrnotavail:
    1312              :             return "Cannot assign requested address";
    1313              :         case error_t::eafnosupport:
    1314              :             return "Address family not supported by protocol";
    1315              :         case error_t::eagain:
    1316              :             return "Resource temporarily unavailable";
    1317              :         case error_t::ealready:
    1318              :             return "Operation already in progress";
    1319              :         case error_t::ebadf:
    1320              :             return "Bad file descriptor";
    1321              :         case error_t::ebadmsg:
    1322              :             return "Bad message";
    1323              :         case error_t::ebusy:
    1324              :             return "Device or resource busy";
    1325              :         case error_t::ecanceled:
    1326              :             return "Operation canceled";
    1327              :         case error_t::echild:
    1328              :             return "No child processes";
    1329              :         case error_t::econnaborted:
    1330              :             return "Software caused connection abort";
    1331              :         case error_t::econnrefused:
    1332              :             return "Connection refused";
    1333              :         case error_t::econnreset:
    1334              :             return "Connection reset by peer";
    1335              :         case error_t::edestaddrreq:
    1336              :             return "Destination address required";
    1337              :         case error_t::edom:
    1338              :             return "Numerical argument out of domain";
    1339              :         case error_t::eexist:
    1340              :             return "File exists";
    1341              :         case error_t::efault:
    1342              :             return "Bad address";
    1343              :         case error_t::efbig:
    1344              :             return "File too large";
    1345              :         case error_t::ehostunreach:
    1346              :             return "No route to host";
    1347              :         case error_t::eidrm:
    1348              :             return "Identifier removed";
    1349              :         case error_t::eilseq:
    1350              :             return "Invalid or incomplete multibyte or wide character";
    1351              :         case error_t::einprogress:
    1352              :             return "Operation now in progress";
    1353              :         case error_t::eintr:
    1354              :             return "Interrupted system call";
    1355              :         case error_t::einval:
    1356              :             return "Invalid argument";
    1357              :         case error_t::eio:
    1358              :             return "Input/output error";
    1359              :         case error_t::eisconn:
    1360              :             return "Transport endpoint is already connected";
    1361              :         case error_t::eisdir:
    1362              :             return "Is a directory";
    1363              :         case error_t::eloop:
    1364              :             return "Too many levels of symbolic links";
    1365              :         case error_t::emfile:
    1366              :             return "Too many open files";
    1367              :         case error_t::emlink:
    1368              :             return "Too many links";
    1369              :         case error_t::emsgsize:
    1370              :             return "Message too long";
    1371              :         case error_t::enametoolong:
    1372              :             return "File name too long";
    1373              :         case error_t::enetdown:
    1374              :             return "Network is down";
    1375              :         case error_t::enetreset:
    1376              :             return "Network dropped connection on reset";
    1377              :         case error_t::enetunreach:
    1378              :             return "Network is unreachable";
    1379              :         case error_t::enfile:
    1380              :             return "Too many open files in system";
    1381              :         case error_t::enobufs:
    1382              :             return "No buffer space available";
    1383              :         case error_t::enodata:
    1384              :             return "No data available";
    1385              :         case error_t::enodev:
    1386              :             return "No such device";
    1387              :         case error_t::enoent:
    1388              :             return "No such file or directory";
    1389              :         case error_t::enoexec:
    1390              :             return "Exec format error";
    1391              :         case error_t::enolck:
    1392              :             return "No locks available";
    1393              :         case error_t::enolink:
    1394              :             return "Link has been severed";
    1395              :         case error_t::enomem:
    1396              :             return "Cannot allocate memory";
    1397              :         case error_t::enomsg:
    1398              :             return "No message of desired type";
    1399              :         case error_t::enoprotoopt:
    1400              :             return "Protocol not available";
    1401              :         case error_t::enospc:
    1402              :             return "No space left on device";
    1403              :         case error_t::enosr:
    1404              :             return "Out of streams resources";
    1405              :         case error_t::enostr:
    1406              :             return "Device not a stream";
    1407              :         case error_t::enosys:
    1408              :             return "Function not implemented";
    1409              :         case error_t::enotconn:
    1410              :             return "Transport endpoint is not connected";
    1411              :         case error_t::enotdir:
    1412              :             return "Not a directory";
    1413              :         case error_t::enotempty:
    1414              :             return "Directory not empty";
    1415              :         case error_t::enotrecoverable:
    1416              :             return "State not recoverable";
    1417              :         case error_t::enotsock:
    1418              :             return "Socket operation on non-socket";
    1419              :         case error_t::enotsup:
    1420              :             return "Operation not supported";
    1421              :         case error_t::enotty:
    1422              :             return "Inappropriate ioctl for device";
    1423              :         case error_t::enxio:
    1424              :             return "No such device or address";
    1425              :         case error_t::eopnotsupp:
    1426              :             return "Operation not supported";
    1427              :         case error_t::eoverflow:
    1428              :             return "Value too large for defined data type";
    1429              :         case error_t::eownerdead:
    1430              :             return "Owner died";
    1431              :         case error_t::eperm:
    1432              :             return "Operation not permitted";
    1433              :         case error_t::epipe:
    1434              :             return "Broken pipe";
    1435              :         case error_t::eproto:
    1436              :             return "Protocol error";
    1437              :         case error_t::eprotonosupport:
    1438              :             return "Protocol not supported";
    1439              :         case error_t::eprototype:
    1440              :             return "Protocol wrong type for socket";
    1441              :         case error_t::erange:
    1442              :             return "Numerical result out of range";
    1443              :         case error_t::erofs:
    1444              :             return "Read-only file system";
    1445              :         case error_t::espipe:
    1446              :             return "Illegal seek";
    1447              :         case error_t::esrch:
    1448              :             return "No such process";
    1449              :         case error_t::etime:
    1450              :             return "Timer expired";
    1451              :         case error_t::etimedout:
    1452              :             return "Connection timed out";
    1453              :         case error_t::etxtbsy:
    1454              :             return "Text file busy";
    1455              :         case error_t::ewouldblock:
    1456              :             return "Resource temporarily unavailable";
    1457              :         case error_t::exdev:
    1458              :             return "Invalid cross-device link";
    1459              :         case error_t::fits_same_file:
    1460              :             return "FITS: input and output files are the same";
    1461              :         case error_t::fits_too_many_files:
    1462              :             return "FITS: tried to open too many FITS files at once";
    1463              :         case error_t::fits_file_not_opened:
    1464              :             return "FITS: could not open the named file";
    1465              :         case error_t::fits_file_not_created:
    1466              :             return "FITS: could not create the named file";
    1467              :         case error_t::fits_write_error:
    1468              :             return "FITS: error writing to FITS file";
    1469              :         case error_t::fits_end_of_file:
    1470              :             return "FITS: tried to move past end of file";
    1471              :         case error_t::fits_read_error:
    1472              :             return "FITS: error reading from FITS file";
    1473              :         case error_t::fits_file_not_closed:
    1474              :             return "FITS: could not close the file";
    1475              :         case error_t::fits_array_too_big:
    1476              :             return "FITS: array dimensions exceed internal limit";
    1477              :         case error_t::fits_readonly_file:
    1478              :             return "FITS: Cannot write to readonly file";
    1479              :         case error_t::fits_memory_allocation:
    1480              :             return "FITS: Could not allocate memory";
    1481              :         case error_t::fits_bad_fileptr:
    1482              :             return "FITS: invalid fitsfile pointer";
    1483              :         case error_t::fits_null_input_ptr:
    1484              :             return "FITS: NULL input pointer to routine";
    1485              :         case error_t::fits_seek_error:
    1486              :             return "FITS: error seeking position in file";
    1487              :         case error_t::fits_bad_nettimeout:
    1488              :             return "FITS: bad value for file download timeout setting";
    1489              :         case error_t::fits_bad_url_prefix:
    1490              :             return "FITS: invalid URL prefix on file name";
    1491              :         case error_t::fits_too_many_drivers:
    1492              :             return "FITS: tried to register too many IO drivers";
    1493              :         case error_t::fits_driver_init_failed:
    1494              :             return "FITS: driver initialization failed";
    1495              :         case error_t::fits_no_matching_driver:
    1496              :             return "FITS: matching driver is not registered";
    1497              :         case error_t::fits_url_parse_error:
    1498              :             return "FITS: failed to parse input file URL";
    1499              :         case error_t::fits_range_parse_error:
    1500              :             return "FITS: parse error in range list";
    1501              :         case error_t::fits_shared_badarg:
    1502              :             return "FITS: bad argument in shared memory driver";
    1503              :         case error_t::fits_shared_nulptr:
    1504              :             return "FITS: null pointer passed as an argument";
    1505              :         case error_t::fits_shared_tabfull:
    1506              :             return "FITS: no more free shared memory handles";
    1507              :         case error_t::fits_shared_notinit:
    1508              :             return "FITS: shared memory driver is not initialized";
    1509              :         case error_t::fits_shared_ipcerr:
    1510              :             return "FITS: IPC error returned by a system call";
    1511              :         case error_t::fits_shared_nomem:
    1512              :             return "FITS: no memory in shared memory driver";
    1513              :         case error_t::fits_shared_again:
    1514              :             return "FITS: resource deadlock would occur";
    1515              :         case error_t::fits_shared_nofile:
    1516              :             return "FITS: attempt to open/create lock file failed";
    1517              :         case error_t::fits_shared_noresize:
    1518              :             return "FITS: shared memory block cannot be resized at the moment";
    1519              :         case error_t::fits_header_not_empty:
    1520              :             return "FITS: header already contains keywords";
    1521              :         case error_t::fits_key_no_exist:
    1522              :             return "FITS: keyword not found in header";
    1523              :         case error_t::fits_key_out_bounds:
    1524              :             return "FITS: keyword record number is out of bounds";
    1525              :         case error_t::fits_value_undefined:
    1526              :             return "FITS: keyword value field is blank";
    1527              :         case error_t::fits_no_quote:
    1528              :             return "FITS: string is missing the closing quote";
    1529              :         case error_t::fits_bad_index_key:
    1530              :             return "FITS: illegal indexed keyword name (e.g. 'TFORM1000')";
    1531              :         case error_t::fits_bad_keychar:
    1532              :             return "FITS: illegal character in keyword name or card";
    1533              :         case error_t::fits_bad_order:
    1534              :             return "FITS: required keywords out of order";
    1535              :         case error_t::fits_not_pos_int:
    1536              :             return "FITS: keyword value is not a positive integer";
    1537              :         case error_t::fits_no_end:
    1538              :             return "FITS: couldn't find END keyword";
    1539              :         case error_t::fits_bad_bitpix:
    1540              :             return "FITS: illegal BITPIX keyword value";
    1541              :         case error_t::fits_bad_naxis:
    1542              :             return "FITS: illegal NAXIS keyword value";
    1543              :         case error_t::fits_bad_naxes:
    1544              :             return "FITS: illegal NAXISn keyword value";
    1545              :         case error_t::fits_bad_pcount:
    1546              :             return "FITS: illegal PCOUNT keyword value";
    1547              :         case error_t::fits_bad_gcount:
    1548              :             return "FITS: illegal GCOUNT keyword value";
    1549              :         case error_t::fits_bad_tfields:
    1550              :             return "FITS: illegal TFIELDS keyword value";
    1551              :         case error_t::fits_neg_width:
    1552              :             return "FITS: negative table row size";
    1553              :         case error_t::fits_neg_rows:
    1554              :             return "FITS: negative number of rows in table";
    1555              :         case error_t::fits_col_not_found:
    1556              :             return "FITS: column with this name not found in table";
    1557              :         case error_t::fits_bad_simple:
    1558              :             return "FITS: illegal value of SIMPLE keyword";
    1559              :         case error_t::fits_no_simple:
    1560              :             return "FITS: Primary array doesn't start with SIMPLE";
    1561              :         case error_t::fits_no_bitpix:
    1562              :             return "FITS: Second keyword not BITPIX";
    1563              :         case error_t::fits_no_naxis:
    1564              :             return "FITS: Third keyword not NAXIS";
    1565              :         case error_t::fits_no_naxes:
    1566              :             return "FITS: Couldn't find all the NAXISn keywords";
    1567              :         case error_t::fits_no_xtension:
    1568              :             return "FITS: HDU doesn't start with XTENSION keyword";
    1569              :         case error_t::fits_not_atable:
    1570              :             return "FITS: the CHDU is not an ASCII table extension";
    1571              :         case error_t::fits_not_btable:
    1572              :             return "FITS: the CHDU is not a binary table extension";
    1573              :         case error_t::fits_no_pcount:
    1574              :             return "FITS: couldn't find PCOUNT keyword";
    1575              :         case error_t::fits_no_gcount:
    1576              :             return "FITS: couldn't find GCOUNT keyword";
    1577              :         case error_t::fits_no_tfields:
    1578              :             return "FITS: couldn't find TFIELDS keyword";
    1579              :         case error_t::fits_no_tbcol:
    1580              :             return "FITS: couldn't find TBCOLn keyword";
    1581              :         case error_t::fits_no_tform:
    1582              :             return "FITS: couldn't find TFORMn keyword";
    1583              :         case error_t::fits_not_image:
    1584              :             return "FITS: the CHDU is not an IMAGE extension";
    1585              :         case error_t::fits_bad_tbcol:
    1586              :             return "FITS: TBCOLn keyword value < 0 or > rowlength";
    1587              :         case error_t::fits_not_table:
    1588              :             return "FITS: the CHDU is not a table";
    1589              :         case error_t::fits_col_too_wide:
    1590              :             return "FITS: column is too wide to fit in table";
    1591              :         case error_t::fits_col_not_unique:
    1592              :             return "FITS: more than 1 column name matches template";
    1593              :         case error_t::fits_bad_row_width:
    1594              :             return "FITS: sum of column widths not = NAXIS1";
    1595              :         case error_t::fits_unknown_ext:
    1596              :             return "FITS: unrecognizable FITS extension type";
    1597              :         case error_t::fits_unknown_rec:
    1598              :             return "FITS: unknown record; 1st keyword not SIMPLE or XTENSION";
    1599              :         case error_t::fits_end_junk:
    1600              :             return "FITS: END keyword is not blank";
    1601              :         case error_t::fits_bad_header_fill:
    1602              :             return "FITS: Header fill area contains non-blank chars";
    1603              :         case error_t::fits_bad_data_fill:
    1604              :             return "FITS: Illegal data fill bytes (not zero or blank)";
    1605              :         case error_t::fits_bad_tform:
    1606              :             return "FITS: illegal TFORM format code";
    1607              :         case error_t::fits_bad_tform_dtype:
    1608              :             return "FITS: unrecognizable TFORM data type code";
    1609              :         case error_t::fits_bad_tdim:
    1610              :             return "FITS: illegal TDIMn keyword value";
    1611              :         case error_t::fits_bad_heap_ptr:
    1612              :             return "FITS: invalid BINTABLE heap pointer is out of range";
    1613              :         case error_t::fits_bad_hdu_num:
    1614              :             return "FITS: HDU number < 1";
    1615              :         case error_t::fits_bad_col_num:
    1616              :             return "FITS: column number < 1 or > tfields";
    1617              :         case error_t::fits_neg_file_pos:
    1618              :             return "FITS: tried to move to negative byte location in file";
    1619              :         case error_t::fits_neg_bytes:
    1620              :             return "FITS: tried to read or write negative number of bytes";
    1621              :         case error_t::fits_bad_row_num:
    1622              :             return "FITS: illegal starting row number in table";
    1623              :         case error_t::fits_bad_elem_num:
    1624              :             return "FITS: illegal starting element number in vector";
    1625              :         case error_t::fits_not_ascii_col:
    1626              :             return "FITS: this is not an ASCII string column";
    1627              :         case error_t::fits_not_logical_col:
    1628              :             return "FITS: this is not a logical data type column";
    1629              :         case error_t::fits_bad_atable_format:
    1630              :             return "FITS: ASCII table column has wrong format";
    1631              :         case error_t::fits_bad_btable_format:
    1632              :             return "FITS: Binary table column has wrong format";
    1633              :         case error_t::fits_no_null:
    1634              :             return "FITS: null value has not been defined";
    1635              :         case error_t::fits_not_vari_len:
    1636              :             return "FITS: this is not a variable length column";
    1637              :         case error_t::fits_bad_dimen:
    1638              :             return "FITS: illegal number of dimensions in array";
    1639              :         case error_t::fits_bad_pix_num:
    1640              :             return "FITS: first pixel number greater than last pixel";
    1641              :         case error_t::fits_zero_scale:
    1642              :             return "FITS: illegal BSCALE or TSCALn keyword = 0";
    1643              :         case error_t::fits_neg_axis:
    1644              :             return "FITS: illegal axis length < 1";
    1645              :         case error_t::fits_not_group_table:
    1646              :             return "FITS: Grouping function error";
    1647              :         case error_t::fits_hdu_already_member:
    1648              :             return "FITS: hdu already member";
    1649              :         case error_t::fits_member_not_found:
    1650              :             return "FITS: member not found";
    1651              :         case error_t::fits_group_not_found:
    1652              :             return "FITS: group not found";
    1653              :         case error_t::fits_bad_group_id:
    1654              :             return "FITS: bad group id";
    1655              :         case error_t::fits_too_many_hdus_tracked:
    1656              :             return "FITS: too many hdus tracked";
    1657              :         case error_t::fits_hdu_already_tracked:
    1658              :             return "FITS: hdu already tracked";
    1659              :         case error_t::fits_bad_option:
    1660              :             return "FITS: bad option";
    1661              :         case error_t::fits_identical_pointers:
    1662              :             return "FITS: identical pointers";
    1663              :         case error_t::fits_bad_group_attach:
    1664              :             return "FITS: bad group attach";
    1665              :         case error_t::fits_bad_group_detach:
    1666              :             return "FITS: bad group detach";
    1667              :         case error_t::fits_ngp_no_memory:
    1668              :             return "FITS: malloc failed";
    1669              :         case error_t::fits_ngp_read_err:
    1670              :             return "FITS: read error from file";
    1671              :         case error_t::fits_ngp_nul_ptr:
    1672              :             return "FITS: null pointer passed as an argument.";
    1673              :         case error_t::fits_ngp_empty_curline:
    1674              :             return "FITS: line read seems to be empty (used";
    1675              :         case error_t::fits_ngp_unread_queue_full:
    1676              :             return "FITS: cannot unread more then 1 line";
    1677              :         case error_t::fits_ngp_inc_nesting:
    1678              :             return "FITS: too deep include file nesting ";
    1679              :         case error_t::fits_ngp_err_fopen:
    1680              :             return "FITS: fopen() failed, cannot open template file";
    1681              :         case error_t::fits_ngp_eof:
    1682              :             return "FITS: end of file encountered and not expected";
    1683              :         case error_t::fits_ngp_bad_arg:
    1684              :             return "FITS: bad arguments passed.";
    1685              :         case error_t::fits_ngp_token_not_expect:
    1686              :             return "FITS: token not expected here";
    1687              :         case error_t::fits_bad_i2c:
    1688              :             return "FITS: bad int to formatted string conversion";
    1689              :         case error_t::fits_bad_f2c:
    1690              :             return "FITS: bad float to formatted string conversion";
    1691              :         case error_t::fits_bad_intkey:
    1692              :             return "FITS: can't interpret keyword value as integer";
    1693              :         case error_t::fits_bad_logicalkey:
    1694              :             return "FITS: can't interpret keyword value as logical";
    1695              :         case error_t::fits_bad_floatkey:
    1696              :             return "FITS: can't interpret keyword value as float";
    1697              :         case error_t::fits_bad_doublekey:
    1698              :             return "FITS: can't interpret keyword value as double";
    1699              :         case error_t::fits_bad_c2i:
    1700              :             return "FITS: bad formatted string to int conversion";
    1701              :         case error_t::fits_bad_c2f:
    1702              :             return "FITS: bad formatted string to float conversion";
    1703              :         case error_t::fits_bad_c2d:
    1704              :             return "FITS: bad formatted string to double conversion";
    1705              :         case error_t::fits_bad_datatype:
    1706              :             return "FITS: illegal datatype code value";
    1707              :         case error_t::fits_bad_decim:
    1708              :             return "FITS: bad number of decimal places specified";
    1709              :         case error_t::fits_num_overflow:
    1710              :             return "FITS: overflow during data type conversion";
    1711              :         case error_t::fits_data_compression_err:
    1712              :             return "FITS: error compressing image";
    1713              :         case error_t::fits_data_decompression_err:
    1714              :             return "FITS: error uncompressing image";
    1715              :         case error_t::fits_bad_date:
    1716              :             return "FITS: error in date or time conversion";
    1717              :         case error_t::fits_parse_syntax_err:
    1718              :             return "FITS: syntax error in parser expression";
    1719              :         case error_t::fits_parse_bad_type:
    1720              :             return "FITS: expression did not evaluate to desired type";
    1721              :         case error_t::fits_parse_lrg_vector:
    1722              :             return "FITS: vector result too large to return in array";
    1723              :         case error_t::fits_parse_no_output:
    1724              :             return "FITS: data parser failed not sent an out column";
    1725              :         case error_t::fits_parse_bad_col:
    1726              :             return "FITS: bad data encounter while parsing column";
    1727              :         case error_t::fits_parse_bad_output:
    1728              :             return "FITS: Output file not of proper type";
    1729              :         case error_t::fits_angle_too_big:
    1730              :             return "FITS: celestial angle too large for projection";
    1731              :         case error_t::fits_bad_wcs_val:
    1732              :             return "FITS: bad celestial coordinate or pixel value";
    1733              :         case error_t::fits_wcs_error:
    1734              :             return "FITS: error in celestial coordinate calculation";
    1735              :         case error_t::fits_bad_wcs_proj:
    1736              :             return "FITS: unsupported type of celestial projection";
    1737              :         case error_t::fits_no_wcs_key:
    1738              :             return "FITS: celestial coordinate keywords not found";
    1739              :         case error_t::fits_approx_wcs_key:
    1740              :             return "FITS: approximate wcs keyword values were returned";
    1741              :         case error_t::cuda_success:
    1742              :             return "CUDA: no error";
    1743              :         case error_t::cuda_invalid_value:
    1744              :             return "CUDA: invalid argument";
    1745              :         case error_t::cuda_memory_allocation:
    1746              :             return "CUDA: out of memory";
    1747              :         case error_t::cuda_initialization_error:
    1748              :             return "CUDA: initialization error";
    1749              :         case error_t::cuda_cudart_unloading:
    1750              :             return "CUDA: driver shutting down";
    1751              :         case error_t::cuda_profiler_disabled:
    1752              :             return "CUDA: profiler disabled while using external profiling tool";
    1753              :         case error_t::cuda_profiler_not_initialized:
    1754              :             return "CUDA: profiler not initialized: call cudaProfilerInitialize()";
    1755              :         case error_t::cuda_profiler_already_started:
    1756              :             return "CUDA: profiler already started";
    1757              :         case error_t::cuda_profiler_already_stopped:
    1758              :             return "CUDA: profiler already stopped";
    1759              :         case error_t::cuda_invalid_configuration:
    1760              :             return "CUDA: invalid configuration argument";
    1761              :         case error_t::cuda_invalid_pitch_value:
    1762              :             return "CUDA: invalid pitch argument";
    1763              :         case error_t::cuda_invalid_symbol:
    1764              :             return "CUDA: invalid device symbol";
    1765              :         case error_t::cuda_invalid_host_pointer:
    1766              :             return "CUDA: invalid host pointer";
    1767              :         case error_t::cuda_invalid_device_pointer:
    1768              :             return "CUDA: invalid device pointer";
    1769              :         case error_t::cuda_invalid_texture:
    1770              :             return "CUDA: invalid texture reference";
    1771              :         case error_t::cuda_invalid_texture_binding:
    1772              :             return "CUDA: texture is not bound to a pointer";
    1773              :         case error_t::cuda_invalid_channel_descriptor:
    1774              :             return "CUDA: invalid channel descriptor";
    1775              :         case error_t::cuda_invalid_memcpy_direction:
    1776              :             return "CUDA: invalid copy direction for memcpy";
    1777              :         case error_t::cuda_address_of_constant:
    1778              :             return "CUDA: invalid address of constant";
    1779              :         case error_t::cuda_texture_fetch_failed:
    1780              :             return "CUDA: fetch from texture failed";
    1781              :         case error_t::cuda_texture_not_bound:
    1782              :             return "CUDA: cannot fetch from a texture that is not bound";
    1783              :         case error_t::cuda_synchronization_error:
    1784              :             return "CUDA: incorrect use of __syncthreads()";
    1785              :         case error_t::cuda_invalid_filter_setting:
    1786              :             return "CUDA: linear filtering not supported for non-float type";
    1787              :         case error_t::cuda_invalid_norm_setting:
    1788              :             return "CUDA: read as normalized float not supported for 32-bit non float type";
    1789              :         case error_t::cuda_mixed_device_execution:
    1790              :             return "CUDA: device emulation mode and device execution mode cannot be mixed";
    1791              :         case error_t::cuda_not_yet_implemented:
    1792              :             return "CUDA: feature not yet implemented";
    1793              :         case error_t::cuda_memory_value_too_large:
    1794              :             return "CUDA: memory size or pointer value too large to fit in 32 bit";
    1795              :         case error_t::cuda_stub_library:
    1796              :             return "CUDA: CUDA driver is a stub library";
    1797              :         case error_t::cuda_insufficient_driver:
    1798              :             return "CUDA: CUDA driver version is insufficient for CUDA runtime version";
    1799              :         case error_t::cuda_call_requires_newer_driver:
    1800              :             return "CUDA: API call is not supported in the installed CUDA driver";
    1801              :         case error_t::cuda_invalid_surface:
    1802              :             return "CUDA: invalid surface reference";
    1803              :         case error_t::cuda_duplicate_variable_name:
    1804              :             return "CUDA: duplicate global variable looked up by string name";
    1805              :         case error_t::cuda_duplicate_texture_name:
    1806              :             return "CUDA: duplicate texture looked up by string name";
    1807              :         case error_t::cuda_duplicate_surface_name:
    1808              :             return "CUDA: duplicate surface looked up by string name";
    1809              :         case error_t::cuda_devices_unavailable:
    1810              :             return "CUDA: CUDA-capable device(s) is/are busy or unavailable";
    1811              :         case error_t::cuda_incompatible_driver_context:
    1812              :             return "CUDA: incompatible driver context";
    1813              :         case error_t::cuda_missing_configuration:
    1814              :             return "CUDA: __global__ function call is not configured";
    1815              :         case error_t::cuda_prior_launch_failure:
    1816              :             return "CUDA: unspecified launch failure in prior launch";
    1817              :         case error_t::cuda_launch_max_depth_exceeded:
    1818              :             return "CUDA: launch would exceed maximum depth of nested launches";
    1819              :         case error_t::cuda_launch_file_scoped_tex:
    1820              :             return "CUDA: launch failed because kernel uses unsupported, file-scoped textures (texture objects are supported)";
    1821              :         case error_t::cuda_launch_file_scoped_surf:
    1822              :             return "CUDA: launch failed because kernel uses unsupported, file-scoped surfaces (surface objects are supported)";
    1823              :         case error_t::cuda_sync_depth_exceeded:
    1824              :             return "CUDA: cudaDeviceSynchronize failed because caller's grid depth exceeds cudaLimitDevRuntimeSyncDepth";
    1825              :         case error_t::cuda_launch_pending_count_exceeded:
    1826              :             return "CUDA: launch failed because launch would exceed cudaLimitDevRuntimePendingLaunchCount";
    1827              :         case error_t::cuda_invalid_device_function:
    1828              :             return "CUDA: invalid device function";
    1829              :         case error_t::cuda_no_device:
    1830              :             return "CUDA: no CUDA-capable device is detected";
    1831              :         case error_t::cuda_invalid_device:
    1832              :             return "CUDA: invalid device ordinal";
    1833              :         case error_t::cuda_device_not_licensed:
    1834              :             return "CUDA: device doesn't have valid Grid license";
    1835              :         case error_t::cuda_software_validity_not_established:
    1836              :             return "CUDA: integrity checks failed";
    1837              :         case error_t::cuda_startup_failure:
    1838              :             return "CUDA: startup failure in cuda runtime";
    1839              :         case error_t::cuda_invalid_kernel_image:
    1840              :             return "CUDA: device kernel image is invalid";
    1841              :         case error_t::cuda_device_uninitialized:
    1842              :             return "CUDA: invalid device context";
    1843              :         case error_t::cuda_map_buffer_object_failed:
    1844              :             return "CUDA: mapping of buffer object failed";
    1845              :         case error_t::cuda_unmap_buffer_object_failed:
    1846              :             return "CUDA: unmapping of buffer object failed";
    1847              :         case error_t::cuda_array_is_mapped:
    1848              :             return "CUDA: array is mapped";
    1849              :         case error_t::cuda_already_mapped:
    1850              :             return "CUDA: resource already mapped";
    1851              :         case error_t::cuda_no_kernel_image_for_device:
    1852              :             return "CUDA: no kernel image is available for execution on the device";
    1853              :         case error_t::cuda_already_acquired:
    1854              :             return "CUDA: resource already acquired";
    1855              :         case error_t::cuda_not_mapped:
    1856              :             return "CUDA: resource not mapped";
    1857              :         case error_t::cuda_not_mapped_as_array:
    1858              :             return "CUDA: resource not mapped as array";
    1859              :         case error_t::cuda_not_mapped_as_pointer:
    1860              :             return "CUDA: resource not mapped as pointer";
    1861              :         case error_t::cuda_e_c_c_uncorrectable:
    1862              :             return "CUDA: uncorrectable ECC error encountered";
    1863              :         case error_t::cuda_unsupported_limit:
    1864              :             return "CUDA: limit is not supported on this architecture";
    1865              :         case error_t::cuda_device_already_in_use:
    1866              :             return "CUDA: exclusive-thread device already in use by a different thread";
    1867              :         case error_t::cuda_peer_access_unsupported:
    1868              :             return "CUDA: peer access is not supported between these two devices";
    1869              :         case error_t::cuda_invalid_ptx:
    1870              :             return "CUDA: a PTX JIT compilation failed";
    1871              :         case error_t::cuda_invalid_graphics_context:
    1872              :             return "CUDA: invalid OpenGL or DirectX context";
    1873              :         case error_t::cuda_nvlink_uncorrectable:
    1874              :             return "CUDA: uncorrectable NVLink error detected during the execution";
    1875              :         case error_t::cuda_jit_compiler_not_found:
    1876              :             return "CUDA: PTX JIT compiler library not found";
    1877              :         case error_t::cuda_unsupported_ptx_version:
    1878              :             return "CUDA: the provided PTX was compiled with an unsupported toolchain.";
    1879              :         case error_t::cuda_jit_compilation_disabled:
    1880              :             return "CUDA: PTX JIT compilation was disabled";
    1881              :         case error_t::cuda_unsupported_exec_affinity:
    1882              :             return "CUDA: the provided execution affinity is not supported";
    1883              :         case error_t::cuda_invalid_source:
    1884              :             return "CUDA: device kernel image is invalid";
    1885              :         case error_t::cuda_file_not_found:
    1886              :             return "CUDA: file not found";
    1887              :         case error_t::cuda_shared_object_symbol_not_found:
    1888              :             return "CUDA: shared object symbol not found";
    1889              :         case error_t::cuda_shared_object_init_failed:
    1890              :             return "CUDA: shared object initialization failed";
    1891              :         case error_t::cuda_operating_system:
    1892              :             return "CUDA: OS call failed or operation not supported on this OS";
    1893              :         case error_t::cuda_invalid_resource_handle:
    1894              :             return "CUDA: invalid resource handle";
    1895              :         case error_t::cuda_illegal_state:
    1896              :             return "CUDA: the operation cannot be performed in the present state";
    1897              :         case error_t::cuda_symbol_not_found:
    1898              :             return "CUDA: named symbol not found";
    1899              :         case error_t::cuda_not_ready:
    1900              :             return "CUDA: device not ready";
    1901              :         case error_t::cuda_illegal_address:
    1902              :             return "CUDA: an illegal memory access was encountered";
    1903              :         case error_t::cuda_launch_out_of_resources:
    1904              :             return "CUDA: too many resources requested for launch";
    1905              :         case error_t::cuda_launch_timeout:
    1906              :             return "CUDA: the launch timed out and was terminated";
    1907              :         case error_t::cuda_launch_incompatible_texturing:
    1908              :             return "CUDA: launch uses incompatible texturing mode";
    1909              :         case error_t::cuda_peer_access_already_enabled:
    1910              :             return "CUDA: peer access is already enabled";
    1911              :         case error_t::cuda_peer_access_not_enabled:
    1912              :             return "CUDA: peer access has not been enabled";
    1913              :         case error_t::cuda_set_on_active_process:
    1914              :             return "CUDA: cannot set while device is active in this process";
    1915              :         case error_t::cuda_context_is_destroyed:
    1916              :             return "CUDA: context is destroyed";
    1917              :         case error_t::cuda_assert:
    1918              :             return "CUDA: device-side assert triggered";
    1919              :         case error_t::cuda_too_many_peers:
    1920              :             return "CUDA: peer mapping resources exhausted";
    1921              :         case error_t::cuda_host_memory_already_registered:
    1922              :             return "CUDA: part or all of the requested memory range is already mapped";
    1923              :         case error_t::cuda_host_memory_not_registered:
    1924              :             return "CUDA: pointer does not correspond to a registered memory region";
    1925              :         case error_t::cuda_hardware_stack_error:
    1926              :             return "CUDA: hardware stack error";
    1927              :         case error_t::cuda_illegal_instruction:
    1928              :             return "CUDA: an illegal instruction was encountered";
    1929              :         case error_t::cuda_misaligned_address:
    1930              :             return "CUDA: misaligned address";
    1931              :         case error_t::cuda_invalid_address_space:
    1932              :             return "CUDA: operation not supported on global/shared address space";
    1933              :         case error_t::cuda_invalid_pc:
    1934              :             return "CUDA: invalid program counter";
    1935              :         case error_t::cuda_launch_failure:
    1936              :             return "CUDA: unspecified launch failure";
    1937              :         case error_t::cuda_cooperative_launch_too_large:
    1938              :             return "CUDA: too many blocks in cooperative launch";
    1939              :         case error_t::cuda_not_permitted:
    1940              :             return "CUDA: operation not permitted";
    1941              :         case error_t::cuda_not_supported:
    1942              :             return "CUDA: operation not supported";
    1943              :         case error_t::cuda_system_not_ready:
    1944              :             return "CUDA: system not yet initialized";
    1945              :         case error_t::cuda_system_driver_mismatch:
    1946              :             return "CUDA: system has unsupported display driver / cuda driver combination";
    1947              :         case error_t::cuda_compat_not_supported_on_device:
    1948              :             return "CUDA: forward compatibility was attempted on non supported HW";
    1949              :         case error_t::cuda_mps_connection_failed:
    1950              :             return "CUDA: MPS client failed to connect to the MPS control daemon or the MPS server";
    1951              :         case error_t::cuda_mps_rpc_failure:
    1952              :             return "CUDA: the remote procedural call between the MPS server and the MPS client failed";
    1953              :         case error_t::cuda_mps_server_not_ready:
    1954              :             return "CUDA: MPS server is not ready to accept new MPS client requests";
    1955              :         case error_t::cuda_mps_max_clients_reached:
    1956              :             return "CUDA: the hardware resources required to create MPS client have been exhausted";
    1957              :         case error_t::cuda_mps_max_connections_reached:
    1958              :             return "CUDA: the hardware resources required to support device connections have been exhausted";
    1959              :         case error_t::cuda_mps_client_terminated:
    1960              :             return "CUDA: the MPS client has been terminated by the server";
    1961              :         case error_t::cuda_cdp_not_supported:
    1962              :             return "CUDA: is using CUDA Dynamic Parallelism, but the current configuration, like MPS, does not support it";
    1963              :         case error_t::cuda_cdp_version_mismatch:
    1964              :             return "CUDA: unsupported interaction between different versions of CUDA Dynamic Parallelism";
    1965              :         case error_t::cuda_stream_capture_unsupported:
    1966              :             return "CUDA: operation not permitted when stream is capturing";
    1967              :         case error_t::cuda_stream_capture_invalidated:
    1968              :             return "CUDA: operation failed due to a previous error during capture";
    1969              :         case error_t::cuda_stream_capture_merge:
    1970              :             return "CUDA: operation would result in a merge of separate capture sequences";
    1971              :         case error_t::cuda_stream_capture_unmatched:
    1972              :             return "CUDA: capture was not ended in the same stream as it began";
    1973              :         case error_t::cuda_stream_capture_unjoined:
    1974              :             return "CUDA: capturing stream has unjoined work";
    1975              :         case error_t::cuda_stream_capture_isolation:
    1976              :             return "CUDA: dependency created on uncaptured work in another stream";
    1977              :         case error_t::cuda_stream_capture_implicit:
    1978              :             return "CUDA: operation would make the legacy stream depend on a capturing blocking stream";
    1979              :         case error_t::cuda_captured_event:
    1980              :             return "CUDA: operation not permitted on an event last recorded in a capturing stream";
    1981              :         case error_t::cuda_stream_capture_wrong_thread:
    1982              :             return "CUDA: attempt to terminate a thread-local capture sequence from another thread";
    1983              :         case error_t::cuda_timeout:
    1984              :             return "CUDA: wait operation timed out";
    1985              :         case error_t::cuda_graph_exec_update_failure:
    1986              :             return "CUDA: the graph update was not performed because it included changes which violated constraints specific to instantiated graph update";
    1987              :         case error_t::cuda_external_device:
    1988              :             return "CUDA: an async error has occured in external entity outside of CUDA";
    1989              :         case error_t::cuda_invalid_cluster_size:
    1990              :             return "CUDA: a kernel launch error has occurred due to cluster misconfiguration";
    1991              :         case error_t::cuda_unknown:
    1992              :             return "CUDA: unknown error";
    1993              :         case error_t::cuda_api_failure_base:
    1994              :             return "CUDA: api failure base";
    1995              :         default:
    1996              :             return "unknown error_t (bug)";
    1997              :     }
    1998              : } //errorMessage
    1999              : 
    2000              : /// Convert an errno code to \ref error_t
    2001              : /**
    2002              :  * \returns the \ref error_t code corresponding to the errno code
    2003              :  *
    2004              :  * \ingroup error_handling_codes
    2005              :  */
    2006            2 : static constexpr error_t errno2error_t( const int & err/**< [in] the errno code to convert*/)
    2007              : {
    2008            2 :     switch(err)
    2009              :     {
    2010            1 :         case EACCES:
    2011            1 :             return error_t::eacces;
    2012            0 :         case EADDRINUSE:
    2013            0 :             return error_t::eaddrinuse;
    2014            0 :         case EADDRNOTAVAIL:
    2015            0 :             return error_t::eaddrnotavail;
    2016            0 :         case EAFNOSUPPORT:
    2017            0 :             return error_t::eafnosupport;
    2018            0 :         case EAGAIN:
    2019            0 :             return error_t::eagain;
    2020            0 :         case EALREADY:
    2021            0 :             return error_t::ealready;
    2022            0 :         case EBADF:
    2023            0 :             return error_t::ebadf;
    2024            0 :         case EBADMSG:
    2025            0 :             return error_t::ebadmsg;
    2026            0 :         case EBUSY:
    2027            0 :             return error_t::ebusy;
    2028            0 :         case ECANCELED:
    2029            0 :             return error_t::ecanceled;
    2030            0 :         case ECHILD:
    2031            0 :             return error_t::echild;
    2032            0 :         case ECONNABORTED:
    2033            0 :             return error_t::econnaborted;
    2034            0 :         case ECONNREFUSED:
    2035            0 :             return error_t::econnrefused;
    2036            0 :         case ECONNRESET:
    2037            0 :             return error_t::econnreset;
    2038            0 :         case EDESTADDRREQ:
    2039            0 :             return error_t::edestaddrreq;
    2040            0 :         case EDOM:
    2041            0 :             return error_t::edom;
    2042            1 :         case EEXIST:
    2043            1 :             return error_t::eexist;
    2044            0 :         case EFAULT:
    2045            0 :             return error_t::efault;
    2046            0 :         case EFBIG:
    2047            0 :             return error_t::efbig;
    2048            0 :         case EHOSTUNREACH:
    2049            0 :             return error_t::ehostunreach;
    2050            0 :         case EIDRM:
    2051            0 :             return error_t::eidrm;
    2052            0 :         case EILSEQ:
    2053            0 :             return error_t::eilseq;
    2054            0 :         case EINPROGRESS:
    2055            0 :             return error_t::einprogress;
    2056            0 :         case EINTR:
    2057            0 :             return error_t::eintr;
    2058            0 :         case EINVAL:
    2059            0 :             return error_t::einval;
    2060            0 :         case EIO:
    2061            0 :             return error_t::eio;
    2062            0 :         case EISCONN:
    2063            0 :             return error_t::eisconn;
    2064            0 :         case EISDIR:
    2065            0 :             return error_t::eisdir;
    2066            0 :         case ELOOP:
    2067            0 :             return error_t::eloop;
    2068            0 :         case EMFILE:
    2069            0 :             return error_t::emfile;
    2070            0 :         case EMLINK:
    2071            0 :             return error_t::emlink;
    2072            0 :         case EMSGSIZE:
    2073            0 :             return error_t::emsgsize;
    2074            0 :         case ENAMETOOLONG:
    2075            0 :             return error_t::enametoolong;
    2076            0 :         case ENETDOWN:
    2077            0 :             return error_t::enetdown;
    2078            0 :         case ENETRESET:
    2079            0 :             return error_t::enetreset;
    2080            0 :         case ENETUNREACH:
    2081            0 :             return error_t::enetunreach;
    2082            0 :         case ENFILE:
    2083            0 :             return error_t::enfile;
    2084            0 :         case ENOBUFS:
    2085            0 :             return error_t::enobufs;
    2086            0 :         case ENODATA:
    2087            0 :             return error_t::enodata;
    2088            0 :         case ENODEV:
    2089            0 :             return error_t::enodev;
    2090            0 :         case ENOENT:
    2091            0 :             return error_t::enoent;
    2092            0 :         case ENOEXEC:
    2093            0 :             return error_t::enoexec;
    2094            0 :         case ENOLCK:
    2095            0 :             return error_t::enolck;
    2096            0 :         case ENOLINK:
    2097            0 :             return error_t::enolink;
    2098            0 :         case ENOMEM:
    2099            0 :             return error_t::enomem;
    2100            0 :         case ENOMSG:
    2101            0 :             return error_t::enomsg;
    2102            0 :         case ENOPROTOOPT:
    2103            0 :             return error_t::enoprotoopt;
    2104            0 :         case ENOSPC:
    2105            0 :             return error_t::enospc;
    2106            0 :         case ENOSR:
    2107            0 :             return error_t::enosr;
    2108            0 :         case ENOSTR:
    2109            0 :             return error_t::enostr;
    2110            0 :         case ENOSYS:
    2111            0 :             return error_t::enosys;
    2112            0 :         case ENOTCONN:
    2113            0 :             return error_t::enotconn;
    2114            0 :         case ENOTDIR:
    2115            0 :             return error_t::enotdir;
    2116            0 :         case ENOTEMPTY:
    2117            0 :             return error_t::enotempty;
    2118            0 :         case ENOTRECOVERABLE:
    2119            0 :             return error_t::enotrecoverable;
    2120            0 :         case ENOTSOCK:
    2121            0 :             return error_t::enotsock;
    2122            0 :         case ENOTSUP:
    2123            0 :             return error_t::enotsup;
    2124            0 :         case ENOTTY:
    2125            0 :             return error_t::enotty;
    2126            0 :         case ENXIO:
    2127            0 :             return error_t::enxio;
    2128            0 :         case EOVERFLOW:
    2129            0 :             return error_t::eoverflow;
    2130            0 :         case EOWNERDEAD:
    2131            0 :             return error_t::eownerdead;
    2132            0 :         case EPERM:
    2133            0 :             return error_t::eperm;
    2134            0 :         case EPIPE:
    2135            0 :             return error_t::epipe;
    2136            0 :         case EPROTO:
    2137            0 :             return error_t::eproto;
    2138            0 :         case EPROTONOSUPPORT:
    2139            0 :             return error_t::eprotonosupport;
    2140            0 :         case EPROTOTYPE:
    2141            0 :             return error_t::eprototype;
    2142            0 :         case ERANGE:
    2143            0 :             return error_t::erange;
    2144            0 :         case EROFS:
    2145            0 :             return error_t::erofs;
    2146            0 :         case ESPIPE:
    2147            0 :             return error_t::espipe;
    2148            0 :         case ESRCH:
    2149            0 :             return error_t::esrch;
    2150            0 :         case ETIME:
    2151            0 :             return error_t::etime;
    2152            0 :         case ETIMEDOUT:
    2153            0 :             return error_t::etimedout;
    2154            0 :         case ETXTBSY:
    2155            0 :             return error_t::etxtbsy;
    2156            0 :         case EXDEV:
    2157            0 :             return error_t::exdev;
    2158            0 :         default:
    2159            0 :             return error_t::error;
    2160              :     }
    2161              : } //errno2error_t
    2162              : 
    2163              : /// Convert a FITS status code to \ref error_t
    2164              : /**
    2165              :  * \returns the \ref error_t code corresponding to the FITS status code
    2166              :  *
    2167              :  * \ingroup fits_utils
    2168              :  */
    2169            0 : static constexpr error_t fits_status2error_t( const int & err/**< [in] the fits status code to convert*/)
    2170              : {
    2171            0 :     switch(err)
    2172              :     {
    2173            0 :         case 0:
    2174            0 :             return error_t::noerror;
    2175            0 :         case SAME_FILE:
    2176            0 :             return error_t::fits_same_file;
    2177            0 :         case TOO_MANY_FILES:
    2178            0 :             return error_t::fits_too_many_files;
    2179            0 :         case FILE_NOT_OPENED:
    2180            0 :             return error_t::fits_file_not_opened;
    2181            0 :         case FILE_NOT_CREATED:
    2182            0 :             return error_t::fits_file_not_created;
    2183            0 :         case WRITE_ERROR:
    2184            0 :             return error_t::fits_write_error;
    2185            0 :         case END_OF_FILE:
    2186            0 :             return error_t::fits_end_of_file;
    2187            0 :         case READ_ERROR:
    2188            0 :             return error_t::fits_read_error;
    2189            0 :         case FILE_NOT_CLOSED:
    2190            0 :             return error_t::fits_file_not_closed;
    2191            0 :         case ARRAY_TOO_BIG:
    2192            0 :             return error_t::fits_array_too_big;
    2193            0 :         case READONLY_FILE:
    2194            0 :             return error_t::fits_readonly_file;
    2195            0 :         case MEMORY_ALLOCATION:
    2196            0 :             return error_t::fits_memory_allocation;
    2197            0 :         case BAD_FILEPTR:
    2198            0 :             return error_t::fits_bad_fileptr;
    2199            0 :         case NULL_INPUT_PTR:
    2200            0 :             return error_t::fits_null_input_ptr;
    2201            0 :         case SEEK_ERROR:
    2202            0 :             return error_t::fits_seek_error;
    2203            0 :         case BAD_NETTIMEOUT:
    2204            0 :             return error_t::fits_bad_nettimeout;
    2205            0 :         case BAD_URL_PREFIX:
    2206            0 :             return error_t::fits_bad_url_prefix;
    2207            0 :         case TOO_MANY_DRIVERS:
    2208            0 :             return error_t::fits_too_many_drivers;
    2209            0 :         case DRIVER_INIT_FAILED:
    2210            0 :             return error_t::fits_driver_init_failed;
    2211            0 :         case NO_MATCHING_DRIVER:
    2212            0 :             return error_t::fits_no_matching_driver;
    2213            0 :         case URL_PARSE_ERROR:
    2214            0 :             return error_t::fits_url_parse_error;
    2215            0 :         case RANGE_PARSE_ERROR:
    2216            0 :             return error_t::fits_range_parse_error;
    2217            0 :         case SHARED_BADARG:
    2218            0 :             return error_t::fits_shared_badarg;
    2219            0 :         case SHARED_NULPTR:
    2220            0 :             return error_t::fits_shared_nulptr;
    2221            0 :         case SHARED_TABFULL:
    2222            0 :             return error_t::fits_shared_tabfull;
    2223            0 :         case SHARED_NOTINIT:
    2224            0 :             return error_t::fits_shared_notinit;
    2225            0 :         case SHARED_IPCERR:
    2226            0 :             return error_t::fits_shared_ipcerr;
    2227            0 :         case SHARED_NOMEM:
    2228            0 :             return error_t::fits_shared_nomem;
    2229            0 :         case SHARED_AGAIN:
    2230            0 :             return error_t::fits_shared_again;
    2231            0 :         case SHARED_NOFILE:
    2232            0 :             return error_t::fits_shared_nofile;
    2233            0 :         case SHARED_NORESIZE:
    2234            0 :             return error_t::fits_shared_noresize;
    2235            0 :         case HEADER_NOT_EMPTY:
    2236            0 :             return error_t::fits_header_not_empty;
    2237            0 :         case KEY_NO_EXIST:
    2238            0 :             return error_t::fits_key_no_exist;
    2239            0 :         case KEY_OUT_BOUNDS:
    2240            0 :             return error_t::fits_key_out_bounds;
    2241            0 :         case VALUE_UNDEFINED:
    2242            0 :             return error_t::fits_value_undefined;
    2243            0 :         case NO_QUOTE:
    2244            0 :             return error_t::fits_no_quote;
    2245            0 :         case BAD_INDEX_KEY:
    2246            0 :             return error_t::fits_bad_index_key;
    2247            0 :         case BAD_KEYCHAR:
    2248            0 :             return error_t::fits_bad_keychar;
    2249            0 :         case BAD_ORDER:
    2250            0 :             return error_t::fits_bad_order;
    2251            0 :         case NOT_POS_INT:
    2252            0 :             return error_t::fits_not_pos_int;
    2253            0 :         case NO_END:
    2254            0 :             return error_t::fits_no_end;
    2255            0 :         case BAD_BITPIX:
    2256            0 :             return error_t::fits_bad_bitpix;
    2257            0 :         case BAD_NAXIS:
    2258            0 :             return error_t::fits_bad_naxis;
    2259            0 :         case BAD_NAXES:
    2260            0 :             return error_t::fits_bad_naxes;
    2261            0 :         case BAD_PCOUNT:
    2262            0 :             return error_t::fits_bad_pcount;
    2263            0 :         case BAD_GCOUNT:
    2264            0 :             return error_t::fits_bad_gcount;
    2265            0 :         case BAD_TFIELDS:
    2266            0 :             return error_t::fits_bad_tfields;
    2267            0 :         case NEG_WIDTH:
    2268            0 :             return error_t::fits_neg_width;
    2269            0 :         case NEG_ROWS:
    2270            0 :             return error_t::fits_neg_rows;
    2271            0 :         case COL_NOT_FOUND:
    2272            0 :             return error_t::fits_col_not_found;
    2273            0 :         case BAD_SIMPLE:
    2274            0 :             return error_t::fits_bad_simple;
    2275            0 :         case NO_SIMPLE:
    2276            0 :             return error_t::fits_no_simple;
    2277            0 :         case NO_BITPIX:
    2278            0 :             return error_t::fits_no_bitpix;
    2279            0 :         case NO_NAXIS:
    2280            0 :             return error_t::fits_no_naxis;
    2281            0 :         case NO_NAXES:
    2282            0 :             return error_t::fits_no_naxes;
    2283            0 :         case NO_XTENSION:
    2284            0 :             return error_t::fits_no_xtension;
    2285            0 :         case NOT_ATABLE:
    2286            0 :             return error_t::fits_not_atable;
    2287            0 :         case NOT_BTABLE:
    2288            0 :             return error_t::fits_not_btable;
    2289            0 :         case NO_PCOUNT:
    2290            0 :             return error_t::fits_no_pcount;
    2291            0 :         case NO_GCOUNT:
    2292            0 :             return error_t::fits_no_gcount;
    2293            0 :         case NO_TFIELDS:
    2294            0 :             return error_t::fits_no_tfields;
    2295            0 :         case NO_TBCOL:
    2296            0 :             return error_t::fits_no_tbcol;
    2297            0 :         case NO_TFORM:
    2298            0 :             return error_t::fits_no_tform;
    2299            0 :         case NOT_IMAGE:
    2300            0 :             return error_t::fits_not_image;
    2301            0 :         case BAD_TBCOL:
    2302            0 :             return error_t::fits_bad_tbcol;
    2303            0 :         case NOT_TABLE:
    2304            0 :             return error_t::fits_not_table;
    2305            0 :         case COL_TOO_WIDE:
    2306            0 :             return error_t::fits_col_too_wide;
    2307            0 :         case COL_NOT_UNIQUE:
    2308            0 :             return error_t::fits_col_not_unique;
    2309            0 :         case BAD_ROW_WIDTH:
    2310            0 :             return error_t::fits_bad_row_width;
    2311            0 :         case UNKNOWN_EXT:
    2312            0 :             return error_t::fits_unknown_ext;
    2313            0 :         case UNKNOWN_REC:
    2314            0 :             return error_t::fits_unknown_rec;
    2315            0 :         case END_JUNK:
    2316            0 :             return error_t::fits_end_junk;
    2317            0 :         case BAD_HEADER_FILL:
    2318            0 :             return error_t::fits_bad_header_fill;
    2319            0 :         case BAD_DATA_FILL:
    2320            0 :             return error_t::fits_bad_data_fill;
    2321            0 :         case BAD_TFORM:
    2322            0 :             return error_t::fits_bad_tform;
    2323            0 :         case BAD_TFORM_DTYPE:
    2324            0 :             return error_t::fits_bad_tform_dtype;
    2325            0 :         case BAD_TDIM:
    2326            0 :             return error_t::fits_bad_tdim;
    2327            0 :         case BAD_HEAP_PTR:
    2328            0 :             return error_t::fits_bad_heap_ptr;
    2329            0 :         case BAD_HDU_NUM:
    2330            0 :             return error_t::fits_bad_hdu_num;
    2331            0 :         case BAD_COL_NUM:
    2332            0 :             return error_t::fits_bad_col_num;
    2333            0 :         case NEG_FILE_POS:
    2334            0 :             return error_t::fits_neg_file_pos;
    2335            0 :         case NEG_BYTES:
    2336            0 :             return error_t::fits_neg_bytes;
    2337            0 :         case BAD_ROW_NUM:
    2338            0 :             return error_t::fits_bad_row_num;
    2339            0 :         case BAD_ELEM_NUM:
    2340            0 :             return error_t::fits_bad_elem_num;
    2341            0 :         case NOT_ASCII_COL:
    2342            0 :             return error_t::fits_not_ascii_col;
    2343            0 :         case NOT_LOGICAL_COL:
    2344            0 :             return error_t::fits_not_logical_col;
    2345            0 :         case BAD_ATABLE_FORMAT:
    2346            0 :             return error_t::fits_bad_atable_format;
    2347            0 :         case BAD_BTABLE_FORMAT:
    2348            0 :             return error_t::fits_bad_btable_format;
    2349            0 :         case NO_NULL:
    2350            0 :             return error_t::fits_no_null;
    2351            0 :         case NOT_VARI_LEN:
    2352            0 :             return error_t::fits_not_vari_len;
    2353            0 :         case BAD_DIMEN:
    2354            0 :             return error_t::fits_bad_dimen;
    2355            0 :         case BAD_PIX_NUM:
    2356            0 :             return error_t::fits_bad_pix_num;
    2357            0 :         case ZERO_SCALE:
    2358            0 :             return error_t::fits_zero_scale;
    2359            0 :         case NEG_AXIS:
    2360            0 :             return error_t::fits_neg_axis;
    2361            0 :         case NOT_GROUP_TABLE:
    2362            0 :             return error_t::fits_not_group_table;
    2363            0 :         case HDU_ALREADY_MEMBER:
    2364            0 :             return error_t::fits_hdu_already_member;
    2365            0 :         case MEMBER_NOT_FOUND:
    2366            0 :             return error_t::fits_member_not_found;
    2367            0 :         case GROUP_NOT_FOUND:
    2368            0 :             return error_t::fits_group_not_found;
    2369            0 :         case BAD_GROUP_ID:
    2370            0 :             return error_t::fits_bad_group_id;
    2371            0 :         case TOO_MANY_HDUS_TRACKED:
    2372            0 :             return error_t::fits_too_many_hdus_tracked;
    2373            0 :         case HDU_ALREADY_TRACKED:
    2374            0 :             return error_t::fits_hdu_already_tracked;
    2375            0 :         case BAD_OPTION:
    2376            0 :             return error_t::fits_bad_option;
    2377            0 :         case IDENTICAL_POINTERS:
    2378            0 :             return error_t::fits_identical_pointers;
    2379            0 :         case BAD_GROUP_ATTACH:
    2380            0 :             return error_t::fits_bad_group_attach;
    2381            0 :         case BAD_GROUP_DETACH:
    2382            0 :             return error_t::fits_bad_group_detach;
    2383            0 :         case NGP_NO_MEMORY:
    2384            0 :             return error_t::fits_ngp_no_memory;
    2385            0 :         case NGP_READ_ERR:
    2386            0 :             return error_t::fits_ngp_read_err;
    2387            0 :         case NGP_NUL_PTR:
    2388            0 :             return error_t::fits_ngp_nul_ptr;
    2389            0 :         case NGP_EMPTY_CURLINE:
    2390            0 :             return error_t::fits_ngp_empty_curline;
    2391            0 :         case NGP_UNREAD_QUEUE_FULL:
    2392            0 :             return error_t::fits_ngp_unread_queue_full;
    2393            0 :         case NGP_INC_NESTING:
    2394            0 :             return error_t::fits_ngp_inc_nesting;
    2395            0 :         case NGP_ERR_FOPEN:
    2396            0 :             return error_t::fits_ngp_err_fopen;
    2397            0 :         case NGP_EOF:
    2398            0 :             return error_t::fits_ngp_eof;
    2399            0 :         case NGP_BAD_ARG:
    2400            0 :             return error_t::fits_ngp_bad_arg;
    2401            0 :         case NGP_TOKEN_NOT_EXPECT:
    2402            0 :             return error_t::fits_ngp_token_not_expect;
    2403            0 :         case BAD_I2C:
    2404            0 :             return error_t::fits_bad_i2c;
    2405            0 :         case BAD_F2C:
    2406            0 :             return error_t::fits_bad_f2c;
    2407            0 :         case BAD_INTKEY:
    2408            0 :             return error_t::fits_bad_intkey;
    2409            0 :         case BAD_LOGICALKEY:
    2410            0 :             return error_t::fits_bad_logicalkey;
    2411            0 :         case BAD_FLOATKEY:
    2412            0 :             return error_t::fits_bad_floatkey;
    2413            0 :         case BAD_DOUBLEKEY:
    2414            0 :             return error_t::fits_bad_doublekey;
    2415            0 :         case BAD_C2I:
    2416            0 :             return error_t::fits_bad_c2i;
    2417            0 :         case BAD_C2F:
    2418            0 :             return error_t::fits_bad_c2f;
    2419            0 :         case BAD_C2D:
    2420            0 :             return error_t::fits_bad_c2d;
    2421            0 :         case BAD_DATATYPE:
    2422            0 :             return error_t::fits_bad_datatype;
    2423            0 :         case BAD_DECIM:
    2424            0 :             return error_t::fits_bad_decim;
    2425            0 :         case NUM_OVERFLOW:
    2426            0 :             return error_t::fits_num_overflow;
    2427            0 :         case DATA_COMPRESSION_ERR:
    2428            0 :             return error_t::fits_data_compression_err;
    2429            0 :         case DATA_DECOMPRESSION_ERR:
    2430            0 :             return error_t::fits_data_decompression_err;
    2431            0 :         case BAD_DATE:
    2432            0 :             return error_t::fits_bad_date;
    2433            0 :         case PARSE_SYNTAX_ERR:
    2434            0 :             return error_t::fits_parse_syntax_err;
    2435            0 :         case PARSE_BAD_TYPE:
    2436            0 :             return error_t::fits_parse_bad_type;
    2437            0 :         case PARSE_LRG_VECTOR:
    2438            0 :             return error_t::fits_parse_lrg_vector;
    2439            0 :         case PARSE_NO_OUTPUT:
    2440            0 :             return error_t::fits_parse_no_output;
    2441            0 :         case PARSE_BAD_COL:
    2442            0 :             return error_t::fits_parse_bad_col;
    2443            0 :         case PARSE_BAD_OUTPUT:
    2444            0 :             return error_t::fits_parse_bad_output;
    2445            0 :         case ANGLE_TOO_BIG:
    2446            0 :             return error_t::fits_angle_too_big;
    2447            0 :         case BAD_WCS_VAL:
    2448            0 :             return error_t::fits_bad_wcs_val;
    2449            0 :         case WCS_ERROR:
    2450            0 :             return error_t::fits_wcs_error;
    2451            0 :         case BAD_WCS_PROJ:
    2452            0 :             return error_t::fits_bad_wcs_proj;
    2453            0 :         case NO_WCS_KEY:
    2454            0 :             return error_t::fits_no_wcs_key;
    2455            0 :         case APPROX_WCS_KEY:
    2456            0 :             return error_t::fits_approx_wcs_key;
    2457            0 :         default:
    2458            0 :             return error_t::error;
    2459              :     }
    2460              : } //fits_status2error_t
    2461              : 
    2462              : #ifdef MXLIB_CUDA
    2463              : /// Convert a cudaError code to \ref error_t
    2464              : /**
    2465              :  * \returns the \ref error_t code corresponding to the cudaError code
    2466              :  *
    2467              :  * \ingroup cuda_utils
    2468              :  */
    2469              : static constexpr error_t cudaError2error_t( const cudaError_t & err/**< [in] the cudaError code to convert*/)
    2470              : {
    2471              :     switch(err)
    2472              :     {
    2473              :         case cudaSuccess:
    2474              :             return error_t::cuda_success;
    2475              :         case cudaErrorInvalidValue:
    2476              :             return error_t::cuda_invalid_value;
    2477              :         case cudaErrorMemoryAllocation:
    2478              :             return error_t::cuda_memory_allocation;
    2479              :         case cudaErrorInitializationError:
    2480              :             return error_t::cuda_initialization_error;
    2481              :         case cudaErrorCudartUnloading:
    2482              :             return error_t::cuda_cudart_unloading;
    2483              :         case cudaErrorProfilerDisabled:
    2484              :             return error_t::cuda_profiler_disabled;
    2485              :         case cudaErrorProfilerNotInitialized:
    2486              :             return error_t::cuda_profiler_not_initialized;
    2487              :         case cudaErrorProfilerAlreadyStarted:
    2488              :             return error_t::cuda_profiler_already_started;
    2489              :         case cudaErrorProfilerAlreadyStopped:
    2490              :             return error_t::cuda_profiler_already_stopped;
    2491              :         case cudaErrorInvalidConfiguration:
    2492              :             return error_t::cuda_invalid_configuration;
    2493              :         case cudaErrorInvalidPitchValue:
    2494              :             return error_t::cuda_invalid_pitch_value;
    2495              :         case cudaErrorInvalidSymbol:
    2496              :             return error_t::cuda_invalid_symbol;
    2497              :         case cudaErrorInvalidHostPointer:
    2498              :             return error_t::cuda_invalid_host_pointer;
    2499              :         case cudaErrorInvalidDevicePointer:
    2500              :             return error_t::cuda_invalid_device_pointer;
    2501              :         case cudaErrorInvalidTexture:
    2502              :             return error_t::cuda_invalid_texture;
    2503              :         case cudaErrorInvalidTextureBinding:
    2504              :             return error_t::cuda_invalid_texture_binding;
    2505              :         case cudaErrorInvalidChannelDescriptor:
    2506              :             return error_t::cuda_invalid_channel_descriptor;
    2507              :         case cudaErrorInvalidMemcpyDirection:
    2508              :             return error_t::cuda_invalid_memcpy_direction;
    2509              :         case cudaErrorAddressOfConstant:
    2510              :             return error_t::cuda_address_of_constant;
    2511              :         case cudaErrorTextureFetchFailed:
    2512              :             return error_t::cuda_texture_fetch_failed;
    2513              :         case cudaErrorTextureNotBound:
    2514              :             return error_t::cuda_texture_not_bound;
    2515              :         case cudaErrorSynchronizationError:
    2516              :             return error_t::cuda_synchronization_error;
    2517              :         case cudaErrorInvalidFilterSetting:
    2518              :             return error_t::cuda_invalid_filter_setting;
    2519              :         case cudaErrorInvalidNormSetting:
    2520              :             return error_t::cuda_invalid_norm_setting;
    2521              :         case cudaErrorMixedDeviceExecution:
    2522              :             return error_t::cuda_mixed_device_execution;
    2523              :         case cudaErrorNotYetImplemented:
    2524              :             return error_t::cuda_not_yet_implemented;
    2525              :         case cudaErrorMemoryValueTooLarge:
    2526              :             return error_t::cuda_memory_value_too_large;
    2527              :         case cudaErrorStubLibrary:
    2528              :             return error_t::cuda_stub_library;
    2529              :         case cudaErrorInsufficientDriver:
    2530              :             return error_t::cuda_insufficient_driver;
    2531              :         case cudaErrorCallRequiresNewerDriver:
    2532              :             return error_t::cuda_call_requires_newer_driver;
    2533              :         case cudaErrorInvalidSurface:
    2534              :             return error_t::cuda_invalid_surface;
    2535              :         case cudaErrorDuplicateVariableName:
    2536              :             return error_t::cuda_duplicate_variable_name;
    2537              :         case cudaErrorDuplicateTextureName:
    2538              :             return error_t::cuda_duplicate_texture_name;
    2539              :         case cudaErrorDuplicateSurfaceName:
    2540              :             return error_t::cuda_duplicate_surface_name;
    2541              :         case cudaErrorDevicesUnavailable:
    2542              :             return error_t::cuda_devices_unavailable;
    2543              :         case cudaErrorIncompatibleDriverContext:
    2544              :             return error_t::cuda_incompatible_driver_context;
    2545              :         case cudaErrorMissingConfiguration:
    2546              :             return error_t::cuda_missing_configuration;
    2547              :         case cudaErrorPriorLaunchFailure:
    2548              :             return error_t::cuda_prior_launch_failure;
    2549              :         case cudaErrorLaunchMaxDepthExceeded:
    2550              :             return error_t::cuda_launch_max_depth_exceeded;
    2551              :         case cudaErrorLaunchFileScopedTex:
    2552              :             return error_t::cuda_launch_file_scoped_tex;
    2553              :         case cudaErrorLaunchFileScopedSurf:
    2554              :             return error_t::cuda_launch_file_scoped_surf;
    2555              :         case cudaErrorSyncDepthExceeded:
    2556              :             return error_t::cuda_sync_depth_exceeded;
    2557              :         case cudaErrorLaunchPendingCountExceeded:
    2558              :             return error_t::cuda_launch_pending_count_exceeded;
    2559              :         case cudaErrorInvalidDeviceFunction:
    2560              :             return error_t::cuda_invalid_device_function;
    2561              :         case cudaErrorNoDevice:
    2562              :             return error_t::cuda_no_device;
    2563              :         case cudaErrorInvalidDevice:
    2564              :             return error_t::cuda_invalid_device;
    2565              :         case cudaErrorDeviceNotLicensed:
    2566              :             return error_t::cuda_device_not_licensed;
    2567              :         case cudaErrorSoftwareValidityNotEstablished:
    2568              :             return error_t::cuda_software_validity_not_established;
    2569              :         case cudaErrorStartupFailure:
    2570              :             return error_t::cuda_startup_failure;
    2571              :         case cudaErrorInvalidKernelImage:
    2572              :             return error_t::cuda_invalid_kernel_image;
    2573              :         case cudaErrorDeviceUninitialized:
    2574              :             return error_t::cuda_device_uninitialized;
    2575              :         case cudaErrorMapBufferObjectFailed:
    2576              :             return error_t::cuda_map_buffer_object_failed;
    2577              :         case cudaErrorUnmapBufferObjectFailed:
    2578              :             return error_t::cuda_unmap_buffer_object_failed;
    2579              :         case cudaErrorArrayIsMapped:
    2580              :             return error_t::cuda_array_is_mapped;
    2581              :         case cudaErrorAlreadyMapped:
    2582              :             return error_t::cuda_already_mapped;
    2583              :         case cudaErrorNoKernelImageForDevice:
    2584              :             return error_t::cuda_no_kernel_image_for_device;
    2585              :         case cudaErrorAlreadyAcquired:
    2586              :             return error_t::cuda_already_acquired;
    2587              :         case cudaErrorNotMapped:
    2588              :             return error_t::cuda_not_mapped;
    2589              :         case cudaErrorNotMappedAsArray:
    2590              :             return error_t::cuda_not_mapped_as_array;
    2591              :         case cudaErrorNotMappedAsPointer:
    2592              :             return error_t::cuda_not_mapped_as_pointer;
    2593              :         case cudaErrorECCUncorrectable:
    2594              :             return error_t::cuda_e_c_c_uncorrectable;
    2595              :         case cudaErrorUnsupportedLimit:
    2596              :             return error_t::cuda_unsupported_limit;
    2597              :         case cudaErrorDeviceAlreadyInUse:
    2598              :             return error_t::cuda_device_already_in_use;
    2599              :         case cudaErrorPeerAccessUnsupported:
    2600              :             return error_t::cuda_peer_access_unsupported;
    2601              :         case cudaErrorInvalidPtx:
    2602              :             return error_t::cuda_invalid_ptx;
    2603              :         case cudaErrorInvalidGraphicsContext:
    2604              :             return error_t::cuda_invalid_graphics_context;
    2605              :         case cudaErrorNvlinkUncorrectable:
    2606              :             return error_t::cuda_nvlink_uncorrectable;
    2607              :         case cudaErrorJitCompilerNotFound:
    2608              :             return error_t::cuda_jit_compiler_not_found;
    2609              :         case cudaErrorUnsupportedPtxVersion:
    2610              :             return error_t::cuda_unsupported_ptx_version;
    2611              :         case cudaErrorJitCompilationDisabled:
    2612              :             return error_t::cuda_jit_compilation_disabled;
    2613              :         case cudaErrorUnsupportedExecAffinity:
    2614              :             return error_t::cuda_unsupported_exec_affinity;
    2615              :         case cudaErrorInvalidSource:
    2616              :             return error_t::cuda_invalid_source;
    2617              :         case cudaErrorFileNotFound:
    2618              :             return error_t::cuda_file_not_found;
    2619              :         case cudaErrorSharedObjectSymbolNotFound:
    2620              :             return error_t::cuda_shared_object_symbol_not_found;
    2621              :         case cudaErrorSharedObjectInitFailed:
    2622              :             return error_t::cuda_shared_object_init_failed;
    2623              :         case cudaErrorOperatingSystem:
    2624              :             return error_t::cuda_operating_system;
    2625              :         case cudaErrorInvalidResourceHandle:
    2626              :             return error_t::cuda_invalid_resource_handle;
    2627              :         case cudaErrorIllegalState:
    2628              :             return error_t::cuda_illegal_state;
    2629              :         case cudaErrorSymbolNotFound:
    2630              :             return error_t::cuda_symbol_not_found;
    2631              :         case cudaErrorNotReady:
    2632              :             return error_t::cuda_not_ready;
    2633              :         case cudaErrorIllegalAddress:
    2634              :             return error_t::cuda_illegal_address;
    2635              :         case cudaErrorLaunchOutOfResources:
    2636              :             return error_t::cuda_launch_out_of_resources;
    2637              :         case cudaErrorLaunchTimeout:
    2638              :             return error_t::cuda_launch_timeout;
    2639              :         case cudaErrorLaunchIncompatibleTexturing:
    2640              :             return error_t::cuda_launch_incompatible_texturing;
    2641              :         case cudaErrorPeerAccessAlreadyEnabled:
    2642              :             return error_t::cuda_peer_access_already_enabled;
    2643              :         case cudaErrorPeerAccessNotEnabled:
    2644              :             return error_t::cuda_peer_access_not_enabled;
    2645              :         case cudaErrorSetOnActiveProcess:
    2646              :             return error_t::cuda_set_on_active_process;
    2647              :         case cudaErrorContextIsDestroyed:
    2648              :             return error_t::cuda_context_is_destroyed;
    2649              :         case cudaErrorAssert:
    2650              :             return error_t::cuda_assert;
    2651              :         case cudaErrorTooManyPeers:
    2652              :             return error_t::cuda_too_many_peers;
    2653              :         case cudaErrorHostMemoryAlreadyRegistered:
    2654              :             return error_t::cuda_host_memory_already_registered;
    2655              :         case cudaErrorHostMemoryNotRegistered:
    2656              :             return error_t::cuda_host_memory_not_registered;
    2657              :         case cudaErrorHardwareStackError:
    2658              :             return error_t::cuda_hardware_stack_error;
    2659              :         case cudaErrorIllegalInstruction:
    2660              :             return error_t::cuda_illegal_instruction;
    2661              :         case cudaErrorMisalignedAddress:
    2662              :             return error_t::cuda_misaligned_address;
    2663              :         case cudaErrorInvalidAddressSpace:
    2664              :             return error_t::cuda_invalid_address_space;
    2665              :         case cudaErrorInvalidPc:
    2666              :             return error_t::cuda_invalid_pc;
    2667              :         case cudaErrorLaunchFailure:
    2668              :             return error_t::cuda_launch_failure;
    2669              :         case cudaErrorCooperativeLaunchTooLarge:
    2670              :             return error_t::cuda_cooperative_launch_too_large;
    2671              :         case cudaErrorNotPermitted:
    2672              :             return error_t::cuda_not_permitted;
    2673              :         case cudaErrorNotSupported:
    2674              :             return error_t::cuda_not_supported;
    2675              :         case cudaErrorSystemNotReady:
    2676              :             return error_t::cuda_system_not_ready;
    2677              :         case cudaErrorSystemDriverMismatch:
    2678              :             return error_t::cuda_system_driver_mismatch;
    2679              :         case cudaErrorCompatNotSupportedOnDevice:
    2680              :             return error_t::cuda_compat_not_supported_on_device;
    2681              :         case cudaErrorMpsConnectionFailed:
    2682              :             return error_t::cuda_mps_connection_failed;
    2683              :         case cudaErrorMpsRpcFailure:
    2684              :             return error_t::cuda_mps_rpc_failure;
    2685              :         case cudaErrorMpsServerNotReady:
    2686              :             return error_t::cuda_mps_server_not_ready;
    2687              :         case cudaErrorMpsMaxClientsReached:
    2688              :             return error_t::cuda_mps_max_clients_reached;
    2689              :         case cudaErrorMpsMaxConnectionsReached:
    2690              :             return error_t::cuda_mps_max_connections_reached;
    2691              :         case cudaErrorMpsClientTerminated:
    2692              :             return error_t::cuda_mps_client_terminated;
    2693              :         case cudaErrorCdpNotSupported:
    2694              :             return error_t::cuda_cdp_not_supported;
    2695              :         case cudaErrorCdpVersionMismatch:
    2696              :             return error_t::cuda_cdp_version_mismatch;
    2697              :         case cudaErrorStreamCaptureUnsupported:
    2698              :             return error_t::cuda_stream_capture_unsupported;
    2699              :         case cudaErrorStreamCaptureInvalidated:
    2700              :             return error_t::cuda_stream_capture_invalidated;
    2701              :         case cudaErrorStreamCaptureMerge:
    2702              :             return error_t::cuda_stream_capture_merge;
    2703              :         case cudaErrorStreamCaptureUnmatched:
    2704              :             return error_t::cuda_stream_capture_unmatched;
    2705              :         case cudaErrorStreamCaptureUnjoined:
    2706              :             return error_t::cuda_stream_capture_unjoined;
    2707              :         case cudaErrorStreamCaptureIsolation:
    2708              :             return error_t::cuda_stream_capture_isolation;
    2709              :         case cudaErrorStreamCaptureImplicit:
    2710              :             return error_t::cuda_stream_capture_implicit;
    2711              :         case cudaErrorCapturedEvent:
    2712              :             return error_t::cuda_captured_event;
    2713              :         case cudaErrorStreamCaptureWrongThread:
    2714              :             return error_t::cuda_stream_capture_wrong_thread;
    2715              :         case cudaErrorTimeout:
    2716              :             return error_t::cuda_timeout;
    2717              :         case cudaErrorGraphExecUpdateFailure:
    2718              :             return error_t::cuda_graph_exec_update_failure;
    2719              :         case cudaErrorExternalDevice:
    2720              :             return error_t::cuda_external_device;
    2721              :         case cudaErrorInvalidClusterSize:
    2722              :             return error_t::cuda_invalid_cluster_size;
    2723              :         case cudaErrorUnknown:
    2724              :             return error_t::cuda_unknown;
    2725              :         case cudaErrorApiFailureBase:
    2726              :             return error_t::cuda_api_failure_base;
    2727              :         default:
    2728              :             return error_t::error;
    2729              :     }
    2730              : } //cudaError2error_t
    2731              : #endif //MXLIB_CUDA
    2732              : 
    2733              : } //namespace mx
    2734              : #endif //mx_error_t_hpp
    2735              : 
    2736              : 
    2737              : #ifdef MXLIBTEST_ERROR_T_TESTS
    2738              : #ifndef MXLIBTEST_ERROR_T_TESTS_INC
    2739              : #define MXLIBTEST_ERROR_T_TESTS_INC
    2740              : 
    2741              : namespace mx
    2742              : {
    2743              : 
    2744              : void error_t_vector( std::vector<error_t> & errcs )
    2745              : {
    2746              :     errcs = { error_t::noerror,
    2747              :               error_t::error,
    2748              :               error_t::invalidarg,
    2749              :               error_t::invalidconfig,
    2750              :               error_t::notimpl,
    2751              :               error_t::paramnotset,
    2752              :               error_t::envnotset,
    2753              :               error_t::notfound,
    2754              :               error_t::sizeerr,
    2755              :               error_t::allocerr,
    2756              :               error_t::freeerr,
    2757              :               error_t::parseerr,
    2758              :               error_t::filesystem,
    2759              :               error_t::fileoerr,
    2760              :               error_t::filewerr,
    2761              :               error_t::filererr,
    2762              :               error_t::filecerr,
    2763              :               error_t::filenotfound,
    2764              :               error_t::fileempty,
    2765              :               error_t::dirnotfound,
    2766              :               error_t::dirempty,
    2767              :               error_t::procerr,
    2768              :               error_t::timeout,
    2769              :               error_t::liberr,
    2770              :               error_t::exception,
    2771              :               error_t::std_exception,
    2772              :               error_t::std_bad_alloc,
    2773              :               error_t::std_logic_error,
    2774              :               error_t::std_invalid_argument,
    2775              :               error_t::std_domain_error,
    2776              :               error_t::std_length_error,
    2777              :               error_t::std_out_of_range,
    2778              :               error_t::std_future_error,
    2779              :               error_t::std_bad_optional_access,
    2780              :               error_t::std_filesystem_error,
    2781              :               error_t::std_runtime_error,
    2782              :               error_t::std_range_error,
    2783              :               error_t::std_overflow_error,
    2784              :               error_t::std_underflow_error,
    2785              :               error_t::std_ios_base_failure,
    2786              :               error_t::std_format_error,
    2787              :               error_t::gnuploterr,
    2788              :               error_t::lapackerr,
    2789              :               error_t::e2big,
    2790              :               error_t::eacces,
    2791              :               error_t::eaddrinuse,
    2792              :               error_t::eaddrnotavail,
    2793              :               error_t::eafnosupport,
    2794              :               error_t::eagain,
    2795              :               error_t::ealready,
    2796              :               error_t::ebadf,
    2797              :               error_t::ebadmsg,
    2798              :               error_t::ebusy,
    2799              :               error_t::ecanceled,
    2800              :               error_t::echild,
    2801              :               error_t::econnaborted,
    2802              :               error_t::econnrefused,
    2803              :               error_t::econnreset,
    2804              :               error_t::edestaddrreq,
    2805              :               error_t::edom,
    2806              :               error_t::eexist,
    2807              :               error_t::efault,
    2808              :               error_t::efbig,
    2809              :               error_t::ehostunreach,
    2810              :               error_t::eidrm,
    2811              :               error_t::eilseq,
    2812              :               error_t::einprogress,
    2813              :               error_t::eintr,
    2814              :               error_t::einval,
    2815              :               error_t::eio,
    2816              :               error_t::eisconn,
    2817              :               error_t::eisdir,
    2818              :               error_t::eloop,
    2819              :               error_t::emfile,
    2820              :               error_t::emlink,
    2821              :               error_t::emsgsize,
    2822              :               error_t::enametoolong,
    2823              :               error_t::enetdown,
    2824              :               error_t::enetreset,
    2825              :               error_t::enetunreach,
    2826              :               error_t::enfile,
    2827              :               error_t::enobufs,
    2828              :               error_t::enodata,
    2829              :               error_t::enodev,
    2830              :               error_t::enoent,
    2831              :               error_t::enoexec,
    2832              :               error_t::enolck,
    2833              :               error_t::enolink,
    2834              :               error_t::enomem,
    2835              :               error_t::enomsg,
    2836              :               error_t::enoprotoopt,
    2837              :               error_t::enospc,
    2838              :               error_t::enosr,
    2839              :               error_t::enostr,
    2840              :               error_t::enosys,
    2841              :               error_t::enotconn,
    2842              :               error_t::enotdir,
    2843              :               error_t::enotempty,
    2844              :               error_t::enotrecoverable,
    2845              :               error_t::enotsock,
    2846              :               error_t::enotsup,
    2847              :               error_t::enotty,
    2848              :               error_t::enxio,
    2849              :               error_t::eopnotsupp,
    2850              :               error_t::eoverflow,
    2851              :               error_t::eownerdead,
    2852              :               error_t::eperm,
    2853              :               error_t::epipe,
    2854              :               error_t::eproto,
    2855              :               error_t::eprotonosupport,
    2856              :               error_t::eprototype,
    2857              :               error_t::erange,
    2858              :               error_t::erofs,
    2859              :               error_t::espipe,
    2860              :               error_t::esrch,
    2861              :               error_t::etime,
    2862              :               error_t::etimedout,
    2863              :               error_t::etxtbsy,
    2864              :               error_t::ewouldblock,
    2865              :               error_t::exdev,
    2866              :               error_t::fits_same_file,
    2867              :               error_t::fits_too_many_files,
    2868              :               error_t::fits_file_not_opened,
    2869              :               error_t::fits_file_not_created,
    2870              :               error_t::fits_write_error,
    2871              :               error_t::fits_end_of_file,
    2872              :               error_t::fits_read_error,
    2873              :               error_t::fits_file_not_closed,
    2874              :               error_t::fits_array_too_big,
    2875              :               error_t::fits_readonly_file,
    2876              :               error_t::fits_memory_allocation,
    2877              :               error_t::fits_bad_fileptr,
    2878              :               error_t::fits_null_input_ptr,
    2879              :               error_t::fits_seek_error,
    2880              :               error_t::fits_bad_nettimeout,
    2881              :               error_t::fits_bad_url_prefix,
    2882              :               error_t::fits_too_many_drivers,
    2883              :               error_t::fits_driver_init_failed,
    2884              :               error_t::fits_no_matching_driver,
    2885              :               error_t::fits_url_parse_error,
    2886              :               error_t::fits_range_parse_error,
    2887              :               error_t::fits_shared_badarg,
    2888              :               error_t::fits_shared_nulptr,
    2889              :               error_t::fits_shared_tabfull,
    2890              :               error_t::fits_shared_notinit,
    2891              :               error_t::fits_shared_ipcerr,
    2892              :               error_t::fits_shared_nomem,
    2893              :               error_t::fits_shared_again,
    2894              :               error_t::fits_shared_nofile,
    2895              :               error_t::fits_shared_noresize,
    2896              :               error_t::fits_header_not_empty,
    2897              :               error_t::fits_key_no_exist,
    2898              :               error_t::fits_key_out_bounds,
    2899              :               error_t::fits_value_undefined,
    2900              :               error_t::fits_no_quote,
    2901              :               error_t::fits_bad_index_key,
    2902              :               error_t::fits_bad_keychar,
    2903              :               error_t::fits_bad_order,
    2904              :               error_t::fits_not_pos_int,
    2905              :               error_t::fits_no_end,
    2906              :               error_t::fits_bad_bitpix,
    2907              :               error_t::fits_bad_naxis,
    2908              :               error_t::fits_bad_naxes,
    2909              :               error_t::fits_bad_pcount,
    2910              :               error_t::fits_bad_gcount,
    2911              :               error_t::fits_bad_tfields,
    2912              :               error_t::fits_neg_width,
    2913              :               error_t::fits_neg_rows,
    2914              :               error_t::fits_col_not_found,
    2915              :               error_t::fits_bad_simple,
    2916              :               error_t::fits_no_simple,
    2917              :               error_t::fits_no_bitpix,
    2918              :               error_t::fits_no_naxis,
    2919              :               error_t::fits_no_naxes,
    2920              :               error_t::fits_no_xtension,
    2921              :               error_t::fits_not_atable,
    2922              :               error_t::fits_not_btable,
    2923              :               error_t::fits_no_pcount,
    2924              :               error_t::fits_no_gcount,
    2925              :               error_t::fits_no_tfields,
    2926              :               error_t::fits_no_tbcol,
    2927              :               error_t::fits_no_tform,
    2928              :               error_t::fits_not_image,
    2929              :               error_t::fits_bad_tbcol,
    2930              :               error_t::fits_not_table,
    2931              :               error_t::fits_col_too_wide,
    2932              :               error_t::fits_col_not_unique,
    2933              :               error_t::fits_bad_row_width,
    2934              :               error_t::fits_unknown_ext,
    2935              :               error_t::fits_unknown_rec,
    2936              :               error_t::fits_end_junk,
    2937              :               error_t::fits_bad_header_fill,
    2938              :               error_t::fits_bad_data_fill,
    2939              :               error_t::fits_bad_tform,
    2940              :               error_t::fits_bad_tform_dtype,
    2941              :               error_t::fits_bad_tdim,
    2942              :               error_t::fits_bad_heap_ptr,
    2943              :               error_t::fits_bad_hdu_num,
    2944              :               error_t::fits_bad_col_num,
    2945              :               error_t::fits_neg_file_pos,
    2946              :               error_t::fits_neg_bytes,
    2947              :               error_t::fits_bad_row_num,
    2948              :               error_t::fits_bad_elem_num,
    2949              :               error_t::fits_not_ascii_col,
    2950              :               error_t::fits_not_logical_col,
    2951              :               error_t::fits_bad_atable_format,
    2952              :               error_t::fits_bad_btable_format,
    2953              :               error_t::fits_no_null,
    2954              :               error_t::fits_not_vari_len,
    2955              :               error_t::fits_bad_dimen,
    2956              :               error_t::fits_bad_pix_num,
    2957              :               error_t::fits_zero_scale,
    2958              :               error_t::fits_neg_axis,
    2959              :               error_t::fits_not_group_table,
    2960              :               error_t::fits_hdu_already_member,
    2961              :               error_t::fits_member_not_found,
    2962              :               error_t::fits_group_not_found,
    2963              :               error_t::fits_bad_group_id,
    2964              :               error_t::fits_too_many_hdus_tracked,
    2965              :               error_t::fits_hdu_already_tracked,
    2966              :               error_t::fits_bad_option,
    2967              :               error_t::fits_identical_pointers,
    2968              :               error_t::fits_bad_group_attach,
    2969              :               error_t::fits_bad_group_detach,
    2970              :               error_t::fits_ngp_no_memory,
    2971              :               error_t::fits_ngp_read_err,
    2972              :               error_t::fits_ngp_nul_ptr,
    2973              :               error_t::fits_ngp_empty_curline,
    2974              :               error_t::fits_ngp_unread_queue_full,
    2975              :               error_t::fits_ngp_inc_nesting,
    2976              :               error_t::fits_ngp_err_fopen,
    2977              :               error_t::fits_ngp_eof,
    2978              :               error_t::fits_ngp_bad_arg,
    2979              :               error_t::fits_ngp_token_not_expect,
    2980              :               error_t::fits_bad_i2c,
    2981              :               error_t::fits_bad_f2c,
    2982              :               error_t::fits_bad_intkey,
    2983              :               error_t::fits_bad_logicalkey,
    2984              :               error_t::fits_bad_floatkey,
    2985              :               error_t::fits_bad_doublekey,
    2986              :               error_t::fits_bad_c2i,
    2987              :               error_t::fits_bad_c2f,
    2988              :               error_t::fits_bad_c2d,
    2989              :               error_t::fits_bad_datatype,
    2990              :               error_t::fits_bad_decim,
    2991              :               error_t::fits_num_overflow,
    2992              :               error_t::fits_data_compression_err,
    2993              :               error_t::fits_data_decompression_err,
    2994              :               error_t::fits_bad_date,
    2995              :               error_t::fits_parse_syntax_err,
    2996              :               error_t::fits_parse_bad_type,
    2997              :               error_t::fits_parse_lrg_vector,
    2998              :               error_t::fits_parse_no_output,
    2999              :               error_t::fits_parse_bad_col,
    3000              :               error_t::fits_parse_bad_output,
    3001              :               error_t::fits_angle_too_big,
    3002              :               error_t::fits_bad_wcs_val,
    3003              :               error_t::fits_wcs_error,
    3004              :               error_t::fits_bad_wcs_proj,
    3005              :               error_t::fits_no_wcs_key,
    3006              :               error_t::fits_approx_wcs_key,
    3007              :               error_t::cuda_success,
    3008              :               error_t::cuda_invalid_value,
    3009              :               error_t::cuda_memory_allocation,
    3010              :               error_t::cuda_initialization_error,
    3011              :               error_t::cuda_cudart_unloading,
    3012              :               error_t::cuda_profiler_disabled,
    3013              :               error_t::cuda_profiler_not_initialized,
    3014              :               error_t::cuda_profiler_already_started,
    3015              :               error_t::cuda_profiler_already_stopped,
    3016              :               error_t::cuda_invalid_configuration,
    3017              :               error_t::cuda_invalid_pitch_value,
    3018              :               error_t::cuda_invalid_symbol,
    3019              :               error_t::cuda_invalid_host_pointer,
    3020              :               error_t::cuda_invalid_device_pointer,
    3021              :               error_t::cuda_invalid_texture,
    3022              :               error_t::cuda_invalid_texture_binding,
    3023              :               error_t::cuda_invalid_channel_descriptor,
    3024              :               error_t::cuda_invalid_memcpy_direction,
    3025              :               error_t::cuda_address_of_constant,
    3026              :               error_t::cuda_texture_fetch_failed,
    3027              :               error_t::cuda_texture_not_bound,
    3028              :               error_t::cuda_synchronization_error,
    3029              :               error_t::cuda_invalid_filter_setting,
    3030              :               error_t::cuda_invalid_norm_setting,
    3031              :               error_t::cuda_mixed_device_execution,
    3032              :               error_t::cuda_not_yet_implemented,
    3033              :               error_t::cuda_memory_value_too_large,
    3034              :               error_t::cuda_stub_library,
    3035              :               error_t::cuda_insufficient_driver,
    3036              :               error_t::cuda_call_requires_newer_driver,
    3037              :               error_t::cuda_invalid_surface,
    3038              :               error_t::cuda_duplicate_variable_name,
    3039              :               error_t::cuda_duplicate_texture_name,
    3040              :               error_t::cuda_duplicate_surface_name,
    3041              :               error_t::cuda_devices_unavailable,
    3042              :               error_t::cuda_incompatible_driver_context,
    3043              :               error_t::cuda_missing_configuration,
    3044              :               error_t::cuda_prior_launch_failure,
    3045              :               error_t::cuda_launch_max_depth_exceeded,
    3046              :               error_t::cuda_launch_file_scoped_tex,
    3047              :               error_t::cuda_launch_file_scoped_surf,
    3048              :               error_t::cuda_sync_depth_exceeded,
    3049              :               error_t::cuda_launch_pending_count_exceeded,
    3050              :               error_t::cuda_invalid_device_function,
    3051              :               error_t::cuda_no_device,
    3052              :               error_t::cuda_invalid_device,
    3053              :               error_t::cuda_device_not_licensed,
    3054              :               error_t::cuda_software_validity_not_established,
    3055              :               error_t::cuda_startup_failure,
    3056              :               error_t::cuda_invalid_kernel_image,
    3057              :               error_t::cuda_device_uninitialized,
    3058              :               error_t::cuda_map_buffer_object_failed,
    3059              :               error_t::cuda_unmap_buffer_object_failed,
    3060              :               error_t::cuda_array_is_mapped,
    3061              :               error_t::cuda_already_mapped,
    3062              :               error_t::cuda_no_kernel_image_for_device,
    3063              :               error_t::cuda_already_acquired,
    3064              :               error_t::cuda_not_mapped,
    3065              :               error_t::cuda_not_mapped_as_array,
    3066              :               error_t::cuda_not_mapped_as_pointer,
    3067              :               error_t::cuda_e_c_c_uncorrectable,
    3068              :               error_t::cuda_unsupported_limit,
    3069              :               error_t::cuda_device_already_in_use,
    3070              :               error_t::cuda_peer_access_unsupported,
    3071              :               error_t::cuda_invalid_ptx,
    3072              :               error_t::cuda_invalid_graphics_context,
    3073              :               error_t::cuda_nvlink_uncorrectable,
    3074              :               error_t::cuda_jit_compiler_not_found,
    3075              :               error_t::cuda_unsupported_ptx_version,
    3076              :               error_t::cuda_jit_compilation_disabled,
    3077              :               error_t::cuda_unsupported_exec_affinity,
    3078              :               error_t::cuda_invalid_source,
    3079              :               error_t::cuda_file_not_found,
    3080              :               error_t::cuda_shared_object_symbol_not_found,
    3081              :               error_t::cuda_shared_object_init_failed,
    3082              :               error_t::cuda_operating_system,
    3083              :               error_t::cuda_invalid_resource_handle,
    3084              :               error_t::cuda_illegal_state,
    3085              :               error_t::cuda_symbol_not_found,
    3086              :               error_t::cuda_not_ready,
    3087              :               error_t::cuda_illegal_address,
    3088              :               error_t::cuda_launch_out_of_resources,
    3089              :               error_t::cuda_launch_timeout,
    3090              :               error_t::cuda_launch_incompatible_texturing,
    3091              :               error_t::cuda_peer_access_already_enabled,
    3092              :               error_t::cuda_peer_access_not_enabled,
    3093              :               error_t::cuda_set_on_active_process,
    3094              :               error_t::cuda_context_is_destroyed,
    3095              :               error_t::cuda_assert,
    3096              :               error_t::cuda_too_many_peers,
    3097              :               error_t::cuda_host_memory_already_registered,
    3098              :               error_t::cuda_host_memory_not_registered,
    3099              :               error_t::cuda_hardware_stack_error,
    3100              :               error_t::cuda_illegal_instruction,
    3101              :               error_t::cuda_misaligned_address,
    3102              :               error_t::cuda_invalid_address_space,
    3103              :               error_t::cuda_invalid_pc,
    3104              :               error_t::cuda_launch_failure,
    3105              :               error_t::cuda_cooperative_launch_too_large,
    3106              :               error_t::cuda_not_permitted,
    3107              :               error_t::cuda_not_supported,
    3108              :               error_t::cuda_system_not_ready,
    3109              :               error_t::cuda_system_driver_mismatch,
    3110              :               error_t::cuda_compat_not_supported_on_device,
    3111              :               error_t::cuda_mps_connection_failed,
    3112              :               error_t::cuda_mps_rpc_failure,
    3113              :               error_t::cuda_mps_server_not_ready,
    3114              :               error_t::cuda_mps_max_clients_reached,
    3115              :               error_t::cuda_mps_max_connections_reached,
    3116              :               error_t::cuda_mps_client_terminated,
    3117              :               error_t::cuda_cdp_not_supported,
    3118              :               error_t::cuda_cdp_version_mismatch,
    3119              :               error_t::cuda_stream_capture_unsupported,
    3120              :               error_t::cuda_stream_capture_invalidated,
    3121              :               error_t::cuda_stream_capture_merge,
    3122              :               error_t::cuda_stream_capture_unmatched,
    3123              :               error_t::cuda_stream_capture_unjoined,
    3124              :               error_t::cuda_stream_capture_isolation,
    3125              :               error_t::cuda_stream_capture_implicit,
    3126              :               error_t::cuda_captured_event,
    3127              :               error_t::cuda_stream_capture_wrong_thread,
    3128              :               error_t::cuda_timeout,
    3129              :               error_t::cuda_graph_exec_update_failure,
    3130              :               error_t::cuda_external_device,
    3131              :               error_t::cuda_invalid_cluster_size,
    3132              :               error_t::cuda_unknown,
    3133              :               error_t::cuda_api_failure_base};
    3134              : 
    3135              : } //error_t_vector
    3136              : 
    3137              : void errno_vector( std::vector<int> & errnos )
    3138              : {
    3139              :     errnos = { EACCES,
    3140              :                EADDRINUSE,
    3141              :                EADDRNOTAVAIL,
    3142              :                EAFNOSUPPORT,
    3143              :                EAGAIN,
    3144              :                EALREADY,
    3145              :                EBADF,
    3146              :                EBADMSG,
    3147              :                EBUSY,
    3148              :                ECANCELED,
    3149              :                ECHILD,
    3150              :                ECONNABORTED,
    3151              :                ECONNREFUSED,
    3152              :                ECONNRESET,
    3153              :                EDESTADDRREQ,
    3154              :                EDOM,
    3155              :                EEXIST,
    3156              :                EFAULT,
    3157              :                EFBIG,
    3158              :                EHOSTUNREACH,
    3159              :                EIDRM,
    3160              :                EILSEQ,
    3161              :                EINPROGRESS,
    3162              :                EINTR,
    3163              :                EINVAL,
    3164              :                EIO,
    3165              :                EISCONN,
    3166              :                EISDIR,
    3167              :                ELOOP,
    3168              :                EMFILE,
    3169              :                EMLINK,
    3170              :                EMSGSIZE,
    3171              :                ENAMETOOLONG,
    3172              :                ENETDOWN,
    3173              :                ENETRESET,
    3174              :                ENETUNREACH,
    3175              :                ENFILE,
    3176              :                ENOBUFS,
    3177              :                ENODATA,
    3178              :                ENODEV,
    3179              :                ENOENT,
    3180              :                ENOEXEC,
    3181              :                ENOLCK,
    3182              :                ENOLINK,
    3183              :                ENOMEM,
    3184              :                ENOMSG,
    3185              :                ENOPROTOOPT,
    3186              :                ENOSPC,
    3187              :                ENOSR,
    3188              :                ENOSTR,
    3189              :                ENOSYS,
    3190              :                ENOTCONN,
    3191              :                ENOTDIR,
    3192              :                ENOTEMPTY,
    3193              :                ENOTRECOVERABLE,
    3194              :                ENOTSOCK,
    3195              :                ENOTSUP,
    3196              :                ENOTTY,
    3197              :                ENXIO,
    3198              :                EOVERFLOW,
    3199              :                EOWNERDEAD,
    3200              :                EPERM,
    3201              :                EPIPE,
    3202              :                EPROTO,
    3203              :                EPROTONOSUPPORT,
    3204              :                EPROTOTYPE,
    3205              :                ERANGE,
    3206              :                EROFS,
    3207              :                ESPIPE,
    3208              :                ESRCH,
    3209              :                ETIME,
    3210              :                ETIMEDOUT,
    3211              :                ETXTBSY,
    3212              :                EXDEV};
    3213              : 
    3214              : } //errno_vector
    3215              : void fitserr_vector( std::vector<int> & fitserrs )
    3216              : {
    3217              :     fitserrs= { SAME_FILE,
    3218              :                 TOO_MANY_FILES,
    3219              :                 FILE_NOT_OPENED,
    3220              :                 FILE_NOT_CREATED,
    3221              :                 WRITE_ERROR,
    3222              :                 END_OF_FILE,
    3223              :                 READ_ERROR,
    3224              :                 FILE_NOT_CLOSED,
    3225              :                 ARRAY_TOO_BIG,
    3226              :                 READONLY_FILE,
    3227              :                 MEMORY_ALLOCATION,
    3228              :                 BAD_FILEPTR,
    3229              :                 NULL_INPUT_PTR,
    3230              :                 SEEK_ERROR,
    3231              :                 BAD_NETTIMEOUT,
    3232              :                 BAD_URL_PREFIX,
    3233              :                 TOO_MANY_DRIVERS,
    3234              :                 DRIVER_INIT_FAILED,
    3235              :                 NO_MATCHING_DRIVER,
    3236              :                 URL_PARSE_ERROR,
    3237              :                 RANGE_PARSE_ERROR,
    3238              :                 SHARED_BADARG,
    3239              :                 SHARED_NULPTR,
    3240              :                 SHARED_TABFULL,
    3241              :                 SHARED_NOTINIT,
    3242              :                 SHARED_IPCERR,
    3243              :                 SHARED_NOMEM,
    3244              :                 SHARED_AGAIN,
    3245              :                 SHARED_NOFILE,
    3246              :                 SHARED_NORESIZE,
    3247              :                 HEADER_NOT_EMPTY,
    3248              :                 KEY_NO_EXIST,
    3249              :                 KEY_OUT_BOUNDS,
    3250              :                 VALUE_UNDEFINED,
    3251              :                 NO_QUOTE,
    3252              :                 BAD_INDEX_KEY,
    3253              :                 BAD_KEYCHAR,
    3254              :                 BAD_ORDER,
    3255              :                 NOT_POS_INT,
    3256              :                 NO_END,
    3257              :                 BAD_BITPIX,
    3258              :                 BAD_NAXIS,
    3259              :                 BAD_NAXES,
    3260              :                 BAD_PCOUNT,
    3261              :                 BAD_GCOUNT,
    3262              :                 BAD_TFIELDS,
    3263              :                 NEG_WIDTH,
    3264              :                 NEG_ROWS,
    3265              :                 COL_NOT_FOUND,
    3266              :                 BAD_SIMPLE,
    3267              :                 NO_SIMPLE,
    3268              :                 NO_BITPIX,
    3269              :                 NO_NAXIS,
    3270              :                 NO_NAXES,
    3271              :                 NO_XTENSION,
    3272              :                 NOT_ATABLE,
    3273              :                 NOT_BTABLE,
    3274              :                 NO_PCOUNT,
    3275              :                 NO_GCOUNT,
    3276              :                 NO_TFIELDS,
    3277              :                 NO_TBCOL,
    3278              :                 NO_TFORM,
    3279              :                 NOT_IMAGE,
    3280              :                 BAD_TBCOL,
    3281              :                 NOT_TABLE,
    3282              :                 COL_TOO_WIDE,
    3283              :                 COL_NOT_UNIQUE,
    3284              :                 BAD_ROW_WIDTH,
    3285              :                 UNKNOWN_EXT,
    3286              :                 UNKNOWN_REC,
    3287              :                 END_JUNK,
    3288              :                 BAD_HEADER_FILL,
    3289              :                 BAD_DATA_FILL,
    3290              :                 BAD_TFORM,
    3291              :                 BAD_TFORM_DTYPE,
    3292              :                 BAD_TDIM,
    3293              :                 BAD_HEAP_PTR,
    3294              :                 BAD_HDU_NUM,
    3295              :                 BAD_COL_NUM,
    3296              :                 NEG_FILE_POS,
    3297              :                 NEG_BYTES,
    3298              :                 BAD_ROW_NUM,
    3299              :                 BAD_ELEM_NUM,
    3300              :                 NOT_ASCII_COL,
    3301              :                 NOT_LOGICAL_COL,
    3302              :                 BAD_ATABLE_FORMAT,
    3303              :                 BAD_BTABLE_FORMAT,
    3304              :                 NO_NULL,
    3305              :                 NOT_VARI_LEN,
    3306              :                 BAD_DIMEN,
    3307              :                 BAD_PIX_NUM,
    3308              :                 ZERO_SCALE,
    3309              :                 NEG_AXIS,
    3310              :                 NOT_GROUP_TABLE,
    3311              :                 HDU_ALREADY_MEMBER,
    3312              :                 MEMBER_NOT_FOUND,
    3313              :                 GROUP_NOT_FOUND,
    3314              :                 BAD_GROUP_ID,
    3315              :                 TOO_MANY_HDUS_TRACKED,
    3316              :                 HDU_ALREADY_TRACKED,
    3317              :                 BAD_OPTION,
    3318              :                 IDENTICAL_POINTERS,
    3319              :                 BAD_GROUP_ATTACH,
    3320              :                 BAD_GROUP_DETACH,
    3321              :                 NGP_NO_MEMORY,
    3322              :                 NGP_READ_ERR,
    3323              :                 NGP_NUL_PTR,
    3324              :                 NGP_EMPTY_CURLINE,
    3325              :                 NGP_UNREAD_QUEUE_FULL,
    3326              :                 NGP_INC_NESTING,
    3327              :                 NGP_ERR_FOPEN,
    3328              :                 NGP_EOF,
    3329              :                 NGP_BAD_ARG,
    3330              :                 NGP_TOKEN_NOT_EXPECT,
    3331              :                 BAD_I2C,
    3332              :                 BAD_F2C,
    3333              :                 BAD_INTKEY,
    3334              :                 BAD_LOGICALKEY,
    3335              :                 BAD_FLOATKEY,
    3336              :                 BAD_DOUBLEKEY,
    3337              :                 BAD_C2I,
    3338              :                 BAD_C2F,
    3339              :                 BAD_C2D,
    3340              :                 BAD_DATATYPE,
    3341              :                 BAD_DECIM,
    3342              :                 NUM_OVERFLOW,
    3343              :                 DATA_COMPRESSION_ERR,
    3344              :                 DATA_DECOMPRESSION_ERR,
    3345              :                 BAD_DATE,
    3346              :                 PARSE_SYNTAX_ERR,
    3347              :                 PARSE_BAD_TYPE,
    3348              :                 PARSE_LRG_VECTOR,
    3349              :                 PARSE_NO_OUTPUT,
    3350              :                 PARSE_BAD_COL,
    3351              :                 PARSE_BAD_OUTPUT,
    3352              :                 ANGLE_TOO_BIG,
    3353              :                 BAD_WCS_VAL,
    3354              :                 WCS_ERROR,
    3355              :                 BAD_WCS_PROJ,
    3356              :                 NO_WCS_KEY,
    3357              :                 APPROX_WCS_KEY};
    3358              : 
    3359              : } //fitserr_vector
    3360              : 
    3361              : } //namespace mx
    3362              : 
    3363              : #endif //MXLIBTEST_ERROR_T_TESTS_INC
    3364              : #endif //MXLIBTEST_ERROR_T_TESTS
        

Generated by: LCOV version 2.0-1