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