From c1742b4953a4c5ea962fad19218efa37a3896295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20D=C3=B6ring?= Date: Mon, 16 Dec 2019 19:55:55 +0100 Subject: [PATCH] add $nimeq for gdb --- tools/nim-gdb.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/nim-gdb.py b/tools/nim-gdb.py index 6768ca5c45fb4..e994531b62727 100644 --- a/tools/nim-gdb.py +++ b/tools/nim-gdb.py @@ -161,6 +161,35 @@ def invoke(self, arg): 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 ################################################################################