Age | Commit message (Collapse) | Author |
|
The current implementation of document-bytes involves converting the
document data string into a list of characters, mapping over the
result with char->integer and passing the list of integers to
u8-list->integer. This is quite an expensive operation (relative to
what the user might expect), and may not reliably return a result if
the document data couldn't be decoded as a UTF-8 string in the first
place.
Now that we have SWIG wrappers that return bytevectors directly, we
can redefine document-bytes as an alias of Document-get-data-bytes.
* xapian/xapian.scm (document-bytes): Redefine function in terms of
Document-get-data-bytes.
Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
|
|
Several Xapian methods use `std::string' to represent opaque binary
blobs. SWIG treats these as UTF-8 strings and converts them to an SCM
representation via `scm_from_utf8_string', which will throw an error
if the input is not valid UTF-8.
This commit updates the SWIG interface file to add wrappers taking or
returning bytevectors instead of strings for Xapian methods dealing
with document values and bodies.
* xapian.i.in (SWIG_bytevector, typemap_in_SWIG_bytevector,
typemap_out_SWIG_bytevector): Add machinery for defining
bytevector-variant wrappers of existing methods taking or returning
std::string.
* (Xapian::ValueIterator::get_value_bytes,
Xapian::Document::get_value_bytes, Xapian::Document::add_value_bytes,
Xapian::Document::get_data_bytes, Xapian::Document::set_data_bytes,
Xapian::Database::get_metadata_bytes,
Xapian::WritableDatabase::set_metadata_bytes,
Xapian::Query::Query): Add bytevector variants of methods.
Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
|
|
* tests/xapian.scm: New file.
* build-aux/test-driver.scm.in: New file.
* configure.ac: Configure build-aux/test-driver.scm.
* .gitignore: Add build-aux/test-driver.scm, tests/*.log and
tests/*.trs.
* Makefile.am (EXTRA_DIST): Add TESTS.
(TEST_EXTENSIONS, SCM_TESTS, TESTS, SCM_LOG_DRIVER): New variables.
|
|
* xapian/xapian.scm (call-with-in-memory-database): New public
function.
|
|
* README.org (Usage): Remove unnecessary guile -s flag.
|
|
* examples/search.scm (search): Add a space after '.' in the prefixes
association list.
|
|
This is a follow-up to commits
cb61a526c82153c09ed357901166a42b48ba9d3b and
12f12fbcb3cba4c634e10e7bf16a5c47d670f83b where the copyright year was
not updated.
* Makefile.am, build-aux/build-home-page.el, configure.ac, guix.scm:
Add 2021 to copyright.
|
|
* README.org (ci-badge): New macro.
Add continuous integration badges.
|
|
* website/style.css: New file.
* build-aux/build-home-page.el: New file.
* configure.ac: Look for emacs.
* Makefile.am (EMACS_GEN, EMACS_GEN_, EMACS_GEN_0, EMACS_GEN_1): New
variables.
(website, website/index.html): New target.
(CLEANFILES): Add website/index.html.
* .gitignore: Add website/index.html.
|
|
* guix.scm: New file.
* README.org (Usage): Update guix environment instructions.
|
|
* xapian/xapian.scm (document-bytes): New function.
|
|
* xapian/xapian.scm (get-flag, mset-snippet): New functions.
|
|
* guix.scm: Delete file.
* README.org (Usage): Update `guix environment` instructions.
|
|
* xapian/xapian.scm (document-ref): Rename to document-slot-ref.
|
|
* xapian/xapian.scm (make-document): Support setting document values.
(document-ref): New function.
|
|
* xapian/xapian.scm (enquire-mset): Introduce offset and maximum-items
keyword arguments.
* examples/search.scm (search): Pass pagesize as keyword argument to
enquire-mset. Remove argument offset.
|
|
* xapian/xapian.scm (database-document-count): New function.
|
|
* .gitignore: Add xapian.i and xapian/wrap.scm.
|
|
* .gitignore: Organize into sections with comments.
|
|
* xapian.i: Rename to xapian.i.in.
* xapian.i.in: Try loading libguilexapian with absolute path first. If
it fails, then try searching using LD_LIBRARY_PATH and other
mechanisms.
* Makefile.am: Generate xapian.i from xapian.i.in.
|
|
* configure.ac: Check for guile 3.0. If not found, check for guile
2.2.
|
|
* configure.ac: Invoke GUILE_PKG.
|
|
* Makefile.am: Build xapian/xapian.scm only after libguilexapian.la.
|
|
* pre-inst-env.in (LD_LIBRARY_PATH): Set LD_LIBRARY_PATH.
* xapian.i: Load libguilexapian without any specific path. Let it be found
using LD_LIBRARY_PATH and other search mechanisms.
|
|
xapian/wrap.scm is generated by swig. We need not commit it to the git
repository.
* xapian/wrap.scm: Delete file.
|
|
* configure.ac: Rerun pkg-config to find xapian include flags for
swig. Store result in SWIG_FLAGS.
* Makefile.am: Use SWIG_CFLAGS.
|
|
* README.org: Warn about unstable API.
|
|
* examples/index.scm, examples/search.scm: Add comments.
|
|
* README.org: Explain the eventual complete wrapping of low level
functions from (xapian wrap).
|
|
* .gitignore: New file.
|
|
* .dir-locals.el: New file.
|
|
* bootstrap.sh: New file.
|
|
|