ACC SHELL

Path : /usr/share/YaST2/modules/
File Upload :
Current File : //usr/share/YaST2/modules/Integer.ycp

/**
 * File:	modules/Integer.ycp
 * Package:	yast2
 * Summary:	Integer routines
 * Authors:	Arvin Schnell <aschnell@suse.de>
 *
 * $Id: Integer.ycp 45945 2008-04-01 19:41:01Z aschnell $
 */

{
    module "Integer";
    textdomain "base";


    /**
     * Generate a list<integer> with the integers from 0 to stop - 1.
     */
    global list<integer> Range(integer stop)
    {
	list<integer> ret = [];
	integer i = 0;
	while (i < stop)
	{
	    ret = add(ret, i);
	    i = i + 1;
	}
	return ret;
    }


    /**
     * Generate a list<integer> with the integers from start to stop - 1.
     */
    global list<integer> RangeFrom(integer start, integer stop)
    {
	list<integer> ret = [];
	integer i = start;
	while (i < stop)
	{
	    ret = add(ret, i);
	    i = i + 1;
	}
	return ret;
    }


    /**
     * Checks whether i is a power of two. That is 1, 2, 4, 8, ... .
     */
    global boolean IsPowerOfTwo(integer i)
    {
	return i > 0 && (i & (i - 1)) == 0;
    }


    /**
     * Calculates the sum of values.
     */
    global integer Sum(list<integer> values)
    {
	return list::reduce(integer x, integer y, 0, values, { return x + y; });
    }


    /**
     * Returns the smallest integer in values.
     *
     * Behaviour is undefined for empty values.
     */
    global integer Min(list<integer> values)
    {
	return list::reduce(integer x, integer y, values, { return x < y ? x : y; });
    }


    /**
     * Returns the highest integer in values.
     *
     * Behaviour is undefined for empty values.
     */
    global integer Max(list<integer> values)
    {
	return list::reduce(integer x, integer y, values, { return x > y ? x : y; });
    }


    /**
     * Clamps the integer i.
     */
    global integer Clamp(integer i, integer min, integer max)
    {
	if (i < min) return min;
	if (i > max) return max;
	return i;
    }
}

ACC SHELL 2018