name-hashtable in den context gezogen, das war wohl kaum thread-safe so.
allerdings keine ahnung wofuer sie ueberhaupt da ist.
This commit is contained in:
@ -124,7 +124,7 @@
|
|||||||
;; Zeichen abwarten und nachgucken, dass nicht etwa die andere
|
;; Zeichen abwarten und nachgucken, dass nicht etwa die andere
|
||||||
;; Haelfte fehlt!
|
;; Haelfte fehlt!
|
||||||
(let ((x (logior (ash hi 8) lo)))
|
(let ((x (logior (ash hi 8) lo)))
|
||||||
(when (or (eql x #xFFFE) (eql x #/U+FFFF))
|
(when (or (eql x #xFFFE) (eql x #xFFFF))
|
||||||
(xerror "not a valid code point: #x~X" x))
|
(xerror "not a valid code point: #x~X" x))
|
||||||
(setf (aref out wptr) x))
|
(setf (aref out wptr) x))
|
||||||
(setf wptr (%+ 1 wptr))))
|
(setf wptr (%+ 1 wptr))))
|
||||||
@ -147,7 +147,7 @@
|
|||||||
;; Zeichen abwarten und nachgucken, dass nicht etwa die andere
|
;; Zeichen abwarten und nachgucken, dass nicht etwa die andere
|
||||||
;; Haelfte fehlt!
|
;; Haelfte fehlt!
|
||||||
(let ((x (logior (ash hi 8) lo)))
|
(let ((x (logior (ash hi 8) lo)))
|
||||||
(when (or (eql x #xFFFE) (eql x #/U+FFFF))
|
(when (or (eql x #xFFFE) (eql x #xFFFF))
|
||||||
(xerror "not a valid code point: #x~X" x))
|
(xerror "not a valid code point: #x~X" x))
|
||||||
(setf (aref out wptr) x))
|
(setf (aref out wptr) x))
|
||||||
(setf wptr (%+ 1 wptr))))
|
(setf wptr (%+ 1 wptr))))
|
||||||
@ -169,7 +169,7 @@
|
|||||||
(xerror "surrogate encoded in UTF-8: #x~X." x))
|
(xerror "surrogate encoded in UTF-8: #x~X." x))
|
||||||
(cond ((or (%> x #x10FFFF)
|
(cond ((or (%> x #x10FFFF)
|
||||||
(eql x #xFFFE)
|
(eql x #xFFFE)
|
||||||
(eql x #/U+FFFF))
|
(eql x #xFFFF))
|
||||||
(xerror "not a valid code point: #x~X" x))
|
(xerror "not a valid code point: #x~X" x))
|
||||||
((%> x #xFFFF)
|
((%> x #xFFFF)
|
||||||
(setf (aref out (%+ 0 wptr)) (%+ #xD7C0 (ash x -10))
|
(setf (aref out (%+ 0 wptr)) (%+ #xD7C0 (ash x -10))
|
||||||
|
|||||||
@ -213,6 +213,8 @@
|
|||||||
model-stack
|
model-stack
|
||||||
(referenced-notations '())
|
(referenced-notations '())
|
||||||
(id-table (%make-rod-hash-table))
|
(id-table (%make-rod-hash-table))
|
||||||
|
;; FIXME: Wofuer ist name-hashtable da? Will man das wissen?
|
||||||
|
(name-hashtable (make-rod-hashtable :size 2000))
|
||||||
(standalone-p nil)
|
(standalone-p nil)
|
||||||
(entity-resolver nil)
|
(entity-resolver nil)
|
||||||
(disallow-internal-subset nil)
|
(disallow-internal-subset nil)
|
||||||
@ -479,14 +481,12 @@
|
|||||||
(defun (setf rod-hash-get) (new-value hashtable rod &optional (start 0) (end (length rod)))
|
(defun (setf rod-hash-get) (new-value hashtable rod &optional (start 0) (end (length rod)))
|
||||||
(rod-hash-set new-value hashtable rod start end))
|
(rod-hash-set new-value hashtable rod start end))
|
||||||
|
|
||||||
(defparameter *name-hashtable* (make-rod-hashtable :size 2000))
|
|
||||||
|
|
||||||
(defun intern-name (rod &optional (start 0) (end (length rod)))
|
(defun intern-name (rod &optional (start 0) (end (length rod)))
|
||||||
(multiple-value-bind (value successp key) (rod-hash-get *name-hashtable* rod start end)
|
(multiple-value-bind (value successp key) (rod-hash-get (name-hashtable *ctx*) rod start end)
|
||||||
(declare (ignore value))
|
(declare (ignore value))
|
||||||
(if successp
|
(if successp
|
||||||
key
|
key
|
||||||
(nth-value 1 (rod-hash-set t *name-hashtable* rod start end)))))
|
(nth-value 1 (rod-hash-set t (name-hashtable *ctx*) rod start end)))))
|
||||||
|
|
||||||
;;;; ---------------------------------------------------------------------------
|
;;;; ---------------------------------------------------------------------------
|
||||||
;;;;
|
;;;;
|
||||||
|
|||||||
Reference in New Issue
Block a user