Module: internal Author: Jonathan Bachrach Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND // BOOTED: define ... class ... end; define inline function maybe-copy-sig-types (v :: , n :: ) => (res :: ) if (n = size(v)) v else copy-sequence(v, end: n) end if end function; define method function-specializers (f :: ) let sig = function-signature(f); maybe-copy-sig-types(signature-required(sig), signature-number-required(sig)) end method; define method function-specializers (f :: ) vector(slot-owner(method-slot-descriptor(f)), ) end method; define method function-specializers (f :: ) let slotd = method-slot-descriptor(f); vector(slot-type(slotd), slot-owner(slotd), ) end method; define method function-specializers (f :: ) vector(slot-owner(method-slot-descriptor(f))) end method; define method function-specializers (f :: ) let slotd = method-slot-descriptor(f); vector(slot-type(slotd), slot-owner(slotd)) end method; define method function-arguments (function :: ) => (required :: , rest? :: , key?) let sig = function-signature(function); values(signature-number-required(sig), signature-rest?(sig), if (signature-all-keys?(sig)) #"all" else signature-key?(sig) & signature-keys(sig) end if) end method; define method function-arguments (function :: ) => (required :: , rest? :: , key?) values(function-number-required(function), #f, #f) end method; define method function-return-values (function :: ) => (return-value-types :: , rest-return-value :: false-or()) let sig = function.function-signature; values(maybe-copy-sig-types(sig.signature-values, sig.signature-number-values), sig.signature-rest-value) end method; define method function-return-values (function :: ) => (return-value-types :: , rest-return-value :: false-or()) values(vector(slot-type(method-slot-descriptor(function))), #f) end method; // eof