Author: aschnell
Date: Sat Dec 20 19:49:36 2008
New Revision: 54314
URL: http://svn.opensuse.org/viewcvs/yast?rev=54314&view=rev
Log:
- added isempty builtin for string, list and map
Modified:
trunk/core/libycp/src/YCPBuiltinList.cc
trunk/core/libycp/src/YCPBuiltinMap.cc
trunk/core/libycp/src/YCPBuiltinString.cc
trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.err
trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.out
trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.ycp
trunk/core/libycp/testsuite/tests/builtin/Builtin-Map.ycp
trunk/core/libycp/testsuite/tests/builtin/Builtin-String.err
trunk/core/libycp/testsuite/tests/builtin/Builtin-String.out
trunk/core/libycp/testsuite/tests/builtin/Builtin-String.ycp
trunk/core/package/yast2-core.changes
Modified: trunk/core/libycp/src/YCPBuiltinList.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/src/YCPBuiltinList.cc?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/src/YCPBuiltinList.cc (original)
+++ trunk/core/libycp/src/YCPBuiltinList.cc Sat Dec 20 19:49:36 2008
@@ -914,6 +914,27 @@
}
+static YCPValue
+l_isempty(const YCPList& l)
+{
+ /**
+ * @builtin isempty
+ * @id isempty-list
+ * @short Returns whether the list <tt>l</tt> is empty.
+ * @param list l List
+ * @return boolean Emptiness of list <tt>l</tt>
+ *
+ * @description
+ * Notice that the list <tt>l</tt> must not be nil.
+ *
+ * @usage isempty([]) -> true
+ * @usage isempty([19, 29]) -> false
+ */
+
+ return YCPBoolean(l->isEmpty());
+}
+
+
// parameter is YCPValue because we accept 'nil'
static YCPValue
l_size (const YCPValue &list)
@@ -1352,6 +1373,7 @@
{ "add", "list <flex> (const list <flex>, const flex)", (void *)l_add, DECL_FLEX },
{ "+", "list <flex> (const list <flex>, const flex)", (void *)l_add, DECL_FLEX },
{ "+", "list <any> (const list <any>, any)", (void *)l_add },
+ { "isempty", "boolean (const list <any>)", (void *)l_isempty },
{ "size", "integer (const list <any>)", (void *)l_size, DECL_NIL },
{ "remove", "list <flex> (const list <flex>, const integer)", (void *)l_remove, DECL_FLEX },
{ "select", "flex (const list <flex>, integer, flex)", (void *)l_select, DECL_NIL|DECL_FLEX },
Modified: trunk/core/libycp/src/YCPBuiltinMap.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/src/YCPBuiltinMap.cc?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/src/YCPBuiltinMap.cc (original)
+++ trunk/core/libycp/src/YCPBuiltinMap.cc Sat Dec 20 19:49:36 2008
@@ -361,6 +361,27 @@
}
+static YCPValue
+m_isempty(const YCPMap& m)
+{
+ /**
+ * @builtin isempty
+ * @id isempty-map
+ * @short Returns whether the map <tt>m</tt> is empty.
+ * @param map m Map
+ * @return boolean Emptiness of map <tt>m</tt>
+ *
+ * @description
+ * Notice that the map <tt>m</tt> must not be nil.
+ *
+ * @usage isempty($[]) -> true
+ * @usage isempty($[ `host : "pandora" ]) -> false
+ */
+
+ return YCPBoolean(m->isEmpty());
+}
+
+
// parameter is YCPValue because we accept 'nil'
static YCPValue
m_size (const YCPValue &map)
@@ -547,6 +568,7 @@
{ "+", "map (const map , const map )", (void *)m_unionmap },
{ "add", "map (const map , const flex1, const flex2)", (void *)m_addmap, DECL_FLEX },
{ "change", "map (const map , const flex1, const flex2)", (void *)m_changemap,DECL_FLEX|DECL_DEPRECATED },
+ { "isempty", "boolean (const map )", (void *)m_isempty },
{ "size", "integer (const map )", (void *)m_size, DECL_NIL },
{ "foreach","flex1 (variable <flex2>, variable <flex3>, const map , const block <flex1>)", (void *)m_foreach, DECL_LOOP|DECL_SYMBOL|DECL_FLEX },
{ "tomap", "map (const any)", (void *)m_tomap, DECL_FLEX },
Modified: trunk/core/libycp/src/YCPBuiltinString.cc
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/src/YCPBuiltinString.cc?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/src/YCPBuiltinString.cc (original)
+++ trunk/core/libycp/src/YCPBuiltinString.cc Sat Dec 20 19:49:36 2008
@@ -58,6 +58,27 @@
static YCPValue
+s_isempty(const YCPString& s)
+{
+ /**
+ * @builtin isempty
+ * @id isempty-string
+ * @short Returns whether the string <tt>s</tt> is empty.
+ * @param string s String
+ * @return boolean Emptiness of string <tt>s</tt>
+ *
+ * @description
+ * Notice that the string <tt>s</tt> must not be nil.
+ *
+ * @usage isempty("") -> true
+ * @usage isempty("test") -> false
+ */
+
+ return YCPBoolean(s->isEmpty());
+}
+
+
+static YCPValue
s_size (const YCPString &s)
{
/**
@@ -1488,6 +1509,7 @@
{ "tostring", "string (any)", (void *)s_tostring },
{ "tohexstring", "string (integer)", (void *)s_tohexstring1 },
{ "tohexstring", "string (integer, integer)", (void *)s_tohexstring2 },
+ { "isempty", "boolean (string)", (void *)s_isempty },
{ "size", "integer (string)", (void *)s_size },
{ "find", "integer (string, string)", (void *)s_find, DECL_DEPRECATED },
{ "search", "integer (string, string)", (void *)s_search },
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.err
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.err?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.err (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.err Sat Dec 20 19:49:36 2008
@@ -124,6 +124,23 @@
----------------------------------------------------------------------
Parsed:
----------------------------------------------------------------------
+"** isempty **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+isempty ([])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+isempty ([1, 2, 3])
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+isempty (nil)
+----------------------------------------------------------------------
+[Interpreter] tests/builtin/Builtin-List2.ycp:72 Argument (nil) to isempty(...) is nil
+Parsed:
+----------------------------------------------------------------------
"** size **"
----------------------------------------------------------------------
Parsed:
@@ -166,12 +183,12 @@
----------------------------------------------------------------------
"** change **"
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-List2.ycp:90 Warning: change(...) is deprecated, please fix
+[Parser] tests/builtin/Builtin-List2.ycp:97 Warning: change(...) is deprecated, please fix
Parsed:
----------------------------------------------------------------------
change ([1, 4], 8)
----------------------------------------------------------------------
-[libycp] tests/builtin/Builtin-List2.ycp:90 Change does not work as expected! The argument is not passed by reference.
+[libycp] tests/builtin/Builtin-List2.ycp:97 Change does not work as expected! The argument is not passed by reference.
Parsed:
----------------------------------------------------------------------
"** remove **"
@@ -184,34 +201,34 @@
----------------------------------------------------------------------
remove ([], 0)
----------------------------------------------------------------------
-[Interpreter] tests/builtin/Builtin-List2.ycp:96 Index 0 for remove () out of range
+[Interpreter] tests/builtin/Builtin-List2.ycp:103 Index 0 for remove () out of range
Parsed:
----------------------------------------------------------------------
"** select **"
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-List2.ycp:101 Warning: 'select ()' is deprecated
+[Parser] tests/builtin/Builtin-List2.ycp:108 Warning: 'select ()' is deprecated
Parsed:
----------------------------------------------------------------------
[1, 2][-1]:42
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-List2.ycp:102 Warning: 'select ()' is deprecated
+[Parser] tests/builtin/Builtin-List2.ycp:109 Warning: 'select ()' is deprecated
Parsed:
----------------------------------------------------------------------
[1, 2][0]:42
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-List2.ycp:103 Warning: 'select ()' is deprecated
+[Parser] tests/builtin/Builtin-List2.ycp:110 Warning: 'select ()' is deprecated
Parsed:
----------------------------------------------------------------------
[1, 2][1]:42
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-List2.ycp:104 Warning: 'select ()' is deprecated
+[Parser] tests/builtin/Builtin-List2.ycp:111 Warning: 'select ()' is deprecated
Parsed:
----------------------------------------------------------------------
[1, 2][3]:42
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-List2.ycp:105 Warning: 'select ()' is deprecated
+[Parser] tests/builtin/Builtin-List2.ycp:112 Warning: 'select ()' is deprecated
Parsed:
----------------------------------------------------------------------
/* any -> string */[1, "two"][0]:"wrong type"
----------------------------------------------------------------------
-[Interpreter] tests/builtin/Builtin-List2.ycp:96 Can't convert value '1' to type 'string'
+[Interpreter] tests/builtin/Builtin-List2.ycp:103 Can't convert value '1' to type 'string'
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.out
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.out?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.out (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.out Sat Dec 20 19:49:36 2008
@@ -27,6 +27,10 @@
([true, 1, 1, 2])
([8, 6, 3, 2])
([8, 6, 3, 2])
+("** isempty **")
+(true)
+(false)
+(nil)
("** size **")
(0)
(3)
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.ycp?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.ycp (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-List2.ycp Sat Dec 20 19:49:36 2008
@@ -65,6 +65,13 @@
(sort (`x, `y, [ 3, 6, 2, 8 ], ``(x>y)))
+("** isempty **")
+
+(isempty ([]))
+(isempty ([1, 2, 3]))
+(isempty ((list) nil))
+
+
("** size **")
(size ([]))
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-Map.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-Map.ycp?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-Map.ycp (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-Map.ycp Sat Dec 20 19:49:36 2008
@@ -75,6 +75,13 @@
(add ($[`a: 17, `b: 11], `b, nil))
+("** isempty **")
+
+(isempty ($[]))
+(isempty ($[1:"a", 2:"b"]))
+(isempty ((map) nil))
+
+
("** size **")
(size ($[]))
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-String.err
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-String.err?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-String.err (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-String.err Sat Dec 20 19:49:36 2008
@@ -1,5 +1,22 @@
Parsed:
----------------------------------------------------------------------
+"** isempty **"
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+isempty ("")
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+isempty ("linux")
+----------------------------------------------------------------------
+Parsed:
+----------------------------------------------------------------------
+isempty (nil)
+----------------------------------------------------------------------
+[Interpreter] tests/builtin/Builtin-String.ycp:15 Argument (nil) to isempty(...) is nil
+Parsed:
+----------------------------------------------------------------------
"** size **"
----------------------------------------------------------------------
Parsed:
@@ -12,6 +29,11 @@
----------------------------------------------------------------------
Parsed:
----------------------------------------------------------------------
+size (nil)
+----------------------------------------------------------------------
+[Interpreter] tests/builtin/Builtin-String.ycp:22 Argument (nil) to size(...) is nil
+Parsed:
+----------------------------------------------------------------------
"** plus **"
----------------------------------------------------------------------
Parsed:
@@ -94,7 +116,7 @@
----------------------------------------------------------------------
substring ("some text", 42)
----------------------------------------------------------------------
-[Interpreter] tests/builtin/Builtin-String.ycp:48 Substring index out of range
+[Interpreter] tests/builtin/Builtin-String.ycp:56 Substring index out of range
Parsed:
----------------------------------------------------------------------
substring ("some text", 5, 2)
@@ -103,7 +125,7 @@
----------------------------------------------------------------------
substring ("some text", 42, 2)
----------------------------------------------------------------------
-[Interpreter] tests/builtin/Builtin-String.ycp:51 Substring index out of range
+[Interpreter] tests/builtin/Builtin-String.ycp:59 Substring index out of range
Parsed:
----------------------------------------------------------------------
"** lsubstring **"
@@ -116,7 +138,7 @@
----------------------------------------------------------------------
lsubstring ("some text", 42)
----------------------------------------------------------------------
-[Interpreter] tests/builtin/Builtin-String.ycp:57 Substring index out of range
+[Interpreter] tests/builtin/Builtin-String.ycp:65 Substring index out of range
Parsed:
----------------------------------------------------------------------
lsubstring ("ÄÅ¡ÄÅžýáÃ", 5)
@@ -129,7 +151,7 @@
----------------------------------------------------------------------
lsubstring ("some text", 42, 2)
----------------------------------------------------------------------
-[Interpreter] tests/builtin/Builtin-String.ycp:61 Substring index out of range
+[Interpreter] tests/builtin/Builtin-String.ycp:69 Substring index out of range
Parsed:
----------------------------------------------------------------------
lsubstring ("ÄÅ¡ÄÅžýáÃ", 5, 2)
@@ -146,9 +168,9 @@
----------------------------------------------------------------------
mergestring (["abc", "dev", "ghi", ""], "/")
----------------------------------------------------------------------
-[Parser] tests/builtin/Builtin-String.ycp:69 No match for 'mergestring : <unspec> (list, string)'
-[Parser] tests/builtin/Builtin-String.ycp:69 Please fix parameter types to match one of:
-[Parser] tests/builtin/Builtin-String.ycp:69 'mergestring : string (const list <string>, string)'
-[Parser] tests/builtin/Builtin-String.ycp:69 Wrong parameters in call to mergestring(...)
-[Parser] tests/builtin/Builtin-String.ycp:69 Expected '(const list <string>, string)', seen '(list, string)'.
+[Parser] tests/builtin/Builtin-String.ycp:77 No match for 'mergestring : <unspec> (list, string)'
+[Parser] tests/builtin/Builtin-String.ycp:77 Please fix parameter types to match one of:
+[Parser] tests/builtin/Builtin-String.ycp:77 'mergestring : string (const list <string>, string)'
+[Parser] tests/builtin/Builtin-String.ycp:77 Wrong parameters in call to mergestring(...)
+[Parser] tests/builtin/Builtin-String.ycp:77 Expected '(const list <string>, string)', seen '(list, string)'.
runycp: parser error
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-String.out
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-String.out?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-String.out (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-String.out Sat Dec 20 19:49:36 2008
@@ -1,6 +1,11 @@
+("** isempty **")
+(true)
+(false)
+(nil)
("** size **")
(0)
(5)
+(nil)
("** plus **")
("YaST2")
("YaST2")
Modified: trunk/core/libycp/testsuite/tests/builtin/Builtin-String.ycp
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/libycp/testsuite/tests/builtin/Builtin-String.ycp?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/libycp/testsuite/tests/builtin/Builtin-String.ycp (original)
+++ trunk/core/libycp/testsuite/tests/builtin/Builtin-String.ycp Sat Dec 20 19:49:36 2008
@@ -8,10 +8,18 @@
# ---------------------------------------------------------
+("** isempty **")
+
+(isempty (""))
+(isempty ("linux"))
+(isempty ((string) nil))
+
+
("** size **")
(size (""))
(size ("linux"))
+(size ((string) nil))
("** plus **")
Modified: trunk/core/package/yast2-core.changes
URL: http://svn.opensuse.org/viewcvs/yast/trunk/core/package/yast2-core.changes?rev=54314&r1=54313&r2=54314&view=diff
==============================================================================
--- trunk/core/package/yast2-core.changes (original)
+++ trunk/core/package/yast2-core.changes Sat Dec 20 19:49:36 2008
@@ -2,6 +2,7 @@
Sat Dec 20 10:45:55 CET 2008 - aschnell@suse.de
- added tosymbol builtin (bnc #192389)
+- added isempty builtin for string, list and map
- 2.18.0
-------------------------------------------------------------------
--
To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org
For additional commands, e-mail: yast-commit+help@opensuse.org