#include <set>#include <algorithm>#include "ycp/YCPBuiltinList.h"#include "ycp/YCPList.h"#include "ycp/YCPMap.h"#include "ycp/YCPSymbol.h"#include "ycp/YCPString.h"#include "ycp/YCPBoolean.h"#include "ycp/YCPInteger.h"#include "ycp/YCPVoid.h"#include "ycp/YCPCode.h"#include "ycp/YCPCodeCompare.h"#include "ycp/YCPTerm.h"#include "ycp/StaticDeclaration.h"#include "ycp/y2log.h"Functions | |
| static YCPValue | l_find (const YCPSymbol &symbol, const YCPList &list, const YCPCode &expr) |
| static YCPValue | l_prepend (const YCPList &list, const YCPValue &value) |
| static YCPValue | l_contains (const YCPList &list, const YCPValue &value) |
| static YCPValue | l_setcontains (const YCPList &list, const YCPValue &value) |
| static YCPValue | l_unionlist (const YCPList &list1, const YCPList &list2) |
| static YCPValue | l_mergelist (const YCPList &list1, const YCPList &list2) |
| static YCPValue | l_filter (const YCPSymbol &symbol, const YCPList &list, const YCPCode &expr) |
| static YCPValue | l_maplist (const YCPSymbol &symbol, const YCPList &list, const YCPCode &expr) |
| static YCPValue | l_listmap (const YCPSymbol &symbol, const YCPList &list, const YCPCode &expr) |
| static YCPValue | l_flatten (const YCPList &list) |
| static YCPValue | l_toset (const YCPList &list) |
| static YCPValue | l_sortlist (const YCPList &list) |
| static YCPValue | l_sort (const YCPValue &sym1, const YCPValue &sym2, const YCPList &list, const YCPCode &order) |
| static YCPValue | l_lsortlist (const YCPList &list) |
| static YCPValue | l_splitstring (const YCPString &s, const YCPString &c) |
| static YCPValue | l_changelist (YCPList &list, const YCPValue &value) |
| static YCPValue | l_add (const YCPList &list, const YCPValue &value) |
| static YCPValue | l_size (const YCPValue &list) |
| static YCPValue | l_remove (const YCPList &list, const YCPInteger &i) |
| static YCPValue | l_select (const YCPValue &list, const YCPValue &i, const YCPValue &def) |
| static YCPValue | l_foreach (const YCPValue &sym, const YCPList &list, const YCPCode &expr) |
| static YCPValue | l_tolist (const YCPValue &v) |
Variables | |
| StaticDeclaration | static_declarations |
add Create a new list with a new element
| list | LIST | |
| any | VAR |
LIST but has the value VAR appended as additional element.
change Changes a list. Deprecated, use LIST[size(LIST)] = value.
| list | LIST | |
| any | value |
contains Checks if a list contains an element
| list | LIST List | |
| any | ELEMENT Element |
ELEMENT is contained in a list LIST.contains ([1, 2, 5], 2) -> true
| static YCPValue l_filter | ( | const YCPSymbol & | symbol, | |
| const YCPList & | list, | |||
| const YCPCode & | expr | |||
| ) | [static] |
filter Filters a List
| any | VAR Variable | |
| list | LIST List to be filtered | |
| block<boolean> | EXPR Block |
LIST the expression expr is executed in a new block, where the variable VAR is assigned to that value. If the expression evaluates to true under this circumstances, the value is appended to the result list.| static YCPValue l_find | ( | const YCPSymbol & | symbol, | |
| const YCPList & | list, | |||
| const YCPCode & | expr | |||
| ) | [static] |
find Searches for the first occurence of a certain element in a list
| any | VAR | |
| list | LIST | |
| block | EXPR |
EXPR to each element in the list and returns the first element the makes the expression evaluate to true, if VAR is bound to that element.
flatten Flattens List
| list<list> | LIST |
LIST and creates a single list that is the concatenation of those lists in LIST.flatten ([ [1, 2], [3, 4] ]) -> [1, 2, 3, 4] flatten ([ [1, 2], [6, 7], [3, 4] ]) -> [1, 2, 6, 7, 3, 4]
| static YCPValue l_foreach | ( | const YCPValue & | sym, | |
| const YCPList & | list, | |||
| const YCPCode & | expr | |||
| ) | [static] |
foreach Processes the content of a list
| any | VAR | |
| list | LIST | |
| block | EXPR |
LIST the expression EXPR is executed in a new context, where the variable VAR is assigned to that value. The return value of the last execution of EXPR is the value of the foreach construct.
| static YCPValue l_listmap | ( | const YCPSymbol & | symbol, | |
| const YCPList & | list, | |||
| const YCPCode & | expr | |||
| ) | [static] |
listmap Maps an operation onto all elements of a list and thus creates a map.
| any | VAR | |
| list | LIST | |
| block | EXPR |
VAR of the list LIST in the expression EXPR is evaluated in a new block. The result is the map of those evaluations.The result of each evaluation must be a map with a single entry which will be added to the result map.
listmap (integer k, [1,2,3], { return $[k:"xy"]; }) -> $[1:"xy", 2:"xy"] listmap (integer k, [1,2,3], { integer a = k+10; any b = sformat ("x%1", k); return $[a:b]; }) -> $[11:"x1", 12:"x2", 13:"x3"]
lsort Sort A List respecting locale
| list | LIST |
| static YCPValue l_maplist | ( | const YCPSymbol & | symbol, | |
| const YCPList & | list, | |||
| const YCPCode & | expr | |||
| ) | [static] |
maplist Maps an operation onto all elements of a list and thus creates a new list.
| any | VAR | |
| list<any> | LIST | |
| block | EXPR |
LIST the expression EXPR is evaluated in a new block, where the variable VAR is assigned to that value. The result is the list of those evaluations.maplist (integer v, [1, 2, 3, 5], { return (v + 1); }) -> [2, 3, 4, 6]
merge Merges two lists into one
| list | LIST1 First List | |
| list | LIST2 Second List |
l1 are prior to elements from l2.
prepend Prepends a list with a new element
| list | LIST List | |
| any | ELEMENT Element to prepend |
LIST but has the value ELEMENT prepended as additional element.| static YCPValue l_remove | ( | const YCPList & | list, | |
| const YCPInteger & | i | |||
| ) | [static] |
remove Removes element from a list
| list | LIST | |
| integer | e element index |
i'th value from a list. The first value has the index 0. The call remove ([1,2,3], 1) thus returns [1,3].| static YCPValue l_select | ( | const YCPValue & | list, | |
| const YCPValue & | i, | |||
| const YCPValue & | def | |||
| ) | [static] |
select Selects a list element (deprecated, use LIST[INDEX]:DEFAULT)
| list | LIST | |
| integer | INDEX | |
| any | DEFAULT |
INDEX'th value of a list. The first value has the index 0. The call select([1,2,3], 1) thus returns 2. Returns DEFAULT if the index is invalid or if the found entry has a different type than the default value. Functionality replaced by syntax: list numbers = [1, 2, 3, 4]; numbers[2]:nil -> 3 numbers[8]:5 -> 5select ([1, 2], 22, 0) -> 0 select ([1, "two"], 0, "no") -> "no"
setcontains Checks if a sorted list contains an element
| list | LIST List | |
| any | ELEMENT Element |
ELEMENT is contained in a list LIST, but assumes that LIST is sorted. If LIST is not sorted, the result is undefined.
size Returns size of list
| list | LIST |
LISTsize(["A", 1, true, "3", false]) -> 5
| static YCPValue l_sort | ( | const YCPValue & | sym1, | |
| const YCPValue & | sym2, | |||
| const YCPList & | list, | |||
| const YCPCode & | order | |||
| ) | [static] |
sort sort_2 Sort list using an expression
| any | x | |
| any | y | |
| list | LIST | |
| block | EXPR |
LIST. You have to specify an order on the list elements by naming formal variables x and y and specify an expression EXPR that evaluates to a boolean value depending on x and y. Return true if x>y to sort the list ascending.The comparison must be an irreflexive one, that is ">" instead of ">=".
It is because we no longer use bubblesort (yuck) but std::sort which requires a <ulink url="href="http://www.sgi.com/tech/stl/StrictWeakOrdering.html">strict weak ordering</ulink>.
sort (integer x, integer y, [ 3,6,2,8 ], ``(x < y)) -> [ 2, 3, 6, 8 ] sort (string x, string y, [ "A","C","B" ], ``(x > y)) -> ["C", "B", "A"]
sort sort_1 Sorts a List according to the YCP builtin predicate
| list | LIST |
sort ([2, 1, true, 1]) -> [true, 1, 1, 2]
splitstring Split a string by delimiter
| string | STR | |
| string | DELIM |
STR into sub-strings at delimiter chars DELIM. the resulting pieces do not contain DELIM
If STR starts with DELIM, the first string in the result list is empty If STR ends with DELIM, the last string in the result list is empty. If STR does not contain DELIM, the result is a singleton list with STR.
tolist Converts a value to a list (deprecated, use (list)VAR).
| any | VAR |
any l_1 = [1, 2, 3]; list <integer> l_2 = (list<integer>) l_1;
toset Sorts list and removes duplicates
| list | LIST |
union Unions of lists
| list | LIST1 First List | |
| list | LIST2 Second List |
l1 are prior to elements from l2.WARNING: quadratic complexity so far
1.5.3