22 #include "pybind11/pybind11.h" 
   28 using namespace pybind11::literals;
 
   38     static XPA get(
bool reset = 
false) {
 
   39         static myXPA *singleton = NULL;
 
   41         if (reset && singleton != NULL) {
 
   46         if (singleton == NULL) {
 
   47             singleton = 
new myXPA(
"w");
 
   50         return singleton->_xpa;
 
   54     myXPA(myXPA &) = 
delete;
 
   55     myXPA operator=(myXPA 
const &) = 
delete;
 
   57     myXPA(
char const *mode) {
 
   58         _xpa = XPAOpen((
char *)mode);
 
   65     ~myXPA() { XPAClose(_xpa); }
 
   70 XPA myXPA::_xpa = NULL;
 
   75 const char *XPAGet1(XPA xpa, 
char *xtemplate, 
char *paramlist, 
char *mode) {
 
   84     int n = XPAGet(xpa, xtemplate, paramlist, mode, &buf, &len, NULL, &
error, 1);
 
   99 const char *XPASet1(XPA xpa, 
char *xtemplate, 
char *paramlist, 
char *mode,
 
  112     int n = XPASet(xpa, xtemplate, paramlist, mode, buf, len, NULL, &
error, 1);
 
  124 const char *XPASetFd1(XPA xpa, 
char *xtemplate, 
char *paramlist, 
char *mode,
 
  133     int n = XPASetFd(xpa, xtemplate, paramlist, mode, fd, NULL, &
error, 1);
 
  144 void reset() { myXPA::get(
true); }
 
  149     py::module::import(
"lsst.pex.exceptions");
 
  151     py::class_<xparec> 
cls(mod, 
"xparec");
 
  152     cls.def(py::init<>());
 
  154     mod.def(
"get", &XPAGet1, 
"xpa"_a, 
"xtemplate"_a, 
"paramList"_a, 
"mode"_a);
 
  155     mod.def(
"reset", &reset);
 
  156     mod.def(
"set", &XPASet1, 
"xpa"_a, 
"xtemplate"_a, 
"paramList"_a, 
"mode"_a, 
"buf"_a, 
"len"_a = -1);
 
  157     mod.def(
"setFd1", &XPASetFd1, 
"xpa"_a, 
"xtemplate"_a, 
"paramList"_a, 
"mode"_a, 
"fd"_a);