From: William S F. <ws...@fu...> - 2013-03-12 19:52:41
|
On 11/03/13 02:30, marvin persona wrote: > I've followed the approaches you suggested, and have the changes to swig > in place, but have not yet updated the tests, which should not take > long. But while updating the documentation I realized there are issues > with the fragment approach. Read documentation excerpt: > > > To handle such exceptions correctly, it is necessary to translate > > them into C++ exceptions. This can be done in two different ways > > using the %feature("director:except") directive. In the simplest > > approach, simply attach a code block to a method to handle the > >mapping of java exceptions into C++ exceptions. > > >// All the rules to associate a feature with an element apply > > %feature("director:except",fullname=1) MyClass::method(int x) { > > jthrowable $error = jenv->ExceptionOccurred(); > > if ($error) { > > if (Swig::ExceptionMatches(...)) > > throw logic_error(Swig::GetExceptionMessage(...).message()); > > ... > > But %features do not provide any way to signal that they require > fragments, fragments are only for %typemaps. So ExceptionMatches and > GetExceptionMessage cannot be used. > Yes what a nuisance, that is bit of a gap in functionality with the whole %fragment design. > Since your main concern (introduction of std::string dependency) is > resolved, it seems like using methods that are always provided by > director.swg might be fine. An alternative that would be more work and > may or may not make sense, would be to allow %features to specify > fragments attributes in the same way as typemaps. > > I'd like to go ahead and just move the methods in to java/director.swg > for now. If you decide that adding fragment support to %feature is > desirable, that can be done as a separate task. Yes agreed. I might just look at implementing that. William |