xref: /Universal-ctags/main/entry_p.h (revision 4a3ba775e2c9a7ca1c7660d13ace6bdd69140d57)
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