This is bind.c in view mode; [Download] [Up]
Changes file for /usr/local/src/kcl/c/bind.c
Created on Mon Apr 29 20:47:09 1991
Usage \n@s[Original text\n@s|Replacement Text\n@s]
See the file rascal.ics.utexas.edu:/usr2/ftp/merge.c
for a program to merge change files. Anything not between
"\n@s[" and "\n@s]" is a simply a comment.
This file was constructed using emacs and merge.el
Enhancements Copyright (c) W. Schelter All rights reserved.
by (Bill Schelter) wfs@carl.ma.utexas.edu
****Change:(orig (11 11 a))
@s[*/
#include "include.h"
@s|*/
#include "include.h"
#include "varargs.h"
@s]
****Change:(orig (51 55 d))
@s[object ANDoptional;
object ANDrest;
object ANDkey;
object ANDallow_other_keys;
@s,object ANDaux;
@s|
@s]
****Change:(orig (57 57 d))
@s[object Kallow_other_keys;
@s|
@s]
****Change:(orig (689 691 d))
@s[#ifdef AV
#define key(i) ktab[i]
#endif
@s|
@s]
****Change:(orig (700 700 c))
@s[parse_key(base, rest, allow_other_keys, n, first_key)
@s|parse_key(base, rest, allow_other_keys, n, va_alist)
@s]
****Change:(orig (704 706 c))
@s[object first_key;
{
object *ktab = &first_key;
@s|va_dcl
{ va_list ap;
@s]
****Change:(orig (737 737 a))
@s[ top = base + n;
other_key = k;
@s| top = base + n;
other_key = k;
va_start(ap);
@s]
****Change:(orig (739 739 c))
@s[ for (i = 0; i < n; i++) {
if (key(i) == k) {
@s| for (i = 0; i < n; i++) {
if (va_arg(ap,object) == k) {
@s]
****Change:(orig (747 747 a))
@s[ top[i] = Cnil;
}
}
@s| top[i] = Cnil;
}
}
va_end(ap);
@s]
****Change:(orig (755 755 a))
@s[ FEerror("The keyword ~S is not allowed.",1,other_key);
return;
}
@s| FEerror("The keyword ~S is not allowed.",1,other_key);
return;
}
va_start(ap);
@s]
****Change:(orig (757 757 c))
@s[ for (i = 0; i < n; i++) {
k = key(i);
@s| for (i = 0; i < n; i++) {
k = va_arg(ap,object);
@s]
****Change:(orig (760 760 a))
@s[ k->s.s_dbind = Cnil;
}
@s| k->s.s_dbind = Cnil;
}
va_end(ap);
@s]
****Change:(orig (786 786 a))
@s[ vs_top = top;
}
top = base + n;
@s| vs_top = top;
}
top = base + n;
va_start(ap);
@s]
****Change:(orig (788 788 c))
@s[ for (i = 0; i < n; i++) {
k = key(i);
@s| for (i = 0; i < n; i++) {
k = va_arg(ap,object);
@s]
****Change:(orig (793 793 a))
@s[ k->s.s_stype = (short)stp_constant;
}
@s| k->s.s_stype = (short)stp_constant;
}
va_end(ap);
@s]
****Change:(orig (800 800 c))
@s[check_other_key(l, n, first_key)
@s|check_other_key(l, n, va_alist)
@s]
****Change:(orig (803 803 c))
@s[int n;
object first_key;
@s|int n;
va_dcl
@s]
****Change:(orig (805 805 c))
@s[ object *ktab = &first_key;
@s| va_list ap;
@s]
****Change:(orig (819 819 c))
@s[ allow_other_keys = TRUE;
} else {
@s| allow_other_keys = TRUE;
} else {register object *loc;
char buf [100];
bzero(buf,n);
va_start(ap);
@s]
****Change:(orig (821 821 c))
@s[ if (key(i) == k) {key(i) = Cnil; break;}
@s| { if (va_arg(ap,object) == k &&
buf[i] ==0) {buf[i]=1; break;}}
va_end(ap);
@s]
****Change:(orig (828 828 a))
@s[ FEerror("The keyword ~S is not allowed or is duplicated.",
1, other_key);
}
@s| FEerror("The keyword ~S is not allowed or is duplicated.",
1, other_key);
}
struct key {short n,allow_other_keys;
iobject *defaults;
iobject keys[1];
};
object Cstd_key_defaults[15]={Cnil,Cnil,Cnil,Cnil,Cnil,Cnil,Cnil,
Cnil,Cnil,Cnil,Cnil,Cnil,Cnil,Cnil,Cnil};
parse_key_new(n,base,keys,ap)
int n;
object *base;
struct key *keys;
va_list ap;
{object *new;
COERCE_VA_LIST(new,ap,n);
/* from here down identical to parse_key_rest */
new = new + n ;
{int j=keys->n;
object *p= (object *)(keys->defaults);
while (--j >=0) base[j]=p[j];
}
{if (n==0){ return;}
{int allow = keys->allow_other_keys;
object k;
top:
while (n>=2)
{int i= keys->n;
iobject *ke=keys->keys ;
new = new -2;
k = *new;
while(--i >= 0)
{if ((*(ke++)).o == k)
{base[i]= new[1];
n=n-2;
goto top;
}}
/* the key is a new one */
if (allow )
{
n=n-2;
}
else
{int m = n -2;
object *p = new;
while (m >= 0)
{if (*p == Kallow_other_keys)
{ allow = (p[1] !=Cnil) ; break;}
p -= 2;
m -= 2;}
if (allow) n = n -2 ; else goto error;}
}
if (n!=0) FEerror("Odd number of keys");
return 0;
error:
FEerror("Unrecognized key ~a",1,k);
}}}
parse_key_rest(rest,n,base,keys,ap)
int n;
object *base;
struct key *keys;
va_list ap;
object rest;
{object *new;
COERCE_VA_LIST(new,ap,n);
/* copy the rest arg */
{object *p = new;
int m = n;
while (--m >= 0)
{rest->c.c_car = *p++;
rest = rest->c.c_cdr;}}
new = new + n ;
{int j=keys->n;
object *p= (object *)(keys->defaults);
while (--j >=0) base[j]=p[j];
}
{if (n==0){ return;}
{int allow = keys->allow_other_keys;
object k;
top:
while (n>=2)
{int i= keys->n;
iobject *ke=keys->keys ;
new = new -2;
k = *new;
while(--i >= 0)
{if ((*(ke++)).o == k)
{base[i]= new[1];
n=n-2;
goto top;
}}
/* the key is a new one */
if (allow)
{
n=n-2;
}
else
{int m = n -2;
object *p = new;
while (m >= 0)
{if (*p == Kallow_other_keys)
{ allow = (p[1] !=Cnil) ; break;}
p -= 2;
m -= 2;}
if (allow) n = n -2 ; else goto error;}
}
if (n!=0) FEerror("Odd number of keys");
return 0;
error:
FEerror("Unrecognized key ~a",1,k);
}}}
set_key_struct(ks,data)
object data;
struct key *ks;
{int i=ks->n;
while (--i >=0)
{ks->keys[i].o = data->cfd.cfd_self[ ks->keys[i].i ];
if (ks->defaults != (iobject *)Cstd_key_defaults)
{int m=ks->defaults[i].i;
ks->defaults[i].o=
(m==-2 ? Cnil :
m==-1 ? (object)0 :
data->cfd.cfd_self[m]);}
}}
@s]
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.