source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/sql_1.h@ 1186

Last change on this file since 1186 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 2.5 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _SQL_1_H_
7#define _SQL_1_H_
8
9struct SQL_LEVEL_1_TOKEN {
10 enum { OP_EXPRESSION = 1,TOKEN_AND,TOKEN_OR,TOKEN_NOT };
11 enum { IFUNC_NONE = 0,IFUNC_UPPER = 1,IFUNC_LOWER = 2 };
12 int nTokenType;
13 enum { OP_EQUAL = 1,OP_NOT_EQUAL,OP_EQUALorGREATERTHAN,OP_EQUALorLESSTHAN,OP_LESSTHAN,OP_GREATERTHAN,OP_LIKE };
14 BSTR pPropertyName;
15 int nOperator;
16 WINBOOL bConstIsStrNumeric;
17 VARIANT vConstValue;
18 BSTR pPropName2;
19 DWORD dwPropertyFunction;
20 DWORD dwConstFunction;
21 SQL_LEVEL_1_TOKEN();
22 SQL_LEVEL_1_TOKEN(SQL_LEVEL_1_TOKEN&);
23 ~SQL_LEVEL_1_TOKEN();
24 SQL_LEVEL_1_TOKEN& operator=(SQL_LEVEL_1_TOKEN &Src);
25 void Dump(FILE *);
26};
27
28struct SQL_LEVEL_1_RPN_EXPRESSION {
29 int nNumTokens;
30 int nCurSize;
31 SQL_LEVEL_1_TOKEN *pArrayOfTokens;
32 BSTR bsClassName;
33 int nNumberOfProperties;
34 int nCurPropSize;
35 BSTR *pbsRequestedPropertyNames;
36 SQL_LEVEL_1_RPN_EXPRESSION();
37 ~SQL_LEVEL_1_RPN_EXPRESSION();
38 void AddToken(SQL_LEVEL_1_TOKEN *pTok);
39 void AddToken(SQL_LEVEL_1_TOKEN &pTok);
40 void AddProperty(LPWSTR pProp);
41 void Dump(const char *pszTextFile);
42};
43
44class SQL1_Parser {
45 CGenLexer *m_pLexer;
46 int m_nLine;
47 wchar_t *m_pTokenText;
48 int m_nCurrentToken;
49 SQL_LEVEL_1_RPN_EXPRESSION *m_pExpression;
50 void Cleanup();
51 void Init(CGenLexSource *pSrc);
52 VARIANT m_vTypedConst;
53 int m_nRelOp;
54 DWORD m_dwConstFunction;
55 DWORD m_dwPropFunction;
56 LPWSTR m_pIdent;
57 LPWSTR m_pPropComp;
58 WINBOOL m_bConstIsStrNumeric;
59 WINBOOL Next();
60 int parse();
61 int prop_list();
62 int class_name();
63 int opt_where();
64 int expr();
65 int property_name();
66 int prop_list_2();
67 int term();
68 int expr2();
69 int simple_expr();
70 int term2();
71 int leading_ident_expr();
72 int finalize();
73 int rel_operator();
74 int equiv_operator();
75 int comp_operator();
76 int is_operator();
77 int trailing_prop_expr();
78 int trailing_prop_expr2();
79 int trailing_or_null();
80 int trailing_const_expr();
81 int unknown_func_expr();
82 int typed_constant();
83public:
84 enum {
85 SUCCESS,SYNTAX_ERROR,LEXICAL_ERROR,FAILED,BUFFER_TOO_SMALL
86 };
87 SQL1_Parser(CGenLexSource *pSrc);
88 ~SQL1_Parser();
89 int GetQueryClass(LPWSTR pBuf,int nBufSize);
90 int Parse(SQL_LEVEL_1_RPN_EXPRESSION **pOutput);
91 int CurrentLine() { return m_nLine; }
92 LPWSTR CurrentToken() { return m_pTokenText; }
93 void SetSource(CGenLexSource *pSrc);
94};
95#endif
Note: See TracBrowser for help on using the repository browser.