cint_internal.h (5990B)
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_internal.h 8 * Purpose: CINT internal interfaces 9 */ 10 11 #ifndef __CINT_INTERNAL_H__ 12 #define __CINT_INTERNAL_H__ 13 14 #include "cint_config.h" 15 #include "cint_porting.h" 16 #include "cint_types.h" 17 #include "cint_error.h" 18 #include "cint_variables.h" 19 20 /* 21 * Create a variable with given attributes, do not push it into current lscope 22 */ 23 extern cint_error_t 24 cint_variable_create_no_add(cint_variable_t** rvar, 25 const char* vname, 26 const cint_parameter_desc_t* desc, 27 unsigned vflags, 28 void* addr); 29 30 /* 31 * Create a variable with given attributes, also push it into current lscope 32 */ 33 extern cint_error_t 34 cint_variable_create(cint_variable_t** rvar, 35 const char* vname, 36 const cint_parameter_desc_t* desc, 37 unsigned vflags, 38 void* addr); 39 40 41 /* 42 * Char operations 43 */ 44 extern cint_variable_t* 45 cint_auto_char(signed char c); 46 47 extern signed char 48 cint_char_value(cint_variable_t* v); 49 50 extern cint_variable_t* 51 cint_char_set(cint_variable_t* v, char c); 52 53 #define cint_uchar_set(_v, i) cint_char_set(_v, i) 54 #define cint_uchar_value(_v) ((unsigned char)cint_char_value(_v)) 55 56 /* 57 * Short operations 58 */ 59 60 extern cint_variable_t* 61 cint_auto_short(short s); 62 63 extern short 64 cint_short_value(cint_variable_t* v); 65 66 extern cint_variable_t* 67 cint_short_set(cint_variable_t* v, short s); 68 69 70 /* 71 * Integer operations 72 */ 73 extern cint_variable_t* 74 cint_auto_integer(int i); 75 76 extern int 77 cint_integer_value(cint_variable_t* v); 78 79 extern cint_variable_t* 80 cint_integer_set(cint_variable_t* v, int i); 81 82 /* Unsigned treatements */ 83 #define cint_uinteger_set(_v, i) cint_integer_set(_v, i) 84 #define cint_uinteger_value(_v) ((unsigned int)cint_integer_value(_v)) 85 extern cint_variable_t* cint_auto_uinteger(unsigned int i); 86 87 /* 88 * Long integer operations 89 */ 90 extern cint_variable_t* 91 cint_auto_long(long i); 92 93 extern long 94 cint_long_value(cint_variable_t* v); 95 96 extern cint_variable_t* 97 cint_long_set(cint_variable_t* v, long i); 98 99 /* Unsigned treatments */ 100 #define cint_ulong_value(_v) ((unsigned long)cint_long_value(_v)) 101 #define cint_ulong_set(_v, _i) cint_long_set(_v,_i) 102 extern cint_variable_t* cint_auto_ulong(unsigned long i); 103 104 105 /* 106 * Long Long integer operations 107 */ 108 #if CINT_CONFIG_INCLUDE_LONGLONGS == 1 109 #define CINT_LONGLONG long long 110 #else 111 #define CINT_LONGLONG long 112 #endif 113 114 extern cint_variable_t* 115 cint_auto_longlong(CINT_LONGLONG i); 116 117 extern CINT_LONGLONG 118 cint_longlong_value(cint_variable_t* v); 119 120 extern cint_variable_t* 121 cint_longlong_set(cint_variable_t* v, CINT_LONGLONG i); 122 123 /* Unsigned treatements */ 124 #define cint_ulonglong_value(_v) ((unsigned CINT_LONGLONG) cint_longlong_value(_v)) 125 #define cint_ulonglong_set(_v, _i) cint_longlong_set(_v, _i); 126 extern cint_variable_t* cint_auto_ulonglong(unsigned CINT_LONGLONG i); 127 128 129 130 131 /* 132 * Double operations 133 */ 134 #if CINT_CONFIG_INCLUDE_DOUBLES == 1 135 /* Use real double type */ 136 #define CINT_DOUBLE double 137 #else 138 #define CINT_DOUBLE int 139 #endif 140 141 extern cint_variable_t* 142 cint_auto_double(CINT_DOUBLE d); 143 144 extern CINT_DOUBLE 145 cint_double_value(cint_variable_t* v); 146 147 extern cint_variable_t* 148 cint_double_set(cint_variable_t* v, CINT_DOUBLE d); 149 150 extern int 151 cint_logical_value(cint_variable_t* v); 152 153 #define cint_auto_logical cint_auto_integer 154 155 extern void* 156 cint_pointer_value(cint_variable_t* v); 157 158 extern char* 159 cint_cstring_value(const char* s); 160 161 extern int 162 cint_variable_print(cint_variable_t* v, int indent, const char* vname); 163 164 extern int 165 cint_variable_printf(cint_variable_t* v); 166 167 extern int 168 cint_chartoi(const char* str, int* rv); 169 170 extern int 171 cint_ctoi(const char* str, long* rv); 172 173 #if CINT_CONFIG_INCLUDE_LONGLONGS == 1 174 extern int 175 cint_ctolli(const char* str, long long* rv); 176 extern char * 177 cint_lltoa(char *buf, int len, unsigned long long num, int sign, int base, int prec); 178 #endif 179 180 #if CINT_CONFIG_INCLUDE_DOUBLES == 1 181 extern int 182 cint_ctod(const char* str, double* rv); 183 #endif 184 185 extern int 186 cint_is_integer(cint_variable_t* v); 187 188 extern int 189 cint_is_enum(cint_variable_t* v); 190 191 extern cint_variable_t* 192 cint_auto_pointer(const char* type, void* value); 193 194 extern int 195 cint_is_pointer(cint_variable_t* v); 196 197 extern int 198 cint_is_vpointer(cint_variable_t* v); 199 200 extern unsigned 201 cint_atomic_flags(cint_variable_t* v); 202 203 extern int 204 cint_constant_find(const char* name, int* c); 205 206 extern int 207 cint_type_compatible(cint_datatype_t* dt1, cint_datatype_t* dt2); 208 209 extern int 210 cint_type_check(cint_datatype_t* dt1, cint_datatype_t* dt2); 211 212 int 213 cint_eval_type_list(cint_ast_t* ast, char* basetype, int len, 214 unsigned* flags, int is_variable_declaration); 215 216 extern cint_variable_t* 217 cint_auto_string(const char* s); 218 219 extern cint_variable_t* 220 cint_variable_clone(cint_variable_t* v); 221 222 extern cint_variable_t* 223 cint_variable_address(cint_variable_t* v); 224 225 extern char* 226 cint_strlcpy(char* dst, const char* src, int size); 227 228 extern void* 229 cint_maddr_dynamic_struct_t(void*p, int mnum, cint_struct_type_t* parent); 230 231 extern int 232 cint_parameter_count(cint_parameter_desc_t* pd); 233 234 extern int 235 cint_parameter_void(cint_parameter_desc_t* pd); 236 237 extern void 238 cint_fparams_print(cint_parameter_desc_t* pd); 239 240 extern int 241 cint_snprintf_ex(char** dst, int* size, const char* fmt, ...) 242 COMPILER_ATTRIBUTE((format (printf, 3, 4))); 243 244 #if CINT_CONFIG_INCLUDE_CINT_LOAD == 1 245 extern void 246 cint_ast_cint_cmd_unload(void *handle); 247 #endif 248 249 extern void cint_variable_data_copy(cint_variable_t* dst, 250 cint_variable_t* src); 251 252 extern int 253 cint_array_combine_dimensions(cint_parameter_desc_t * type, 254 const cint_parameter_desc_t * parameter); 255 256 #endif /* __CINT_INTERNAL_H__ */