Hello!

SyncEvolution does not make use of regular expressions because it wants
to avoid a dependency on libraries which are not common enough to be
relied upon on all target platforms. That rules out Qt RegEx.

It also avoids libraries whose ABI varies too often, because it would
complicate delivering libraries via syncevolution.org. That has ruled
out anything from Boost which is more than a set of header files, like
boost::regex (libboost_regex.so.1.42.0 in Debian Stable, still in
Testing, but bound to be replaced by libboost_regex.so.1.46.0).

Another aspect is C++ support for std::string and the desire to do
search/replace. Otherwise POSIX regex support in GNU libc would be an
option.

I've just come across another alternative: boost::Xpressive.
http://www.boost.org/doc/libs/1_47_0/doc/html/xpressive/user_s_guide.html#boost_xpressive.user_s_guide.introduction

This is old enough (introduced in Boost 1.34.0) to not limit compilation
on older Linux distros and it is header-only.

It supports regular expression syntax, parsed at runtime. It also touts
its own C++ "domain language" for statically compiling regular
expressions as an alternative.

I am less certain about the later. While the approach looks neat, it is
also not going to be familiar for many developers, which makes the code
less approachable.

For example:
   sregex re = '$' >> +_d >> '.' >> _d >> _d;

That's the same as:
   sregex re = sregex::compile("$\\d\\.\d\d");

Any thoughts about using Boost Xpressive in SyncEvolution from other
developers? Any alternatives?

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.


_______________________________________________
SyncEvolution mailing list
[email protected]
http://lists.syncevolution.org/listinfo/syncevolution

Reply via email to