File: PythonExceptions.cmake

package info (click to toggle)
robotraconteur 1.2.7-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 101,380 kB
  • sloc: cpp: 1,149,268; cs: 87,653; java: 58,127; python: 26,897; ansic: 356; sh: 152; makefile: 90; xml: 51
file content (61 lines) | stat: -rw-r--r-- 2,020 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
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
60
61
include(${CMAKE_SOURCE_DIR}/SWIG/RobotRaconteurSWIGErrorGen.cmake)

rr_swig_parse_errors(RR_ERRORS)

# set(RR_PYTHON_ERR_OVERRIDE
# "MessageErrorType_NullValue,NullReferenceException;MessageErrorType_InvalidOperation,InvalidOperationException;MessageErrorType_InvalidArgument,ArgumentException")
set(RR_PYTHON_ERR_DECL_M
    "
class @RR_ERROR_TYPE@(RobotRaconteurException):
    def __init__(self,message=\"\",subname=None,param_=None):
        super(@RR_ERROR_TYPE@,self).__init__(RobotRaconteurPython.@RR_ERROR_CODE@, @RR_ERROR_TYPE_STR@,message,subname,param_)
")

set(RR_PYTHON_ERR_DECL_M2
    "
class @RR_ERROR_TYPE@(RobotRaconteurException):
    def __init__(self,name,message,subname=None,param_=None):
        super(@RR_ERROR_TYPE@,self).__init__(RobotRaconteurPython.@RR_ERROR_CODE@, name,message,subname,param_)
")

rr_swig_replace_errors(
    "${RR_PYTHON_ERR_DECL_M}"
    "${RR_PYTHON_ERR_DECL_M2}"
    ""
    "${RR_ERRORS}"
    "${RR_PYTHON_ERR_OVERRIDE}"
    RR_ERRORS_DECL
    REMOVE_OVERRIDE)

set(RR_PYTHON_ERR_CASE_M
    "
        if (code==RobotRaconteurPython.@RR_ERROR_CODE@):
            return @RR_ERROR_TYPE@(errstr,subname,param2)
")

set(RR_PYTHON_ERR_CASE_M2
    "
        if (code==RobotRaconteurPython.@RR_ERROR_CODE@):
            return @RR_ERROR_TYPE@(name,errstr,subname,param2)
")

rr_swig_replace_errors("${RR_PYTHON_ERR_CASE_M}" "${RR_PYTHON_ERR_CASE_M2}" "" "${RR_ERRORS}"
                       "${RR_PYTHON_ERR_OVERRIDE}" RR_ERRORS_CASE)

set(RR_PYTHON_ERR_CATCH_M
    "
        if (isinstance(exception,@RR_ERROR_TYPE@)):
            return RobotRaconteurPython.@RR_ERROR_CODE@, @RR_ERROR_TYPE_STR@, exception.message, exception.errorsubname, exception.errorparam
")

rr_swig_replace_errors(
    "${RR_PYTHON_ERR_CATCH_M}"
    ""
    ""
    "${RR_ERRORS}"
    "${RR_PYTHON_ERR_OVERRIDE}"
    RR_ERRORS_CATCH
    OVERRIDE_ONLY)

configure_file("${PYTHON2_SOURCE_DIR}/RobotRaconteurPythonError.py.in"
               "${CMAKE_CURRENT_BINARY_DIR}/RobotRaconteurPythonError.py" @ONLY)