diff fuhtark_test/include/winapi/parser.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/parser.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,85 @@
+/**
+ * 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 _PARSER_H
+#define _PARSER_H
+
+#include <stdio.h>
+
+#undef CLASS_IMPORT_EXPORT
+#ifdef HHCTRL
+#define CLASS_IMPORT_EXPORT
+#else
+#define CLASS_IMPORT_EXPORT __declspec(dllimport)
+#endif
+
+#define PARSER_API_INLINE
+#define MAX_LINE_LEN 1024
+
+#define F_OK 0
+#define F_NOFILE 1
+#define F_READ 2
+#define F_WRITE 3
+#define F_MEMORY 4
+#define F_EOF 5
+#define F_END 6
+#define F_TAGMISSMATCH 7
+#define F_MISSINGENDTAG 8
+#define F_NOTFOUND 9
+#define F_NOPARENT 10
+#define F_NULL 11
+#define F_NOTITLE 12
+#define F_LOCATION 13
+#define F_REFERENCED 14
+#define F_DUPLICATE 15
+#define F_DELETE 16
+#define F_CLOSE 17
+#define F_EXISTCHECK 19
+
+class CParseXML {
+private:
+  CHAR m_cCurToken[MAX_LINE_LEN];
+  CHAR m_cCurWord[MAX_LINE_LEN];
+  CHAR m_cCurBuffer[MAX_LINE_LEN];
+  FILE *m_fh;
+  CHAR *m_pCurrentIndex;
+  DWORD m_dwError;
+private:
+  DWORD Read();
+  DWORD SetError(DWORD dw) { m_dwError = dw; return m_dwError; }
+public:
+  CParseXML() {
+    m_fh = NULL;
+    m_cCurBuffer[0] = '\0';
+    m_pCurrentIndex = NULL;
+    m_dwError = F_OK;
+  }
+  ~CParseXML() {
+    End();
+  }
+  CHAR *GetFirstWord(CHAR *);
+  CHAR *GetValue(CHAR *);
+  DWORD Start(const CHAR *szFile);
+  void End();
+  CHAR *GetToken();
+  DWORD GetError() { return m_dwError; }
+};
+
+typedef struct fifo {
+  CHAR *string;
+  fifo *prev;
+} FIFO;
+
+class CLASS_IMPORT_EXPORT CFIFOString {
+private:
+  FIFO *m_fifoTail;
+public:
+  CFIFOString() { m_fifoTail = NULL; }
+  ~CFIFOString();
+  void RemoveAll();
+  DWORD AddTail(CHAR *sz);
+  DWORD GetTail(CHAR **sz);
+};
+#endif