<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guile-xapian/xapian.i.in, branch v0.5.0</title>
<subtitle>Guile bindings for Xapian</subtitle>
<id>http://git.systemreboot.net/guile-xapian/atom?h=v0.5.0</id>
<link rel='self' href='http://git.systemreboot.net/guile-xapian/atom?h=v0.5.0'/>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/'/>
<updated>2026-09-23T01:00:52+00:00</updated>
<entry>
<title>Replace query combinator with C++ query builder.</title>
<updated>2026-09-23T01:00:52+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2026-09-23T00:47:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=502566073c07eac6a91131847691cc0dbc093b18'/>
<id>urn:sha1:502566073c07eac6a91131847691cc0dbc093b18</id>
<content type='text'>
We need composite queries to have more than two subqueries. The only
way to do this is to provide Xapian::Query with an iterator. And to do
this, we need to drop down to C++.
</content>
</entry>
<entry>
<title>xapian: Wrap RangeProcessor.</title>
<updated>2024-05-04T00:39:14+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2024-05-03T23:07:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=9a82c0ceb9824960ec8f9c560af8dad67afb0517'/>
<id>urn:sha1:9a82c0ceb9824960ec8f9c560af8dad67afb0517</id>
<content type='text'>
* xapian.i.in (GuileXapianRangeProcessorWrapper): New class.
* xapian/xapian.scm (prefixed-range-processor,
suffixed-range-processor): New public functions.
</content>
</entry>
<entry>
<title>xapian: Wrap FieldProcessor.</title>
<updated>2024-05-03T23:07:08+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2024-05-03T21:48:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=ec7e7a9eabe210e1a75eeeb68f45dc1d6e5a7731'/>
<id>urn:sha1:ec7e7a9eabe210e1a75eeeb68f45dc1d6e5a7731</id>
<content type='text'>
* xapian.i.in (GuileXapianFieldProcessorWrapper): New class.
* xapian/xapian.scm (field-processor): New public function.
</content>
</entry>
<entry>
<title>Catch C++ xapian exceptions and raise them as scheme exceptions.</title>
<updated>2023-01-20T22:47:12+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2023-01-20T22:34:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=9df5620f5bbd571a00c1a9aa8567f2efe1974880'/>
<id>urn:sha1:9df5620f5bbd571a00c1a9aa8567f2efe1974880</id>
<content type='text'>
Uncaught C++ exceptions crash the guile process without providing
scheme code any opportunity to respond.

* except.i, xapian/error.scm: New files.
* xapian.i.in: Include except.i.
* Makefile.am (SOURCES): Add xapian/error.scm.
(xapian_wrap.cc xapian/wrap.scm &amp;): Depend on except.i.
</content>
</entry>
<entry>
<title>Makefile: Suffix libguilexapian with effective Guile version number.</title>
<updated>2022-06-20T11:49:18+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2022-06-20T11:44:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=9f5add6a0344fcef0611c06a7958031bead835b4'/>
<id>urn:sha1:9f5add6a0344fcef0611c06a7958031bead835b4</id>
<content type='text'>
We need to distinguish between libguilexapian built for different
versions of Guile.

* Makefile.am (lib_LTLIBRARIES): Replace libguilexapian.la with
libguilexapian-@GUILE_EFFECTIVE_VERSION@.la.
(libguilexapian_la_SOURCES): Rename to
libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_SOURCES.
(libguilexapian_la_CXXFLAGS): Rename to
libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_CXXFLAGS.
(libguilexapian_la_LDFLAGS): Rename to
libguilexapian_@GUILE_EFFECTIVE_VERSION@_la_LDFLAGS.
(xapian.i): Substitute @GUILE_EFFECTIVE_VERSION@.
(xapian/xapian.go): Depend on
libguilexapian-@GUILE_EFFECTIVE_VERSION@.la instead of
libguilexapian.la.
* xapian.i.in: Load libguilexapian-@GUILE_EFFECTIVE_VERSION@.la
instead of libguilexapian.la.
</content>
</entry>
<entry>
<title>Add SWIG wrappers for bytevector method variants.</title>
<updated>2021-09-06T19:53:59+00:00</updated>
<author>
<name>Bob131</name>
</author>
<published>2021-09-01T21:14:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=3e74ce5db678ab36178920a7d071b408e4ea2efe'/>
<id>urn:sha1:3e74ce5db678ab36178920a7d071b408e4ea2efe</id>
<content type='text'>
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 &lt;arunisaac@systemreboot.net&gt;
</content>
</entry>
<entry>
<title>Load libguilexapian with absolute path or through a search path.</title>
<updated>2020-02-26T07:00:57+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2020-02-23T13:17:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-xapian/commit/?id=db6f96c7c0ee74f0152aca95abf80040cc25c1b4'/>
<id>urn:sha1:db6f96c7c0ee74f0152aca95abf80040cc25c1b4</id>
<content type='text'>
* 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.
</content>
</entry>
</feed>
