import gdb.printing from .vector import KstdVectorPrinter from .string import KstdStringPrinter from .smart_pointers import ( KstdUniquePtrPrinter, KstdSharedPtrPrinter, KstdObserverPtrPrinter, ) def build_pretty_printers(): pp = gdb.printing.RegexpCollectionPrettyPrinter("kstd") pp.add_printer("vector", "^kstd::vector<.*>$", KstdVectorPrinter) pp.add_printer("string", "^kstd::string$", KstdStringPrinter) pp.add_printer("unique_ptr", "^kstd::unique_ptr<.*>$", KstdUniquePtrPrinter) pp.add_printer("shared_ptr", "^kstd::shared_ptr<.*>$", KstdSharedPtrPrinter) pp.add_printer("observer_ptr", "^kstd::observer_ptr<.*>$", KstdObserverPtrPrinter) return pp def register_printers(objfile): gdb.printing.register_pretty_printer(objfile, build_pretty_printers(), replace=True)