xref: /llvm-project/lldb/test/API/commands/command/script/callables.py (revision 2238dcc39358353cac21df75c3c3286ab20b8f53)
199451b44SJordan Rupprechtimport lldb
299451b44SJordan Rupprecht
399451b44SJordan Rupprecht# bunch of different kinds of python callables that should
499451b44SJordan Rupprecht# all work as commands.
599451b44SJordan Rupprecht
6*2238dcc3SJonas Devlieghere
799451b44SJordan Rupprechtdef check(debugger, command, context, result, internal_dict):
8*2238dcc3SJonas Devlieghere    if (
9*2238dcc3SJonas Devlieghere        not isinstance(debugger, lldb.SBDebugger)
10*2238dcc3SJonas Devlieghere        or not isinstance(command, str)
11*2238dcc3SJonas Devlieghere        or not isinstance(result, lldb.SBCommandReturnObject)
12*2238dcc3SJonas Devlieghere        or not isinstance(internal_dict, dict)
13*2238dcc3SJonas Devlieghere        or (not context is None and not isinstance(context, lldb.SBExecutionContext))
14*2238dcc3SJonas Devlieghere    ):
1599451b44SJordan Rupprecht        raise Exception()
1699451b44SJordan Rupprecht    result.AppendMessage("All good.")
1799451b44SJordan Rupprecht
18*2238dcc3SJonas Devlieghere
1999451b44SJordan Rupprechtdef vfoobar(*args):
2099451b44SJordan Rupprecht    check(*args)
2199451b44SJordan Rupprecht
22*2238dcc3SJonas Devlieghere
2399451b44SJordan Rupprechtdef v5foobar(debugger, command, context, result, internal_dict, *args):
2499451b44SJordan Rupprecht    check(debugger, command, context, result, internal_dict)
2599451b44SJordan Rupprecht
26*2238dcc3SJonas Devlieghere
2799451b44SJordan Rupprechtdef foobar(debugger, command, context, result, internal_dict):
2899451b44SJordan Rupprecht    check(debugger, command, context, result, internal_dict)
2999451b44SJordan Rupprecht
30*2238dcc3SJonas Devlieghere
3199451b44SJordan Rupprechtdef foobar4(debugger, command, result, internal_dict):
3299451b44SJordan Rupprecht    check(debugger, command, None, result, internal_dict)
3399451b44SJordan Rupprecht
34*2238dcc3SJonas Devlieghere
3599451b44SJordan Rupprechtclass FooBar:
3699451b44SJordan Rupprecht    @staticmethod
3799451b44SJordan Rupprecht    def sfoobar(debugger, command, context, result, internal_dict):
3899451b44SJordan Rupprecht        check(debugger, command, context, result, internal_dict)
3999451b44SJordan Rupprecht
4099451b44SJordan Rupprecht    @classmethod
4199451b44SJordan Rupprecht    def cfoobar(cls, debugger, command, context, result, internal_dict):
4299451b44SJordan Rupprecht        check(debugger, command, context, result, internal_dict)
4399451b44SJordan Rupprecht
4499451b44SJordan Rupprecht    def ifoobar(self, debugger, command, context, result, internal_dict):
4599451b44SJordan Rupprecht        check(debugger, command, context, result, internal_dict)
4699451b44SJordan Rupprecht
4799451b44SJordan Rupprecht    def __call__(self, debugger, command, context, result, internal_dict):
4899451b44SJordan Rupprecht        check(debugger, command, context, result, internal_dict)
4999451b44SJordan Rupprecht
5099451b44SJordan Rupprecht    @staticmethod
5199451b44SJordan Rupprecht    def sfoobar4(debugger, command, result, internal_dict):
5299451b44SJordan Rupprecht        check(debugger, command, None, result, internal_dict)
5399451b44SJordan Rupprecht
5499451b44SJordan Rupprecht    @classmethod
5599451b44SJordan Rupprecht    def cfoobar4(cls, debugger, command, result, internal_dict):
5699451b44SJordan Rupprecht        check(debugger, command, None, result, internal_dict)
5799451b44SJordan Rupprecht
5899451b44SJordan Rupprecht    def ifoobar4(self, debugger, command, result, internal_dict):
5999451b44SJordan Rupprecht        check(debugger, command, None, result, internal_dict)
6099451b44SJordan Rupprecht
61*2238dcc3SJonas Devlieghere
6299451b44SJordan Rupprechtclass FooBar4:
6399451b44SJordan Rupprecht    def __call__(self, debugger, command, result, internal_dict):
6499451b44SJordan Rupprecht        check(debugger, command, None, result, internal_dict)
6599451b44SJordan Rupprecht
66*2238dcc3SJonas Devlieghere
6799451b44SJordan RupprechtFooBarObj = FooBar()
6899451b44SJordan Rupprecht
6999451b44SJordan RupprechtFooBar4Obj = FooBar4()
70