Merge branch 'SFbug1295' of https://github.com/ptomulik/swig
This commit is contained in:
commit
0bde711222
4 changed files with 30 additions and 61 deletions
|
|
@ -481,6 +481,7 @@ CPP_STD_TEST_CASES += \
|
|||
li_std_combinations \
|
||||
li_std_deque \
|
||||
li_std_except \
|
||||
li_std_except_as_class \
|
||||
li_std_map \
|
||||
li_std_pair \
|
||||
li_std_pair_using \
|
||||
|
|
|
|||
19
Examples/test-suite/li_std_except_as_class.i
Normal file
19
Examples/test-suite/li_std_except_as_class.i
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/* File : li_std_except_as_class.i */
|
||||
%module li_std_except_as_class
|
||||
|
||||
/* NOTE: SF bug 1295:
|
||||
* if there were also functions throwing 'std::logic_error' and
|
||||
* 'std::exception' then the bug would not be fully replicated */
|
||||
|
||||
%{
|
||||
#include <exception>
|
||||
#include <stdexcept>
|
||||
void test_domain_error() throw(std::domain_error)
|
||||
{ throw std::domain_error("std::domain_error"); }
|
||||
%}
|
||||
|
||||
%include <std_string.i>
|
||||
#define SWIG_STD_EXCEPTIONS_AS_CLASSES
|
||||
%include <std_except.i>
|
||||
void test_domain_error() throw(std::domain_error)
|
||||
{ throw std::domain_error("std::domain_error"); }
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
from li_std_except_as_class import *
|
||||
|
||||
# std::domain_error hierarchy
|
||||
try: test_domain_error()
|
||||
except domain_error: pass
|
||||
try: test_domain_error()
|
||||
except logic_error: pass
|
||||
try: test_domain_error()
|
||||
except exception: pass
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
%include <typemaps/exception.swg>
|
||||
%include <std/std_except.i>
|
||||
|
||||
/*
|
||||
Mark all of std exception classes as "exception classes" via
|
||||
|
|
@ -34,63 +33,4 @@ namespace std {
|
|||
%std_exception_map(underflow_error, SWIG_OverflowError);
|
||||
}
|
||||
|
||||
#if defined(SWIG_STD_EXCEPTIONS_AS_CLASSES)
|
||||
|
||||
namespace std {
|
||||
struct exception
|
||||
{
|
||||
virtual ~exception() throw();
|
||||
virtual const char* what() const throw();
|
||||
};
|
||||
|
||||
struct bad_exception : exception
|
||||
{
|
||||
};
|
||||
|
||||
struct logic_error : exception
|
||||
{
|
||||
logic_error(const string& msg);
|
||||
};
|
||||
|
||||
struct domain_error : logic_error
|
||||
{
|
||||
domain_error(const string& msg);
|
||||
};
|
||||
|
||||
struct invalid_argument : logic_error
|
||||
{
|
||||
invalid_argument(const string& msg);
|
||||
};
|
||||
|
||||
struct length_error : logic_error
|
||||
{
|
||||
length_error(const string& msg);
|
||||
};
|
||||
|
||||
struct out_of_range : logic_error
|
||||
{
|
||||
out_of_range(const string& msg);
|
||||
};
|
||||
|
||||
struct runtime_error : exception
|
||||
{
|
||||
runtime_error(const string& msg);
|
||||
};
|
||||
|
||||
struct range_error : runtime_error
|
||||
{
|
||||
range_error(const string& msg);
|
||||
};
|
||||
|
||||
struct overflow_error : runtime_error
|
||||
{
|
||||
overflow_error(const string& msg);
|
||||
};
|
||||
|
||||
struct underflow_error : runtime_error
|
||||
{
|
||||
underflow_error(const string& msg);
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
%include <std/std_except.i>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue