]> code.delx.au - gnu-emacs-elpa/blobdiff - chess-database.el
Try to improve the promotion situation on ICS by allowing chess-ply to query for...
[gnu-emacs-elpa] / chess-database.el
index 490388438d48dcbad132b71c463e45ecf93148fc..6b0b1cdeaee756a75ce99a4dcb2c01a9e8200644 100644 (file)
 (defun chess-database-do-open (module file)
   "Returns the opened database object, or nil."
   (let* ((name (symbol-name module))
-        (handler (intern-soft (concat name "-handler")))
-        buffer)
+        (handler (intern-soft (concat name "-handler"))))
     (unless handler
       (chess-error 'no-such-database name))
-    (when (setq buffer (funcall handler 'open file))
-      (with-current-buffer buffer
-       (setq chess-database-handler handler)
-       (add-hook 'kill-buffer-hook 'chess-database-close nil t)
-       (add-hook 'after-revert-hook 'chess-database-rescan nil t)
-       (current-buffer)))))
+    (let ((buffer (funcall handler 'open file)))
+      (when buffer
+       (with-current-buffer buffer
+         (setq chess-database-handler handler)
+         (add-hook 'kill-buffer-hook 'chess-database-close nil t)
+         (add-hook 'after-revert-hook 'chess-database-rescan nil t)
+         (current-buffer))))))
 
 (defun chess-database-open (file &optional module)
   "Returns the opened database object, or nil."
@@ -57,7 +57,7 @@
     (when (buffer-live-p buf)
       (with-current-buffer buf
        (remove-hook 'kill-buffer-hook 'chess-database-close t))
-      (chess-database-command buf 'save)
+      (chess-database-save buf)
       (chess-database-command buf 'close)
       (kill-buffer buf))))
 
 (defun chess-database-count (database)
   (chess-database-command database 'count))
 
+(defun chess-database-read-only-p (database)
+  "Return non-nil if DATABASE is read only."
+  (chess-database-command database 'read-only-p))
+
+(defun chess-database-filename (database)
+  "Return the filename of an already opened DATABASE."
+  (chess-database-command database 'filename))
+
 (defun chess-database-read (database index)
+  "Return from DATABASE the chess game object at INDEX."
   (chess-database-command database 'read index))
 
 (defun chess-database-write (database game)
   (chess-database-command database 'replace game index))
 
 (defun chess-database-query (database &rest terms)
-  (chess-database-command database 'query terms))
+  "Run a query on DATABASE.
+TERMS is partly dependent on the chess-database module in use.
+chess-scid:
+ tree-search GAME: Perform a tree search on the last position of GAME."
+  (apply 'chess-database-command database 'query terms))
 
 (provide 'chess-database)