lldb.swig revision b4d1ffffde48b4b250886df30c12480f034142e4
1/*
2   lldb.swig
3
4   Created by Caroline Tice 1/18/2010
5
6   This is the input file for SWIG, to create the appropriate C++ wrappers and
7   functions for various scripting languages, to enable them to call the
8   liblldb Script Bridge functions.
9
10*/
11
12/*  The name of the module to be created.  */
13
14%module lldb
15
16%typemap(in) lldb::ReturnStatus {
17  $1 = (int) $input;
18}
19
20%typemap(freearg) lldb::ReturnStatus {
21}
22
23%typemap(out) lldb::ReturnStatus {
24  $result = SWIG_From_unsigned_SS_int(static_cast< unsigned int >($1));
25}
26
27/* Typemap definitions, to allow SWIG to properly handle 'char**' data types. */
28
29%typemap(in) char ** {
30  /* Check if is a list  */
31  if (PyList_Check($input)) {
32    int size = PyList_Size($input);
33    int i = 0;
34    $1 = (char **) malloc((size+1) * sizeof(char));
35    for (i = 0; i < size; i++) {
36      PyObject *o = PyList_GetItem($input,i);
37      if (PyString_Check(o))
38        $1[i] = PyString_AsString(PyList_GetItem($input,i));
39      else {
40        PyErr_SetString(PyExc_TypeError,"list must contain strings");
41        free($1);
42        return NULL;
43      }
44    }
45    $1[i] = 0;
46  } else if ($input == Py_None) {
47    $1 =  NULL;
48  } else {
49    PyErr_SetString(PyExc_TypeError,"not a list");
50    return NULL;
51  }
52}
53
54%typemap(freearg) char** {
55  free((char *) $1);
56}
57
58%typemap(out) char** {
59  int len;
60  int i;
61  len = 0;
62  while ($1[len]) len++;
63  $result = PyList_New(len);
64  for (i = 0; i < len; i++) {
65    PyList_SetItem($result, i, PyString_FromString($1[i]));
66  }
67}
68
69
70/* The liblldb header files to be included. */
71
72%{
73#include "lldb/lldb-types.h"
74#include "lldb/API/SBAddress.h"
75#include "lldb/API/SBBlock.h"
76#include "lldb/API/SBBreakpoint.h"
77#include "lldb/API/SBBreakpointLocation.h"
78#include "lldb/API/SBBroadcaster.h"
79#include "lldb/API/SBCommandContext.h"
80#include "lldb/API/SBCommandInterpreter.h"
81#include "lldb/API/SBCommandReturnObject.h"
82#include "lldb/API/SBCompileUnit.h"
83#include "lldb/API/SBDebugger.h"
84#include "lldb/API/SBError.h"
85#include "lldb/API/SBEvent.h"
86#include "lldb/API/SBFrame.h"
87#include "lldb/API/SBFunction.h"
88#include "lldb/API/SBLineEntry.h"
89#include "lldb/API/SBListener.h"
90#include "lldb/API/SBModule.h"
91#include "lldb/API/SBProcess.h"
92#include "lldb/API/SBSourceManager.h"
93#include "lldb/API/SBStringList.h"
94#include "lldb/API/SBSymbol.h"
95#include "lldb/API/SBSymbolContext.h"
96#include "lldb/API/SBTarget.h"
97#include "lldb/API/SBThread.h"
98#include "lldb/API/SBType.h"
99#include "lldb/API/SBValue.h"
100using namespace lldb_private;
101%}
102
103/* Various liblldb typedefs that SWIG needs to know about.  */
104
105%{
106typedef unsigned int uint32_t;
107typedef int int32_t;
108typedef uint32_t tid_t;
109typedef uint64_t addr_t;
110typedef int32_t break_id_t;
111typedef lldb::SBStringList SBStringList;
112typedef lldb::RegisterKind RegisterKind;
113const RegisterKind kNumRegisterKinds = lldb::kNumRegisterKinds ;
114%}
115
116typedef unsigned int uint32_t;
117typedef int int32_t;
118typedef uint32_t tid_t;
119typedef uint64_t addr_t;
120typedef int32_t break_id_t;
121typedef lldb::SBStringList SBStringList;
122typedef lldb::RegisterKind RegisterKind;
123const RegisterKind kNumRegisterKinds = lldb::kNumRegisterKinds ;
124typedef int StopReason;
125
126
127%include "lldb/API/SBAddress.h"
128%include "lldb/API/SBBlock.h"
129%include "lldb/API/SBBreakpoint.h"
130%include "lldb/API/SBBreakpointLocation.h"
131%include "lldb/API/SBBroadcaster.h"
132%include "lldb/API/SBCommandContext.h"
133%include "lldb/API/SBCommandInterpreter.h"
134%include "lldb/API/SBCommandReturnObject.h"
135%include "lldb/API/SBCompileUnit.h"
136%include "lldb/API/SBDebugger.h"
137%include "lldb/API/SBError.h"
138%include "lldb/API/SBEvent.h"
139%include "lldb/API/SBFrame.h"
140%include "lldb/API/SBFunction.h"
141%include "lldb/API/SBLineEntry.h"
142%include "lldb/API/SBListener.h"
143%include "lldb/API/SBModule.h"
144%include "lldb/API/SBProcess.h"
145%include "lldb/API/SBSourceManager.h"
146%include "lldb/API/SBStringList.h"
147%include "lldb/API/SBSymbol.h"
148%include "lldb/API/SBSymbolContext.h"
149%include "lldb/API/SBTarget.h"
150%include "lldb/API/SBThread.h"
151%include "lldb/API/SBType.h"
152%include "lldb/API/SBValue.h"
153%include "lldb/lldb-types.h"
154
155
156