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

Reply via email to