From 5848f0042c2d6a6dd39d9b8db747f36200c9f543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20D=C3=B6ring?= Date: Tue, 17 Dec 2019 11:30:01 +0100 Subject: [PATCH] add $nimeq for gdb (#12909) --- tools/nim-gdb.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/nim-gdb.py b/tools/nim-gdb.py index 6768ca5c4..e994531b6 100644 --- a/tools/nim-gdb.py +++ b/tools/nim-gdb.py @@ -161,6 +161,35 @@ class DollarPrintFunction (gdb.Function): DollarPrintFunction() + +################################################################################ +##### GDB Function, Nim string comparison +################################################################################ + +class NimStringEqFunction (gdb.Function): + """Compare Nim strings for example in conditionals for breakpoints.""" + + def __init__ (self): + super (NimStringEqFunction, self).__init__("nimstreq") + + @staticmethod + def invoke_static(arg1,arg2): + if arg1.type.code == gdb.TYPE_CODE_PTR and arg1.type.target().name == "NimStringDesc": + str1 = NimStringPrinter(arg1).to_string() + else: + str1 = arg1.string() + if arg2.type.code == gdb.TYPE_CODE_PTR and arg2.type.target().name == "NimStringDesc": + str2 = NimStringPrinter(arg1).to_string() + else: + str2 = arg2.string() + + return str1 == str2 + + def invoke(self, arg1, arg2): + return self.invoke_static(arg1, arg2) + +NimStringEqFunction() + ################################################################################ ##### GDB Command, equivalent of Nim's $ operator ################################################################################