
This patch adds a ScriptedProcess interface to the ScriptInterpreter and more specifically, to the ScriptInterpreterPython. This interface will be used in the C++ `ScriptProcess` Process Plugin to call the script methods. At the moment, not all methods are implemented, they will upstreamed in upcoming patches. This patch also adds helper methods to the ScriptInterpreter to convert `SBAPI` Types (SBData & SBError) to `lldb_private` types (DataExtractor & Status). rdar://65508855 Differential Revision: https://reviews.llvm.org/D95711 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
57 lines
2.4 KiB
C++
57 lines
2.4 KiB
C++
//===-- ScriptInterpreterPython.h -------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H
|
|
#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H
|
|
|
|
#include <string>
|
|
|
|
#include "lldb/Host/Config.h"
|
|
|
|
#if LLDB_ENABLE_PYTHON
|
|
|
|
#include "lldb/lldb-forward.h"
|
|
#include "lldb/lldb-types.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
// GetPythonValueFormatString provides a system independent type safe way to
|
|
// convert a variable's type into a python value format. Python value formats
|
|
// are defined in terms of builtin C types and could change from system to as
|
|
// the underlying typedef for uint* types, size_t, off_t and other values
|
|
// change.
|
|
|
|
template <typename T> const char *GetPythonValueFormatString(T t);
|
|
template <> const char *GetPythonValueFormatString(char *);
|
|
template <> const char *GetPythonValueFormatString(char);
|
|
template <> const char *GetPythonValueFormatString(unsigned char);
|
|
template <> const char *GetPythonValueFormatString(short);
|
|
template <> const char *GetPythonValueFormatString(unsigned short);
|
|
template <> const char *GetPythonValueFormatString(int);
|
|
template <> const char *GetPythonValueFormatString(unsigned int);
|
|
template <> const char *GetPythonValueFormatString(long);
|
|
template <> const char *GetPythonValueFormatString(unsigned long);
|
|
template <> const char *GetPythonValueFormatString(long long);
|
|
template <> const char *GetPythonValueFormatString(unsigned long long);
|
|
template <> const char *GetPythonValueFormatString(float t);
|
|
template <> const char *GetPythonValueFormatString(double t);
|
|
|
|
extern "C" void *LLDBSwigPythonCreateScriptedProcess(
|
|
const char *python_class_name, const char *session_dictionary_name,
|
|
const lldb::TargetSP &target_sp, StructuredDataImpl *args_impl,
|
|
std::string &error_string);
|
|
|
|
extern "C" void *LLDBSWIGPython_CastPyObjectToSBData(void *data);
|
|
extern "C" void *LLDBSWIGPython_CastPyObjectToSBError(void *data);
|
|
extern "C" void *LLDBSWIGPython_CastPyObjectToSBValue(void *data);
|
|
|
|
}; // namespace lldb_private
|
|
|
|
#endif // LLDB_ENABLE_PYTHON
|
|
#endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H
|