module: access-path-implementation synopsis: Make the same as an untyped C pointer so that this stuff works under SCC. author: Paul Howard 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 // This should eventually be ///// define constant = ; // as-integer should be implemented as whatever conversion is provided // between and define method as-integer (x :: ) x end method; define method as-integer-losing-precision (x :: ) x end method; ///// INDEXED-REMOTE-VALUE define method indexed-remote-value (x :: , i :: ) => (_ :: ) x + i; end method; ///// AS-REMOTE-VALUE define method as-remote-value (x :: ) => (_ :: ) x end method; define method as-remote-value-losing-precision (x :: ) => (_ :: ) x end method; ///// TAGGED-REMOTE-VALUE-AS-INTEGER define method tagged-remote-value-as-integer (x :: ) => (_ :: ) truncate (as-integer(x), 4); end method; ///// TAGGED-REMOTE-VALUE-AS-CHARACTER define method tagged-remote-value-as-character (x :: ) => (_ :: ) as (, truncate (as-integer(x), 4)); end method; ///// INTEGER-AS-TAGGED-REMOTE-VALUE // Given an integer, this returns the integer as a correctly tagged // define method integer-as-tagged-remote-value (i :: ) => (x :: ) (i * 4) + 1; end method; //// CHARACTER-AS-TAGGED-REMOTE-VALUE // Given a character, this returns the character as a correctly tagged // define method character-as-tagged-remote-value (c :: ) => (x :: ) (as(, c) * 4) + 2; end method; ///// REMOTE-VALUE-= define method remote-value-= (x :: , y :: ) => (answer :: ) x = y; end method; ///// REMOTE-VALUE-< define method remote-value-< (x :: , y :: ) => (answer :: ) x < y; end method; ///// REMOTE-VALUE-<= define method remote-value-<= (x :: , y :: ) => (answer :: ) x <= y; end method; define method as-dylan-string (s :: ) => (_ :: ) s; end method; // eof define method remote-value-as-string (ap, val :: , radix :: ) => (s :: ) "00000000" // I can't be bothered! end method;