File: args.inc

package info (click to toggle)
critcl 3.3.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,680 kB
  • sloc: ansic: 41,058; tcl: 12,090; sh: 7,230; pascal: 3,456; asm: 3,058; ada: 1,681; cpp: 1,001; cs: 879; makefile: 333; perl: 104; xml: 95; f90: 10
file content (30 lines) | stat: -rw-r--r-- 1,011 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[comment {-*- mode: tcl ; fill-column: 90 -*-}]

A function taking neither arguments nor returning results is not very useful.

[list_begin enumerated]

[enum] We are now extending the command to take an argument.

[enum][vset base][example {
    critcl::cproc hello {double x} void {
	/* double x; */
	printf("hello world, we have %f\n", x);
    }
}][vset rebuild]

[enum] When testing the package again, entering the simple [cmd hello] will fail.

[para] The changed command is now expecting an argument, and we gave it none.

[para] Retry by entering [example {hello 5}] instead.
       Now the command behaves as expected and prints the provided value.

[para] Further try and enter [example {hello world}]
       This will fail again.
       The command expected a real number and we gave it something decidedly not so.

[para] These checks (argument count, argument type) are implemented in the translation
layer [vset critcl] generates for the C function. The function body is never invoked.

[list_end]