Mercurial > games > semicongine
diff fuhtark_test/include/winapi/sql_1.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/sql_1.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,95 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef _SQL_1_H_ +#define _SQL_1_H_ + +struct SQL_LEVEL_1_TOKEN { + enum { OP_EXPRESSION = 1,TOKEN_AND,TOKEN_OR,TOKEN_NOT }; + enum { IFUNC_NONE = 0,IFUNC_UPPER = 1,IFUNC_LOWER = 2 }; + int nTokenType; + enum { OP_EQUAL = 1,OP_NOT_EQUAL,OP_EQUALorGREATERTHAN,OP_EQUALorLESSTHAN,OP_LESSTHAN,OP_GREATERTHAN,OP_LIKE }; + BSTR pPropertyName; + int nOperator; + WINBOOL bConstIsStrNumeric; + VARIANT vConstValue; + BSTR pPropName2; + DWORD dwPropertyFunction; + DWORD dwConstFunction; + SQL_LEVEL_1_TOKEN(); + SQL_LEVEL_1_TOKEN(SQL_LEVEL_1_TOKEN&); + ~SQL_LEVEL_1_TOKEN(); + SQL_LEVEL_1_TOKEN& operator=(SQL_LEVEL_1_TOKEN &Src); + void Dump(FILE *); +}; + +struct SQL_LEVEL_1_RPN_EXPRESSION { + int nNumTokens; + int nCurSize; + SQL_LEVEL_1_TOKEN *pArrayOfTokens; + BSTR bsClassName; + int nNumberOfProperties; + int nCurPropSize; + BSTR *pbsRequestedPropertyNames; + SQL_LEVEL_1_RPN_EXPRESSION(); + ~SQL_LEVEL_1_RPN_EXPRESSION(); + void AddToken(SQL_LEVEL_1_TOKEN *pTok); + void AddToken(SQL_LEVEL_1_TOKEN &pTok); + void AddProperty(LPWSTR pProp); + void Dump(const char *pszTextFile); +}; + +class SQL1_Parser { + CGenLexer *m_pLexer; + int m_nLine; + wchar_t *m_pTokenText; + int m_nCurrentToken; + SQL_LEVEL_1_RPN_EXPRESSION *m_pExpression; + void Cleanup(); + void Init(CGenLexSource *pSrc); + VARIANT m_vTypedConst; + int m_nRelOp; + DWORD m_dwConstFunction; + DWORD m_dwPropFunction; + LPWSTR m_pIdent; + LPWSTR m_pPropComp; + WINBOOL m_bConstIsStrNumeric; + WINBOOL Next(); + int parse(); + int prop_list(); + int class_name(); + int opt_where(); + int expr(); + int property_name(); + int prop_list_2(); + int term(); + int expr2(); + int simple_expr(); + int term2(); + int leading_ident_expr(); + int finalize(); + int rel_operator(); + int equiv_operator(); + int comp_operator(); + int is_operator(); + int trailing_prop_expr(); + int trailing_prop_expr2(); + int trailing_or_null(); + int trailing_const_expr(); + int unknown_func_expr(); + int typed_constant(); +public: + enum { + SUCCESS,SYNTAX_ERROR,LEXICAL_ERROR,FAILED,BUFFER_TOO_SMALL + }; + SQL1_Parser(CGenLexSource *pSrc); + ~SQL1_Parser(); + int GetQueryClass(LPWSTR pBuf,int nBufSize); + int Parse(SQL_LEVEL_1_RPN_EXPRESSION **pOutput); + int CurrentLine() { return m_nLine; } + LPWSTR CurrentToken() { return m_pTokenText; } + void SetSource(CGenLexSource *pSrc); +}; +#endif
