Move Python.h includes out of the headers into the .cpp file where it's actually used.

Python.h includes a ton of macros that can cause weird behavior down the road.

llvm-svn: 142754
This commit is contained in:
Benjamin Kramer 2011-10-23 16:49:03 +00:00
parent d34a329c68
commit 1695466fe3
4 changed files with 24 additions and 25 deletions

View File

@ -11,13 +11,6 @@
#define lldb_FormatClasses_h_
// C Includes
#if defined (__APPLE__)
#include <Python/Python.h>
#else
#include <Python.h>
#endif
#include <stdint.h>
#include <unistd.h>
@ -302,7 +295,7 @@ public:
{
private:
std::string m_python_class;
PyObject* m_wrapper;
void *m_wrapper; // Wraps PyObject.
ScriptInterpreter *m_interpreter;
public:
@ -310,10 +303,7 @@ public:
lldb::ValueObjectSP be);
virtual
~FrontEnd()
{
Py_XDECREF(m_wrapper);
}
~FrontEnd();
virtual uint32_t
CalculateNumChildren()

View File

@ -11,12 +11,6 @@
#ifndef liblldb_ScriptInterpreterPython_h_
#define liblldb_ScriptInterpreterPython_h_
#if defined (__APPLE__)
#include <Python/Python.h>
#else
#include <Python.h>
#endif
#include "lldb/lldb-private.h"
#include "lldb/Interpreter/ScriptInterpreter.h"
#include "lldb/Core/InputReader.h"
@ -197,7 +191,7 @@ private:
lldb_utility::PseudoTerminal m_embedded_python_pty;
lldb::InputReaderSP m_embedded_thread_input_reader_sp;
FILE *m_dbg_stdout;
PyObject *m_new_sysout;
void *m_new_sysout; // This is a PyObject.
std::string m_dictionary_name;
TerminalState m_terminal_state;
bool m_session_is_active;

View File

@ -8,6 +8,11 @@
//===----------------------------------------------------------------------===//
// C Includes
#if defined (__APPLE__)
#include <Python/Python.h>
#else
#include <Python.h>
#endif
// C++ Includes
#include <ostream>
@ -243,7 +248,12 @@ SyntheticScriptProvider::FrontEnd::FrontEnd(std::string pclass,
if (m_interpreter == NULL)
m_wrapper = NULL;
else
m_wrapper = (PyObject*)m_interpreter->CreateSyntheticScriptedProvider(m_python_class, m_backend);
m_wrapper = m_interpreter->CreateSyntheticScriptedProvider(m_python_class, m_backend);
}
SyntheticScriptProvider::FrontEnd::~FrontEnd()
{
Py_XDECREF((PyObject*)m_wrapper);
}
lldb::ValueObjectSP

View File

@ -8,8 +8,13 @@
//===----------------------------------------------------------------------===//
// In order to guarantee correct working with Python, Python.h *MUST* be
// the *FIRST* header file included in ScriptInterpreterPython.h, and that
// must be the *FIRST* header file included here.
// the *FIRST* header file included here.
#if defined (__APPLE__)
#include <Python/Python.h>
#else
#include <Python.h>
#endif
#include "lldb/Interpreter/ScriptInterpreterPython.h"
@ -242,11 +247,11 @@ ScriptInterpreterPython::~ScriptInterpreterPython ()
{
while (!GetPythonLock (1))
fprintf (tmp_fh, "Python interpreter locked on another thread; waiting to acquire lock...\n");
Py_DECREF (m_new_sysout);
Py_DECREF ((PyObject*)m_new_sysout);
ReleasePythonLock ();
}
else
Py_DECREF (m_new_sysout);
Py_DECREF ((PyObject*)m_new_sysout);
}
}
@ -358,7 +363,7 @@ ScriptInterpreterPython::EnterSession ()
if ((m_new_sysout != NULL)
&& (sysmod != NULL)
&& (sysdict != NULL))
PyDict_SetItemString (sysdict, "stdout", m_new_sysout);
PyDict_SetItemString (sysdict, "stdout", (PyObject*)m_new_sysout);
if (PyErr_Occurred())
PyErr_Clear ();