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