gm2
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gm2] _M2_EXCEPTIONS_RAISE


From: Martin Kalbfuß
Subject: Re: [Gm2] _M2_EXCEPTIONS_RAISE
Date: Tue, 05 Jan 2010 21:52:24 +0100

That's it. Thanks. Not as difficult as I thought.

Am Dienstag, den 05.01.2010, 00:28 +0000 schrieb Gaius Mulley:
> Martin Kalbfuß <address@hidden> writes:
> 
> > Thanks a lot,
> >
> > I'm a step further now. But it still doesn't work. The thrown exception
> > is not the user defined one. I realized some mistakes in the code.
> >
> > 1. AllocateSource takes a variadic parameter.
> > 2. EXCEPTIONS_ExceptionSource is not a RECORD. It's a pointer to a
> > nameless RECORD.
> >
> > I changed the code a bit:
> >
> > ##########################
> >
> > #include <stdlib.h>
> >
> > extern "C" void EXCEPTIONS_AllocateSource(void **source);
> > extern "C" void EXCEPTIONS_RAISE(void *source, unsigned int number,
> > const char *message);
> >
> > void *exSrc = NULL;
> >
> > extern "C" void gnuexcept2_Action()
> > {
> >   EXCEPTIONS_RAISE(exSrc, 1, "Hallo Welt");
> 
> Hi Martin,
> 
> try:
> 
>    EXCEPTIONS_RAISE(exSrc, 1, "Hallo Welt", strlen("Hallo Welt"));
> 
> regards,
> Gaius
> 
> 
> > }
> >
> > extern "C" void _M2_gnuexcept2_init()
> > {
> >   EXCEPTIONS_AllocateSource(&exSrc);
> > }
> >
> > extern "C" void _M2_gnuexcept2_finish()
> > {
> >
> > }
> >
> > ###########################
> >
> > Now I get a memory access violation. ???
> >
> >
> >
> > Am Montag, den 04.01.2010, 20:47 +0000 schrieb Gaius Mulley:
> >> Martin Kalbfuß <address@hidden> writes:
> >> 
> >> 
> >> Hi Martin,
> >> 
> >> the procedures in gnuexcept2.cpp should be referenced by the
> >> modulename (EXCEPTIONS) without the _M2_.  The _M2_ is only used for
> >> init/finish functions.  So here is the code with modifications:
> >> 
> >> DEFINITION MODULE gnuexcept2 ;
> >> 
> >> PROCEDURE Action ;
> >> 
> >> END gnuexcept2.
> >> 
> >> 
> >> 
> >> typedef struct EXCEPTIONS_ExceptionSource
> >> EXCEPTIONS_ExceptionSource;
> >> extern "C" void EXCEPTIONS_AllocateSource(EXCEPTIONS_ExceptionSource 
> >> *source);
> >> extern "C" void EXCEPTIONS_RAISE(EXCEPTIONS_ExceptionSource
> >> *source, unsigned int number, const char *message);
> >> 
> >> EXCEPTIONS_ExceptionSource *exSrc;
> >> 
> >> extern "C" void gnuexcept2_Action (void)
> >> {
> >>   EXCEPTIONS_RAISE(exSrc, 1, "Hallo Welt");
> >> }
> >> 
> >> extern "C" void _M2_gnuexcept2_init()
> >> {
> >>   EXCEPTIONS_AllocateSource(exSrc);
> >> }
> >> 
> >> extern "C" void _M2_gnuexcept2_finish()
> >> {
> >> }
> >> 
> >> 
> >> 
> >> MODULE test;
> >> 
> >> IMPORT gnuexcept2;
> >> 
> >> BEGIN
> >>    gnuexcept2.Action();
> >> END test.
> >> 
> >> 
> >> 
> >> all:  force
> >>    g++ -c gnuexcept2.cpp
> >>    gm2 -fiso -c test.mod
> >>    gm2 -fiso test.mod
> >> 
> >> clean: force
> >>    $(RM) *.o a.out *~
> >> 
> >> force:
> >> 
> >> 
> >> 
> >> regards,
> >> Gaius






reply via email to

[Prev in Thread] Current Thread [Next in Thread]