# Path: voidwalker/framework/interface/command.py
# class BreakpointCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, terminal, inferior, argument):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class Command(object):
#     pass
# 
# Path: voidwalker/framework/interface/command.py
# class CommandFactory(object):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def create(self, command_type, inferior_repository, platform_factory,
#                inferior_factory, thread_factory, config, terminal):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class DataCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, terminal, thread, argument):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class PrefixCommand(Command):
#     def execute(self, terminal):
#         terminal.write('%(face-error)sAttempting to invoke an '
#                        'incomplete command!\n')
# 
# Path: voidwalker/framework/interface/command.py
# class StackCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, config, terminal, thread, platform_factory, argument):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class SupportCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, terminal, argument):
#         raise NotImplementedError


import gdb
from functools import partial
from ...framework.interface import BreakpointCommand
from ...framework.interface import Command
from ...framework.interface import CommandFactory
from ...framework.interface import DataCommand
from ...framework.interface import PrefixCommand
from ...framework.interface import StackCommand
from ...framework.interface import SupportCommand

    def create_prefix_command(self, command_type, _):
        class GdbPrefixCommand(gdb.Command, command_type):
            __doc__ = command_type.__doc__

            def __init__(self):
                command_type.__init__(self)
                gdb.Command.__init__(self, command_type.name(),
                                     gdb.COMMAND_USER,
                                     gdb.COMPLETE_COMMAND, True)

        return GdbPrefixCommand()

    def create_support_command(self, command_type, terminal):
        class GdbSupportCommand(gdb.Command, command_type):
            __doc__ = command_type.__doc__

            def __init__(self):
                command_type.__init__(self)
                gdb.Command.__init__(self, command_type.name(),
                                     gdb.COMMAND_SUPPORT,
                                     gdb.COMPLETE_NONE, True)

            def invoke(self, argument, _):
                args = parse_argument_list(argument)
                command_type.execute(self, terminal, args)

        return GdbSupportCommand()

    def create_brkp_command(self, command_type, terminal, inferior_repo):

# Path: voidwalker/framework/interface/command.py
# class BreakpointCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, terminal, inferior, argument):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class Command(object):
#     pass
# 
# Path: voidwalker/framework/interface/command.py
# class CommandFactory(object):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def create(self, command_type, inferior_repository, platform_factory,
#                inferior_factory, thread_factory, config, terminal):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class DataCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, terminal, thread, argument):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class PrefixCommand(Command):
#     def execute(self, terminal):
#         terminal.write('%(face-error)sAttempting to invoke an '
#                        'incomplete command!\n')
# 
# Path: voidwalker/framework/interface/command.py
# class StackCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, config, terminal, thread, platform_factory, argument):
#         raise NotImplementedError
# 
# Path: voidwalker/framework/interface/command.py
# class SupportCommand(Command):
#     __metaclass__ = abc.ABCMeta
# 
#     @abc.abstractmethod
#     def execute(self, terminal, argument):
#         raise NotImplementedError


# Path: voidwalker/backends/gdb/command.py
import gdb
from functools import partial
from ...framework.interface import BreakpointCommand
from ...framework.interface import Command
from ...framework.interface import CommandFactory
from ...framework.interface import DataCommand
from ...framework.interface import PrefixCommand
from ...framework.interface import StackCommand
from ...framework.interface import SupportCommand


    def create_prefix_command(self, command_type, _):
        class GdbPrefixCommand(gdb.Command, command_type):
            __doc__ = command_type.__doc__

            def __init__(self):
                command_type.__init__(self)
                gdb.Command.__init__(self, command_type.name(),
                                     gdb.COMMAND_USER,
                                     gdb.COMPLETE_COMMAND, True)

        return GdbPrefixCommand()

    def create_support_command(self, command_type, terminal):
        class GdbSupportCommand(gdb.Command, command_type):
            __doc__ = command_type.__doc__

            def __init__(self):
                command_type.__init__(self)
                gdb.Command.__init__(self, command_type.name(),
                                     gdb.COMMAND_SUPPORT,
                                     gdb.COMPLETE_NONE, True)

            def invoke(self, argument, _):
                args = parse_argument_list(argument)
                command_type.execute(self, terminal, args)

        return GdbSupportCommand()

    def create_brkp_command(self, command_type, terminal, inferior_repo):

        class GdbBreakpointCommand(gdb.Command, command_type):