NSCL DDAS 12.2-009
Support for XIA DDAS at FRIB
Functions | Variables
CPixieShimGuard.h File Reference

Catch-all guards for the extern "C" ctypes shims. Nothing may throw across an extern "C" frame into ctypes: expected failures are handled inside the class methods; these handle anything unexpected. More...

#include <iostream>
Include dependency graph for CPixieShimGuard.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

template<typename T , typename R , typename Fn >
shimGuard (T *utils, const char *where, R fallback, Fn fn)
 Run fn() inside the boundary net; return fallback on any exception. T must provide SetLastErrorMessage(). More...
 
template<typename T , typename Fn >
void shimGuardVoid (T *utils, const char *where, Fn fn)
 Same net for void shims. More...
 
template<typename Fn >
auto shimGuardNew (const char *where, Fn fn) -> decltype(fn())
 Net for the constructors: no object exists yet to store a message in, so log and return nullptr (the Python init must check). More...
 

Variables

constexpr int SHIM_UNEXPECTED_ERROR = -1999
 

Detailed Description

Catch-all guards for the extern "C" ctypes shims. Nothing may throw across an extern "C" frame into ctypes: expected failures are handled inside the class methods; these handle anything unexpected.