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