RRTBL.H
上传用户:tenhai
上传日期:2021-02-19
资源大小:492k
文件大小:1k
源码类别:

组合框控件

开发平台:

Visual C++

  1. #ifndef RRTBL_H
  2. #define RRTBL_H
  3. /*DECLR OF ROLE INVERSION TABLE*/
  4. typedef struct rulrol_struct{
  5.         unsigned int rule;
  6.         unsigned int role;
  7.         unsigned int expsymb;
  8.         char expmode;
  9.         struct rulrol_struct *nxt;
  10. } rulrol_struct;
  11.         
  12. typedef struct rr_tbl_entry_t{
  13.         rulrol_struct *lrr;
  14.         rulrol_struct *rrr;
  15. }rr_tbl_entry_t;
  16. extern unsigned int *rolestring;
  17. extern unsigned int *postfixstring;
  18. extern rr_tbl_entry_t *rr_tbl;
  19. #define rrr(cate, preread) ((cate>=tntcount||preread>=tcount)?NULL:rr_tbl[preread*(tntcount-1)+cate-1].rrr)
  20. #define lrr(cate, preread) ((cate>=tntcount||preread>=tcount)?NULL:rr_tbl[preread*(tntcount-1)+cate-1].lrr)
  21. extern int rrini(void);
  22. extern int rrrelease(void);
  23. extern int listrr(void);
  24. extern int expecini(void);
  25. extern int expecrelease(void);
  26. extern int rrready;
  27. #define RUL(i) ruleindex[i]
  28. #define ROLPOS(i, j) RUL(i).fstidx+j
  29. #define EXP(i, j) rolestring[ROLPOS(i, j)]
  30. #define PST(i, j) postfixstring[ROLPOS(i, j)]
  31. #define TOSHIFT(i, j) (RUL(i).length>j)
  32. #define REQ(rul1, rol1, rul2, rol2) ((rol1==rol2) && (rul1==rul2))
  33. #define RGT(rul1, rol1, rul2, rol2) ((rul1>rul2) || (rul1==rul2) && (rol1>rol2))
  34. #endif