aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2009-02-09 03:44:51 +0000
committerdos-reis <gdr@axiomatics.org>2009-02-09 03:44:51 +0000
commiteae3a083200c3d0d33851fac82cd9ef8a134d0c9 (patch)
tree7d8cc30a017fb4a72e999480e87d4ee54e559926
parent6a7db2f84b6f8b2a1729092cc5259c576aff0ded (diff)
downloadopen-axiom-eae3a083200c3d0d33851fac82cd9ef8a134d0c9.tar.gz
Tidy FunctionDescriptor
-rw-r--r--src/algebra/domain.spad.pamphlet2
-rw-r--r--src/interp/database.boot12
2 files changed, 12 insertions, 2 deletions
diff --git a/src/algebra/domain.spad.pamphlet b/src/algebra/domain.spad.pamphlet
index 47679554..3984223c 100644
--- a/src/algebra/domain.spad.pamphlet
+++ b/src/algebra/domain.spad.pamphlet
@@ -111,7 +111,7 @@ ConstructorCategory(): Category == OperatorCategory Identifier with
kind x == getConstructorKind(x)$Lisp
arity x == getConstructorArity(x)$Lisp
dualSignature x == getDualSignatureFromDB(x)$Lisp
- operations x == getConstructorOperationsFromDB(x)$Lisp
+ operations x == getOperationAlistFromLisplib(x)$Lisp
@
diff --git a/src/interp/database.boot b/src/interp/database.boot
index 31daea4b..8b3b9e1c 100644
--- a/src/interp/database.boot
+++ b/src/interp/database.boot
@@ -678,12 +678,22 @@ markUnique x ==
RPLACD(x,[u,:rest x])
rest x
+
+++ Tail of most function descriptors.
+$FunctionDescriptorTail == '(NIL T ELT)
+
+++ Return the list of overload sets of operations exported by
+++ the constructor `x'. This function differs from
+++ getConstructorOperationsFromDB in that it uncompresses the
+++ common tail of most function descriptors. That compression
+++ was done when the overload sets were saved in the
+++ operation database.
getOperationAlistFromLisplib x ==
u := getConstructorOperationsFromDB x
-- u := removeZeroOneDestructively u
null u => u -- this can happen for Object
CAAR u = '_$unique => rest u
- f:= addConsDB '(NIL T ELT)
+ f:= addConsDB $FunctionDescriptorTail
for [op,:sigList] in u repeat
for items in tails sigList repeat
[sig,:r] := first items