openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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__ */