Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e32f81fa08f657e74e8fd01f27c590b3afe93585
commit e32f81fa08f657e74e8fd01f27c590b3afe93585 Author: Michel Hermier <[email protected]> Date: Thu Sep 4 08:11:25 2014 +0200 libpacman: Add a basic FStringList class with copy and move initialisers. diff --git a/lib/libpacman/util/fstringlist.cpp b/lib/libpacman/util/fstringlist.cpp index e2a2384..d5f4798 100644 --- a/lib/libpacman/util/fstringlist.cpp +++ b/lib/libpacman/util/fstringlist.cpp @@ -117,4 +117,32 @@ int f_stringlist_clear(FStringList *self) return f_ptrlist_clear(self, &f_stringlistitem_destroyvisitor); } +FStringList::FStringList() +{ } + +FStringList::FStringList(const FStringList &o) + : FStringList() +{ + operator = (o); +} + +FStringList::FStringList(FStringList &&o) + : FPtrList(std::move(o)) +{ } + +FStringList &FStringList::operator = (const FStringList &o) +{ + for(auto lp = o.begin(), end = o.end(); lp != end; lp = lp->next()) { + f_stringlist_add(this, f_stringlistitem_to_str(lp)); + } + + return *this; +} + +FStringList &FStringList::operator = (FStringList &&o) +{ + swap(o); + return *this; +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h index 90aadeb..176c90f 100644 --- a/lib/libpacman/util/fstringlist.h +++ b/lib/libpacman/util/fstringlist.h @@ -24,25 +24,15 @@ #include "util/fptrlist.h" #include "fstring.h" -#ifdef __cplusplus -extern "C" { -#endif - -#if 1 -typedef FPtrList FStringList; -typedef FPtrListIterator FStringListIterator; -#else +#ifndef __cplusplus typedef struct FStringList FStringList; -typedef struct FStringListIterator FStringListIterator; +typedef FPtrListIterator FStringListIterator; -struct FStringList { - FList as_FList; -}; +#else +typedef class FStringList FStringList; +typedef FPtrListIterator FStringListIterator; -struct FStringListIterator { - FListItem as_FListItem; - char to_str[0]; -}; +extern "C" { #endif int _pacman_list_is_strin(const char *needle, FStringList *haystack); @@ -59,6 +49,19 @@ int f_stringlist_clear(FStringList *self); #ifdef __cplusplus } + +class FStringList + : public FPtrList +{ +public: + FStringList(); + FStringList(const FStringList &o); + FStringList(FStringList &&o); + + FStringList &operator = (const FStringList &o); + FStringList &operator = (FStringList &&o); +}; + #endif #endif /* F_STRINGLIST_H */ _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
