Author: aschnell
Date: Thu May 5 17:26:20 2011
New Revision: 63914
URL: http://svn.opensuse.org/viewcvs/yast?rev=63914&view=rev
Log:
- backported multiset builtins needed by storage and iscsi
Added:
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPBuiltinMultiset.cc
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPBuiltinMultiset.h
branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.err
branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.out
branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.ycp
Modified:
branches/SuSE-Code-11-SP2-Branch/core/VERSION
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/Makefile.am
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YBuiltin.cc
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPList.cc
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/Makefile.am
branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPList.h
branches/SuSE-Code-11-SP2-Branch/core/package/yast2-core.changes
Modified: branches/SuSE-Code-11-SP2-Branch/core/VERSION
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/VERSION?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/VERSION (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/VERSION Thu May 5 17:26:20 2011
@@ -1 +1 @@
-2.17.36
+2.17.37
Modified: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/Makefile.am
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/Makefile.am?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/Makefile.am (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/Makefile.am Thu May 5 17:26:20 2011
@@ -46,6 +46,7 @@
YCPBuiltinString.cc YCPBuiltinTerm.cc \
YCPBuiltinVoid.cc YCPBuiltinMap.cc \
YCPBuiltinMisc.cc \
+ YCPBuiltinMultiset.cc \
YSymbolEntry.cc \
TypeStatics.cc \
y2string.cc \
Modified: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YBuiltin.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YBuiltin.cc?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YBuiltin.cc (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YBuiltin.cc Thu May 5 17:26:20 2011
@@ -50,6 +50,9 @@
#include "ycp/YCPBuiltinList.h"
static YCPBuiltinList builtin_list; // trigger constructor
+#include "ycp/YCPBuiltinMultiset.h"
+static YCPBuiltinMultiset builtin_multiset; // trigger constructor
+
#include "ycp/YCPBuiltinMap.h"
static YCPBuiltinMap builtin_map; // trigger constructor
Added: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPBuiltinMultiset.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPBuiltinMultiset.cc?rev=63914&view=auto
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPBuiltinMultiset.cc (added)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPBuiltinMultiset.cc Thu May 5 17:26:20 2011
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (C) SuSE Linux GmbH |
+\----------------------------------------------------------------------/
+
+ File: YCPBuiltinMultiset.cc
+ Summary: YCP Multiset Builtins
+
+ Authors: Arvin Schnell
+ Maintainer: Arvin Schnell
+
+/-*/
+
+#include <algorithm>
+
+#include "ycp/YCPBuiltinMultiset.h"
+#include "ycp/YCPList.h"
+#include "ycp/YCPBoolean.h"
+#include "ycp/YCPVoid.h"
+#include "ycp/YCPCode.h"
+#include "ycp/YCPCodeCompare.h"
+#include "ycp/StaticDeclaration.h"
+
+#include "ycp/y2log.h"
+
+extern StaticDeclaration static_declarations;
+
+
+static YCPValue
+ms_includes(const YCPList& a, const YCPList& b)
+{
+ // see http://www.sgi.com/tech/stl/includes.html
+
+ return YCPBoolean(includes(a->begin(), a->end(), b->begin(), b->end(), ycpless()));
+}
+
+
+static YCPValue
+ms_difference(const YCPList& a, const YCPList& b)
+{
+ // see http://www.sgi.com/tech/stl/set_difference.html
+
+ YCPList ret;
+ back_insert_iterator<YCPList> bii(ret);
+ set_difference(a->begin(), a->end(), b->begin(), b->end(), bii, ycpless());
+ return ret;
+}
+
+
+static YCPValue
+ms_symmetric_difference(const YCPList& a, const YCPList& b)
+{
+ // see http://www.sgi.com/tech/stl/set_symmetric_difference.html
+
+ YCPList ret;
+ back_insert_iterator<YCPList> bii(ret);
+ set_symmetric_difference(a->begin(), a->end(), b->begin(), b->end(), bii, ycpless());
+ return ret;
+}
+
+
+static YCPValue
+ms_intersection(const YCPList& a, const YCPList& b)
+{
+ // see http://www.sgi.com/tech/stl/set_intersection.html
+
+ YCPList ret;
+ back_insert_iterator<YCPList> bii(ret);
+ set_intersection(a->begin(), a->end(), b->begin(), b->end(), bii, ycpless());
+ return ret;
+}
+
+
+static YCPValue
+ms_union(const YCPList& a, const YCPList& b)
+{
+ // see http://www.sgi.com/tech/stl/set_union.html
+
+ YCPList ret;
+ back_insert_iterator<YCPList> bii(ret);
+ set_union(a->begin(), a->end(), b->begin(), b->end(), bii, ycpless());
+ return ret;
+}
+
+
+static YCPValue
+ms_merge(const YCPList& a, const YCPList& b)
+{
+ // see http://www.sgi.com/tech/stl/merge.html
+
+ YCPList ret;
+ back_insert_iterator<YCPList> bii(ret);
+ merge(a->begin(), a->end(), b->begin(), b->end(), bii, ycpless());
+ return ret;
+}
+
+
+YCPBuiltinMultiset::YCPBuiltinMultiset()
+{
+ // must be static, registerDeclarations saves a pointer to it!
+ static declaration_t declarations_ns[] = {
+ { "multiset", "", NULL, DECL_NAMESPACE },
+ { "includes", "boolean (const list <flex>, const list <flex>)", (void*) ms_includes, DECL_FLEX },
+ { "difference", "list <flex> (const list <flex>, const list <flex>)", (void*) ms_difference, DECL_FLEX },
+ { "symmetric_difference", "list <flex> (const list <flex>, const list <flex>)", (void*) ms_symmetric_difference, DECL_FLEX },
+ { "intersection", "list <flex> (const list <flex>, const list <flex>)", (void*) ms_intersection, DECL_FLEX },
+ { "union", "list <flex> (const list <flex>, const list <flex>)", (void*) ms_union, DECL_FLEX },
+ { "merge", "list <flex> (const list <flex>, const list <flex>)", (void*) ms_merge, DECL_FLEX },
+ { 0 }
+ };
+
+ static_declarations.registerDeclarations("YCPBuiltinMultiset", declarations_ns);
+}
Modified: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPList.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPList.cc?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPList.cc (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/YCPList.cc Thu May 5 17:26:20 2011
@@ -67,6 +67,13 @@
void
+YCPListRep::push_back(const YCPValue& value)
+{
+ elements.push_back(value);
+}
+
+
+void
YCPListRep::set (const int i, const YCPValue& value)
{
if (i < 0)
Modified: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/Makefile.am
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/Makefile.am?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/Makefile.am (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/Makefile.am Thu May 5 17:26:20 2011
@@ -24,6 +24,7 @@
YCPBuiltinMap.h YCPBuiltinMisc.h \
YCPBuiltinPath.h YCPBuiltinString.h \
YCPBuiltinTerm.h YCPBuiltinVoid.h \
+ YCPBuiltinMultiset.h \
StaticDeclaration.h \
YCode.h YCodePtr.h \
YCPCode.h \
Added: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPBuiltinMultiset.h
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPBuiltinMultiset.h?rev=63914&view=auto
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPBuiltinMultiset.h (added)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPBuiltinMultiset.h Thu May 5 17:26:20 2011
@@ -0,0 +1,34 @@
+/*---------------------------------------------------------------------\
+| |
+| __ __ ____ _____ ____ |
+| \ \ / /_ _/ ___|_ _|___ \ |
+| \ V / _` \___ \ | | __) | |
+| | | (_| |___) || | / __/ |
+| |_|\__,_|____/ |_| |_____| |
+| |
+| core system |
+| (C) SuSE Linux GmbH |
+\----------------------------------------------------------------------/
+
+ File: YCPBuiltinMultiset.h
+
+ Author: Arvin Schnell
+ Maintainer: Arvin Schnell
+
+/-*/
+
+
+#ifndef YCPBuiltinMultiset_h
+#define YCPBuiltinMultiset_h
+
+class YCPBuiltinMultiset
+{
+
+public:
+
+ YCPBuiltinMultiset();
+
+};
+
+
+#endif // YCPBuiltinMultiset_h
Modified: branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPList.h
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPList.h?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPList.h (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/src/include/ycp/YCPList.h Thu May 5 17:26:20 2011
@@ -48,6 +48,12 @@
YCPValueList elements;
protected:
+
+ typedef YCPValueList::iterator iterator;
+ typedef YCPValueList::const_iterator const_iterator;
+ typedef YCPValueList::value_type value_type;
+ typedef YCPValueList::const_reference const_reference;
+
friend class YCPList;
/**
@@ -84,6 +90,13 @@
void add(const YCPValue& value);
/**
+ * Appends a value to the list. Takes over the memory management
+ * of that value. Use @ref YCPElementRep, if you need it
+ * yourself.
+ */
+ void push_back(const YCPValue& value);
+
+ /**
* Sets a value in the list. Takes over the memory management
* of that value. Use @ref YCPElementRep, if you need it
* yourself.
@@ -269,6 +282,12 @@
{
DEF_COW_COMMON(List, Value);
public:
+
+ typedef YCPListRep::iterator iterator;
+ typedef YCPListRep::const_iterator const_iterator;
+ typedef YCPListRep::value_type value_type;
+ typedef YCPListRep::const_reference const_reference;
+
YCPList() : YCPValue(new YCPListRep()) {}
YCPList(bytecodeistream & str);
@@ -276,6 +295,7 @@
void reserve (int size) { ELEMENT->reserve (size); }
bool isEmpty() const { return CONST_ELEMENT->isEmpty (); }
void add(const YCPValue& value) { ELEMENT->add (value); }
+ void push_back(const YCPValue& value) { ELEMENT->push_back(value); }
void set(const int n, const YCPValue& value) { ELEMENT->set (n, value); }
void remove(const int n) { ELEMENT->remove (n); }
void swap(int x, int y) { ELEMENT->swap (x, y); }
Added: branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.err
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.err?rev=63914&view=auto
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.err (added)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.err Thu May 5 17:26:20 2011
@@ -0,0 +1,64 @@
+Parsed:
+----------------------------------------------------------------------
+"** includes **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::includes ([1, 2, 3, 4, 5], [2, 3, 4])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::includes ([1, 2, 3, 4, 5], [4, 5, 6])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+"** difference **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::difference ([1, 2, 3], [2, 3, 4])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::difference ([2, 3, 4], [1, 2, 3])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+"** symmetric_difference **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::symmetric_difference ([1, 2, 3], [2, 3, 4])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::symmetric_difference ([2, 3, 4], [1, 2, 3])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+"** intersection **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::intersection ([1, 2, 3], [2, 3, 4])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::intersection ([2, 3, 4], [1, 2, 3])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+"** union **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::union ([1, 3, 5], [2, 3, 4])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+"** merge **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+multiset::merge ([1, 3, 5], [2, 3, 4])
+----------------------------------------------------------------------
Added: branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.out
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.out?rev=63914&view=auto
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.out (added)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.out Thu May 5 17:26:20 2011
@@ -0,0 +1,16 @@
+("** includes **")
+(true)
+(false)
+("** difference **")
+([1])
+([4])
+("** symmetric_difference **")
+([1, 4])
+([1, 4])
+("** intersection **")
+([2, 3])
+([2, 3])
+("** union **")
+([1, 2, 3, 4, 5])
+("** merge **")
+([1, 2, 3, 3, 4, 5])
Added: branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.ycp
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.ycp?rev=63914&view=auto
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.ycp (added)
+++ branches/SuSE-Code-11-SP2-Branch/core/libycp/testsuite/tests/builtin/Builtin-Multiset.ycp Thu May 5 17:26:20 2011
@@ -0,0 +1,43 @@
+
+# ---------------------------------------------------------
+#
+# Filename: Builtin-Multiset.ycp
+#
+# Purpose: test cases for all multiset builtins
+#
+# ---------------------------------------------------------
+
+
+("** includes **")
+
+(multiset::includes ([1, 2, 3, 4, 5], [2, 3, 4]))
+(multiset::includes ([1, 2, 3, 4, 5], [4, 5, 6]))
+
+
+("** difference **")
+
+(multiset::difference ([1, 2, 3], [2, 3, 4]))
+(multiset::difference ([2, 3, 4], [1, 2, 3]))
+
+
+("** symmetric_difference **")
+
+(multiset::symmetric_difference ([1, 2, 3], [2, 3, 4]))
+(multiset::symmetric_difference ([2, 3, 4], [1, 2, 3]))
+
+
+("** intersection **")
+
+(multiset::intersection ([1, 2, 3], [2, 3, 4]))
+(multiset::intersection ([2, 3, 4], [1, 2, 3]))
+
+
+("** union **")
+
+(multiset::union ([1, 3, 5], [2, 3, 4]))
+
+
+("** merge **")
+
+(multiset::merge ([1, 3, 5], [2, 3, 4]))
+
Modified: branches/SuSE-Code-11-SP2-Branch/core/package/yast2-core.changes
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP2-Branch/core/package/yast2-core.changes?rev=63914&r1=63913&r2=63914&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP2-Branch/core/package/yast2-core.changes (original)
+++ branches/SuSE-Code-11-SP2-Branch/core/package/yast2-core.changes Thu May 5 17:26:20 2011
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Thu May 05 17:24:04 CEST 2011 - aschnell@suse.de
+
+- backported multiset builtins needed by storage and iscsi
+- 2.17.37
+
+-------------------------------------------------------------------
Thu Mar 31 11:20:29 CEST 2011 - aschnell@suse.de
- added sha256 and sha516 password encryption (fate #309705)
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org