! temporary imitation of an approximation of the Collage interface ! Copyright: 1996, 1998 Functional Objects, Inc. All rights reserved. ! $HopeName$ ! $Date: 2004/03/12 00:09:31 $ ! input file: ARGV:-input \n=@bind{heading;}@write{${.OUT};@imitate-collage{@read{$1}}}\ @unbind{heading} ! directory containing the header files: ARGV:-idir \n=@set{idir;$1} imitate-collage:\Idefine interface *include\W\W\ \Iend\I\L*\;=\N@do-files{$3}\N imitate-collage:=$1 imitate-collage:=$1 imitate-collage:?=? include-files:\:= include-files:\"\"=@collect-files{$0}@end include-files:\{\}=$1@end include-files:= collect-files:\"\"=@define{desired-file\:@quote{$1}\=\$0\@end}$1\n collect-files:\S=;,= collect-files:?=@failed{error Collage-include-files $0} ! process files that have not yet been done do-files:= do-files:=\ @define{done-file\:@quote{$1}\=\$0\@end}\ @{@read{@makepath{${idir;};$1;}}} do-files:\S= do-files:= interface-body:= interface-body:import\:\W\{\}=\ @undefine{relevant-name\:\}\ @define{bad-struct\:\_\\J\\\I\=\$0\@fail}\ @define{bad-struct\:tag\\J\\\I\=\$0\@fail}\ @define{nogood\:\\W\\=\$1\@fail} interface-body:exclude\:\W\{\}= interface-body:equate\:\W\{\}= interface-body:\,=;\;= interface-body:=@failed{error interface-body $1} interface-imports:\A=@set-switch{t;0} interface-imports:= interface-imports:\"\"=@load-only{$1} interface-imports::load-only interface-excludes:= interface-excludes:\"\"=@load-obsolete{$1} interface-excludes::load-obsolete interface-equates:= interface-equates:\,= interface-equates:\"\"\W\=\>\W\<\>=\ @define{type\:\\I$1\\I\\W\\=@quote{\<$2\>}\$1\@end} interface-equates:=@failed{error equate $1} ! required space ReqSpace:\/\/*\n= $0 ReqSpace:\/\*\*\/= $0 ; ReqSpace:=$1 ReqSpace:=@terminate \#include \<\>=@export-end{}\ @define{done-file\:@quote{$1}\=\$0\@end}\ @undefine{desired-file\:@quote{$1}}\ \N\n@{@read{@mergepath{@inpath;$1;}}}\N\n\ @set{export-head;\n\ \ export}@set{export-tail;}\ \/\/ --- end of data from \"$1\" ---\n\n desired-file:=@fail done-file:=@fail ARGV:-include \n=@define{desired-file\:@quote{$1}\=\$0\@end}