* print.h (SCM_PRINT_STATE_P): Removed SCM_NIMP test. (NIMP
macros should by convention not test for NIMPness.)
(SCM_COERCE_OPORT): Adjust indentation.
* print.c (scm_valid_oport_value_p): Adjusted indentation; Added
SCM_NIMP test before SCM_PRINT_STATE_P.
* struct.c, struct.h, gc.c: Renamed:
scm_struct_i_layout --> scm_vtable_index_layout
scm_struct_i_vcell --> scm_vtable_index_vcell
scm_struct_i_vtable --> scm_vtable_index_vtable
scm_struct_i_printer --> scm_vtable_index_printer
scm_struct_i_vtable_offset --> scm_vtable_offset_user
* struct.c (scm_print_struct): Use new printer slot; Default
printing: Also output hex code of vtable so that type identity
will be indicated as well.
(scm_init_struct): Updated required_vtable_fields to "pruosrpw";
Removed struct_printer_var; Removed struct-vtable-offset;
(vtable-index-layout, vtable-index-vtable, vtable-index-printer,
vtable-offset-user): New constants.
* struct.h (scm_struct_i_vtable_offset): Bumped from 3 to 4.
(scm_struct_i_printer, SCM_STRUCT_PRINTER): New slot in vtables.
If this slot contains a procedure, use that to print structures of
the type represented by this vtable.
* print.c (scm_iprin1): Don't print arguments of macro
transformers. (They are always: exp env.); Bugfix: Unmemoize
transformer source with correct environment.
(struct scm_print_state) [revealed]: New field.
(scm_print_state_vtable): Make visible to the outside world for
type checking purposes.
(scm_valid_oport_value_p): New prototype.
* print.c (scm_valid_oport_value_p): New function to check whether
a certain value is acceptable as a port argument.
(scm_print_state_vtable): New variable.
(scm_free_print_state): Set `revealed' field to false.
(scm_iprin1): Call user supplied closure printer with
scm_printer_apply. Print in the traditional way when there isn't
one or when it returns #f.
(scm_prin1, scm_display, scm_write, scm_newline, scm_write_char):
Accept a port/print-state pair in addition to just a port.
(scm_prin1): Don't return the print_state to the pool when it has
been `revealed'.
(scm_printer_apply): Set `revealed' field of print_state to true.
(scm_init_print): Set scm_print_state_vtable.
(print_state_fluid, print_state_fluid_num): Removed.
state as nested data while they are printed.
(print_state_fluid, print_state_fluid_num): New variables.
(scm_init_print): Initialize them.
(scm_iprin): If print_state_fluid carries a print_state, use that
instead of creating a new one.
(scm_printer_apply, apply_stub, struct apply_data): New
definitions to help with calling printer functions written in
Scheme.
* print.h (scm_printer_apply): New prototype.
ANSI declarations combined with K&R definitions. We'll
appease it a little bit. But when it invades France, we fight.
* print.c (scm_iprlist): Change 'tlr' argument to an int.
* print.h (scm_iprlist): Here too.
* numbers.c (scm_divbigdig): Change definition to match
declaration in numbers.h.
* unif.c (scm_makflo): Change definition to match declaration in
unif.h.
the print state representation: Don't use a tail array for
recording of circular references. Resizing of the print state
structure invalidates the print state pointer. To avoid passing
around an indirect print state reference to all printing
functions, we instead let the print state reference a resizable
vector.
scm_iprin1. Removed prototype for scm_prlist.
* print.c, print.h: Closures now print like #<procedure foo (x)>.
People who whish to see the source can do `(print-enable 'source)'.
Removed #ifdef DEBUG_EXTENSIONS.
main #include path; put most of them in a subdirectory called
'libguile'. This avoids naming conflicts between Guile header
files and system header files (of which there were a few).
* Makefile.in (pkgincludedir): Deleted.
(innerincludedir): New variable; this and $(includedir) are enough.
(INCLUDE_CFLAGS): Search for headers in "-I$(srcdir)/..".
(installed_h_files): Divide this up. Now this variable lists
those header files which should go into $(includedir) (i.e. appear
directly in the #include path), and ...
(inner_h_files): ... this new variable says which files appear in
a subdirectory, and are referred to as <libguile/mumble.h>.
(h_files): List them both.
(install): Create innerincludedir, not pkgincludedir. Put
the installed_h_files and inner_h_files in their proper places.
(uninstall): Corresponding changes.
* alist.h, append.h, arbiters.h, async.h, boolean.h, chars.h,
continuations.h, debug.h, dynwind.h, error.h, eval.h, fdsocket.h,
feature.h, fports.h, gc.h, genio.h, gsubr.h, hash.h, init.h,
ioext.h, kw.h, libguile.h, list.h, markers.h, marksweep.h,
mbstrings.h, numbers.h, options.h, pairs.h, ports.h, posix.h,
print.h, procprop.h, procs.h, ramap.h, read.h, root.h,
sequences.h, smob.h, socket.h, srcprop.h, stackchk.h, stime.h,
strings.h, strop.h, strorder.h, strports.h, struct.h, symbols.h,
tag.h, throw.h, unif.h, variable.h, vectors.h, version.h,
vports.h, weaks.h: Find __scm.h in its new location.
* __scm.h: Find scmconfig.h and tags.h in their new locations
(they're both "inner" files).