[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/trie 15b4de9 018/111: Simplified trie--create by storin
From: |
Stefan Monnier |
Subject: |
[elpa] externals/trie 15b4de9 018/111: Simplified trie--create by storing functions for predefined trie types in symbol property lists |
Date: |
Mon, 14 Dec 2020 11:35:11 -0500 (EST) |
branch: externals/trie
commit 15b4de9ca85c6daf40c6c35ac273ea4098209e74
Author: Toby Cubitt <toby-predictive@dr-qubit.org>
Commit: tsc25 <toby-predictive@dr-qubit.org>
Simplified trie--create by storing functions for predefined trie types in
symbol property lists
---
trie.el | 74 +++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 40 insertions(+), 34 deletions(-)
diff --git a/trie.el b/trie.el
index 26f6ddd..7c7ffb2 100644
--- a/trie.el
+++ b/trie.el
@@ -170,6 +170,24 @@
;;; ================================================================
+;;; Setup pre-defined trie types
+
+;; --- avl-tree ---
+(put 'avl :trie-createfun (lambda (cmpfun seq) (avl-tree-create cmpfun)))
+(put 'avl :trie-insertfun 'avl-tree-enter)
+(put 'avl :trie-deletefun 'avl-tree-delete)
+(put 'avl :trie-lookupfun 'avl-tree-member)
+(put 'avl :trie-mapfun 'avl-tree-mapc)
+(put 'avl :trie-emptyfun 'avl-tree-empty)
+(put 'avl :trie-stack-createfun 'avl-tree-stack)
+(put 'avl :trie-stack-popfun 'avl-tree-stack-pop)
+(put 'avl :trie-stack-emptyfun 'avl-tree-stack-empty-p)
+(put 'avl :trie-transform-for-print 'trie--avl-transform-for-print)
+(put 'avl :trie-transform-from-read 'trie--avl-transform-from-read)
+
+
+
+;;; ================================================================
;;; Replacements for CL functions
;; copied from cl-extra.el
@@ -227,50 +245,38 @@ If START or END is negative, it counts from the end."
(comparison-function &optional (type 'avl)
&aux
(createfun
- (cond
- ((eq type 'avl)
- (lambda (cmpfun seq) (avl-tree-create cmpfun)))
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-createfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(insertfun
- (cond
- ((eq type 'avl) 'avl-tree-enter)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-insertfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(deletefun
- (cond
- ((eq type 'avl) 'avl-tree-delete)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-deletefun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(lookupfun
- (cond
- ((eq type 'avl) 'avl-tree-member)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-lookupfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(mapfun
- (cond
- ((eq type 'avl) 'avl-tree-mapc)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-mapfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(emptyfun
- (cond
- ((eq type 'avl) 'avl-tree-empty)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-emptyfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(stack-createfun
- (cond
- ((eq type 'avl) 'avl-tree-stack)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-stack-createfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(stack-popfun
- (cond
- ((eq type 'avl) 'avl-tree-stack-pop)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-stack-popfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(stack-emptyfun
- (cond
- ((eq type 'avl) 'avl-tree-stack-empty-p)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-stack-emptyfun)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(transform-for-print
- (cond
- ((eq type 'avl) 'trie--avl-transform-for-print)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-transform-for-print)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(transform-from-read
- (cond
- ((eq type 'avl) 'trie--avl-transform-from-read)
- (t (error "trie--create: unknown trie TYPE, %s" type))))
+ (or (get type :trie-transform-from-read)
+ (error "trie--create: unknown trie TYPE, %s" type)))
(cmpfun (trie--wrap-cmpfun comparison-function))
(root (trie--node-create-root createfun cmpfun))
))
- [elpa] externals/trie 153d2d4 048/111: Require advice when compiling, (continued)
- [elpa] externals/trie 153d2d4 048/111: Require advice when compiling, Stefan Monnier, 2020/12/14
- [elpa] externals/trie 6d76748 028/111: Allow "]" to be included in a negated character alternatives, by placing immediately after the "[^"., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 00300c4 074/111: Revert trie--node-data defsetf, since it seems to work now., Stefan Monnier, 2020/12/14
- [elpa] externals/trie dd26bb3 023/111: more trivial docstring changes, Stefan Monnier, 2020/12/14
- [elpa] externals/trie bc12ecb 072/111: Exploit lexical closures to allow byte-compilation of wrapped functions., Stefan Monnier, 2020/12/14
- [elpa] externals/trie e88f10d 069/111: Remove ChangeLogs from library headers., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 4efa42d 067/111: Fix trie--node-data defsetf, so it compiles in latest Emacs trunk., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 9986ac7 068/111: Restore trie print/read transformer functions., Stefan Monnier, 2020/12/14
- [elpa] externals/trie ec5396c 071/111: Suppress bogus unused lexical variable byte-compiler warnings., Stefan Monnier, 2020/12/14
- [elpa] externals/trie acad8e8 050/111: Bug-fixes to edebug advice, Stefan Monnier, 2020/12/14
- [elpa] externals/trie 15b4de9 018/111: Simplified trie--create by storing functions for predefined trie types in symbol property lists,
Stefan Monnier <=
- [elpa] externals/trie fb1d096 034/111: Changed trie-wildcard-match to return grouping data if pattern matches and contains groups, Stefan Monnier, 2020/12/14
- [elpa] externals/trie 4ff2b48 057/111: Minor typo-fixes in docstrings., Stefan Monnier, 2020/12/14
- [elpa] externals/trie a8bc50f 041/111: Minor code tidying, Stefan Monnier, 2020/12/14
- [elpa] externals/trie 0d81a80 066/111: Remove dependency on Emacs version, since this is currently broken in ELPA., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 673ca83 013/111: Don't compile wrapped functions explicitly, Stefan Monnier, 2020/12/14
- [elpa] externals/trie db78411 107/111: Switch to keyword arguments for trie/dictree query functions., Stefan Monnier, 2020/12/14
- [elpa] externals/trie f676ea0 091/111: Fix off-by-1 bug in Lewenstein distance queries., Stefan Monnier, 2020/12/14
- [elpa] externals/trie eef13c4 079/111: Document fuzzy matching functions and bump version number., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 77aafc9 108/111: Fix byte-compilation errors and warnings., Stefan Monnier, 2020/12/14
- [elpa] externals/trie b6ba36b 002/111: Minor improvements to trie-complete[-ordered], Stefan Monnier, 2020/12/14