File: cpp_exceptions_utility_code.pyx

package info (click to toggle)
cython 3.0.11%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 19,092 kB
  • sloc: python: 83,539; ansic: 18,831; cpp: 1,402; xml: 1,031; javascript: 511; makefile: 403; sh: 204; sed: 11
file content (33 lines) | stat: -rw-r--r-- 710 bytes parent folder | download
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
# mode: run
# tag: cpp, werror, no-cpp-locals
# ticket: 3065

# This is intentionally in a file on its own. The issue was that it failed to generate utility-code
# and so putting it with the other c++ exception checks wouldn't be a useful test

cdef extern from *:
    """
    #include <stdexcept>

    void cppf(int raiseCpp) {
        if (raiseCpp) {
            throw std::runtime_error("cpp");
        } else {
            PyErr_SetString(PyExc_RuntimeError, "py");
        }
    }
    """
    void cppf(int) except+*


def callcppf(int raiseCpp):
    """
    >>> callcppf(0)
    py
    >>> callcppf(1)
    cpp
    """
    try:
        cppf(raiseCpp)
    except RuntimeError as e:
        print(e.args[0])