summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandreas2026-05-31 11:01:13 +0200
committerandreas2026-05-31 11:01:13 +0200
commit699d70ef7acfc38a49f21bf5793f3f2772d24c22 (patch)
tree8b7227a24f2520451137fe3cf6d5180a838f5d37
parent0fcb5d81ee0cba4b3dd509f7a013d6b34e0f2bae (diff)
downloadQntan-699d70ef7acfc38a49f21bf5793f3f2772d24c22.tar.gz
Qntan-699d70ef7acfc38a49f21bf5793f3f2772d24c22.zip
Add more call macros. GuessFix userconfig include.
-rw-r--r--include/qntan/Qntan.h223
1 files changed, 212 insertions, 11 deletions
diff --git a/include/qntan/Qntan.h b/include/qntan/Qntan.h
index 77db54c..8ed8788 100644
--- a/include/qntan/Qntan.h
+++ b/include/qntan/Qntan.h
@@ -20,7 +20,7 @@
#endif
#ifdef Qntan_USERCONFIG
-Qntan_USERCONFIG
+# include "qntan_userconfig.h"
#endif
#include <stddef.h> /* size_t */
@@ -41,8 +41,15 @@ extern "C" {
/*
* "Cls" aka "Closure". The userdata type to pass around for callbacks etc. */
-#define Qntan_Cls uintptr_t
-#define QNTAN_CLS(OBJ) ((Qntan_Cls)OBJ)
+#ifndef Qntan_Cls
+# define Qntan_Cls uintptr_t
+#else
+STATIC_ASSERT(sizeof Qntan_Cls >= sizeof uintptr_t);
+#endif
+/**/
+#ifndef QNTAN_CLS
+# define QNTAN_CLS(OBJ) ((Qntan_Cls)OBJ)
+#endif
@@ -358,6 +365,25 @@ struct Qntan_Logger {
+#ifndef Qntan_IoMux_read
+# define Qntan_IoMux_read(A, B, C, D, E, F, G) (*A)->read(A, B, C, D, E, F, G)
+#endif
+#ifndef Qntan_IoMux_write
+# define Qntan_IoMux_write(A, B, C, D, E, F, G) (*A)->write(A, B, C, D, E, F, G)
+#endif
+#ifndef Qntan_IoMux_flush
+# define Qntan_IoMux_flush(A, B, C, D) (*A)->flush(A, B, C, D)
+#endif
+#ifndef Qntan_IoMux_send
+# define Qntan_IoMux_send(A, B, C, D, E, F, G) (*A)->send(A, B, C, D, E, F, G)
+#endif
+#ifndef Qntan_IoMux_recv
+# define Qntan_IoMux_recv(A, B, C, D, E, F, G) (*A)->recv(A, B, C, D, E, F, G)
+#endif
+#ifndef Qntan_IoMux_accept
+# define Qntan_IoMux_accept(A, B, C, D, E) (*A)->accept(A, B, C, D, E)
+#endif
+
struct Qntan_IoMux {
/* An IO Multiplexer.
*
@@ -485,6 +511,25 @@ struct Qntan_IoMux {
+#ifndef Qntan_File_flush
+# define Qntan_File_flush(A, B, C) (*A)->flush(A, B, C)
+#endif
+#ifndef Qntan_File_write
+# define Qntan_File_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+#ifndef Qntan_File_read
+# define Qntan_File_read(A, B, C, D, E, F) (*A)->read(A, B, C, D, E, F)
+#endif
+#ifndef Qntan_File_seek
+# define Qntan_File_seek(A, B, C, D, E) (*A)->seek(A, B, C, D, E)
+#endif
+#ifndef Qntan_File_tell
+# define Qntan_File_tell(A, B, C) (*A)->tell(A, B, C)
+#endif
+#ifndef Qntan_File_truncate
+# define Qntan_File_truncate(A, B, C, D) (*A)->truncate(A, B, C, D)
+#endif
+
struct Qntan_File {
/**/
void (*flush)(
@@ -678,6 +723,8 @@ struct Qntan_FourierTransform {
/* WARN: There may be implementations producing odd results if
* 'samples' and 'output' overlap.
* @return negative values on erorr. Zero on success.
+ *
+ * TODO: Make this async.
*/
};
@@ -852,6 +899,16 @@ struct Qntan_Socket {
+#ifndef Qntan_TarEnc_nextEntry
+# define Qntan_TarEnc_nextEntry(A, B, C, D) (*A)->nextEntry(A, B, C, D)
+#endif
+#ifndef Qntan_TarEnc_write
+# define Qntan_TarEnc_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+#ifndef Qntan_TarEnc_getLastErrorStr
+# define Qntan_TarEnc_getLastErrorStr(A) (*A)->getLastErrorStr(A)
+#endif
+
struct Qntan_TarEnc_Hdr {
char const*path; int path_len;
unsigned mode;
@@ -915,6 +972,13 @@ struct Qntan_TarEnc {
+#ifndef Qntan_TarDec_hextHdr
+# define Qntan_TarDec_hextHdr(A, B, C) (*A)->hextHdr(A, B, C)
+#endif
+#ifndef Qntan_TarDec_readBody
+# define Qntan_TarDec_readBody(A, B, C, D, E) (*A)->readBody(A, B, C, D, E)
+#endif
+
struct Qntan_TarDec_Hdr {
char const*path; int path_len;
unsigned mode;
@@ -1016,7 +1080,7 @@ struct Qntan_Cond {
#ifndef Qntan_Mutx_unlock
# define Qntan_Mutx_unlock(A) (*(A))->unlock(A)
#endif
-/**/
+
struct Qntan_Mutx {
/* Same idea as a `pthread_mutex_t`, just using virtual funcs, to
* increase overkill and make some people sad :D
@@ -1043,6 +1107,10 @@ struct Qntan_Mutx {
+#ifndef Qntan_Networker_getaddrinfo
+# define Qntan_Networker_getaddrinfo(A, B, C, D, E, F, G, H) (*A)->getaddrinfo(A, B, C, D, E, F, G, H)
+#endif
+
struct Qntan_Networker {
/**/
void (*getaddrinfo)(
@@ -1155,12 +1223,12 @@ struct Qntan_CsvIStream {
*/
};
-#ifndef Qntan_CsvIStream_Mentor_onCsvDocEnd
-# define Qntan_CsvIStream_Mentor_onCsvDocEnd(A, B, C) (*A)->onCsvDocEnd(A, B, C)
-#endif
#ifndef Qntan_CsvIStream_Mentor_onCsvRow
# define Qntan_CsvIStream_Mentor_onCsvRow(A, B, C, D, E, F, G) (*A)->onCsvRow(A, B, C, D, E, F, G)
#endif
+#ifndef Qntan_CsvIStream_Mentor_onCsvDocEnd
+# define Qntan_CsvIStream_Mentor_onCsvDocEnd(A, B, C) (*A)->onCsvDocEnd(A, B, C)
+#endif
struct Qntan_CsvIStream_Mentor {
/**/
@@ -1210,9 +1278,6 @@ struct Qntan_CsvIStream_Mentor {
#ifndef Qntan_CsvEnc_appendRowsStrz
# define Qntan_CsvEnc_appendRowsStrz(A, B, C, D) (*A)->appendRowsStrz(A, B, C, D)
#endif
-#ifndef Qntan_CsvEnc_beginNextRow
-# define Qntan_CsvEnc_beginNextRow(A, B, C) (*A)->beginNextRow(A, B, C)
-#endif
struct Qntan_CsvEnc {
/* WARN: pre-alpha! Not usable yet.
@@ -1250,6 +1315,40 @@ struct Qntan_CsvEnc {
+#ifndef Qntan_JsonEnc_reset
+# define Qntan_JsonEnc_reset(A) (*A)->reset(A)
+#endif
+#ifndef Qntan_JsonEnc_flush
+# define Qntan_JsonEnc_flush(A) (*A)->flush(A)
+#endif
+#ifndef Qntan_JsonEnc_objBeg
+# define Qntan_JsonEnc_objBeg(A) (*A)->objBeg(A)
+#endif
+#ifndef Qntan_JsonEnc_objEnd
+# define Qntan_JsonEnc_objEnd(A) (*A)->objEnd(A)
+#endif
+#ifndef Qntan_JsonEnc_arrBeg
+# define Qntan_JsonEnc_arrBeg(A) (*A)->arrBeg(A)
+#endif
+#ifndef Qntan_JsonEnc_arrEnd
+# define Qntan_JsonEnc_arrEnd(A) (*A)->arrEnd(A)
+#endif
+#ifndef Qntan_JsonEnc_key
+# define Qntan_JsonEnc_key(A, B, C, D) (*A)->key(A, B, C, D)
+#endif
+#ifndef Qntan_JsonEnc_string
+# define Qntan_JsonEnc_string(A, B, C, D) (*A)->string(A, B, C, D)
+#endif
+#ifndef Qntan_JsonEnc_number
+# define Qntan_JsonEnc_number(A, B) (*A)->number(A, B)
+#endif
+#ifndef Qntan_JsonEnc_boolean
+# define Qntan_JsonEnc_boolean(A, B) (*A)->boolean(A, B)
+#endif
+#ifndef Qntan_JsonEnc_null
+# define Qntan_JsonEnc_null(A) (*A)->null(A)
+#endif
+
struct Qntan_JsonEnc {
/**/
void (*reset)( struct Qntan_JsonEnc** );
@@ -1295,9 +1394,13 @@ struct Qntan_JsonEnc {
+#ifndef Qntan_JsonDec_write
+# define Qntan_JsonDec_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+
struct Qntan_JsonDec {
/**/
- void (*write)(struct Qntan_JsonDec**, void const*buf, int buf_len, int flgs,
+ void (*write)( struct Qntan_JsonDec**, void const*buf, int buf_len, int flgs,
void(*onDone)(int ret,Qntan_Cls), Qntan_Cls );
/* @param flgs
* 0x4 set means this is last chunk.
@@ -1305,6 +1408,39 @@ struct Qntan_JsonDec {
*/
};
+#ifndef Qntan_JsonDec_Mentor_onError
+# define Qntan_JsonDec_Mentor_onError(A, B) (*A)->onError(A, B)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onsonDocEnd
+# define Qntan_JsonDec_Mentor_onsonDocEnd(A, B, C) (*A)->onsonDocEnd(A, B, C)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonObjBeg
+# define Qntan_JsonDec_Mentor_onJsonObjBeg(A) (*A)->onJsonObjBeg(A)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonObjEnd
+# define Qntan_JsonDec_Mentor_onJsonObjEnd(A) (*A)->onJsonObjEnd(A)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonArrBeg
+# define Qntan_JsonDec_Mentor_onJsonArrBeg(A) (*A)->onJsonArrBeg(A)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonArrEnd
+# define Qntan_JsonDec_Mentor_onJsonArrEnd(A) (*A)->onJsonArrEnd(A)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonNull
+# define Qntan_JsonDec_Mentor_onJsonNull(A) (*A)->onJsonNull(A)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonBool
+# define Qntan_JsonDec_Mentor_onJsonBool(A, B) (*A)->onJsonBool(A, B)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonNumber
+# define Qntan_JsonDec_Mentor_onJsonNumber(A, B) (*A)->onJsonNumber(A, B)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonStringKeyChunk
+# define Qntan_JsonDec_Mentor_onJsonStringKeyChunk(A, B, C) (*A)->onJsonStringKeyChunk(A, B, C)
+#endif
+#ifndef Qntan_JsonDec_Mentor_onJsonStringChunk
+# define Qntan_JsonDec_Mentor_onJsonStringChunk(A, B, C) (*A)->onJsonStringChunk(A, B, C)
+#endif
struct Qntan_JsonDec_Mentor {
/**/
@@ -1379,6 +1515,10 @@ struct Qntan_JsonTreeDec_JsonNode {
};
};
+#ifndef Qntan_JsonTreeDec_write
+# define Qntan_JsonTreeDec_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+
struct Qntan_JsonTreeDec {
/**/
void (*write)( struct Qntan_JsonTreeDec**, void const*buf, int buf_len, int flg,
@@ -1396,6 +1536,16 @@ struct Qntan_JsonTreeDec {
+#ifndef Qntan_XmlDec_pause
+# define Qntan_XmlDec_pause(A) (*A)->pause(A)
+#endif
+#ifndef Qntan_XmlDec_resume
+# define Qntan_XmlDec_resume(A) (*A)->resume(A)
+#endif
+#ifndef Qntan_XmlDec_write
+# define Qntan_XmlDec_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+
struct Qntan_XmlDec {
/**/
void (*pause)( struct Qntan_XmlDec** );
@@ -1411,6 +1561,21 @@ struct Qntan_XmlDec {
*/
};
+#ifndef Qntan_XmlDec_Mentor_onXmlDocEnd
+# define Qntan_XmlDec_Mentor_onXmlDocEnd(A) (*A)->onXmlDocEnd(A)
+#endif
+#ifndef Qntan_XmlDec_Mentor_onElemBeg
+# define Qntan_XmlDec_Mentor_onElemBeg(A, B, C) (*A)->onElemBeg(A, B, C)
+#endif
+#ifndef Qntan_XmlDec_Mentor_onElemEnd
+# define Qntan_XmlDec_Mentor_onElemEnd(A, B, C) (*A)->onElemEnd(A, B, C)
+#endif
+#ifndef Qntan_XmlDec_Mentor_onAttr
+# define Qntan_XmlDec_Mentor_onAttr(A, B, C) (*A)->onAttr(A, B, C)
+#endif
+#ifndef Qntan_XmlDec_Mentor_onChunk
+# define Qntan_XmlDec_Mentor_onChunk(A, B, C) (*A)->onChunk(A, B, C)
+#endif
struct Qntan_XmlDec_Mentor {
/**/
@@ -1435,6 +1600,13 @@ struct Qntan_XmlDec_Mentor {
+#ifndef Qntan_HttpClient_Exchg_Opts_onRspHdr
+# define Qntan_HttpClient_Exchg_Opts_onRspHdr(A, B, C, D, E) (*A)->onRspHdr(A, B, C, D, E)
+#endif
+#ifndef Qntan_HttpClient_Exchg_Opts_onBodyChunk
+# define Qntan_HttpClient_Exchg_Opts_onBodyChunk(A, B, C, D) (*A)->onBodyChunk(A, B, C, D)
+#endif
+
struct Qntan_HttpClient_Exchg_Opts {
/* WARN: HTTP IS EXPERMIMENTAL! DO NOT TRUST ANYTHING HERE!
*/
@@ -1480,6 +1652,16 @@ struct Qntan_HttpClient_Exchg_Opts {
*/
};
+#ifndef Qntan_HttpClient_Exchg_write
+# define Qntan_HttpClient_Exchg_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+#ifndef Qntan_HttpClient_Exchg_pause
+# define Qntan_HttpClient_Exchg_pause(A) (*A)->pause(A)
+#endif
+#ifndef Qntan_HttpClient_Exchg_resume
+# define Qntan_HttpClient_Exchg_resume(A) (*A)->resume(A)
+#endif
+
struct Qntan_HttpClient_Exchg {
/* WARN: HTTP IS EXPERMIMENTAL! DO NOT TRUST ANYTHING HERE!
*/
@@ -1499,6 +1681,10 @@ struct Qntan_HttpClient_Exchg {
*/
};
+#ifndef Qntan_HttpClient_httpReq
+# define Qntan_HttpClient_httpReq(A, B, C, D) (*A)->httpReq(A, B, C, D)
+#endif
+
struct Qntan_HttpClient {
/* WARN: HTTP IS EXPERMIMENTAL! DO NOT TRUST ANYTHING HERE!
*/
@@ -1612,6 +1798,10 @@ struct Qntan_GfxRenderer {
+#ifndef Qntan_JavaBytecodeParser_write
+# define Qntan_JavaBytecodeParser_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+
struct Qntan_JavaBytecodeParser {
/**/
void (*write)(
@@ -1761,6 +1951,13 @@ struct Qntan_CamtTransaction {
int qrRef_cap , qrRef_len ; char *qrRef ;
};
+#ifndef Qntan_CamtDec_Mentor_onAccount
+# define Qntan_CamtDec_Mentor_onAccount(A, B, C, D) (*A)->onAccount(A, B, C, D)
+#endif
+#ifndef Qntan_CamtDec_Mentor_onRecord
+# define Qntan_CamtDec_Mentor_onRecord(A, B, C, D) (*A)->onRecord(A, B, C, D)
+#endif
+
struct Qntan_CamtDec_Mentor {
/**/
void (*onAccount)( struct Qntan_CamtDec_Mentor**,
@@ -1771,6 +1968,10 @@ struct Qntan_CamtDec_Mentor {
/**/
};
+#ifndef Qntan_CamtDec_write
+# define Qntan_CamtDec_write(A, B, C, D, E, F) (*A)->write(A, B, C, D, E, F)
+#endif
+
struct Qntan_CamtDec {
/**/
void (*write)(