comp.lang.ada
 help / color / mirror / Atom feed
* Create a procedure with multiple arguments ...
@ 2008-01-04 20:28 kug1977
  2008-01-07 10:26 ` Stephen Leake
  2008-01-08  5:23 ` Steve
  0 siblings, 2 replies; 5+ messages in thread
From: kug1977 @ 2008-01-04 20:28 UTC (permalink / 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



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-01-08 15:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-04 20:28 Create a procedure with multiple arguments kug1977
2008-01-07 10:26 ` Stephen Leake
2008-01-07 21:09   ` kug1977
2008-01-08  5:23 ` Steve
2008-01-08 15:22   ` kug1977

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