From a2460f3a4b31c8746e329177bc3ce7a76bdd4359 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 22 Apr 2012 01:00:56 +0200 Subject: [PATCH] EXTRACT-LAMBDA-LIST and EXTRACT-SPECIALIZER-NAMES implemented. --- src/CHANGELOG | 2 ++ src/c/symbols_list.h | 4 ++-- src/clos/method.lsp | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/CHANGELOG b/src/CHANGELOG index b57f88dff..c75a324e9 100755 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -46,6 +46,8 @@ ECL 12.2.2: - ENSURE-CLASS-USING-CLASS now registers the class with FIND-CLASS. ENSURE-CLASS relies on E-C-U-C doing that. + - EXTRACT-LAMBDA-LIST and EXTRACT-SPECIALIZER-NAMES implemented. + ;;; Local Variables: *** ;;; mode:text *** ;;; fill-column:79 *** diff --git a/src/c/symbols_list.h b/src/c/symbols_list.h index a4088e4ac..02400c508 100755 --- a/src/c/symbols_list.h +++ b/src/c/symbols_list.h @@ -1677,8 +1677,8 @@ cl_symbols[] = { {CLOS_ "ENSURE-GENERIC-FUNCTION-USING-CLASS", CLOS_ORDINARY, NULL, -1, OBJNULL}, {CLOS_ "EQL-SPECIALIZER", CLOS_ORDINARY, NULL, -1, OBJNULL}, {CLOS_ "EQL-SPECIALIZER-OBJECT", CLOS_ORDINARY, NULL, -1, OBJNULL}, -{CLOS_ "EXTRACT-LAMBDA-LIST", CLOS_ORDINARY, NULL, -1, OBJNULL}, -{CLOS_ "EXTRACT-SPECIALIZER-NAMES", CLOS_ORDINARY, NULL, -1, OBJNULL}, +{CLOS_ "EXTRACT-LAMBDA-LIST", CLOS_ORDINARY, NULL, 1, OBJNULL}, +{CLOS_ "EXTRACT-SPECIALIZER-NAMES", CLOS_ORDINARY, NULL, 1, OBJNULL}, {CLOS_ "FINALIZE-INHERITANCE", CLOS_ORDINARY, NULL, -1, OBJNULL}, {CLOS_ "FIND-METHOD-COMBINATION", CLOS_ORDINARY, NULL, -1, OBJNULL}, {CLOS_ "FORWARD-REFERENCED-CLASS", CLOS_ORDINARY, NULL, -1, OBJNULL}, diff --git a/src/clos/method.lsp b/src/clos/method.lsp index 314943a44..80e6948ad 100644 --- a/src/clos/method.lsp +++ b/src/clos/method.lsp @@ -210,6 +210,12 @@ (values name (nreverse qualifiers) (first args) (rest args))) (push (pop args) qualifiers)))) +(defun extract-lambda-list (specialized-lambda-list) + (values (parse-specialized-lambda-list specialized-lambda-list))) + +(defun extract-specializer-names (specialized-lambda-list) + (nth-value 2 (parse-specialized-lambda-list specialized-lambda-list))) + (defun parse-specialized-lambda-list (specialized-lambda-list) "This function takes a method lambda list and outputs the list of required arguments, the list of specializers and a new lambda list where the specializer