xref: /Universal-ctags/main/dependency_p.h (revision 9650c4ce6ee28a9c28dd3c4f76738c7dce66ec38)
1 /*
2  *
3  *  Copyright (c) 2016, Red Hat, Inc.
4  *  Copyright (c) 2016, Masatake YAMATO
5  *
6  *  Author: Masatake YAMATO <yamato@redhat.com>
7  *
8  *   This source code is released for free distribution under the terms of the
9  *   GNU General Public License version 2 or (at your option) any later version.
10  *
11  */
12 #ifndef CTAGS_MAIN_DEPENDENCY_PRIVATE_H
13 #define CTAGS_MAIN_DEPENDENCY_PRIVATE_H
14 
15 /*
16 *   INCLUDE FILES
17 */
18 #include "general.h"  /* must always come first */
19 
20 #include "dependency.h"
21 #include "kind.h"
22 #include "types.h"
23 
24 /*
25 *   MACROS
26 */
27 #define foreachSlaveParser(VAR)			\
28 	VAR = NULL;								\
29 	while ((VAR = getNextSlaveParser (VAR)) != NULL)
30 
31 
32 /*
33 *   DATA DECLARATIONS
34 */
35 struct slaveControlBlock;	/* Opaque data type for parse.c */
36 
37 /*
38 *   FUNCTION PROTOTYPES
39 */
40 extern void linkDependencyAtInitializeParsing (depType dtype,
41 						   parserDefinition *const master,
42 						   struct slaveControlBlock *masterSCB,
43 						   struct kindControlBlock *masterKCB,
44 						   parserDefinition *const slave,
45 						   struct kindControlBlock *slaveKCB,
46 						   void *data);
47 
48 extern struct slaveControlBlock *allocSlaveControlBlock (parserDefinition *parser);
49 extern void freeSlaveControlBlock (struct slaveControlBlock *cb);
50 extern void initializeDependencies (parserDefinition *parser,
51 									struct slaveControlBlock *cb);
52 extern void finalizeDependencies (parserDefinition *parser,
53 								  struct slaveControlBlock *cb);
54 
55 extern slaveParser *getFirstSlaveParser(struct slaveControlBlock *controlBlock);
56 extern slaveParser *getNextSlaveParser(slaveParser *last);
57 
58 #endif	/* CTAGS_MAIN_DEPENDENCY_PRIVATE_H */
59