emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/progmodes gdb-mi.el


From: Nick Roberts
Subject: [Emacs-diffs] emacs/lisp/progmodes gdb-mi.el
Date: Sat, 12 Sep 2009 00:03:29 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Nick Roberts <nickrob>  09/09/12 00:03:29

Modified files:
        lisp/progmodes : gdb-mi.el 

Log message:
        (gdb-var-list-children-regexp): Delete.
        (gdb-var-list-children): Use json parsing.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/progmodes/gdb-mi.el?cvsroot=emacs&r1=1.46&r2=1.47

Patches:
Index: gdb-mi.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/gdb-mi.el,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -b -r1.46 -r1.47
--- gdb-mi.el   11 Sep 2009 11:55:11 -0000      1.46
+++ gdb-mi.el   12 Sep 2009 00:03:29 -0000      1.47
@@ -1054,25 +1054,20 @@
                varnum)
             `(lambda () (gdb-var-list-children-handler ,varnum)))))
 
-(defconst gdb-var-list-children-regexp
-  "child={.*?name=\"\\(.+?\\)\".*?,exp=\"\\(.+?\\)\".*?,\
-numchild=\"\\(.+?\\)\".*?,value=\\(\"\"\\|\".*?[^\\]\"\\)\
-\\(}\\|.*?,\\(type=\"\\(.+?\\)\"\\)?.*?}\\)")
-
 (defun gdb-var-list-children-handler (varnum)
-  (goto-char (point-min))
-  (let ((var-list nil))
+  (let ((var-list nil)
+       (children (gdb-get-field (gdb-json-partial-output "child") 'children)))
     (catch 'child-already-watched
       (dolist (var gdb-var-list)
        (if (string-equal varnum (car var))
            (progn
              (push var var-list)
-             (while (re-search-forward gdb-var-list-children-regexp nil t)
-               (let ((varchild (list (match-string 1)
-                                     (match-string 2)
-                                     (match-string 3)
-                                     (match-string 7)
-                                     (read (match-string 4))
+             (dolist (child children)
+               (let ((varchild (list (gdb-get-field child 'name)
+                                     (gdb-get-field child 'exp)
+                                     (gdb-get-field child 'numchild)
+                                     (gdb-get-field child 'type)
+                                     (gdb-get-field child 'value)
                                      nil)))
                  (if (assoc (car varchild) gdb-var-list)
                      (throw 'child-already-watched nil))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]