xref: /Universal-ctags/main/script_p.h (revision 653692b7314d752236945a57cda90c19a9bc343c)
1 /*
2 *   Copyright (c) 2020, Masatake YAMATO
3 *   Copyright (c) 2020, Red Hat, Inc.
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 *   This module contains ctags specific optscript objects
9 */
10 
11 #ifndef CTAGS_MAIN_SCRIPT_PRIVATE_H
12 #define CTAGS_MAIN_SCRIPT_PRIVATE_H
13 
14 #include "general.h"  /* must always come first */
15 
16 #include "optscript.h"
17 #include "mio.h"
18 
19 struct optscriptOperatorRegistration {
20 	const char *name;
21 	OptOperatorFn fn;
22 	int arity;
23 	const char *help_str;
24 };
25 extern void optscriptRegisterOperators(EsObject * dict,
26 									   struct optscriptOperatorRegistration regs[], size_t count);
27 
28 extern EsObject *OPTSCRIPT_ERR_NOTAGENTRY;
29 extern EsObject *OPTSCRIPT_ERR_UNKNOWNLANGUAGE;
30 extern EsObject *OPTSCRIPT_ERR_UNKNOWNEXTRA;
31 
32 extern OptVM *optscriptInit (void);
33 
34 extern void optscriptInstallProcs (EsObject *dict, OptOperatorFn matchResultAccessor);
35 
36 extern void optscriptSetup (OptVM *vm, EsObject *dict, int corkIndex);
37 extern void optscriptTeardown (OptVM *vm, EsObject *dict);
38 
39 /* If len is 0, strlen (src) is used instead of 0. */
40 extern EsObject *optscriptRead (OptVM *vm, const char *src, size_t len);
41 extern EsObject *optscriptEval (OptVM *vm, EsObject *code);
42 extern EsObject *optscriptDefine (EsObject *dict, const char *name, EsObject *obj);
43 
44 extern EsObject *optscriptReadAndEval   (OptVM *vm, const char *src, size_t len);
45 extern EsObject *optscriptReadAndDefine (OptVM *vm, EsObject *dict, const char *name,
46 										 const char *src, size_t len);
47 
48 extern EsObject *optscriptLoad          (OptVM *vm, MIO *mio);
49 
50 extern void      optscriptHelp          (OptVM *vm, FILE *fp, EsObject *procdocs);
51 
52 extern xtagType optscriptGetXtagType (const EsObject *extra);
53 
54 typedef struct {
55 	unsigned long delta;		/* for _advanceto operator */
56 	unsigned long line;
57 	MIOPos pos;
58 } matchLoc;
59 extern int OPT_TYPE_MATCHLOC;
60 
61 extern int OPT_TYPE_TAG;
62 #endif	/* CTAGS_MAIN_SCRIPT_PRIVATE_H */
63