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 :: ) as (, x.pointer-pointer); // A bit naughty? end method; ///// INDEXED-REMOTE-VALUE define method indexed-remote-value (x :: , i :: ) => (_ :: ) x + (i * 4); end method; ///// AS-REMOTE-VALUE define method as-remote-value (x :: ) => (_ :: ) let v = make (); v.pointer-pointer := x; v; end method; ///// TAGGED-REMOTE-VALUE-AS-INTEGER define method tagged-remote-value-as-integer (x :: ) => (_ :: ) nub-primitive-tagged-value-as-integer (x); end method; ///// TAGGED-REMOTE-VALUE-AS-CHARACTER define method tagged-remote-value-as-character (x :: ) => (_ :: ) nub-primitive-tagged-value-as-character (x); end method; ///// INTEGER-AS-TAGGED-REMOTE-VALUE define method integer-as-tagged-remote-value (i :: ) => (_ :: ) nub-primitive-integer-as-tagged-value (i); end method; ///// CHARACTER-AS-TAGGED-REMOTE-VALUE define method character-as-tagged-remote-value (c :: ) => (_ :: ) nub-primitive-character-as-tagged-value (c); end method; ///// AS-DYLAN-STRING define method as-dylan-string (s :: ) => (_ :: ) let sz = size(s); let ds = make (, size: sz); let i = 0; for (ch in s) ds[i] := as (, ch); i := i + 1; end for; ds; end method; // eof