-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 24-May-07, at 1:11 AM, |/|/ Bendick wrote:
While on the thread of the mysteries of the internals of gambit... I decided I was going to fix the output-port-width bug, specifically, thru emacs
(output-port-width (current-output-port)) => 80
no matter what the actual width is. But I ran into a brick wall. Line 3750 of _io.scm references macro-character-port-output-width.
% grep -r macro-character-port-output-width gambc-4.0b22 gambc-4.0b22/lib/_io.scm: ((macro-character-port-output-width port) port)) %
So that's the only occurrence of macro-character-port-output-width.... how does that work?
In _io#.scm you will find this type definition:
(define-type-of-port character-port id: 85099702-35ec-4cb8-ae55-13c4b9b05d10 type-exhibitor: macro-type-character-port constructor: macro-make-character-port implementer: implement-type-character-port macros: prefix: macro- opaque: unprintable:
extender: define-type-of-character-port
rbuf ; character read buffer (a string) rlo ; low pointer (start of unread characters) rhi ; high pointer (end of unread characters) rchars ; number of characters read at start of read buffer rlines ; number of lines read up to low pointer rcurline ; absolute character position where current line starts rbuf-fill ; procedure to read characters into the read buffer peek-eof? ; peeking the next character should return end- of-file?
wbuf ; character write buffer (a string) wlo ; low pointer (start of unwritten characters) whi ; high pointer (end of unwritten characters) wchars ; number of characters written at start of write buffer wlines ; number of lines written up to high pointer wcurline ; absolute character position where current line starts wbuf-drain ; procedure to write characters from the write buffer
input-readtable ; readtable for reading output-readtable ; readtable for writing output-width ; procedure to get the output width in characters )
As with other type definitions it defines a constructor, predicate and accessors based on the name of the type and the name of the fields. So this type definition creates the accessor for the character port's output-width. But because of the "macros:" attribute, the accessor is defined as a macro, and because of the "prefix: macro-" line the name will be prefixed with "macro-", so the name of the accessor is
macro-character-port-output-width
Next question?
Marc