11f6a57c1SMed Ismail Bennani //===-- ScriptInterpreterPython.h -------------------------------*- C++ -*-===// 21f6a57c1SMed Ismail Bennani // 31f6a57c1SMed Ismail Bennani // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41f6a57c1SMed Ismail Bennani // See https://llvm.org/LICENSE.txt for license information. 51f6a57c1SMed Ismail Bennani // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61f6a57c1SMed Ismail Bennani // 71f6a57c1SMed Ismail Bennani //===----------------------------------------------------------------------===// 81f6a57c1SMed Ismail Bennani 91f6a57c1SMed Ismail Bennani #ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H 101f6a57c1SMed Ismail Bennani #define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H 111f6a57c1SMed Ismail Bennani 121f6a57c1SMed Ismail Bennani #include <string> 131f6a57c1SMed Ismail Bennani 141f6a57c1SMed Ismail Bennani #include "lldb/Host/Config.h" 151f6a57c1SMed Ismail Bennani 161f6a57c1SMed Ismail Bennani #if LLDB_ENABLE_PYTHON 171f6a57c1SMed Ismail Bennani 181f6a57c1SMed Ismail Bennani #include "lldb/lldb-forward.h" 191f6a57c1SMed Ismail Bennani #include "lldb/lldb-types.h" 201f6a57c1SMed Ismail Bennani 211f6a57c1SMed Ismail Bennani namespace lldb_private { 221f6a57c1SMed Ismail Bennani 231f6a57c1SMed Ismail Bennani // GetPythonValueFormatString provides a system independent type safe way to 241f6a57c1SMed Ismail Bennani // convert a variable's type into a python value format. Python value formats 251f6a57c1SMed Ismail Bennani // are defined in terms of builtin C types and could change from system to as 261f6a57c1SMed Ismail Bennani // the underlying typedef for uint* types, size_t, off_t and other values 271f6a57c1SMed Ismail Bennani // change. 281f6a57c1SMed Ismail Bennani 291f6a57c1SMed Ismail Bennani template <typename T> const char *GetPythonValueFormatString(T t); 301f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(char *); 311f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(char); 321f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned char); 331f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(short); 341f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned short); 351f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(int); 361f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned int); 371f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(long); 381f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned long); 391f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(long long); 401f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(unsigned long long); 411f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(float t); 421f6a57c1SMed Ismail Bennani template <> const char *GetPythonValueFormatString(double t); 431f6a57c1SMed Ismail Bennani 441f6a57c1SMed Ismail Bennani extern "C" void *LLDBSwigPythonCreateScriptedProcess( 451f6a57c1SMed Ismail Bennani const char *python_class_name, const char *session_dictionary_name, 461f6a57c1SMed Ismail Bennani const lldb::TargetSP &target_sp, StructuredDataImpl *args_impl, 471f6a57c1SMed Ismail Bennani std::string &error_string); 481f6a57c1SMed Ismail Bennani 491f6a57c1SMed Ismail Bennani extern "C" void *LLDBSWIGPython_CastPyObjectToSBData(void *data); 501f6a57c1SMed Ismail Bennani extern "C" void *LLDBSWIGPython_CastPyObjectToSBError(void *data); 511f6a57c1SMed Ismail Bennani extern "C" void *LLDBSWIGPython_CastPyObjectToSBValue(void *data); 521f6a57c1SMed Ismail Bennani 53*ec00502bSShafik Yaghmour } // namespace lldb_private 541f6a57c1SMed Ismail Bennani 551f6a57c1SMed Ismail Bennani #endif // LLDB_ENABLE_PYTHON 561f6a57c1SMed Ismail Bennani #endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SWIGPYTHONBRIDGE_H 57