Files
rdkit/Code/GraphMol/Wrap/ContextManagers.h
Greg Landrum 46a0af898d Support context managers for mol Suppliers and Writers (#3704)
* Add context managers for writers
Allow calling close() on already closed Writers
Fixes #2217

* add a close method to MolSuppliers

* modernize the way we handle presence/absence of MAEPARSER support

* add context managers to suppliers

* changes in response to review

* some cleanup

* more cleanup
2021-01-11 05:52:57 +01:00

35 lines
851 B
C++

//
// Copyright (C) 2021 Greg Landrum
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#include <RDGeneral/export.h>
#ifndef RD_WRAP_CONTEXTMGR_H
#define RD_WRAP_CONTEXTMGR_H
//! Template functions for supporting python context managers
#include <RDBoost/python.h>
namespace python = boost::python;
namespace RDKit {
template <typename T>
T *MolIOEnter(T *self) {
return self;
}
template <typename T>
bool MolIOExit(T *self, python::object exc_type, python::object exc_val,
python::object traceback) {
RDUNUSED_PARAM(exc_type);
RDUNUSED_PARAM(exc_val);
RDUNUSED_PARAM(traceback);
self->close();
return false;
}
} // namespace RDKit
#endif