summaryrefslogtreecommitdiff
path: root/chess-game.el
diff options
context:
space:
mode:
Diffstat (limited to 'chess-game.el')
-rw-r--r--chess-game.el21
1 files changed, 17 insertions, 4 deletions
diff --git a/chess-game.el b/chess-game.el
index cd39624..6e22ff8 100644
--- a/chess-game.el
+++ b/chess-game.el
@@ -82,12 +82,25 @@
(chess-game-run-hooks game 'delete-tag tag))
-(defsubst chess-game-data (game)
+(defsubst chess-game-data-alist (game)
(nth 2 game))
-(defsubst chess-game-set-data (game data)
- (setcar (nthcdr 1 game) data)
- (chess-game-run-hooks game 'set-data))
+(defun chess-game-set-data (game key value)
+ (let ((alist (chess-game-data-alist game)))
+ (if (null alist)
+ (setcar (nthcdr 1 game) (list (cons key value)))
+ (push (cons key value) alist))
+ (chess-game-run-hooks game 'set-data key)))
+
+(defun chess-game-get-data (game key)
+ (let ((alist (chess-game-data-alist game)))
+ (if alist
+ (cdr (assq key alist)))))
+
+(defun chess-game-del-data (game key)
+ (let ((alist (chess-game-data-alist game)))
+ (if alist
+ (assq-delete-all key alist))))
(defsubst chess-game-plies (game)