1 /*
2 * Copyright (c) 2017, Red Hat, Inc.
3 * Copyright (c) 2017, Masatake YAMATO
4 *
5 * This source code is released for free distribution under the terms of the
6 * GNU General Public License version 2 or (at your option) any later version.
7 *
8 * main part private interface to entry.c
9 */
10 #ifndef CTAGS_PRIVATE_ENTRY_H
11 #define CTAGS_PRIVATE_ENTRY_H
12
13 /*
14 * INCLUDE FILES
15 */
16 #include "general.h" /* must always come first */
17 #include "entry.h"
18 #include "types.h"
19
20 /*
21 * FUNCTION PROTOTYPES
22 */
23 extern const kindDefinition* getTagKind(const tagEntryInfo *const tag);
24 extern char getTagKindLetter(const tagEntryInfo *const tag);
25 extern const char* getTagKindName(const tagEntryInfo *const tag);
26
27 extern const roleDefinition* getTagRole(const tagEntryInfo *const tag, int roleIndex);
28
29 extern void freeTagFileResources (void);
30 extern const char *tagFileName (void);
31 extern void openTagFile (void);
32 extern void closeTagFile (const bool resize);
33 extern void setupWriter (void *writerClientData);
34 extern bool teardownWriter (const char *inputFilename);
35
36 extern unsigned long numTagsAdded(void);
37 extern void setNumTagsAdded (unsigned long nadded);
38 extern unsigned long numTagsTotal(void);
39 extern unsigned long maxTagsLine(void);
40 extern void invalidatePatternCache(void);
41 extern void tagFilePosition (MIOPos *p);
42 extern void setTagFilePosition (MIOPos *p, bool truncation);
43 extern const char* getTagFileDirectory (void);
44 extern void getTagScopeInformation (tagEntryInfo *const tag,
45 const char **kind, const char **name);
46
47 /* Getting line associated with tag */
48 extern char *readLineFromBypassForTag (vString *const vLine, const tagEntryInfo *const tag,
49 long *const pSeekValue);
50
51 /* Generating pattern associated tag, caller must do eFree for the returned value. */
52 extern char* makePatternString (const tagEntryInfo *const tag);
53
54
55 /* language is optional: can be NULL. */
56 extern bool writePseudoTag (const ptagDesc *pdesc,
57 const char *const fileName,
58 const char *const pattern,
59 const char *const parserName);
60
61 void corkTagFile(unsigned int corkFlags);
62 void uncorkTagFile(void);
63
64 extern void makeFileTag (const char *const fileName);
65
66 extern const tagField* getParserFieldForIndex (const tagEntryInfo * tag, int index);
67
68
makeRoleBit(int roleIndex)69 CTAGS_INLINE roleBitsType makeRoleBit(int roleIndex)
70 {
71 if (roleIndex == ROLE_DEFINITION_INDEX)
72 return 0;
73 else
74 return ((roleBitsType)1) << roleIndex;
75 }
76
77 #endif /* CTAGS_PRIVATE_ENTRY_H */
78