1cdef public enum Truth:
2   FALSE=0
3   TRUE=1
4
5def enum_boolctx(Truth arg):
6    """
7    >>> enum_boolctx(FALSE)
8    False
9    >>> enum_boolctx(TRUE)
10    True
11    """
12    if arg:
13        return True
14    else:
15        return False
16
17cdef extern from *:
18    enum: FALSE_VALUE "(0)"
19    enum: TRUE_VALUE "(1)"
20
21def extern_enum_false():
22    """
23    >>> extern_enum_false()
24    """
25    if FALSE_VALUE:
26        raise ValueError
27
28def extern_enum_true():
29    """
30    >>> extern_enum_true()
31    """
32    if not TRUE_VALUE:
33        raise ValueError
34
35def extern_enum_false_true():
36    """
37    >>> extern_enum_false_true()
38    """
39    if not TRUE_VALUE or FALSE_VALUE:
40        raise ValueError
41