X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Finput.h;h=dfa0ad03b92eaabd56bfa7b863fde985cc1682cc;hb=112ae0e3db511ddd92e769c11328646ebe2a6240;hp=ad291c0f82648adec2d2ea022a9c50ede3196d85;hpb=bc8f4f3a1e7f1f599974239cc15f1cab6aca846b;p=cc65 diff --git a/src/cc65/input.h b/src/cc65/input.h index ad291c0f8..dfa0ad03b 100644 --- a/src/cc65/input.h +++ b/src/cc65/input.h @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 2000-2010, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -40,40 +40,40 @@ #include +/* common */ +#include "strbuf.h" + /*****************************************************************************/ -/* data */ +/* data */ /*****************************************************************************/ -/* Maximum length of an input line and the corresponding char array */ -#define LINEMAX 4095 -#define LINESIZE LINEMAX+1 +/* An enum that describes different types of input files. The members are + * choosen so that it is possible to combine them to bitsets + */ +typedef enum { + IT_MAIN = 0x01, /* Main input file */ + IT_SYSINC = 0x02, /* System include file (using <>) */ + IT_USRINC = 0x04, /* User include file (using "") */ +} InputType; + +/* Forward for an IFile structure */ +struct IFile; -/* Input line stuff */ -extern char* line; -extern const char* lptr; /* ### Remove this */ +/* The current input line */ +extern StrBuf* Line; /* Current and next input character */ extern char CurC; extern char NextC; -/* Struct that describes an input file */ -typedef struct IFile IFile; -struct IFile { - unsigned Index; /* File index */ - unsigned Usage; /* Usage counter */ - unsigned long Size; /* File size */ - unsigned long MTime; /* Time of last modification */ - char Name[1]; /* Name of file (dynamically allocated) */ -}; - /*****************************************************************************/ -/* Code */ +/* Code */ /*****************************************************************************/ @@ -81,32 +81,37 @@ struct IFile { void OpenMainFile (const char* Name); /* Open the main file. Will call Fatal() in case of failures. */ -void OpenIncludeFile (const char* Name, unsigned DirSpec); +void OpenIncludeFile (const char* Name, InputType IT); /* Open an include file and insert it into the tables. */ -void ClearLine (void); -/* Clear the current input line */ - -void InitLine (const char* Buf); -/* Initialize lptr from Buf and read CurC and NextC from the new input line */ - void NextChar (void); /* Read the next character from the input stream and make CurC and NextC * valid. If end of line is reached, both are set to NUL, no more lines * are read by this function. */ +void ClearLine (void); +/* Clear the current input line */ + +StrBuf* InitLine (StrBuf* Buf); +/* Initialize Line from Buf and read CurC and NextC from the new input line. + * The function returns the old input line. + */ + int NextLine (void); /* Get a line from the current input. Returns 0 on end of file. */ +const char* GetInputFile (const struct IFile* IF); +/* Return a filename from an IFile struct */ + const char* GetCurrentFile (void); /* Return the name of the current input file */ unsigned GetCurrentLine (void); /* Return the line number in the current input file */ -void WriteDependencies (FILE* F, const char* OutputFile); -/* Write a makefile dependency list to the given file */ +void CreateDependencies (void); +/* Create dependency files requested by the user */