From: Brian Hurt <bhurt@spnz.org>
To: David McClain <David.McClain@Avisere.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] C++ Throws
Date: Fri, 27 Aug 2004 18:24:14 -0500 (CDT) [thread overview]
Message-ID: <Pine.LNX.4.44.0408271818480.5809-100000@localhost.localdomain> (raw)
In-Reply-To: <D93BB0DB-F878-11D8-9FED-000A95C19BAA@Avisere.com>
On Fri, 27 Aug 2004, David McClain wrote:
> I now see that OCaml is not converting anything, per se... Apparently
> when the throw handler detects an unhandled condition it decides to
> call abort(), against which there is no defense.
I don't know what precisely is going on here, but Ocaml interfaces to C,
which doesn't know anything about exceptions. You might try something
like (sorry, I'm no C++ guru):
extern "C" value foo(value c);
value foo(value C) {
/* normal Ocaml wrapper code for C */
try {
/* exception throwing code for C++. */
}
with (Exception e) {
/* Translate the C++ exception to an Ocaml exception */
}
}
The big difference between a C++ function and C function is the name
mangling. I doubt Ocaml could find a C++ function for linking after it
was name mangled. So the extern "C" tells C++ to not namemangle the
function name.
There is no way I know of to determine what exceptions a function call
might throw.
> So there appears to be something relatively complex going on across the
> foreign function interface with OCaml and C. This override is what
> frustrates the attempts to create a generic C++ exception handler.
I think you also have a C/C++ interface problem (and yes, Virginia, they
do exist).
--
"Usenet is like a herd of performing elephants with diarrhea -- massive,
difficult to redirect, awe-inspiring, entertaining, and a source of
mind-boggling amounts of excrement when you least expect it."
- Gene Spafford
Brian
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next prev parent reply other threads:[~2004-08-27 23:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-27 22:31 David McClain
2004-08-27 23:24 ` Brian Hurt [this message]
2004-08-28 0:11 ` David McClain
2004-08-28 1:40 ` skaller
2004-08-28 4:13 ` David McClain
2004-08-28 4:55 ` David Brown
2004-08-28 7:44 ` Ville-Pertti Keinonen
2004-08-28 7:48 ` Radu-Mihail Obada
2004-08-28 8:17 ` Xavier Leroy
2004-08-28 9:24 ` skaller
2004-08-28 9:31 ` skaller
2004-08-28 0:22 ` David McClain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.44.0408271818480.5809-100000@localhost.localdomain \
--to=bhurt@spnz.org \
--cc=David.McClain@Avisere.com \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox