<<>> <> <> <> <> <<>> <> <<>> <> <<>> <> <<>> <> <<>> <> <<>> <> DIRECTORY CardTab, IntCodeDefs, IO, Rope; C2CAccess: CEDAR DEFINITIONS = BEGIN InputParameters: TYPE = RECORD [ <> <<-->> moduleName: Rope.ROPE, <<--Used to generate start up sequence>> versionStamp: Rope.ROPE, <<--Used for obvious reasons>> fileName: Rope.ROPE ¬ NIL, <<--File is not accessed by C2C but name is documented in C file >> commentLines: LIST OF Rope.ROPE ¬ NIL, <<--Will be included into the C code as comments >> <<--Lines do not need to have the form of comments>> root: IntCodeDefs.Node, <<--Root of the code graph>> <<--C2C may do irreversible changes to the node tree>> names: CardTab.Ref, <<--Lookup for names for named variables>> labels: CardTab.Ref, <<--Lookup for names for procedures>> outputStream: IO.STREAM, <<--Stream for the generated C code.>> <<--C2C will not close the stream.>> lineNumberStream: IO.STREAM, <<--Stream for the generated line number information.>> <<--C2C will not close the stream.>> reportStream: IO.STREAM ¬ NIL, <<--Stream for rare progress messages (The little dots).>> <<--C2C will not close the stream.>> getErrorStream: PROC [] RETURNS [IO.STREAM], <<--Output stream requested on demand only, as normally there are no errors.>> <<--Procedure called only once, even if multiple errors are written. >> <<--Caller is adviced to not really use the generated C code when an error stream has been requested. >> <<--C2C will not close the stream. >> namesStream: IO.STREAM ¬ NIL, <<--Option for input of external definition for names; normally NIL>> supportReferenceCounting: BOOL ¬ FALSE, <<--Option whether runtime calls for reference counting ought to be made>> extraShortAndUgly: BOOL ¬ FALSE, <<--Option to save bytes in C file...>> generateSourceMacros: BOOL ¬ TRUE, generateDBXStyleSourceMacros: BOOL ¬ FALSE, generateLineNumberStream: BOOL ¬ FALSE, supportInlineFloatingPoint: BOOL ¬ FALSE, <<--Option whether floatingpoint ought to be generated inline>> lineTerminationChar: CHAR ¬ '\n, <<--Typically one of lf or cr...>> destroyRoot: BOOL ¬ TRUE, <<--Whether the root node tree ought to be destroyed to help the garbage collector>> debuggingCode: BOOL ¬ FALSE, <<--If debuggingCode is TRUE, more debugging info is included into the generated code>> debuggingMode: BOOL ¬ TRUE <<--If not in debugging mode, C2C tries to catch errors and make nice messages>> ]; params: --PRIVATE-- C2CAccess.InputParameters; <> <> <> <<>> CallC2C: PROC [parameters: InputParameters] RETURNS [ok: BOOL, synopsis: Rope.ROPE]; <> <> ExcludeReEntry: PROC [inner: PROC[]]; <> ImSorryC2CIsNotReEntrant: ERROR; <> END.