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