mirror of
https://gitlab.com/eql/EQL5.git
synced 2025-12-30 05:41:17 -08:00
64 lines
2.3 KiB
Common Lisp
64 lines
2.3 KiB
Common Lisp
;;; copyright (c) Polos Ruetz
|
|
;;;
|
|
;;; N.B: file "parsed-enums.lisp" will need some manual intervention (you'll see for yourself)
|
|
|
|
(load "load-modules")
|
|
(load "../src/lisp/x")
|
|
(load "share")
|
|
|
|
(defparameter *skip*
|
|
(list "QStyle::PM_"
|
|
"QStyle::PE_"
|
|
"QStyle::SH_"
|
|
"QStyle::SE_"
|
|
"QStyle::SO_"))
|
|
|
|
(defparameter *enum-begin* (format nil "Constant~CValue" #\Tab))
|
|
(defparameter *namespaces* (list "QAudio" "QGL" "QMultimedia"))
|
|
|
|
(defun parse (class out)
|
|
(let ((path (doc-file class)))
|
|
(if (probe-file path)
|
|
(let (in-enum)
|
|
(with-open-file (in path :direction :input :external-format :latin-1)
|
|
(x:while-it (read-line in nil nil)
|
|
(unless (dolist (skip *skip*)
|
|
(when (x:starts-with skip x:it)
|
|
(return t)))
|
|
(if in-enum
|
|
(progn
|
|
(if (not (x:starts-with (format nil "~A::" class) x:it))
|
|
(setf in-enum nil)
|
|
(let ((name-val (x:split x:it #\Tab)))
|
|
(format out "~%(\"|~A|\" . ~A)"
|
|
(x:string-substitute "." "::" (first name-val))
|
|
(x:string-substitute "#x" "0x" (second name-val))))))
|
|
(when (x:starts-with *enum-begin* x:it)
|
|
(setf in-enum t)))))))
|
|
(progn
|
|
(incf *not-found*)
|
|
(x:d :not-found path)))))
|
|
|
|
(defun parse-classes (classes s)
|
|
(dolist (class classes)
|
|
(let ((class* (string-left-trim "/" class)))
|
|
(format t "~%enums ~A" class*)
|
|
(parse class* s))))
|
|
|
|
(defun start ()
|
|
(with-open-file (s "../src/lisp/enum-lists/parsed-enums.lisp" :direction :output :if-exists :supersede)
|
|
(write-char #\( s)
|
|
(dolist (names (list *q-names* *n-names* *namespaces*))
|
|
(parse-classes (mapcar (lambda (name)
|
|
(string-trim "= " (x:if-it (position #\( name)
|
|
(subseq name 0 it)
|
|
name)))
|
|
names)
|
|
s))
|
|
(terpri s)
|
|
(write-char #\) s))
|
|
(if (zerop *not-found*)
|
|
(format t "~%OK~%~%")
|
|
(warn (format nil "Text files not found: ~D" *not-found*))))
|
|
|
|
(start)
|