Lines Matching defs:package
30 /* $XFree86: xc/programs/xedit/lisp/package.c,v 1.20tsi Exp $ */
32 #include "lisp/package.h"
66 LispObj *list, *package, *nick;
69 package = CAR(list);
70 if (strcmp(THESTR(package->data.package.name), string) == 0)
71 return (package);
72 for (nick = package->data.package.nicknames;
75 return (package);
118 * the current package, but most of them do not have a property */
120 LispDoSymbol(LispObj *package, LispAtom *atom, int if_extern, int all_packages)
124 /* condition 1: atom package is current package */
125 dosymbol = !all_packages || atom->package == package;
131 * the current package */
133 package == lisp__data.keyword ||
134 package == PACKAGE;
144 LispObj *package;
146 package = LispFindPackage(name);
148 if (package == NIL)
149 LispDestroy("%s: package %s is not available",
152 return (package);
155 /* package must be of type LispPackage_t, symbol type is checked
159 LispObj *package, LispObj *symbol, int export)
163 if (package == lisp__data.keyword ||
164 symbol->data.atom->package == lisp__data.keyword)
169 if (package == PACKAGE)
177 pack = package->data.package.package;
186 LispDestroy("%s: the symbol %s is not available in package %s",
188 THESTR(package->data.package.name));
205 LispObj *variable, *package = NULL, *list, *code, *result_form;
218 /* if all_symbols, a package name is not specified in the init form */
222 LispDestroy("%s: missing package name", STRFUN(builtin));
224 /* Evaluate package specification */
225 package = EVAL(CAR(init));
226 if (!PACKAGEP(package))
227 package = LispFindPackageOrDie(builtin, package);
229 pack = package->data.package.package;
245 package = CAR(list);
246 pack = package->data.package.package;
257 if (LispDoSymbol(package, atom, only_externs, all_symbols)) {
306 LispObj *string, *package;
308 package = ARGUMENT(1);
312 if (package != UNSPEC)
313 package = LispFindPackageOrDie(builtin, package);
315 package = PACKAGE;
317 /* If got here, package is a LispPackage_t */
318 pack = package->data.package.package;
320 /* Search symbol in specified package */
340 if (symbol == NULL || symbol->data.atom->package == NULL) {
343 /* symbol does not exist in the specified package, create a new
346 if (package == PACKAGE)
352 /* Save package environment */
356 /* Change package environment */
357 PACKAGE = package;
358 lisp__data.pack = package->data.package.package;
362 /* Restore package environment */
368 /* If symbol being create in the keyword package, make it external */
369 if (package == lisp__data.keyword)
376 if (symbol->data.atom->package == package)
423 LispObj *list, *package, *result;
446 package = CAR(list);
447 pack = package->data.package.package;
450 if (atom && LispDoSymbol(package, atom, 0, 1)) {
473 find-symbol string &optional package
482 find-package name
495 export symbols &optional package
500 LispObj *symbols, *package;
502 package = ARGUMENT(1);
505 /* If specified, make sure package is available */
506 if (package != UNSPEC)
507 package = LispFindPackageOrDie(builtin, package);
509 package = PACKAGE;
514 LispDoExport(builtin, package, CAR(list), 1);
517 LispDoExport(builtin, package, symbols, 1);
525 import symbols &optional package
532 LispObj *symbols, *package;
534 package = ARGUMENT(1);
537 /* If specified, make sure package is available */
538 if (package != UNSPEC)
539 package = LispFindPackageOrDie(builtin, package);
541 package = PACKAGE;
543 restore_package = package != PACKAGE;
545 /* Save package environment */
549 /* Change package environment */
550 PACKAGE = package;
551 lisp__data.pack = package->data.package.package;
563 /* Restore package environment */
574 in-package name
577 LispObj *package;
583 package = LispFindPackageOrDie(builtin, name);
585 /* Update pointer to package symbol table */
586 lisp__data.pack = package->data.package.package;
587 PACKAGE = package;
589 return (package);
595 intern string &optional package
607 /* Maybe this should be read-only or a copy of the package list.
617 make-package package-name &key nicknames use
621 LispObj *list, *package, *nicks, *cons, *savepackage;
629 /* Check if package already exists */
630 package = LispFindPackage(package_name);
631 if (package != NIL)
633 LispDestroy("%s: package %s already defined",
645 package = LispFindPackage(CAR(list));
646 if (package != NIL)
648 LispDestroy("%s: nickname %s matches package %s",
650 THESTR(package->data.package.name));
652 package = CAR(list);
653 if (!XSTRINGP(package))
654 package = STRING(ATOMID(package)->value);
656 nicks = cons = CONS(package, NIL);
660 RPLACD(cons, CONS(package, NIL));
669 /* No errors, create new package */
670 package = LispNewPackage(package_name, nicks);
673 PACK = CONS(package, PACK);
681 /* Update pointer to package symbol table */
682 lisp__data.pack = package->data.package.package;
683 PACKAGE = package;
692 /* Restore pointer to package symbol table */
693 lisp__data.pack = savepackage->data.package.package;
696 return (package);
715 package-name package
718 LispObj *package;
720 package = ARGUMENT(0);
722 package = LispFindPackageOrDie(builtin, package);
724 return (package->data.package.name);
730 package-nicknames package
733 LispObj *package;
735 package = ARGUMENT(0);
737 package = LispFindPackageOrDie(builtin, package);
739 return (package->data.package.nicknames);
745 package-use-list package
752 LispObj *package, *use, *cons;
754 package = ARGUMENT(0);
756 package = LispFindPackageOrDie(builtin, package);
759 pack = package->data.package.package;
780 package-used-by-list package
786 LispObj *package, *other, *used, *cons, *list;
788 package = ARGUMENT(0);
790 package = LispFindPackageOrDie(builtin, package);
796 if (package == other)
797 /* Surely package uses itself */
800 pack = other->data.package.package;
803 if (pack->use.pairs[i] == package) {
824 unexport symbols &optional package
829 LispObj *symbols, *package;
831 package = ARGUMENT(1);
834 /* If specified, make sure package is available */
835 if (package != UNSPEC)
836 package = LispFindPackageOrDie(builtin, package);
838 package = PACKAGE;
843 LispDoExport(builtin, package, CAR(list), 0);
846 LispDoExport(builtin, package, symbols, 0);