File: __init__.py

package info (click to toggle)
firefox-esr 68.10.0esr-1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 3,143,932 kB
  • sloc: cpp: 5,227,879; javascript: 4,315,531; ansic: 2,467,042; python: 794,975; java: 349,993; asm: 232,034; xml: 228,320; sh: 82,008; lisp: 41,202; makefile: 22,347; perl: 15,555; objc: 5,277; cs: 4,725; yacc: 1,778; ada: 1,681; pascal: 1,673; lex: 1,417; exp: 527; php: 436; ruby: 225; awk: 162; sed: 53; csh: 44
file content (59 lines) | stat: -rw-r--r-- 1,217 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""
Cranelift DSL classes.

This module defines the classes that are used to define Cranelift instructions
and other entities.
"""
from __future__ import absolute_import
import re


camel_re = re.compile('(^|_)([a-z])')


def camel_case(s):
    # type: (str) -> str
    """Convert the string s to CamelCase:
        >>> camel_case('x')
        'X'
        >>> camel_case('camel_case')
        'CamelCase'
    """
    return camel_re.sub(lambda m: m.group(2).upper(), s)


def is_power_of_two(x):
    # type: (int) -> bool
    """Check if `x` is a power of two:
        >>> is_power_of_two(0)
        False
        >>> is_power_of_two(1)
        True
        >>> is_power_of_two(2)
        True
        >>> is_power_of_two(3)
        False
    """
    return x > 0 and x & (x-1) == 0


def next_power_of_two(x):
    # type: (int) -> int
    """
    Compute the next power of two that is greater than `x`:
        >>> next_power_of_two(0)
        1
        >>> next_power_of_two(1)
        2
        >>> next_power_of_two(2)
        4
        >>> next_power_of_two(3)
        4
        >>> next_power_of_two(4)
        8
    """
    s = 1
    while x & (x + 1) != 0:
        x |= x >> s
        s *= 2
    return x + 1