comp.lang.ada
 help / color / mirror / Atom feed
From: kug1977@web.de
Subject: Create a procedure with multiple arguments ...
Date: Fri, 4 Jan 2008 12:28:24 -0800 (PST)
Date: 2008-01-04T12:28:24-08:00	[thread overview]
Message-ID: <f1400d6d-97a4-4803-946d-b44bc96a15cf@1g2000hsl.googlegroups.com> (raw)

Hi @ all,

I'm a beginner in Ada and have the following problem:

- I'm using GNAT 4.3 on a MacOS X 10.4. and develop on the
OpenFirmware Interface.
- To connect to the Firmware, the IEEE 1275 define an Procedure call-
methode(), which can have up multiple arguments. IEEE 1275 define call-
method as followed:

IN: [string] method, ihandle, stack-arg1, ..., stack-argP
OUT: catch-result, stack-result1, ..., stack-resultQ
Pushes two less than N-args items, stack-arg1, ..., stack-argP, onto
the Forth data stack, with stack-arg1 on top of the stack, and
executes the package method named method in the instance ihandle as
with $call-method, guarded by catch. Pops the result returned by catch
into catch-result. If that result is nonzero, restore the depth of the
Forth data stack to its depth prior to the execution of call-method.
If that result is zero, pops up to one less than N-returns items,
stack-result1,  ..., stack-resultQ, from the Forth data stack into the
returned values portion of the argument array, with stack-result1
corresponding to the top of the stack.
N-args and N-returns are stored in the argument array and may be
different for different calls to
call-method. If the number of items X left on the Forth data stack as
a result of the execution of
method is less than N-returns, only stack-result1 ... stack-resultX
are modified; other elements of the returned values portion of the
argument array are unaffected. If X is more than N-returns, additional
items are popped from the Forth data stack after setting stack-
result1 ... stack-resultQ so that, in all cases, the execution of call-
method results in no net change to the depth of the Forth data stack.

In C, this is written as followed: static void *of_call(const char
*service, int nargs, int nret, ...), but how can I write such a thing
in Ada?

Any help would be appreciated ... best regards
Kay-Uwe



             reply	other threads:[~2008-01-04 20:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-04 20:28 kug1977 [this message]
2008-01-07 10:26 ` Create a procedure with multiple arguments Stephen Leake
2008-01-07 21:09   ` kug1977
2008-01-08  5:23 ` Steve
2008-01-08 15:22   ` kug1977
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox