| ;; Additional pretty-printer support. |
| ;; |
| ;; Copyright (C) 2014-2021 Free Software Foundation, Inc. |
| ;; |
| ;; This file is part of GDB. |
| ;; |
| ;; This program is free software; you can redistribute it and/or modify |
| ;; it under the terms of the GNU General Public License as published by |
| ;; the Free Software Foundation; either version 3 of the License, or |
| ;; (at your option) any later version. |
| ;; |
| ;; This program is distributed in the hope that it will be useful, |
| ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ;; GNU General Public License for more details. |
| ;; |
| ;; You should have received a copy of the GNU General Public License |
| ;; along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| (define-module (gdb printing) |
| #:use-module ((gdb) #:select |
| (pretty-printer? objfile? progspace? |
| pretty-printers set-pretty-printers! |
| objfile-pretty-printers set-objfile-pretty-printers! |
| progspace-pretty-printers set-progspace-pretty-printers!)) |
| #:use-module (gdb support)) |
| |
| (define-public (prepend-pretty-printer! obj matcher) |
| "Add MATCHER to the beginning of the pretty-printer list for OBJ. |
| If OBJ is #f, add MATCHER to the global list." |
| (assert-type (pretty-printer? matcher) matcher SCM_ARG1 |
| 'prepend-pretty-printer! "pretty-printer") |
| (cond ((eq? obj #f) |
| (set-pretty-printers! (cons matcher (pretty-printers)))) |
| ((objfile? obj) |
| (set-objfile-pretty-printers! |
| obj (cons matcher (objfile-pretty-printers obj)))) |
| ((progspace? obj) |
| (set-progspace-pretty-printers! |
| obj (cons matcher (progspace-pretty-printers obj)))) |
| (else |
| (assert-type #f obj SCM_ARG1 'prepend-pretty-printer! |
| "#f, objfile, or progspace")))) |
| |
| (define-public (append-pretty-printer! obj matcher) |
| "Add MATCHER to the end of the pretty-printer list for OBJ. |
| If OBJ is #f, add MATCHER to the global list." |
| (assert-type (pretty-printer? matcher) matcher SCM_ARG1 |
| 'append-pretty-printer! "pretty-printer") |
| (cond ((eq? obj #f) |
| (set-pretty-printers! (append! (pretty-printers) (list matcher)))) |
| ((objfile? obj) |
| (set-objfile-pretty-printers! |
| obj (append! (objfile-pretty-printers obj) (list matcher)))) |
| ((progspace? obj) |
| (set-progspace-pretty-printers! |
| obj (append! (progspace-pretty-printers obj) (list matcher)))) |
| (else |
| (assert-type #f obj SCM_ARG1 'append-pretty-printer! |
| "#f, objfile, or progspace")))) |