xref: /Universal-ctags/main/read.h (revision 64a05963c108af4b7832a2215006ff5cafcaaebb)
1d4c6f1e6SMasatake YAMATO /*
2d4c6f1e6SMasatake YAMATO *   Copyright (c) 1998-2002, Darren Hiebert
3d4c6f1e6SMasatake YAMATO *
4d4c6f1e6SMasatake YAMATO *   This source code is released for free distribution under the terms of the
50ce38835Sviccuad *   GNU General Public License version 2 or (at your option) any later version.
6d4c6f1e6SMasatake YAMATO *
7d4c6f1e6SMasatake YAMATO *   External interface to read.c
8d4c6f1e6SMasatake YAMATO */
95474c2e5SMasatake YAMATO #ifndef CTAGS_MAIN_READ_H
105474c2e5SMasatake YAMATO #define CTAGS_MAIN_READ_H
11d4c6f1e6SMasatake YAMATO 
12d4c6f1e6SMasatake YAMATO /*
13d4c6f1e6SMasatake YAMATO *   INCLUDE FILES
14d4c6f1e6SMasatake YAMATO */
15d4c6f1e6SMasatake YAMATO #include "general.h"  /* must always come first */
16d4c6f1e6SMasatake YAMATO 
17d4c6f1e6SMasatake YAMATO #include <stdio.h>
18d4c6f1e6SMasatake YAMATO #include <ctype.h>
19d4c6f1e6SMasatake YAMATO 
200d502ef0SMasatake YAMATO #include "types.h"
21d4c6f1e6SMasatake YAMATO #include "vstring.h"
22509a47dbSJiří Techet #include "mio.h"
23d4c6f1e6SMasatake YAMATO 
24d4c6f1e6SMasatake YAMATO /*
25d4c6f1e6SMasatake YAMATO *   MACROS
26d4c6f1e6SMasatake YAMATO */
27d4c6f1e6SMasatake YAMATO 
28d4c6f1e6SMasatake YAMATO /*
29d4c6f1e6SMasatake YAMATO *   DATA DECLARATIONS
30d4c6f1e6SMasatake YAMATO */
31d4c6f1e6SMasatake YAMATO 
32d4c6f1e6SMasatake YAMATO enum eCharacters {
33d4c6f1e6SMasatake YAMATO 	/* white space characters */
34d4c6f1e6SMasatake YAMATO 	SPACE         = ' ',
35d4c6f1e6SMasatake YAMATO 	NEWLINE       = '\n',
36d4c6f1e6SMasatake YAMATO 	CRETURN       = '\r',
37d4c6f1e6SMasatake YAMATO 	FORMFEED      = '\f',
38d4c6f1e6SMasatake YAMATO 	TAB           = '\t',
39d4c6f1e6SMasatake YAMATO 	VTAB          = '\v',
40d4c6f1e6SMasatake YAMATO 
41d4c6f1e6SMasatake YAMATO 	/* some hard to read characters */
42d4c6f1e6SMasatake YAMATO 	DOUBLE_QUOTE  = '"',
43d4c6f1e6SMasatake YAMATO 	SINGLE_QUOTE  = '\'',
44d4c6f1e6SMasatake YAMATO 	BACKSLASH     = '\\',
45d4c6f1e6SMasatake YAMATO 
46d4c6f1e6SMasatake YAMATO 	/* symbolic representations, above 0xFF not to conflict with any byte */
47d4c6f1e6SMasatake YAMATO 	STRING_SYMBOL = ('S' + 0xff),
48d4c6f1e6SMasatake YAMATO 	CHAR_SYMBOL   = ('C' + 0xff)
49d4c6f1e6SMasatake YAMATO };
50d4c6f1e6SMasatake YAMATO 
51d4c6f1e6SMasatake YAMATO 
52d4c6f1e6SMasatake YAMATO /*
53d4c6f1e6SMasatake YAMATO *   FUNCTION PROTOTYPES
54d4c6f1e6SMasatake YAMATO */
557449c250SMasatake YAMATO 
567449c250SMasatake YAMATO /* InputFile: reading from fp in inputFile with updating fields in input fields */
57c7adb37bSMasatake YAMATO extern unsigned long getInputLineNumber (void);
58a8b8569aSMasatake YAMATO extern unsigned long getInputLineNumberForFileOffset(long offset);
59f2d8a3d9SJiří Techet extern int getInputLineOffset (void);
60c7adb37bSMasatake YAMATO extern const char *getInputFileName (void);
61c7adb37bSMasatake YAMATO extern MIOPos getInputFilePosition (void);
6246ab94ccSMasatake YAMATO extern MIOPos getInputFilePositionForLine (unsigned int line);
63c7adb37bSMasatake YAMATO extern langType getInputLanguage (void);
64ce990805SThomas Braun extern bool isInputLanguage (langType lang);
65ce990805SThomas Braun extern bool isInputHeaderFile (void);
665c56d939SMasatake YAMATO extern bool isInputLanguageKindEnabled (int kindIndex);
67320b1e8bSMasatake YAMATO extern bool isInputLanguageRoleEnabled (int kindIndex, int roleIndex);
6816a2541cSMasatake YAMATO 
69c0732dcaSMasatake YAMATO extern const unsigned char *getInputFileData (size_t *size);
700d195447SMasatake YAMATO 
71018bce0bSMasatake YAMATO extern int getcFromInputFile (void);
727b90026cSColomban Wendling extern int getNthPrevCFromInputFile (unsigned int nth, int def);
734fffc5afSMasatake YAMATO extern int skipToCharacterInInputFile (int c);
74*64a05963SMasatake YAMATO extern int skipToCharacterInInputFile2 (int c0, int c1);
7561f14fa5SMasatake YAMATO extern void ungetcToInputFile (int c);
761b312fe7SMasatake YAMATO extern const unsigned char *readLineFromInputFile (void);
77f2b9d6ddSMasatake YAMATO 
78c7adb37bSMasatake YAMATO extern unsigned long getSourceLineNumber (void);
79c7adb37bSMasatake YAMATO 
804d82b4dcSJiří Techet /* Raw: reading from given a parameter, mio */
81203c6955SJiří Techet extern char *readLineRaw (vString *const vLine, MIO *const mio);
8278e93ff0SMasatake YAMATO 
83a8778562SMasatake YAMATO extern void     pushLanguage(const langType language);
84a8778562SMasatake YAMATO extern langType popLanguage (void);
85a8778562SMasatake YAMATO 
865474c2e5SMasatake YAMATO #endif  /* CTAGS_MAIN_READ_H */
87