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