Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=6e66eabea4be982cffe92aa021a96d946688af01
commit 6e66eabea4be982cffe92aa021a96d946688af01 Author: Michel Hermier <[email protected]> Date: Mon Sep 29 08:45:18 2014 +0200 libpacman: Move FStringList implementation to header (in prevision of future change. diff --git a/lib/libpacman/util/fstringlist.cpp b/lib/libpacman/util/fstringlist.cpp index 89af215..70e2966 100644 --- a/lib/libpacman/util/fstringlist.cpp +++ b/lib/libpacman/util/fstringlist.cpp @@ -125,95 +125,4 @@ int f_stringlist_clear(FStringList *self) return 0; } -FStringList::FStringList() -{ } - -FStringList::FStringList(const FStringList &o) - : FStringList() -{ - operator = (o); -} - -FStringList::FStringList(FStringList &&o) - : FList(std::move(o)) -{ } - -FStringList &FStringList::operator = (const FStringList &o) -{ - for(auto lp = o.begin(), end = o.end(); lp != end; ++lp) { - f_stringlist_add(this, *lp); - } - - return *this; -} - -FStringList &FStringList::operator = (FStringList &&o) -{ - swap(o); - return *this; -} - -FStringList &FStringList::add_nocopy(char *s) -{ - FList::add(s); - return *this; -} - -FStringList &FStringList::add(const char *s) -{ - return add_nocopy(f_strdup(s)); -} - -FStringList &FStringList::add(const FStringList &o) -{ - for(auto lp = o.begin(), end = o.end(); lp != end; ++lp) { - add((const char *)*lp); - } - return *this; -} - -FStringList &FStringList::addf(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vaddf(fmt, ap); - va_end(ap); - return *this; -} - -FStringList &FStringList::vaddf(const char *fmt, va_list ap) -{ - char *dest; - - vasprintf(&dest, fmt, ap); - return add_nocopy(dest); -} - -bool FStringList::contains(const char *s) const -{ - return find(s) != end(); -} - -FStringList::iterator FStringList::find(const char *s) -{ - return find_if( - [&] (const char *o) -> bool - { return f_streq(o, s); }); -} - -FStringList::const_iterator FStringList::find(const char *s) const -{ - return find_if( - [&] (const char *o) -> bool - { return f_streq(o, s); }); -} - -FStringList::size_type FStringList::remove(const char *s) -{ - return remove_if( - [&] (const char *v) -> bool - { return strcmp(v, s) == 0; }); -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h index 5936575..b6cb7c5 100644 --- a/lib/libpacman/util/fstringlist.h +++ b/lib/libpacman/util/fstringlist.h @@ -58,25 +58,90 @@ public: typedef typename FList<const char *>::iterator iterator; typedef typename FList<const char *>::const_iterator const_iterator; - FStringList(); - FStringList(const FStringList &o); - FStringList(FStringList &&o); + FStringList() + { } - FStringList &operator = (const FStringList &o); - FStringList &operator = (FStringList &&o); + FStringList(const FStringList &o) + : FStringList() + { + operator = (o); + } + + FStringList(FStringList &&o) + : FList(std::move(o)) + { } + + FStringList &operator = (const FStringList &o) + { + for(auto lp = o.begin(), end = o.end(); lp != end; ++lp) { + f_stringlist_add(this, *lp); + } + return *this; + } + + FStringList &operator = (FStringList &&o) + { + swap(o); + return *this; + } - FStringList &add_nocopy(char *s); - FStringList &add(const char *s); - FStringList &add(const FStringList &o); - FStringList &addf(const char *fmt, ...); - FStringList &vaddf(const char *fmt, va_list ap); + FStringList &add_nocopy(char *s) + { + FList::add(s); + return *this; + } + + FStringList &add(const char *s) + { + return add_nocopy(f_strdup(s)); + } + + FStringList &add(const FStringList &o) + { + for(auto lp = o.begin(), end = o.end(); lp != end; ++lp) { + add((const char *)*lp); + } + return *this; + } + + FStringList &addf(const char *fmt, ...) + { + va_list ap; + + va_start(ap, fmt); + vaddf(fmt, ap); + va_end(ap); + return *this; + } + + FStringList &vaddf(const char *fmt, va_list ap) + { + char *dest; + + vasprintf(&dest, fmt, ap); + return add_nocopy(dest); + } /* Element access */ - bool contains(const char *s) const; - iterator find(const char *s); - const_iterator find(const char *s) const; + bool contains(const char *s) const + { + return find(s) != end(); + } - size_type remove(const char *s); + iterator find(const char *s) + { + return find_if([&] (const char *o) -> bool { return f_streq(o, s); }); + } + + const_iterator find(const char *s) const + { + return find_if([&] (const char *o) -> bool { return f_streq(o, s); }); + } + + size_type remove(const char *s) + { + return remove_if([&] (const char *o) -> bool { return f_streq(o, s); }); + } template <class UnaryPredicate> size_type remove_if(UnaryPredicate pred) _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
