0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 #ifndef UBFVIEW_H
0036 #define UBFVIEW_H
0037
0038 #ifdef __cplusplus
0039 extern "C" {
0040 #endif
0041
0042
0043 #include <ndrstandard.h>
0044 #include <utlist.h>
0045 #include <exhash.h>
0046 #include <fdatatype.h>
0047 #include <view_cmn.h>
0048
0049
0050
0051
0052 #define NDRX_VIEW_FLAG_ELEMCNT_IND_C 0x00000001
0053 #define NDRX_VIEW_FLAG_1WAYMAP_C2UBF_F 0x00000002
0054 #define NDRX_VIEW_FLAG_LEN_INDICATOR_L 0x00000004
0055 #define NDRX_VIEW_FLAG_0WAYMAP_N 0x00000008
0056 #define NDRX_VIEW_FLAG_NULLFILLER_P 0x00000010
0057 #define NDRX_VIEW_FLAG_1WAYMAP_UBF2C_S 0x00000020
0058
0059
0060 #define NDRX_VIEW_FIELD_SEPERATORS " \t"
0061 #define NDRX_VIEW_TOKEN_START "VIEW"
0062 #define NDRX_VIEW_TOKEN_END "END"
0063 #define NDRX_VIEW_EMPTY_PARAM "-"
0064 #define NDRX_VIEW_FLD_SIZE_MAX 65535
0065 #define NDRX_VIEW_FLD_COUNT_MAX 65535
0066
0067 #define NDRX_VIEW_UBF_BASE 6000
0068 #define NDRX_VIEW_SIZE_DEFAULT_SIZE 1024
0069
0070
0071 #define NDRX_VIEW_QUOTES_NONE 0
0072 #define NDRX_VIEW_QUOTES_SINGLE 1
0073 #define NDRX_VIEW_QUOTES_DOUBLE 2
0074
0075 #define NDRX_VIEW_COUNT_SETUP\
0076 if (f->flags & NDRX_VIEW_FLAG_ELEMCNT_IND_C)\
0077 {\
0078 C_count = (short *)(cstruct+f->count_fld_offset);\
0079 }\
0080 else\
0081 {\
0082 C_count_stor = f->count;\
0083 C_count = &C_count_stor;\
0084 }
0085
0086 #define NDRX_VIEW_LEN_SETUP(OCC, DIMSZ)\
0087 if (f->flags & NDRX_VIEW_FLAG_LEN_INDICATOR_L)\
0088 {\
0089 L_length = (unsigned short *)(cstruct+f->length_fld_offset+\
0090 OCC*sizeof(unsigned short));\
0091 }\
0092 else\
0093 {\
0094 L_length_stor = DIMSZ;\
0095 L_length = &L_length_stor;\
0096 }\
0097
0098
0099
0100
0101
0102
0103
0104
0105 typedef struct ndrx_typedview_field ndrx_typedview_field_t;
0106 struct ndrx_typedview_field
0107 {
0108 char type_name[NDRX_UBF_TYPE_LEN+1];
0109 short typecode;
0110 short typecode_full;
0111 char cname[NDRX_VIEW_CNAME_LEN+1];
0112 char fbname[UBFFLDMAX+1];
0113 BFLDID ubfid;
0114 int count;
0115 char flagsstr[NDRX_VIEW_FLAGS_LEN+1];
0116 long flags;
0117 int size;
0118 char nullval[NDRX_VIEW_NULL_LEN+1];
0119 char nullval_bin[NDRX_VIEW_NULL_LEN+1];
0120 int nullval_bin_len;
0121 int nullval_none;
0122 int nullval_default;
0123 int nullval_quotes;
0124
0125
0126 short nullval_short;
0127 int nullval_int;
0128 long nullval_long;
0129 float nullval_float;
0130 double nullval_double;
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140 int compdataloaded;
0141 char compflags[NDRX_VIEW_COMPFLAGS_LEN];
0142 long offset;
0143 long fldsize;
0144 long count_fld_offset;
0145 long length_fld_offset;
0146
0147
0148 ndrx_typedview_field_t *next, *prev;
0149
0150 EX_hash_handle hh;
0151 };
0152
0153
0154
0155
0156
0157
0158
0159
0160 typedef struct ndrx_typedview ndrx_typedview_t;
0161 struct ndrx_typedview
0162 {
0163 char vname[NDRX_VIEW_NAME_LEN+1];
0164 char filename[PATH_MAX+1];
0165 uint32_t cksum;
0166 long ssize;
0167
0168 ndrx_typedview_field_t *fields;
0169 ndrx_typedview_field_t *fields_h;
0170
0171 EX_hash_handle hh;
0172 };
0173
0174
0175
0176
0177
0178 typedef struct
0179 {
0180 char vname[NDRX_VIEW_NAME_LEN+1];
0181 uint32_t cksum;
0182 long vflags;
0183 char data[0];
0184 } ndrx_view_header;
0185
0186
0187
0188
0189 typedef struct ndrx_viewocc ndrx_viewocc_t;
0190 struct ndrx_viewocc
0191 {
0192 char fldnm[NDRX_VIEW_CNAME_LEN+1];
0193 int occ;
0194 EX_hash_handle hh;
0195 };
0196
0197
0198 extern ndrx_typedview_t *ndrx_G_view_hash;
0199
0200
0201 extern NDRX_API ndrx_typedview_t * ndrx_view_get_handle(void);
0202 extern NDRX_API int ndrx_view_load_directory(char *dir);
0203 extern NDRX_API int ndrx_view_init(void);
0204 extern NDRX_API int ndrx_view_chkload_directories(void);
0205 extern NDRX_API void ndrx_view_deleteall(void);
0206 extern NDRX_API ndrx_typedview_t * ndrx_view_get_view(char *vname);
0207 extern NDRX_API ndrx_typedview_field_t * ndrx_view_get_field(ndrx_typedview_t *v, char *cname);
0208 extern NDRX_API void ndrx_view_cksum_update(ndrx_typedview_t *v, char *str, int len);
0209
0210 extern NDRX_API int ndrx_Bvnull(char *cstruct, char *cname, BFLDOCC occ, char *view);
0211 extern NDRX_API int ndrx_Bvnull_int(ndrx_typedview_t *v, ndrx_typedview_field_t *f,
0212 BFLDOCC occ, char *cstruct);
0213
0214 extern NDRX_API int ndrx_Bvselinit_int(ndrx_typedview_t *v, ndrx_typedview_field_t *f,
0215 BFLDLEN single_occ, char *cstruct);
0216 extern NDRX_API int ndrx_Bvselinit(char *cstruct, char *cname, char *view);
0217
0218 extern NDRX_API int ndrx_Bvsinit_int(ndrx_typedview_t *v, char *cstruct);
0219 extern NDRX_API int ndrx_Bvsinit(char *cstruct, char *view);
0220
0221
0222 extern NDRX_API int ndrx_Bvopt_int(ndrx_typedview_t *v, ndrx_typedview_field_t *f, int option);
0223 extern NDRX_API int ndrx_Bvopt(char *cname, int option, char *view) ;
0224
0225 extern NDRX_API int ndrx_Bvftos_int(UBFH *p_ub, ndrx_typedview_t *v, char *cstruct);
0226 extern NDRX_API int ndrx_Bvftos(UBFH *p_ub, char *cstruct, char *view);
0227
0228 extern NDRX_API int ndrx_Bvstof_int(UBFH *p_ub, ndrx_typedview_t *v, char *cstruct, int mode);
0229 extern NDRX_API int ndrx_Bvstof(UBFH *p_ub, char *cstruct, int mode, char *view);
0230
0231
0232
0233 extern NDRX_API int ndrx_Bvextread (char *cstruct, char *view, FILE *inf,
0234 long (*p_readf)(char *buffer, long bufsz, void *dataptr1),
0235 void *dataptr1, int level, char **p_readbuf_buffered);
0236
0237
0238 extern NDRX_API int ndrx_Bvfprint (char *cstruct, char *view, FILE * outf,
0239 ndrx_plugin_tplogprintubf_hook_t p_writef, void *dataptr1, int level);
0240
0241 extern NDRX_API char * ndrx_Bvfind_int(char *cstruct, ndrx_typedview_t *v,
0242 ndrx_typedview_field_t *f, BFLDOCC occ, BFLDLEN *p_len);
0243
0244 extern NDRX_API char * ndrx_CBvget_int(char *cstruct, ndrx_typedview_t *v,
0245 ndrx_typedview_field_t *f, BFLDOCC occ, char *buf, BFLDLEN *len,
0246 int usrtype, long flags, int mode, int *extralen);
0247 extern NDRX_API int ndrx_CBvget(char *cstruct, char *view, char *cname, BFLDOCC occ,
0248 char *buf, BFLDLEN *len, int usrtype, long flags);
0249
0250 extern NDRX_API char *ndrx_CBvgetalloc(char *cstruct, char *view, char *cname, BFLDOCC occ,
0251 int usrtype, long flags, BFLDLEN *extralen);
0252
0253 extern NDRX_API int ndrx_CBvchg_int(char *cstruct, ndrx_typedview_t *v,
0254 ndrx_typedview_field_t *f, BFLDOCC occ, char *buf,
0255 BFLDLEN len, int usrtype);
0256 extern NDRX_API int ndrx_CBvchg(char *cstruct, char *view, char *cname, BFLDOCC occ,
0257 char *buf, BFLDLEN len, int usrtype);
0258
0259 extern NDRX_API long ndrx_Bvsizeof(char *view);
0260
0261 extern NDRX_API long ndrx_Bvcpy(char *cstruct_dst, char *cstruct_src, char *view);
0262
0263 extern NDRX_API BFLDOCC ndrx_Bvoccur_int(char *cstruct, ndrx_typedview_t *v,
0264 ndrx_typedview_field_t *f, BFLDOCC *maxocc, BFLDOCC *realocc, long *dim_size,
0265 int *fldtype);
0266
0267 extern NDRX_API BFLDOCC ndrx_Bvoccur(char *cstruct, char *view, char *cname,
0268 BFLDOCC *maxocc, BFLDOCC *realocc, long *dim_size, int *fldtype);
0269
0270 extern NDRX_API int ndrx_Bvsetoccur(char *cstruct, char *view, char *cname, BFLDOCC occ);
0271
0272 extern NDRX_API int ndrx_Bvnext (Bvnext_state_t *state, char *view,
0273 char *cname, int *fldtype, BFLDOCC *maxocc, long *dim_size);
0274
0275 extern NDRX_API int ndrx_Bvcmp(char *cstruct1, char *view1, char *cstruct2, char *view2);
0276
0277 extern NDRX_API int ndrx_Bvfprint (char *cstruct, char *view, FILE * outf,
0278 ndrx_plugin_tplogprintubf_hook_t p_writef, void *dataptr1, int level);
0279
0280
0281 extern NDRX_API int ndrx_viewocc_get(ndrx_viewocc_t **hhandle, char *fld);
0282 extern NDRX_API void ndrx_viewocc_free(ndrx_viewocc_t **hhandle);
0283
0284
0285 #ifdef __cplusplus
0286 }
0287 #endif
0288
0289 #endif
0290
0291