Module: common-dylan-internals 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 ////////////////////////////////////////////////////////////////////////////// // %floor/ (dividend :: , divisor :: ) // => quotient :: , remainder :: // // %ceiling/ (dividend :: , divisor :: ) // => quotient :: , remainder :: // // %round/ (dividend :: , divisor :: ) // => quotient :: , remainder :: // // %truncate/ (dividend :: , divisor :: ) // => quotient :: , remainder :: // // %divide (dividend :: , divisor :: ) // => quotient :: , remainder :: define macro division-definer { define division ?:name ?lowlevel:name } => { define sealed generic ?name (dividend :: , divisor :: ) => (quotient :: , remainder :: ); define inline method ?name (dividend :: , divisor :: ) => (quotient :: , remainder :: ); ?lowlevel(dividend, divisor); end method; define inline method ?name (dividend :: , divisor :: ) => (quotient :: , remainder :: ); ?lowlevel(dividend, coerce-abstract-integer-to-machine-word(divisor)); end method; define inline method ?name (dividend :: , divisor :: ) => (quotient :: , remainder :: ); ?lowlevel(coerce-abstract-integer-to-machine-word(dividend), divisor); end method; define inline method ?name (dividend :: , divisor :: ) => (quotient :: , remainder :: ); ?lowlevel(coerce-abstract-integer-to-machine-word(dividend), coerce-abstract-integer-to-machine-word(divisor)); end method; } end; define division %floor/ machine-word-floor/; define division %ceiling/ machine-word-ceiling/; define division %round/ machine-word-round/; define division %truncate/ machine-word-truncate/; define division %divide machine-word-divide;