| /* %%%%%%%%%%%%%%%%%%%% (c) William Landi 1991 %%%%%%%%%%%%%%%%%%%%%%%%%%%% */ |
| /* Permission to use this code is granted as long as the copyright */ |
| /* notice remains in place. */ |
| /* ================================ buffer.h =============================== */ |
| /* This module was created for 2 purposes: */ |
| /* 1) Store Modify records (of object code) till after all text */ |
| /* of a module (so that a modify record is always after the text */ |
| /* record for the same location) */ |
| /* 2) Store Error messages. Sometimes errors are detected that can */ |
| /* not be output immediately (in the middle of writting out */ |
| /* another record). This allows you to save error messages till */ |
| /* able to output them. */ |
| |
| /* type BUFFER Linked list of strings */ |
| struct BUFFER { |
| char *LINE; |
| struct BUFFER *NEXT; |
| }; |
| |
| /* type BUFFER_TYPE Pointers to both ends of the linked */ |
| /* list and whether contains */ |
| /* modification records or errors */ |
| struct BUFFER_TYPE { |
| struct BUFFER *HEAD_OF_BUFFER; |
| struct BUFFER *TAIL_OF_BUFFER; |
| int KIND; |
| }; |
| |
| |
| /* MOD_REC_BUF GLOBAL buffer for modification records*/ |
| extern struct BUFFER_TYPE MOD_REC_BUF; |
| |
| /* ERROR_REC_BUF GLOBAL buffer for error messages */ |
| extern struct BUFFER_TYPE ERROR_REC_BUF; |
| |
| /* ------------------------- OUTPUT_BUFFER --------------------------------- */ |
| /* 3 parameters: */ |
| /* 1) struct BUFFER_TYPE *BUF; the buffer to output */ |
| /* 2) FILE *OUTPUT; the stream to output to */ |
| /* 3) int PASS; which pass called from 1 = pass1, */ |
| /* Puts everything in buffer BUF into output stream OUTPUT. PASS (1 or 2) is */ |
| /* used as a fix to a problem I. In pass2, I call a procedure used by pass1, */ |
| /* which outputs errors in a different format. This is used to, in pass2, */ |
| /* convert the pass1 errors. Upon completion the buffer is empty. */ |
| extern void OUTPUT_BUFFER(); |
| |
| /* ----------------------- ADD_TO_END_OF_BUFFER ---------------------------- */ |
| /* 2 parameters: */ |
| /* 1) struct BUFFER_TYPE *BUF; the buffer to add onto */ |
| /* 2) char *INPUT_STR; what to add onto the buffer */ |
| /* Puts the string INPUT_STR, on the end of the buffer pointed to by BUF. */ |
| extern void ADD_TO_END_OF_BUFFER(); |
| |
| |