Updated Spanish translation
[anjuta-git-plugin.git] / tagmanager / parse.h
blobfe061e8b4f4e4be11e9a2853a75f54ed558a95b0
1 /*
2 * $Id$
4 * Copyright (c) 1998-2003, Darren Hiebert
6 * This source code is released for free distribution under the terms of the
7 * GNU General Public License.
9 * Private definitions for parsing support.
11 #ifndef _PARSE_H
12 #define _PARSE_H
15 * INCLUDE FILES
17 #include "general.h" /* must always come first */
18 #include "parsers.h" /* contains list of parsers */
19 #include "strlist.h"
21 #include "entry.h"
24 * MACROS
26 #define KIND_COUNT(kindTable) (sizeof(kindTable)/sizeof(kindOption))
28 #define LANG_AUTO (-1)
29 #define LANG_IGNORE (-2)
32 * DATA DECLARATIONS
34 typedef int langType;
36 typedef void (*createRegexTag) (const vString* const name);
37 typedef void (*simpleParser) (void);
38 typedef boolean (*rescanParser) (const unsigned int passCount);
39 typedef void (*parserInitialize) (langType language);
40 typedef int (*tagEntryFunction) (const tagEntryInfo *const tag);
42 typedef struct sKindOption {
43 boolean enabled; /* are tags for kind enabled? */
44 int letter; /* kind letter */
45 const char* name; /* kind name */
46 const char* description; /* displayed in --help output */
47 } kindOption;
49 typedef struct {
50 /* defined by parser */
51 char* name; /* name of language */
52 kindOption* kinds; /* tag kinds handled by parser */
53 unsigned int kindCount; /* size of `kinds' list */
54 const char *const *extensions; /* list of default extensions */
55 const char *const *patterns; /* list of default file name patterns */
56 parserInitialize initialize; /* initialization routine, if needed */
57 simpleParser parser; /* simple parser (common case) */
58 rescanParser parser2; /* rescanning parser (unusual case) */
59 boolean regex; /* is this a regex parser? */
61 /* used internally */
62 unsigned int id; /* id assigned to language */
63 boolean enabled; /* currently enabled? */
64 stringList* currentPatterns; /* current list of file name patterns */
65 stringList* currentExtensions; /* current list of extensions */
66 } parserDefinition;
68 typedef parserDefinition* (parserDefinitionFunc) (void);
70 typedef struct {
71 size_t start; /* character index in line where match starts */
72 size_t length; /* length of match */
73 } regexMatch;
75 typedef void (*regexCallback) (const char *line, const regexMatch *matches, unsigned int count);
78 * FUNCTION PROTOTYPES
81 /* Each parsers' definition function is called. The routine is expected to
82 * return a structure allocated using parserNew(). This structure must,
83 * at minimum, set the `parser' field.
85 extern parserDefinitionFunc PARSER_LIST;
86 extern parserDefinition** LanguageTable;
88 /* Legacy interface */
89 extern boolean includingDefineTags (void);
91 /* Language processing and parsing */
92 extern void makeSimpleTag (const vString* const name, kindOption* const kinds, const int kind);
93 extern parserDefinition* parserNew (const char* name);
94 extern const char *getLanguageName (const langType language);
95 extern langType getNamedLanguage (const char *const name);
96 extern langType getFileLanguage (const char *const fileName);
97 extern void installLanguageMapDefault (const langType language);
98 extern void installLanguageMapDefaults (void);
99 extern void clearLanguageMap (const langType language);
100 extern boolean removeLanguageExtensionMap (const char *const extension);
101 extern void addLanguageExtensionMap (const langType language, const char* extension);
102 extern void addLanguagePatternMap (const langType language, const char* ptrn);
103 extern void printLanguageMap (const langType language);
104 extern void printLanguageMaps (const langType language);
105 extern void enableLanguages (const boolean state);
106 extern void enableLanguage (const langType language, const boolean state);
107 extern void initializeParsing (void);
108 extern void freeParserResources (void);
109 extern void processLanguageDefineOption (const char *const option, const char *const parameter);
110 extern boolean processKindOption (const char *const option, const char *const parameter);
111 extern void printKindOptions (void);
112 extern void printLanguageKinds (const langType language);
113 extern void printLanguageList (void);
114 extern boolean parseFile (const char *const fileName);
116 /* Regex interface */
117 #ifdef HAVE_REGEX
118 extern void findRegexTags (void);
119 extern boolean matchRegex (const vString* const line, const langType language);
120 #endif
121 extern boolean processRegexOption (const char *const option, const char *const parameter);
122 extern void addLanguageRegex (const langType language, const char* const regex);
123 extern void addTagRegex (const langType language, const char* const regex, const char* const name, const char* const kinds, const char* const flags);
124 extern void addCallbackRegex (const langType language, const char *const regex, const char *const flags, const regexCallback callback);
125 extern void disableRegexKinds (const langType language);
126 extern boolean enableRegexKind (const langType language, const int kind, const boolean mode);
127 extern void printRegexKinds (const langType language, boolean indent);
128 extern void freeRegexResources (void);
129 extern void checkRegex (void);
131 /* Extra stuff for Tag Manager */
132 extern tagEntryFunction TagEntryFunction;
133 extern void setTagEntryFunction(tagEntryFunction entry_function);
137 #endif /* _PARSE_H */
139 /* vi:set tabstop=4 shiftwidth=4: */