blob: 1dfe070971c59c230382642385e772639994f08d [file] [log] [blame]
;; 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"))))