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 #ifndef UBF_H
0035 #define UBF_H
0036
0037 #if defined(__cplusplus)
0038 extern "C" {
0039 #endif
0040
0041
0042 #include <stdio.h>
0043 #include <ndrx_config.h>
0044 #include <exdb.h>
0045 #include <expluginbase.h> /**<for log printing hooking */
0046
0047
0048
0049 #define UBF_VERSION 1
0050 #define UBF_EXTENDED
0051 #define MAXUBFLEN 0xffffffff
0052
0053 #define UBFFLDMAX 64
0054
0055
0056
0057 #define BFLD_MIN 0
0058
0059 #define BFLD_SHORT 0
0060
0061 #define BFLD_LONG 1
0062
0063 #define BFLD_CHAR 2
0064
0065 #define BFLD_FLOAT 3
0066
0067 #define BFLD_DOUBLE 4
0068
0069 #define BFLD_STRING 5
0070
0071 #define BFLD_CARRAY 6
0072
0073 #define BFLD_INT 7
0074 #define BFLD_RFU0 8
0075 #define BFLD_PTR 9
0076 #define BFLD_UBF 10
0077 #define BFLD_VIEW 11
0078
0079 #define BFLD_MAX 11
0080
0081
0082 #define BBADFLDID (BFLDID)0
0083
0084 #define BFIRSTFLDID (BFLDID)0
0085
0086 #define BBADFLDOCC (BFLDID)-1
0087
0088 #define BFLDOCCMAX (BFLDID)128
0089
0090 #define BMINVAL 0
0091 #define BERFU0 1
0092 #define BALIGNERR 2
0093 #define BNOTFLD 3
0094 #define BNOSPACE 4
0095 #define BNOTPRES 5
0096 #define BBADFLD 6
0097 #define BTYPERR 7
0098 #define BEUNIX 8
0099 #define BBADNAME 9
0100 #define BMALLOC 10
0101 #define BSYNTAX 11
0102 #define BFTOPEN 12
0103 #define BFTSYNTAX 13
0104 #define BEINVAL 14
0105 #define BERFU1 15
0106 #define BBADTBL 16
0107 #define BBADVIEW 17
0108 #define BVFSYNTAX 18
0109 #define BVFOPEN 19
0110 #define BBADACM 20
0111 #define BNOCNAME 21
0112 #define BEBADOP 22
0113 #define BMAXVAL 22
0114
0115
0116 #define B_FTOS 1
0117 #define B_STOF 2
0118 #define B_OFF 3
0119 #define B_BOTH 4
0120 #define BF_LENGTH UBFFLDMAX
0121
0122 #define BUPDATE 1
0123 #define BOJOIN 2
0124 #define BJOIN 3
0125 #define BCONCAT 4
0126
0127
0128 #define CONF_NDRX_UBFMAXFLDS "NDRX_UBFMAXFLDS"
0129
0130 #define Berror (*ndrx_Bget_Ferror_addr())
0131 #define BFLDID32 BFLDID
0132
0133 #define BVACCESS_NOTNULL 0x00000001
0134
0135
0136 #define NDRX_VIEW_CNAME_LEN 256
0137 #define NDRX_VIEW_FLAGS_LEN 16
0138 #define NDRX_VIEW_NULL_LEN 2660
0139
0140
0141 #define NDRX_VIEW_NAME_LEN 33
0142 #define NDRX_VIEW_COMPFLAGS_LEN 128
0143
0144
0145
0146 typedef int BFLDID;
0147 typedef int BFLDLEN;
0148 typedef int BFLDOCC;
0149 typedef struct Ubfh UBFH;
0150
0151
0152
0153
0154
0155 typedef struct
0156 {
0157 unsigned int vflags;
0158 char vname[NDRX_VIEW_NAME_LEN+1];
0159 char *data;
0160 } BVIEWFLD;
0161
0162
0163
0164
0165
0166 typedef struct
0167 {
0168 BVIEWFLD vdata;
0169 } ndrx_ubf_tls_bufval_t;
0170
0171
0172
0173
0174 struct Bnext_state
0175 {
0176 BFLDID *p_cur_bfldid;
0177 BFLDOCC cur_occ;
0178 UBFH *p_ub;
0179 size_t size;
0180
0181 ndrx_ubf_tls_bufval_t vstorage;
0182 };
0183 typedef struct Bnext_state Bnext_state_t;
0184
0185
0186
0187
0188 struct Bvnext_state
0189 {
0190 void *v;
0191 void *vel;
0192 };
0193 typedef struct Bvnext_state Bvnext_state_t;
0194
0195
0196 typedef struct
0197 {
0198 BFLDID *last_checked;
0199 BFLDID last_Baddfast;
0200 } Bfld_loc_info_t;
0201
0202
0203
0204
0205 extern NDRX_API int * ndrx_Bget_Ferror_addr (void);
0206 extern NDRX_API int * _Bget_Ferror_addr (void);
0207 extern NDRX_API int Blen (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ);
0208 extern NDRX_API int CBadd (UBFH *p_ub, BFLDID bfldid, char * buf, BFLDLEN len, int usrtype);
0209 extern NDRX_API int CBchg (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, char * buf, BFLDLEN len, int usrtype);
0210 extern NDRX_API int CBget (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, char *buf, BFLDLEN *len, int usrtype);
0211 extern NDRX_API int Bdel (UBFH * p_ub, BFLDID bfldid, BFLDOCC occ);
0212 extern NDRX_API int Bpres (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ);
0213 extern NDRX_API int Bproj (UBFH * p_ub, BFLDID * fldlist);
0214 extern NDRX_API int Bprojcpy (UBFH * p_ub_dst, UBFH * p_ub_src, BFLDID * fldlist);
0215 extern NDRX_API BFLDID Bfldid (char *fldnm);
0216 extern NDRX_API char * Bfname (BFLDID bfldid);
0217 extern NDRX_API int Bcpy (UBFH * p_ub_dst, UBFH * p_ub_src);
0218 extern NDRX_API int Bchg (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, char * buf, BFLDLEN len);
0219 extern NDRX_API int Binit (UBFH * p_ub, BFLDLEN len);
0220 extern NDRX_API int Bnext (UBFH *p_ub, BFLDID *bfldid, BFLDOCC *occ, char *buf, BFLDLEN *len);
0221 extern NDRX_API int Bnext2(Bnext_state_t *bnext_state, UBFH *p_ub, BFLDID *bfldid, BFLDOCC *occ, char *buf, BFLDLEN *len, char **d_ptr);
0222 extern NDRX_API int Bget (UBFH * p_ub, BFLDID bfldid, BFLDOCC occ, char * buf, BFLDLEN * buflen);
0223 extern NDRX_API char * Bboolco (char * expr);
0224 extern NDRX_API char * Bfind (UBFH * p_ub, BFLDID bfldid, BFLDOCC occ, BFLDLEN * p_len);
0225 extern NDRX_API int Bboolev (UBFH * p_ub, char *tree);
0226 extern NDRX_API double Bfloatev (UBFH * p_ub, char *tree);
0227 extern NDRX_API int Badd (UBFH *p_ub, BFLDID bfldid, char *buf, BFLDLEN len);
0228 extern NDRX_API int Baddfast (UBFH *p_ub, BFLDID bfldid, char *buf, BFLDLEN len, Bfld_loc_info_t *next_fld);
0229 extern NDRX_API int CBaddfast (UBFH *p_ub, BFLDID bfldid, char *buf, BFLDLEN len,
0230 int usrtype, Bfld_loc_info_t *next_fld);
0231 extern NDRX_API char * Becodestr(int err);
0232 extern NDRX_API void B_error (char *str);
0233 extern NDRX_API char * Bstrerror (int err);
0234 extern NDRX_API BFLDID Bmkfldid (int fldtype, BFLDID bfldid);
0235 extern NDRX_API BFLDOCC Boccur (UBFH * p_ub, BFLDID bfldid);
0236 extern NDRX_API long Bused (UBFH *p_ub);
0237 extern NDRX_API int Bfldtype (BFLDID bfldid);
0238 extern NDRX_API int Bdelall (UBFH *p_ub, BFLDID bfldid);
0239 extern NDRX_API int Bdelete (UBFH *p_ub, BFLDID *fldlist);
0240 extern NDRX_API BFLDOCC Bfldno (BFLDID bfldid);
0241 extern NDRX_API long Bunused (UBFH *p_ub);
0242 extern NDRX_API long Bsizeof (UBFH *p_ub);
0243 extern NDRX_API char * Btype (BFLDID bfldid);
0244 extern NDRX_API int Bfree (UBFH *p_ub);
0245 extern NDRX_API UBFH * Balloc (BFLDOCC f, BFLDLEN v);
0246 extern NDRX_API UBFH * Brealloc (UBFH *p_ub, BFLDOCC f, BFLDLEN v);
0247 extern NDRX_API int Bupdate (UBFH *p_ub_dst, UBFH *p_ub_src);
0248 extern NDRX_API int Bconcat (UBFH *p_ub_dst, UBFH *p_ub_src);
0249 extern NDRX_API char * CBfind (UBFH * p_ub, BFLDID bfldid, BFLDOCC occ, BFLDLEN * len, int usrtype);
0250 extern NDRX_API char * CBgetalloc (UBFH * p_ub, BFLDID bfldid, BFLDOCC occ, int usrtype, BFLDLEN *extralen);
0251 extern NDRX_API BFLDOCC CBfindocc (UBFH *p_ub, BFLDID bfldid,
0252 char * buf, BFLDLEN len, int usrtype);
0253 extern NDRX_API BFLDOCC Bfindocc (UBFH *p_ub, BFLDID bfldid,
0254 char * buf, BFLDLEN len);
0255 extern NDRX_API char * Bgetalloc (UBFH * p_ub, BFLDID bfldid, BFLDOCC occ, BFLDLEN *extralen);
0256 extern NDRX_API char * Bfindlast (UBFH * p_ub, BFLDID bfldid,
0257 BFLDOCC *occ, BFLDLEN *len);
0258 extern NDRX_API int Bgetlast (UBFH *p_ub, BFLDID bfldid,
0259 BFLDOCC *occ, char *buf, BFLDLEN *len);
0260 extern NDRX_API int Bprint (UBFH *p_ub);
0261 extern NDRX_API int Bfprint (UBFH *p_ub, FILE * outf);
0262 extern NDRX_API int Bfprintcb (UBFH *p_ub, ndrx_plugin_tplogprintubf_hook_t p_writef, void *dataptr1);
0263 extern NDRX_API char * Btypcvt (BFLDLEN * to_len, int to_type,
0264 char *from_buf, int from_type, BFLDLEN from_len);
0265 extern NDRX_API int Bextread (UBFH * p_ub, FILE *inf);
0266 extern NDRX_API int Bextreadcb (UBFH * p_ub,
0267 long (*p_readf)(char *buffer, long bufsz, void *dataptr1), void *dataptr1);
0268 extern NDRX_API void Bboolpr (char * tree, FILE *outf);
0269 extern NDRX_API void Bboolprcb (char * tree,
0270 int (*p_writef)(char *buffer, long datalen, void *dataptr1), void *dataptr1);
0271 extern NDRX_API int Bread (UBFH * p_ub, FILE * inf);
0272 extern int Breadcb (UBFH * p_ub,
0273 long (*p_readf)(char *buffer, long bufsz, void *dataptr1), void *dataptr1);
0274 extern NDRX_API int Bwrite (UBFH *p_ub, FILE * outf);
0275 extern NDRX_API int Bwritecb (UBFH *p_ub,
0276 long (*p_writef)(char *buffer, long bufsz, void *dataptr1), void *dataptr1);
0277 extern NDRX_API void Btreefree (char *tree);
0278
0279 extern NDRX_API int Bboolsetcbf (char *funcname, long (*functionPtr)(UBFH *p_ub, char *funcname));
0280 extern NDRX_API int Bboolsetcbf2 (char *funcname, long (*functionPtr)(UBFH *p_ub, char *funcname, char *arg1));
0281 extern NDRX_API int Badds (UBFH *p_ub, BFLDID bfldid, char *buf);
0282 extern NDRX_API int Bchgs (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, char *buf);
0283 extern NDRX_API int Bgets (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, char *buf);
0284 extern NDRX_API char * Bgetsa (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, BFLDLEN *extralen);
0285 extern NDRX_API char * Bfinds (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ);
0286 extern NDRX_API int Bisubf (UBFH *p_ub);
0287 extern NDRX_API int Bindex (UBFH * p_ub, BFLDOCC occ);
0288 extern NDRX_API BFLDOCC Bunindex (UBFH * p_ub);
0289 extern NDRX_API long Bidxused (UBFH * p_ub);
0290 extern NDRX_API int Brstrindex (UBFH * p_ub, BFLDOCC occ);
0291
0292 extern NDRX_API int Bjoin(UBFH *dest, UBFH *src);
0293 extern NDRX_API int Bojoin(UBFH *dest, UBFH *src);
0294
0295 extern NDRX_API int Bcmp(UBFH *p_ubf1, UBFH *p_ubf2);
0296 extern NDRX_API int Bsubset(UBFH *p_ubf1, UBFH *p_ubf2);
0297 extern NDRX_API BFLDOCC Bnum (UBFH * p_ub);
0298 extern NDRX_API long Bneeded(BFLDOCC nrfields, BFLDLEN totsize);
0299
0300
0301 extern NDRX_API int Bvnull(char *cstruct, char *cname, BFLDOCC occ, char *view);
0302 extern NDRX_API int Bvselinit(char *cstruct, char *cname, char *view);
0303 extern NDRX_API int Bvsinit(char *cstruct, char *view);
0304 extern NDRX_API void Bvrefresh(void);
0305 extern NDRX_API int Bvopt(char *cname, int option, char *view);
0306 extern NDRX_API int Bvftos(UBFH *p_ub, char *cstruct, char *view);
0307 extern NDRX_API int Bvstof(UBFH *p_ub, char *cstruct, int mode, char *view);
0308
0309 extern NDRX_API int CBvget(char *cstruct, char *view, char *cname, BFLDOCC occ,
0310 char *buf, BFLDLEN *len, int usrtype, long flags);
0311 extern NDRX_API char *CBvgetalloc(char *cstruct, char *view, char *cname, BFLDOCC occ,
0312 int usrtype, long flags, BFLDLEN *extralen);
0313 extern NDRX_API int CBvchg(char *cstruct, char *view, char *cname, BFLDOCC occ,
0314 char *buf, BFLDLEN len, int usrtype);
0315 extern NDRX_API long Bvsizeof(char *view);
0316 extern NDRX_API long Bvcpy(char *cstruct_dst, char *cstruct_src, char *view);
0317 extern NDRX_API BFLDOCC Bvoccur(char *cstruct, char *view, char *cname,
0318 BFLDOCC *maxocc, BFLDOCC *realocc, long *dim_size, int* fldtype);
0319 extern NDRX_API int Bvsetoccur(char *cstruct, char *view, char *cname, BFLDOCC occ);
0320 extern NDRX_API int Bvnext (Bvnext_state_t *state, char *view, char *cname,
0321 int *fldtype, BFLDOCC *maxocc, long *dim_size);
0322 extern NDRX_API int Bvcmp(char *cstruct1, char *view1, char *cstruct2, char *view2);
0323
0324 extern NDRX_API int Bvprint (char *cstruct, char *view);
0325 extern NDRX_API int Bvfprint (char *cstruct, char *view, FILE * outf);
0326
0327 extern NDRX_API int Bvfprintcb (char *cstruct, char *view,
0328 ndrx_plugin_tplogprintubf_hook_t p_writef, void *dataptr1);
0329 extern NDRX_API int Bvextread(char *cstruct, char *view, FILE *inf);
0330 extern NDRX_API int Bvextreadcb(char *cstruct, char *view,
0331 long (*p_readf)(char *buffer, long bufsz, void *dataptr1), void *dataptr1);
0332
0333
0334
0335
0336 extern NDRX_API void * ndrx_ubf_tls_get(void);
0337 extern NDRX_API int ndrx_ubf_tls_set(void *data);
0338 extern NDRX_API void ndrx_ubf_tls_free(void *data);
0339 extern NDRX_API void * ndrx_ubf_tls_new(int auto_destroy, int auto_set);
0340
0341
0342
0343
0344 extern NDRX_API EDB_env * Bfldddbgetenv (EDB_dbi **dbi_id, EDB_dbi **dbi_nm);
0345 extern NDRX_API int Bflddbload(void);
0346 extern NDRX_API BFLDID Bflddbid (char *fldname);
0347 extern NDRX_API char * Bflddbname (BFLDID bfldid);
0348 extern NDRX_API int Bflddbget(EDB_val *data, short *p_fldtype,
0349 BFLDID *p_bfldno, BFLDID *p_bfldid, char *fldname, int fldname_bufsz);
0350 extern NDRX_API int Bflddbunlink(void);
0351 extern NDRX_API void Bflddbunload(void);
0352 extern NDRX_API int Bflddbdrop(EDB_txn *txn);
0353 extern NDRX_API int Bflddbdel(EDB_txn *txn, BFLDID bfldid);
0354 extern NDRX_API int Bflddbadd(EDB_txn *txn, short fldtype, BFLDID bfldno,
0355 char *fldname);
0356
0357 extern NDRX_API int B32to16(UBFH *dest, UBFH *src);
0358 extern NDRX_API int B16to32(UBFH *dest, UBFH *src);
0359
0360
0361
0362
0363 extern NDRX_API int Bgetr (UBFH * p_ub, BFLDID *fldidocc, char * buf, BFLDLEN * buflen);
0364 extern NDRX_API int Bgetrv (UBFH * p_ub, char * buf, BFLDLEN * buflen, ...);
0365
0366 extern NDRX_API int CBgetr (UBFH * p_ub, BFLDID *fldidocc,
0367 char * buf, BFLDLEN * buflen, int usrtype);
0368 extern NDRX_API int CBgetrv (UBFH * p_ub, char * buf, BFLDLEN * buflen, int usrtype, ...);
0369
0370 extern NDRX_API char * CBgetallocr (UBFH *p_ub, BFLDID *fldidocc, int usrtype, BFLDLEN *extralen);
0371 extern NDRX_API char * CBgetallocrv (UBFH *p_ub, int usrtype, BFLDLEN *extralen, ...);
0372
0373 extern NDRX_API char* Bfindr (UBFH *p_ub, BFLDID *fldidocc, BFLDLEN *p_len);
0374 extern NDRX_API char* Bfindrv (UBFH *p_ub, BFLDLEN *p_len, ...);
0375
0376 extern NDRX_API char *CBfindr (UBFH *p_ub, BFLDID *fldidocc, BFLDLEN *len, int usrtype);
0377 extern NDRX_API char *CBfindrv (UBFH *p_ub, BFLDLEN *len, int usrtype, ...);
0378
0379 extern NDRX_API int Bpresr (UBFH *p_ub, BFLDID *fldidocc);
0380 extern NDRX_API int Bpresrv (UBFH *p_ub, ...);
0381
0382 extern NDRX_API int CBvgetr(UBFH *p_ub, BFLDID *fldidocc, char *cname, BFLDOCC occ,
0383 char *buf, BFLDLEN *len, int usrtype, long flags);
0384 extern NDRX_API int CBvgetrv(UBFH *p_ub, char *cname, BFLDOCC occ,
0385 char *buf, BFLDLEN *len, int usrtype, long flags, ...);
0386
0387 extern NDRX_API int Bvnullr(UBFH *p_ub, BFLDID *fldidocc, char *cname, BFLDOCC occ);
0388 extern NDRX_API int Bvnullrv(UBFH *p_ub, char *cname, BFLDOCC occ, ...);
0389
0390 extern NDRX_API char * CBvgetallocr(UBFH *p_ub, BFLDID *fldidocc, char *cname, BFLDOCC occ,
0391 int usrtype, long flags, BFLDLEN *extralen);
0392
0393 extern NDRX_API char* CBvgetallocrv(UBFH *p_ub, char *cname, BFLDOCC occ,
0394 int usrtype, long flags, BFLDLEN *extralen, ...);
0395
0396
0397
0398 extern NDRX_API int ndrx_Fchg (UBFH *p_ub, BFLDID bfldid, BFLDOCC occ, char * buf, BFLDLEN len);
0399 extern NDRX_API int ndrx_Fadd (UBFH *p_ub, BFLDID bfldid, char *buf, BFLDLEN len);
0400
0401 #if defined(__cplusplus)
0402 }
0403 #endif
0404
0405 #endif
0406