1*1f6a57c1SMed Ismail Bennani //===-- ScriptInterpreterPython.h -------------------------------*- C++ -*-===// 2*1f6a57c1SMed Ismail Bennani // 3*1f6a57c1SMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*1f6a57c1SMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 5*1f6a57c1SMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*1f6a57c1SMed Ismail Bennani // 7*1f6a57c1SMed Ismail Bennani //===----------------------------------------------------------------------===// 8*1f6a57c1SMed Ismail Bennani 9*1f6a57c1SMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H 10*1f6a57c1SMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H 11*1f6a57c1SMed Ismail Bennani 12*1f6a57c1SMed Ismail Bennani #include <string> 13*1f6a57c1SMed Ismail Bennani 14*1f6a57c1SMed Ismail Bennani #include "lldb/Host/Config.h" 15*1f6a57c1SMed Ismail Bennani 16*1f6a57c1SMed Ismail Bennani #if LLDB_ENABLE_PYTHON 17*1f6a57c1SMed Ismail Bennani 18*1f6a57c1SMed Ismail Bennani #include "lldb/lldb-forward.h" 19*1f6a57c1SMed Ismail Bennani #include "lldb/lldb-types.h" 20*1f6a57c1SMed Ismail Bennani 21*1f6a57c1SMed Ismail Bennani namespace lldb_private { 22*1f6a57c1SMed Ismail Bennani 23*1f6a57c1SMed Ismail Bennani // GetPythonValueFormatString provides a system independent type safe way to 24*1f6a57c1SMed Ismail Bennani // convert a variable's type into a python value format. Python value formats 25*1f6a57c1SMed Ismail Bennani // are defined in terms of builtin C types and could change from system to as 26*1f6a57c1SMed Ismail Bennani // the underlying typedef for uint* types, size_t, off_t and other values 27*1f6a57c1SMed Ismail Bennani // change. 28*1f6a57c1SMed Ismail Bennani 29*1f6a57c1SMed Ismail Bennani template <typename T> const char *GetPythonValueFormatString(T t); 30*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(char *); 31*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(char); 32*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned char); 33*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(short); 34*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned short); 35*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(int); 36*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned int); 37*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(long); 38*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned long); 39*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(long long); 40*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned long long); 41*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(float t); 42*1f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(double t); 43*1f6a57c1SMed Ismail Bennani 44*1f6a57c1SMed Ismail Bennani extern "C" void *LLDBSwigPythonCreateScriptedProcess( 45*1f6a57c1SMed Ismail Bennani const char *python_class_name, const char *session_dictionary_name, 46*1f6a57c1SMed Ismail Bennani const lldb::TargetSP &target_sp, StructuredDataImpl *args_impl, 47*1f6a57c1SMed Ismail Bennani std::string &error_string); 48*1f6a57c1SMed Ismail Bennani 49*1f6a57c1SMed Ismail Bennani extern "C" void *LLDBSWIGPython_CastPyObjectToSBData(void *data); 50*1f6a57c1SMed Ismail Bennani extern "C" void *LLDBSWIGPython_CastPyObjectToSBError(void *data); 51*1f6a57c1SMed Ismail Bennani extern "C" void *LLDBSWIGPython_CastPyObjectToSBValue(void *data); 52*1f6a57c1SMed Ismail Bennani 53*1f6a57c1SMed Ismail Bennani }; // namespace lldb_private 54*1f6a57c1SMed Ismail Bennani 55*1f6a57c1SMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 56*1f6a57c1SMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H 57