Hey On Tue, Oct 18, 2011 at 4:45 PM, Patrick Ohly <[email protected]> wrote: > 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?
What about pcre? Its fairly low level and used by quite a few OS features (at least in Fedora) and the configure for syncevolution already explicitly checks for it so it looks like syncevolution already uses it somewhere. Peter _______________________________________________ SyncEvolution mailing list [email protected] http://lists.syncevolution.org/listinfo/syncevolution
