Patch #966493: Cleanup generator/eval_frame exposure.
diff --git a/Include/Python.h b/Include/Python.h
index 0d9a797..a2be68f 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -99,6 +99,7 @@
 #include "sliceobject.h"
 #include "cellobject.h"
 #include "iterobject.h"
+#include "genobject.h"
 #include "descrobject.h"
 #include "weakrefobject.h"
 
diff --git a/Include/ceval.h b/Include/ceval.h
index ae6de3a..3d1f6fd 100644
--- a/Include/ceval.h
+++ b/Include/ceval.h
@@ -64,7 +64,7 @@
 PyAPI_FUNC(char *) PyEval_GetFuncDesc(PyObject *);
 
 PyAPI_FUNC(PyObject *) PyEval_GetCallStats(PyObject *);
-PyAPI_FUNC(PyObject *) PyEval_EvaluateFrame(PyObject *);
+PyAPI_FUNC(PyObject *) PyEval_EvalFrame(struct _frame *);
 
 /* this used to be handled on a per-thread basis - now just two globals */
 PyAPI_DATA(volatile int) _Py_Ticker;
diff --git a/Include/genobject.h b/Include/genobject.h
index c9b7c19..f4226ed 100644
--- a/Include/genobject.h
+++ b/Include/genobject.h
@@ -7,11 +7,13 @@
 extern "C" {
 #endif
 
+struct _frame; /* Avoid including frameobject.h */
+
 typedef struct {
 	PyObject_HEAD
 	/* The gi_ prefix is intended to remind of generator-iterator. */
 
-	PyFrameObject *gi_frame;
+	struct _frame *gi_frame;
 
 	/* True if generator is being executed. */
 	int gi_running;
@@ -25,7 +27,7 @@
 #define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type)
 #define PyGen_CheckExact(op) ((op)->ob_type == &PyGen_Type)
 
-PyAPI_FUNC(PyObject *) PyGen_New(PyFrameObject *);
+PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *);
 
 #ifdef __cplusplus
 }