summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2021-09-07tests: Add binary document tests.•••This commit adds tests to smoke-test document methods dealing with bytevectors. * tests/xapian.scm ("document-data fails to decode binary data", "document-bytes reads binary data correctly", "document-slot-ref fails to decode binary value", "document-slot-ref-bytes reads binary value correctly"): New tests. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net> Bob131
2021-09-07xapian: Introduce document setters.•••* xapian/xapian.scm (document-set-data!, document-set-bytes!, document-slot-set!, document-slot-set-bytes!): New functions. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net> Bob131
2021-09-07xapian: make-document: Accept bytevectors.•••* xapian/xapian.scm (make-document): Support setting document values and body from bytevectors. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net> Bob131
2021-09-07xapian: Introduce document-slot-ref-bytes.•••* xapian/xapian.scm (document-slot-ref-bytes): New function. Signed-off-by: Arun Isaac <arunisaac@systemreboot.net> Bob131
2021-09-07xapian: Reimplement document-bytes.•••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> Bob131
2021-09-07Add SWIG wrappers for bytevector method variants.•••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> Bob131
2021-09-07Set up testing infrastructure.•••* 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. Arun Isaac
2021-09-06xapian: Support in-memory databases.•••* xapian/xapian.scm (call-with-in-memory-database): New public function. Arun Isaac
2021-09-06README: Remove unnecessary guile -s flag.•••* README.org (Usage): Remove unnecessary guile -s flag. Arun Isaac
2021-09-02xapian: Fix spacing in association list.•••* examples/search.scm (search): Add a space after '.' in the prefixes association list. Arun Isaac
2021-09-02Update copyright years.•••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. Arun Isaac
2021-09-02README: Add continuous integration badges.•••* README.org (ci-badge): New macro. Add continuous integration badges. Arun Isaac
2021-09-02website: Add website.•••* 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. Arun Isaac
2021-09-02Add guix.scm.•••* guix.scm: New file. * README.org (Usage): Update guix environment instructions. Arun Isaac
2020-10-17xapian: Introduce document-bytes.•••* xapian/xapian.scm (document-bytes): New function. Arun Isaac
2020-10-14xapian: Wrap MSet-snippet.•••* xapian/xapian.scm (get-flag, mset-snippet): New functions. Arun Isaac
2020-10-14Use Guix's guile-xapian package for `guix environment`.•••* guix.scm: Delete file. * README.org (Usage): Update `guix environment` instructions. Arun Isaac
2020-03-07xapian: Rename document-ref to document-slot-ref.•••* xapian/xapian.scm (document-ref): Rename to document-slot-ref. v0.1.0Arun Isaac
2020-03-06xapian: Wrap document values.•••* xapian/xapian.scm (make-document): Support setting document values. (document-ref): New function. Arun Isaac
2020-03-05xapian: Wrap Enquire-get-mset using keyword arguments.•••* 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. Arun Isaac
2020-03-05xapian: Wrap Database-get-doccount.•••* xapian/xapian.scm (database-document-count): New function. Arun Isaac
2020-02-26Add generated files to .gitignore.•••* .gitignore: Add xapian.i and xapian/wrap.scm. Arun Isaac
2020-02-26Organize .gitignore.•••* .gitignore: Organize into sections with comments. Arun Isaac
2020-02-26Load libguilexapian with absolute path or through a search path.•••* 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. Arun Isaac
2020-02-26Support guile 3.0.•••* configure.ac: Check for guile 3.0. If not found, check for guile 2.2. Arun Isaac
2020-02-19Invoke GUILE_PKG to set GUILE_EFFECTIVE_VERSION.•••* configure.ac: Invoke GUILE_PKG. Arun Isaac
2020-02-19Build xapian/xapian.scm after libguilexapian.la.•••* Makefile.am: Build xapian/xapian.scm only after libguilexapian.la. Arun Isaac
2020-02-19Load libguilexapian without any specific path.•••* 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. Arun Isaac
2020-02-18xapian: Remove generated scheme stub.•••xapian/wrap.scm is generated by swig. We need not commit it to the git repository. * xapian/wrap.scm: Delete file. Arun Isaac
2020-02-18Rerun pkg-config to find xapian include flags for swig.•••* configure.ac: Rerun pkg-config to find xapian include flags for swig. Store result in SWIG_FLAGS. * Makefile.am: Use SWIG_CFLAGS. Arun Isaac
2020-02-17README: Warn about unstable API.•••* README.org: Warn about unstable API. Arun Isaac
2020-02-16examples: Add comments.•••* examples/index.scm, examples/search.scm: Add comments. Arun Isaac
2020-02-15README: Explain the end goal of Scheme-friendly wrapping.•••* README.org: Explain the eventual complete wrapping of low level functions from (xapian wrap). Arun Isaac
2020-02-15Add .gitignore.•••* .gitignore: New file. Arun Isaac
2020-02-15Add Emacs directory local variables.•••* .dir-locals.el: New file. Arun Isaac
2020-02-15Add bootstrap script.•••* bootstrap.sh: New file. Arun Isaac
2020-02-15First commit.Arun Isaac