cint_interpreter.h (3356B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: cint_interpreter.h 8 * Purpose: CINT interpreter interface 9 */ 10 11 #ifndef __CINT_INTERPRETER_H__ 12 #define __CINT_INTERPRETER_H__ 13 14 #include "cint_ast.h" 15 #include "cint_types.h" 16 #include "cint_error.h" 17 #include "cint_datatypes.h" 18 19 20 typedef struct cint_interpreter_debug_state_s { 21 int dtrace; 22 int atrace; 23 int ftrace; 24 int aunique; 25 } cint_interpreter_debug_state_t; 26 27 typedef struct cint_interpreter_state_s { 28 29 cint_interpreter_debug_state_t debug; 30 int parse_only; 31 int print_expr; 32 int extended_events; 33 } cint_interpreter_state_t; 34 35 typedef enum cint_interpreter_event_s { 36 cintEventNone, 37 cintEventReset, 38 cintEventDatatypeAdded, 39 cintEventGlobalVariableAdded, 40 cintEventLast 41 } cint_interpreter_event_t; 42 43 typedef int (*cint_event_handler_cb)(void* cookie, cint_interpreter_event_t event); 44 45 typedef int (*cint_interpreter_init_cb_t)(void *user_data); 46 47 extern cint_interpreter_state_t interp; 48 49 extern cint_error_t cint_interpreter_init(void); 50 extern cint_error_t cint_interpreter_event(cint_interpreter_event_t event); 51 extern cint_error_t cint_interpreter_event_register(cint_event_handler_cb handler, void* cookie); 52 extern cint_error_t cint_interpreter_event_unregister(cint_event_handler_cb handler); 53 54 extern cint_error_t cint_interpreter_add_atomics(cint_atomic_type_t* atomics); 55 extern cint_error_t cint_interpreter_add_data(cint_data_t* data, void *dlhandle); 56 extern cint_error_t cint_interpreter_validate_types(int print); 57 extern cint_error_t cint_interpreter_evaluate(cint_ast_t* root); 58 extern cint_error_t cint_interpreter_show_variables(void); 59 extern cint_error_t cint_interpreter_create_pointer(const char* basetype, const char* name, void* ptr); 60 61 extern int cint_interpreter_is_type(const char* str); 62 63 extern int cint_interpreter_is_iterator(const char* str, cint_ast_t** handle); 64 extern cint_ast_t* cint_interpreter_iterator(cint_ast_t* handle, cint_ast_t* arguments, cint_ast_t* statements); 65 66 extern int cint_interpreter_is_macro(const char* str, cint_ast_t** handle); 67 extern cint_ast_t* cint_interpreter_macro(cint_ast_t* handle, cint_ast_t* arguments); 68 69 extern int cint_interpreter_add_function(cint_function_t* f); 70 extern int cint_interpreter_run(const char* fname); 71 extern int cint_syntax_check(void); 72 73 extern cint_ast_t* cint_interpreter_tree(void); 74 75 extern int cint_interpreter_initialize_register(cint_interpreter_init_cb_t init_cb, 76 void *user_data); 77 extern int cint_interpreter_initialize_unregister(cint_interpreter_init_cb_t init_cb, 78 void *user_data); 79 80 81 #if CINT_CONFIG_INCLUDE_XINCLUDE == 1 82 extern int cint_interpreter_include_set(const char* path); 83 extern int cint_interpreter_include_add(const char* path); 84 extern int cint_interpreter_include_get(const char* name, char** path_rv); 85 #endif 86 87 #if CINT_CONFIG_INCLUDE_PARSER == 1 88 extern int cint_interpreter_parse(void* handle, const char* prompt, int argc, char** argv); 89 extern cint_ast_t* cint_interpreter_parse_string(const char* expr); 90 #endif 91 92 93 94 #endif /* __INTERPRETER_H__ */