File: c23.awk

package info (click to toggle)
gcl27 2.7.1-12
  • links: PTS
  • area: main
  • in suites: sid
  • size: 30,844 kB
  • sloc: lisp: 211,942; ansic: 52,944; sh: 9,347; makefile: 647; tcl: 53; awk: 52
file content (38 lines) | stat: -rw-r--r-- 865 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
31
32
33
34
35
36
37
38
#!/usr/bin/awk -f

/^ *ufixnum *maxargs_for_awk *=/ {gsub("="," ");gsub(";"," ");maxargs=$NF+0;next}

/^ *awk_generated_vc_apply_n_lines;$/ {

    if (!maxargs) {printf("error: maxargs unset\n");exit(-1);}
   
    for (n=1;n<=maxargs;n++) {
	for (m=n;m;m--) {
	    printf("\n\tcase %d*%d+%d: return ((object(*)(",n,maxargs+1,m);
            for (i=0;i<m;i++) printf("%sobject",i ? "," : "");
	    printf(",...))f)(");
            for (i=0;i<n;i++) printf("%sx[%d]",i ? "," : "",i);
            printf(");");
	}
    }
    printf("\n");
    
    next;
    
}

/^ *awk_generated_rc_apply_n_lines;$/ {
    
    for (n=0;n<=maxargs;n++) {
	printf("\n\tcase %d: return ((object(*)(",n);
	for (i=0;i<n;i++) printf("%sobject",i ? "," : "");
	printf("))f)(");
	for (i=0;i<n;i++) printf("%sx[%d]",i ? "," : "",i);
	printf(");");
    }
    printf("\n");

    next;
}

{print}