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