2
Copyright (C) 1994 M. Hagiya, W. Schelter, T. Yuasa
4
This file is part of GNU Common Lisp, herein referred to as GCL
6
GCL is free software; you can redistribute it and/or modify it under
7
the terms of the GNU LIBRARY GENERAL PUBLIC LICENSE as published by
8
the Free Software Foundation; either version 2, or (at your option)
11
GCL is distributed in the hope that it will be useful, but WITHOUT
12
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
14
License for more details.
16
You should have received a copy of the GNU Library General Public License
17
along with GCL; see the file COPYING. If not, write to the Free Software
18
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
28
#define HASHCOEF 12345 /* hashing coefficient */
30
void check_type_or_symbol_string_package(object *);
36
#define P_INTERNAL(x,j) ((x)->p.p_internal[(j) % (x)->p.p_internal_size])
37
#define P_EXTERNAL(x,j) ((x)->p.p_external[(j) % (x)->p.p_external_size])
43
member_string_equal(x, l)
46
for (; type_of(l) == t_cons; l = l->c.c_cdr)
47
if (string_equal(x, l->c.c_car))
53
designate_package(object x,struct package *p) {
56
case t_string: case t_symbol:
57
return string_equal(x,p->p_name) || member_string_equal(x, p->p_nicknames);
60
return designate_package(coerce_to_string(x),p);
66
FEwrong_type_argument(TSor_symbol_string_package,x);
73
/* #define bad_package_name(a) (type_of(a)==t_string &&\ */
74
/* (memchr((a)->st.st_self,'-',(a)->st.st_fillp) || \ */
75
/* ((a)->st.st_self[0]=='*' && (a)->st.st_fillp==1))) */
77
#define check_package_designator(a) if (type_of(a)!=t_string && \
78
type_of(a)!=t_character && \
79
type_of(a)!=t_symbol && \
80
type_of(a)!=t_package) \
81
FEwrong_type_argument(TSor_symbol_string_package,(a))
82
#define check_type_or_symbol_string_package(a) check_package_designator(*a)
95
ntab= AR_ALLOC(alloc_contblock,m,object);
98
while(i<m) ntab[i++]=Cnil;
100
for (l = tab[i]; type_of(l) == t_cons;)
101
{int j =pack_hash(l->c.c_car)%m;
103
l->c.c_cdr = ntab[j];
110
/* some prime numbers suitable for package sizes */
112
static int package_sizes[]={
113
97,251, 509, 1021, 2039, 4093, 8191, 16381,
114
32749, 65521, 131071, 262139, 524287, 1048573};
117
suitable_package_size(n)
118
{int *i=package_sizes;
119
if (n>= 1000000) return 1048573;
120
while(*i < n) { i++;}
124
Make_package(n, ns, ul, isize , esize) makes a package with name n,
125
which must be a string or a symbol,
126
and nicknames ns, which must be a list of strings or symbols,
127
and uses packages in list ul, which must be a list of packages
128
or package names i.e. strings or symbols.
131
package_already(object);
136
make_package(n, ns, ul,isize,esize)
144
{ BEGIN_NO_INTERRUPT;
145
if (type_of(n) == t_symbol) {
146
vs_push(alloc_simple_string(n->s.s_fillp));
147
vs_head->st.st_self = n->s.s_self;
150
if (type_of(n)==t_character)
151
n=coerce_to_string(n);
152
if (find_package(n) != Cnil)
154
x = alloc_object(t_package);
156
x->p.p_nicknames = Cnil;
157
x->p.p_shadowings = Cnil;
158
x->p.p_uselist = Cnil;
159
x->p.p_usedbylist = Cnil;
160
x->p.p_internal = NULL;
161
x->p.p_external = NULL;
162
x->p.p_internal_size = (isize ? isize : suitable_package_size(200));
163
x->p.p_external_size = (esize ? esize : suitable_package_size(60));
164
x->p.p_internal_fp =0;
165
x->p.p_external_fp =0;
168
for (; !endp(ns); ns = ns->c.c_cdr) {
170
if (type_of(n) == t_symbol) {
171
vs_push(alloc_simple_string(n->s.s_fillp));
172
vs_head->st.st_self = n->s.s_self;
175
if (type_of(n)==t_character)
176
n=coerce_to_string(n);
177
if (find_package(n) != Cnil) {
181
x->p.p_nicknames = make_cons(n, x->p.p_nicknames);
183
for (; !endp(ul); ul = ul->c.c_cdr) {
184
if (type_of(ul->c.c_car) == t_package)
187
y = find_package(ul->c.c_car);
189
no_package(ul->c.c_car);
191
x->p.p_uselist = make_cons(y, x->p.p_uselist);
192
y->p.p_usedbylist = make_cons(x, y->p.p_usedbylist);
195
= AR_ALLOC(alloc_contblock,x->p.p_internal_size,object);
196
for (i = 0; i < x->p.p_internal_size; i++)
197
x->p.p_internal[i] = Cnil;
199
= AR_ALLOC(alloc_contblock,x->p.p_external_size,object);
200
for (i = 0; i < x->p.p_external_size; i++)
201
x->p.p_external[i] = Cnil;
202
x->p.p_link = pack_pointer;
203
pack_pointer = &(x->p);
210
use_package(object,object);
213
in_package(n, ns, ul,isize,esize)
223
#ifdef ANSI_COMMON_LISP
224
FEpackage_error(n,"No such package");
227
x = make_package(n, ns, ul,isize,esize);
231
if (isize) rehash_pack(&(x->p.p_internal),
232
&x->p.p_internal_size,isize);
233
for (; !endp(ns); ns = ns->c.c_cdr) {
235
if (type_of(n) == t_symbol) {
236
vs_push(alloc_simple_string(n->s.s_fillp));
237
vs_head->st.st_self = n->s.s_self;
245
x->p.p_nicknames = make_cons(n, x->p.p_nicknames);
247
for (; !endp(ul); ul = ul->c.c_cdr)
248
use_package(ul->c.c_car, x);
249
#ifndef ANSI_COMMON_LISP
252
sLApackageA->s.s_dbind = x;
258
rename_package(x, n, ns)
265
if (type_of(n) == t_symbol) {
266
vs_push(alloc_simple_string(n->s.s_fillp));
267
vs_head->st.st_self = n->s.s_self;
270
if (type_of(n)==t_character)
271
n=coerce_to_string(n);
272
if (!(equal(x->p.p_name,n)) &&
273
find_package(n) != Cnil)
276
x->p.p_nicknames = Cnil;
277
for (; !endp(ns); ns = ns->c.c_cdr) {
279
if (type_of(n) == t_symbol) {
280
vs_push(alloc_simple_string(n->s.s_fillp));
281
vs_head->st.st_self = n->s.s_self;
284
if (type_of(n)==t_character)
285
n=coerce_to_string(n);
291
x->p.p_nicknames = make_cons(n, x->p.p_nicknames);
299
Find_package(n) seaches for a package with name n,
300
which is a string or a symbol.
301
If not so, an error is signaled.
309
check_package_designator(n);
310
for (p = pack_pointer; p != NULL; p = p->p_link)
311
if (designate_package(n,p))
322
if (type_of(p) == t_package)
324
pp = find_package(p);
335
x = symbol_value(sLApackageA);
336
if (type_of(x) != t_package) {
337
sLApackageA->s.s_dbind = user_package;
338
FEerror("The value of *PACKAGE*, ~S, was not a package.",
345
Pack_hash(st) hashes string st
346
and returns the index for a hash table of a package.
353
{int len=x->st.st_fillp;
355
#define HADD(i,j,k,l) (h+=s[i],h+=s[j]<<8,h+=s[k]<<13,h+=s[l]<<23)
356
#define HADD2(i,j) (h+=s[i]<<5,h+=s[j]<<15)
361
case 9: HADD(1,4,6,8); HADD2(5,7); goto END;
362
case 8: HADD(1,3,5,7); HADD2(2,4); goto END;
363
case 7: HADD(1,3,4,5); HADD2(6,2); goto END;
364
case 6: HADD(1,3,4,5); HADD2(0,2); goto END;
365
case 5: h+= s[4] << 13;
366
case 4: h+= s[3] << 24;
367
case 3: h+= s[2]<< 16;
368
case 2: h+= s[1] << 8;
372
HADD(3,6,len-2,len-4); HADD2(1,len-1);
373
if (len > 15) {HADD2(7,10);
384
Intern(st, p) interns string st in package p.
391
object x, *ip, *ep, l, ul;
396
if (st->st.st_fillp==4 && !strncmp(st->st.st_self,"INFO",4) && p->p.p_name->st.st_fillp==4 && !strncmp(p->p.p_name->st.st_self,"LISP",4))
399
ip = &P_INTERNAL(p ,j);
400
#define string_eq(a,b) \
401
((a)->st.st_fillp==(b)->st.st_fillp && \
402
bcmp((a)->st.st_self,(b)->st.st_self,(a)->st.st_fillp)==0)
404
for (l = *ip; type_of(l) == t_cons; l = l->c.c_cdr)
405
if (string_eq(l->c.c_car, st)) {
406
intern_flag = INTERNAL;
407
END_NO_INTERRUPT;return(l->c.c_car);
409
ep = &P_EXTERNAL(p,j);
410
for (l = *ep; type_of(l) == t_cons; l = l->c.c_cdr)
411
if (string_eq(l->c.c_car, st)) {
412
intern_flag = EXTERNAL;
413
END_NO_INTERRUPT;return(l->c.c_car);
415
for (ul=p->p.p_uselist; type_of(ul)==t_cons; ul=ul->c.c_cdr)
416
for (l = P_EXTERNAL(ul->c.c_car,j);
417
type_of(l) == t_cons;
419
if (string_eq(l->c.c_car, st)) {
420
intern_flag = INHERITED;
421
END_NO_INTERRUPT;return(l->c.c_car);
425
if (p == keyword_package) {
426
x->s.s_stype = (short)stp_constant;
428
*ep = make_cons(x, *ep);
429
keyword_package->p.p_external_fp ++;
432
*ip = make_cons(x, *ip);
433
if (p->p.p_internal_fp++>(p->p.p_internal_size << 1))
434
rehash_pack(&(p->p.p_internal),&p->p.p_internal_size,
435
suitable_package_size(p->p.p_internal_fp));
438
if (x->s.s_hpack == Cnil)
441
END_NO_INTERRUPT;return(x);
445
Find_symbol(st, p) searches for string st in package p.
452
object *ip, *ep, l, ul;
454
if (type_of(st)==t_character) st=coerce_to_string(st);
456
ip = &P_INTERNAL(p ,j);
457
for (l = *ip; type_of(l) == t_cons; l = l->c.c_cdr)
458
if (string_eq(l->c.c_car, st)) {
459
intern_flag = INTERNAL;
460
END_NO_INTERRUPT;return(l->c.c_car);
462
ep = &P_EXTERNAL(p,j);
463
for (l = *ep; type_of(l) == t_cons; l = l->c.c_cdr)
464
if (string_eq(l->c.c_car, st)) {
465
intern_flag = EXTERNAL;
466
END_NO_INTERRUPT;return(l->c.c_car);
468
for (ul=p->p.p_uselist; type_of(ul)==t_cons; ul=ul->c.c_cdr)
469
for (l = P_EXTERNAL(ul->c.c_car,j);
470
type_of(l) == t_cons;
472
if (string_eq(l->c.c_car, st)) {
473
intern_flag = INHERITED;
474
END_NO_INTERRUPT;return(l->c.c_car);
477
END_NO_INTERRUPT;return(Cnil);
488
x = find_symbol(s, p);
489
if (intern_flag == INTERNAL && s == x) {
490
lp = &P_INTERNAL(p ,j);
491
if (member_eq(s, p->p.p_shadowings))
495
if (intern_flag == EXTERNAL && s == x) {
496
lp = &P_EXTERNAL(p,j);
497
if (member_eq(s, p->p.p_shadowings))
501
END_NO_INTERRUPT;return(FALSE);
505
for (l = p->p.p_uselist; type_of(l) == t_cons; l = l->c.c_cdr) {
506
y = find_symbol(s, l->c.c_car);
507
if (intern_flag == EXTERNAL) {
511
FEpackage_error(p,"Cannot unintern the shadowing symbol"\
512
"as it will produce a name conflict");
515
delete_eq(s, &p->p.p_shadowings);
519
if (s->s.s_hpack == p)
521
if ((enum stype)s->s.s_stype != stp_ordinary)
522
uninterned_list = make_cons(s, uninterned_list);
523
END_NO_INTERRUPT;return(TRUE);
537
x = find_symbol(s, p);
540
import(s, p); /* signals an error */
543
if (intern_flag == INTERNAL)
544
ip = &P_INTERNAL(p ,j);
545
else if (intern_flag == EXTERNAL)
548
FEpackage_error(p,"Symbol not accessible.");
549
for (l = p->p.p_usedbylist;
550
type_of(l) == t_cons;
552
x = find_symbol(s, l->c.c_car);
553
if (intern_flag && s != x &&
554
!member_eq(x, l->c.c_car->p.p_shadowings))
555
FEpackage_error(p,"Cannot export symbol as it will produce a name conflict.");
559
p->p.p_internal_fp--;}
560
ep = &P_EXTERNAL(p,j);
561
p->p.p_external_fp++;
562
*ep = make_cons(s, *ep);
572
if (p == keyword_package)
573
FEpackage_error(p,"Cannot unexport a symbol from the keyword.");
574
x = find_symbol(s, p);
575
if (/* intern_flag != EXTERNAL || */ x != s)
576
FEpackage_error(p,"Symbol not in package.");
577
/* "Cannot unexport the symbol ~S~%\ */
579
/* because the symbol is not an external symbol~%\ */
580
/* of the package.", 2, s, p); */
582
ep = &P_EXTERNAL(p,j);
584
ip = &P_INTERNAL(p ,j);
585
p->p.p_internal_fp++;
586
*ip = make_cons(s, *ip);
597
x = find_symbol(s, p);
600
FEpackage_error(p,"Cannot import symbol as it will produce a name conflict");
601
if (intern_flag == INTERNAL || intern_flag == EXTERNAL)
605
ip = &P_INTERNAL(p ,j);
606
p->p.p_internal_fp++;
607
*ip = make_cons(s, *ip);
611
shadowing_import(s, p)
616
x = find_symbol(s, p);
617
if (intern_flag && intern_flag != INHERITED) {
619
if (!member_eq(x, p->p.p_shadowings))
621
= make_cons(x, p->p.p_shadowings);
624
if(member_eq(x, p->p.p_shadowings))
625
delete_eq(x, &p->p.p_shadowings);
626
if (intern_flag == INTERNAL)
627
delete_eq(x, &P_INTERNAL(p,pack_hash(x)));
629
delete_eq(x, &P_EXTERNAL(p ,pack_hash(x)));
630
if (x->s.s_hpack == p)
632
if ((enum stype)x->s.s_stype != stp_ordinary)
633
uninterned_list = make_cons(x, uninterned_list);
635
ip = &P_INTERNAL(p ,pack_hash(s));
636
*ip = make_cons(s, *ip);
637
p->p.p_internal_fp++;
638
p->p.p_shadowings = make_cons(s, p->p.p_shadowings);
648
if (type_of(s)==t_character) s=coerce_to_string(s);
650
if (intern_flag == INTERNAL || intern_flag == EXTERNAL) {
651
p->p.p_shadowings = make_cons(s, p->p.p_shadowings);
655
ip = &P_INTERNAL(p ,j);
656
vs_push(make_symbol(s));
657
vs_head->s.s_hpack = p;
658
*ip = make_cons(vs_head, *ip);
659
p->p.p_internal_fp++;
660
p->p.p_shadowings = make_cons(vs_head, p->p.p_shadowings);
672
if (type_of(x) != t_package) {
677
if (x == keyword_package)
678
FEpackage_error(x,"Cannot use keyword package.");
681
if (member_eq(x, p->p.p_uselist))
683
for (i = 0; i < x->p.p_external_size; i++)
684
for (l = P_EXTERNAL(x ,i);
685
type_of(l) == t_cons;
687
y = find_symbol(l->c.c_car, p);
688
if (intern_flag && l->c.c_car != y
689
&& ! member_eq(y,p->p.p_shadowings)
691
FEpackage_error(p,"Cannot use package as it will produce"
694
p->p.p_uselist = make_cons(x, p->p.p_uselist);
695
x->p.p_usedbylist = make_cons(p, x->p.p_usedbylist);
704
if (type_of(x) != t_package) {
709
delete_eq(x, &p->p.p_uselist);
710
delete_eq(p, &x->p.p_usedbylist);
716
delete_package(object n) {
718
struct package *p,*pp;
721
for (p = pack_pointer,pp=NULL; p != NULL; pp=p,p = p->p_link)
723
if (designate_package(n,p)) {
725
if (p->p_usedbylist!=Cnil) {
727
FEpackage_error((object)p,"Package used by other packages.");
728
for (t=p->p_usedbylist;!endp(t);t=t->c.c_cdr)
729
unuse_package((object)p,t->c.c_car);
732
if (p->p_uselist!=Cnil) {
733
for (t=p->p_uselist;!endp(t);t=t->c.c_cdr)
734
unuse_package(t->c.c_car,(object)p);
740
pp->p_link=p->p_link;
742
pack_pointer=p->p_link;
748
if (type_of(n)!=t_package)
749
FEpackage_error(n,"No such pachage.");
755
/* (use `make_cons(lisp_package, Cnil)`) */
758
@(defun make_package (pack_name
761
(internal `small_fixnum(0)`)
762
(external `small_fixnum(0)`)
765
if (type_of(pack_name)==t_character) pack_name=coerce_to_string(pack_name);
766
check_type_or_string_symbol(&pack_name);
767
@(return `make_package(pack_name, nicknames, use,
768
fix(internal),fix(external))`)
771
@(defun in_package (pack_name &key nicknames (use Cnil use_sp)
772
(internal `small_fixnum(0)`)
773
(external `small_fixnum(0)`)
776
if (type_of(pack_name)==t_character) pack_name=coerce_to_string(pack_name);
777
check_type_or_string_symbol(&pack_name);
778
if (find_package(pack_name) == Cnil && !(use_sp))
779
use = make_cons(lisp_package, Cnil);
780
@(return `in_package(pack_name, nicknames, use,fix(internal),fix(external))`)
787
vs_base[0] = find_package(vs_base[0]);
790
LFD(Ldelete_package)()
794
vs_base[0] = delete_package(vs_base[0]);
803
check_package_designator(vs_base[0]);
804
t=coerce_to_package(vs_base[0]);
805
vs_base[0]=t==Cnil ? t : t->p.p_name;
809
LFD(Lpackage_nicknames)()
813
check_package_designator(vs_base[0]);
814
vs_base[0] = coerce_to_package(vs_base[0]);
815
vs_base[0] = vs_base[0]->p.p_nicknames;
818
@(defun rename_package (pack new_name &o new_nicknames)
820
check_package_designator(pack);
821
pack = coerce_to_package(pack);
822
if (type_of(new_name)==t_character) new_name=coerce_to_string(new_name);
823
check_type_or_string_symbol(&new_name);
824
@(return `rename_package(pack, new_name, new_nicknames)`)
827
LFD(Lpackage_use_list)()
831
check_package_designator(vs_base[0]);
832
vs_base[0] = coerce_to_package(vs_base[0]);
833
vs_base[0] = vs_base[0]->p.p_uselist;
836
LFD(Lpackage_used_by_list)()
840
check_package_designator(vs_base[0]);
841
vs_base[0] = coerce_to_package(vs_base[0]);
842
vs_base[0] = vs_base[0]->p.p_usedbylist;
846
FFN(Lpackage_shadowing_symbols)()
850
check_package_designator(vs_base[0]);
851
vs_base[0] = coerce_to_package(vs_base[0]);
852
vs_base[0] = vs_base[0]->p.p_shadowings;
855
LFD(Llist_all_packages)()
861
for (p = pack_pointer, i = 0; p != NULL; p = p->p_link, i++)
868
@(defun intern (strng &optional (p `current_package()`) &aux sym)
870
check_type_string(&strng);
871
check_package_designator(p);
872
p = coerce_to_package(p);
873
sym = intern(strng, p);
874
if (intern_flag == INTERNAL)
875
@(return sym sKinternal)
876
if (intern_flag == EXTERNAL)
877
@(return sym sKexternal)
878
if (intern_flag == INHERITED)
879
@(return sym sKinherited)
883
@(defun find_symbol (strng &optional (p `current_package()`))
886
check_type_string(&strng);
887
check_package_designator(p);
888
p = coerce_to_package(p);
889
x = find_symbol(strng, p);
890
if (intern_flag == INTERNAL)
891
@(return x sKinternal)
892
if (intern_flag == EXTERNAL)
893
@(return x sKexternal)
894
if (intern_flag == INHERITED)
895
@(return x sKinherited)
899
@(defun unintern (symbl &optional (p `current_package()`))
901
check_type_symbol(&symbl);
902
check_package_designator(p);
903
p = coerce_to_package(p);
904
if (unintern(symbl, p))
910
@(defun export (symbols &o (pack `current_package()`))
914
check_package_designator(pack);
915
pack = coerce_to_package(pack);
917
switch (type_of(symbols)) {
921
export(symbols, pack);
925
for (l = symbols; !endp(l); l = l->c.c_cdr)
926
export(l->c.c_car, pack);
930
check_type_symbol(&symbols);
936
@(defun unexport (symbols &o (pack `current_package()`))
940
check_package_designator(pack);
941
pack = coerce_to_package(pack);
943
switch (type_of(symbols)) {
947
unexport(symbols, pack);
951
for (l = symbols; !endp(l); l = l->c.c_cdr)
952
unexport(l->c.c_car, pack);
956
check_type_symbol(&symbols);
962
@(defun import (symbols &o (pack `current_package()`))
965
check_package_designator(pack);
966
pack = coerce_to_package(pack);
968
switch (type_of(symbols)) {
972
import(symbols, pack);
976
for (l = symbols; !endp(l); l = l->c.c_cdr)
977
import(l->c.c_car, pack);
981
check_type_symbol(&symbols);
987
@(defun shadowing_import (symbols &o (pack `current_package()`))
990
check_package_designator(pack);
991
pack = coerce_to_package(pack);
993
switch (type_of(symbols)) {
997
shadowing_import(symbols, pack);
1001
for (l = symbols; !endp(l); l = l->c.c_cdr)
1002
shadowing_import(l->c.c_car, pack);
1006
check_type_symbol(&symbols);
1012
@(defun shadow (symbols &o (pack `current_package()`))
1015
check_package_designator(pack);
1016
pack = coerce_to_package(pack);
1018
switch (type_of(symbols)) {
1022
if (symbols == Cnil)
1024
shadow(symbols, pack);
1028
for (l = symbols; !endp(l); l = l->c.c_cdr)
1029
shadow(l->c.c_car, pack);
1033
check_type_or_symbol_string(&symbols);
1039
@(defun use_package (pack &o (pa `current_package()`))
1042
check_package_designator(pa);
1043
pa = coerce_to_package(pa);
1045
switch (type_of(pack)) {
1053
use_package(pack, pa);
1057
for (l = pack; !endp(l); l = l->c.c_cdr)
1058
use_package(l->c.c_car, pa);
1062
check_type_package(&pack);
1068
@(defun unuse_package (pack &o (pa `current_package()`))
1071
check_package_designator(pa);
1072
pa = coerce_to_package(pa);
1074
switch (type_of(pack)) {
1082
unuse_package(pack, pa);
1086
for (l = pack; !endp(l); l = l->c.c_cdr)
1087
unuse_package(l->c.c_car, pa);
1091
check_type_package(&pack);
1097
LFD(siLpackage_internal)()
1103
check_type_package(&vs_base[0]);
1104
if (type_of(vs_base[1]) != t_fixnum ||
1105
(j = fix(vs_base[1])) < 0 || j >= vs_base[0]->p.p_internal_size)
1106
FEerror("~S is an illegal index to a package hashtable.",
1108
vs_base[0] = P_INTERNAL(vs_base[0],j);
1112
LFD(siLpackage_external)()
1117
check_type_package(&vs_base[0]);
1118
if (type_of(vs_base[1]) != t_fixnum ||
1119
(j = fix(vs_base[1])) < 0 || j >= vs_base[0]->p.p_external_size)
1120
FEerror("~S is an illegal index to a package hashtable.",
1122
vs_base[0] = P_EXTERNAL(vs_base[0],j);
1130
FEwrong_type_argument(TSor_symbol_string_package,n);
1137
FEpackage_error(n,"A package with this name already exists.");
1141
FFN(siLpackage_size)()
1144
check_type_package(&p);
1146
vs_base[0]=make_fixnum(p->p.p_external_size);
1147
vs_base[1]=make_fixnum(p->p.p_internal_size);
1152
DEF_ORDINARY("EXTERNAL",sKexternal,KEYWORD,"");
1153
DEF_ORDINARY("INHERITED",sKinherited,KEYWORD,"");
1154
DEF_ORDINARY("INTERNAL",sKinternal,KEYWORD,"");
1155
DEF_ORDINARY("NICKNAMES",sKnicknames,KEYWORD,"");
1156
DEF_ORDINARY("USE",sKuse,KEYWORD,"");
1157
DEFVAR("*PACKAGE*",sLApackageA,LISP,lisp_package,"");
1165
= make_package(make_simple_string("LISP"),
1168
= make_package(make_simple_string("USER"),
1170
make_cons(lisp_package, Cnil),509,97);
1171
#ifdef ANSI_COMMON_LISP
1173
= make_package(make_simple_string("COMMON-LISP"),
1177
= make_package(make_simple_string("KEYWORD"),
1180
= make_package(make_simple_string("SYSTEM"),
1181
make_cons(make_simple_string("SI"),
1182
make_cons(make_simple_string("SYS"),
1184
make_cons(lisp_package, Cnil),251,157);
1186
/* There is no need to enter a package as a mark origin. */
1188
uninterned_list = Cnil;
1189
enter_mark_origin(&uninterned_list);
1193
gcl_init_package_function()
1195
make_function("MAKE-PACKAGE", Lmake_package);
1196
make_function("DELETE-PACKAGE", Ldelete_package);
1197
make_function("IN-PACKAGE", Lin_package);
1198
make_function("FIND-PACKAGE", Lfind_package);
1199
make_function("PACKAGE-NAME", Lpackage_name);
1200
make_function("PACKAGE-NICKNAMES", Lpackage_nicknames);
1201
make_function("RENAME-PACKAGE", Lrename_package);
1202
make_function("PACKAGE-USE-LIST", Lpackage_use_list);
1203
make_function("PACKAGE-USED-BY-LIST", Lpackage_used_by_list);
1204
make_function("PACKAGE-SHADOWING-SYMBOLS",Lpackage_shadowing_symbols);
1205
make_function("LIST-ALL-PACKAGES", Llist_all_packages);
1206
make_function("INTERN", Lintern);
1207
make_function("FIND-SYMBOL", Lfind_symbol);
1208
make_function("UNINTERN", Lunintern);
1209
make_function("EXPORT", Lexport);
1210
make_function("UNEXPORT", Lunexport);
1211
make_function("IMPORT", Limport);
1212
make_function("SHADOWING-IMPORT", Lshadowing_import);
1213
make_function("SHADOW", Lshadow);
1214
make_function("USE-PACKAGE", Luse_package);
1215
make_function("UNUSE-PACKAGE", Lunuse_package);
1217
make_si_function("PACKAGE-SIZE",siLpackage_size);
1218
make_si_function("PACKAGE-INTERNAL", siLpackage_internal);
1219
make_si_function("PACKAGE-EXTERNAL", siLpackage_external);