mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-03 19:03:24 +00:00
Add sqlite3 support to Emacs
* configure.ac: Add check for the sqlite library. * doc/lispref/text.texi (Database): Document it. * lisp/sqlite.el: New file. * lisp/term/w32-win.el (dynamic-library-alist): Add a mapping. * src/Makefile.in (SQLITE3_LIBS): Add the libraries. * src/alloc.c (union emacs_align_type): Add a Lisp_Sqlite struct. * src/data.c (Ftype_of): Add sqlite. * src/emacs.c (main): Load the syms. * src/lisp.h (DEFINE_GDB_SYMBOL_BEGIN): Add PVEC_SQLITE. (GCALIGNED_STRUCT): New struct to keep data for sqlite database objects and statement objects. (SQLITEP, SQLITE, CHECK_SQLITE, XSQLITE): New macros for accessing the objects. * src/pdumper.c (dump_vectorlike): Update hash. (dump_vectorlike): Don't dump it. * src/print.c (print_vectorlike): Add a printer for the sqlite object. * src/sqlite.c: New file. * test/src/sqlite-tests.el: Add tests.
This commit is contained in:
parent
af1c5ec0fc
commit
3d38d1d134
15 changed files with 1161 additions and 4 deletions
42
lisp/sqlite.el
Normal file
42
lisp/sqlite.el
Normal file
|
@ -0,0 +1,42 @@
|
|||
;;; sqlite.el --- Tests for empty.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defmacro with-sqlite-transaction (db &rest body)
|
||||
"Execute BODY while holding a transaction for DB."
|
||||
(declare (indent 1) (debug (form body)))
|
||||
(let ((db-var (gensym)))
|
||||
`(let ((,db-var ,db))
|
||||
(if (sqlite-available-p)
|
||||
(unwind-protect
|
||||
(progn
|
||||
(sqlite-transaction ,db-var)
|
||||
,@body)
|
||||
(sqlite-commit ,db-var))
|
||||
(progn
|
||||
,@body)))))
|
||||
|
||||
(provide 'sqlite)
|
||||
|
||||
;;; sqlite.el ends here
|
Loading…
Add table
Add a link
Reference in a new issue