1*99451b44SJordan Rupprecht
2*99451b44SJordan Rupprecht
3*99451b44SJordan Rupprechtimport lldb
4*99451b44SJordan Rupprecht
5*99451b44SJordan Rupprecht# bunch of different kinds of python callables that should
6*99451b44SJordan Rupprecht# all work as commands.
7*99451b44SJordan Rupprecht
8*99451b44SJordan Rupprechtdef check(debugger, command, context, result, internal_dict):
9*99451b44SJordan Rupprecht    if (not isinstance(debugger, lldb.SBDebugger) or
10*99451b44SJordan Rupprecht        not isinstance(command, str) or
11*99451b44SJordan Rupprecht        not isinstance(result, lldb.SBCommandReturnObject) or
12*99451b44SJordan Rupprecht        not isinstance(internal_dict, dict) or
13*99451b44SJordan Rupprecht        (not context is None and
14*99451b44SJordan Rupprecht        not isinstance(context, lldb.SBExecutionContext))):
15*99451b44SJordan Rupprecht      raise Exception()
16*99451b44SJordan Rupprecht    result.AppendMessage("All good.")
17*99451b44SJordan Rupprecht
18*99451b44SJordan Rupprechtdef vfoobar(*args):
19*99451b44SJordan Rupprecht    check(*args)
20*99451b44SJordan Rupprecht
21*99451b44SJordan Rupprechtdef v5foobar(debugger, command, context, result, internal_dict, *args):
22*99451b44SJordan Rupprecht    check(debugger, command, context, result, internal_dict)
23*99451b44SJordan Rupprecht
24*99451b44SJordan Rupprechtdef foobar(debugger, command, context, result, internal_dict):
25*99451b44SJordan Rupprecht    check(debugger, command, context, result, internal_dict)
26*99451b44SJordan Rupprecht
27*99451b44SJordan Rupprechtdef foobar4(debugger, command, result, internal_dict):
28*99451b44SJordan Rupprecht    check(debugger, command, None, result, internal_dict)
29*99451b44SJordan Rupprecht
30*99451b44SJordan Rupprechtclass FooBar:
31*99451b44SJordan Rupprecht    @staticmethod
32*99451b44SJordan Rupprecht    def sfoobar(debugger, command, context, result, internal_dict):
33*99451b44SJordan Rupprecht      check(debugger, command, context, result, internal_dict)
34*99451b44SJordan Rupprecht
35*99451b44SJordan Rupprecht    @classmethod
36*99451b44SJordan Rupprecht    def cfoobar(cls, debugger, command, context, result, internal_dict):
37*99451b44SJordan Rupprecht      check(debugger, command, context, result, internal_dict)
38*99451b44SJordan Rupprecht
39*99451b44SJordan Rupprecht    def ifoobar(self, debugger, command, context, result, internal_dict):
40*99451b44SJordan Rupprecht      check(debugger, command, context, result, internal_dict)
41*99451b44SJordan Rupprecht
42*99451b44SJordan Rupprecht    def __call__(self, debugger, command, context, result, internal_dict):
43*99451b44SJordan Rupprecht      check(debugger, command, context, result, internal_dict)
44*99451b44SJordan Rupprecht
45*99451b44SJordan Rupprecht    @staticmethod
46*99451b44SJordan Rupprecht    def sfoobar4(debugger, command, result, internal_dict):
47*99451b44SJordan Rupprecht      check(debugger, command, None, result, internal_dict)
48*99451b44SJordan Rupprecht
49*99451b44SJordan Rupprecht    @classmethod
50*99451b44SJordan Rupprecht    def cfoobar4(cls, debugger, command, result, internal_dict):
51*99451b44SJordan Rupprecht      check(debugger, command, None, result, internal_dict)
52*99451b44SJordan Rupprecht
53*99451b44SJordan Rupprecht    def ifoobar4(self, debugger, command, result, internal_dict):
54*99451b44SJordan Rupprecht      check(debugger, command, None, result, internal_dict)
55*99451b44SJordan Rupprecht
56*99451b44SJordan Rupprechtclass FooBar4:
57*99451b44SJordan Rupprecht    def __call__(self, debugger, command, result, internal_dict):
58*99451b44SJordan Rupprecht      check(debugger, command, None, result, internal_dict)
59*99451b44SJordan Rupprecht
60*99451b44SJordan RupprechtFooBarObj = FooBar()
61*99451b44SJordan Rupprecht
62*99451b44SJordan RupprechtFooBar4Obj = FooBar4()