diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2025-09-04 12:39:30 +0100 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2025-09-04 12:39:30 +0100 |
| commit | 9c0a41552dbfbb394c4b7f24ad4acdc7a53bd6b6 (patch) | |
| tree | 4ef018beedb9424c94123ce2d72d1485e2a9e82a /vendor | |
| parent | f1ab395bfda2b1078e0bb9ede79e86a81b395dfd (diff) | |
Improve `bit_set` usage
Diffstat (limited to 'vendor')
| -rw-r--r-- | vendor/curl/curl.odin | 18 | ||||
| -rw-r--r-- | vendor/curl/curl_easy.odin | 13 | ||||
| -rw-r--r-- | vendor/curl/curl_header.odin | 21 | ||||
| -rw-r--r-- | vendor/curl/curl_options.odin | 12 | ||||
| -rw-r--r-- | vendor/curl/curl_urlapi.odin | 68 | ||||
| -rw-r--r-- | vendor/curl/curl_websockets.odin | 33 |
6 files changed, 115 insertions, 50 deletions
diff --git a/vendor/curl/curl.odin b/vendor/curl/curl.odin index e5d07a543..7a619b3ad 100644 --- a/vendor/curl/curl.odin +++ b/vendor/curl/curl.odin @@ -129,6 +129,15 @@ httppost_flag :: enum c.long { LARGE = 7, } +HTTPPOST_FILENAME :: httppost_flags{.FILENAME} +HTTPPOST_READFILE :: httppost_flags{.READFILE} +HTTPPOST_PTRNAME :: httppost_flags{.PTRNAME} +HTTPPOST_PTRCONTENTS :: httppost_flags{.PTRCONTENTS} +HTTPPOST_BUFFER :: httppost_flags{.BUFFER} +HTTPPOST_PTRBUFFER :: httppost_flags{.PTRBUFFER} +HTTPPOST_CALLBACK :: httppost_flags{.CALLBACK} +HTTPPOST_LARGE :: httppost_flags{.LARGE} + httppost :: struct { next: ^httppost, /* next entry in the list */ name: cstring `fmt:"v,name"`, /* pointer to allocated name */ @@ -239,6 +248,15 @@ finfoflag :: enum c.uint { KNOWN_HLINKCOUNT = 7, } +FINFOFLAG_KNOWN_FILENAME :: finfoflags{.KNOWN_FILENAME} +FINFOFLAG_KNOWN_FILETYPE :: finfoflags{.KNOWN_FILETYPE} +FINFOFLAG_KNOWN_TIME :: finfoflags{.KNOWN_TIME} +FINFOFLAG_KNOWN_PERM :: finfoflags{.KNOWN_PERM} +FINFOFLAG_KNOWN_UID :: finfoflags{.KNOWN_UID} +FINFOFLAG_KNOWN_GID :: finfoflags{.KNOWN_GID} +FINFOFLAG_KNOWN_SIZE :: finfoflags{.KNOWN_SIZE} +FINFOFLAG_KNOWN_HLINKCOUNT :: finfoflags{.KNOWN_HLINKCOUNT} + /* Information about a single file, used when doing FTP wildcard matching */ fileinfo :: struct { filename: cstring, diff --git a/vendor/curl/curl_easy.odin b/vendor/curl/curl_easy.odin index 999aa6632..bad8fdc28 100644 --- a/vendor/curl/curl_easy.odin +++ b/vendor/curl/curl_easy.odin @@ -3,14 +3,19 @@ package vendor_curl import c "core:c/libc" /* Flag bits in the curl_blob struct: */ -BLOB_COPY :: 1 /* tell libcurl to copy the data */ -BLOB_NOCOPY :: 0 /* tell libcurl to NOT copy the data */ +BLOB_COPY :: blob_flags{.COPY} /* tell libcurl to copy the data */ +BLOB_NOCOPY :: blob_flags{} /* tell libcurl to NOT copy the data */ + +blob_flags :: distinct bit_set[blob_flag; c.uint] +blob_flag :: enum c.uint { + COPY = 0, +} blob :: struct { data: rawptr, len: c.size_t, - flags: c.uint, /* bit 0 is defined, the rest are reserved and should be - left zeroes */ + flags: blob_flags, /* bit 0 is defined, the rest are reserved and should be + left zeroes */ } @(default_calling_convention="c", link_prefix="curl_") diff --git a/vendor/curl/curl_header.odin b/vendor/curl/curl_header.odin index bbfe12f9c..c90f9b30b 100644 --- a/vendor/curl/curl_header.odin +++ b/vendor/curl/curl_header.odin @@ -8,16 +8,25 @@ header :: struct { value: cstring, amount: c.size_t, /* number of headers using this name */ index: c.size_t, /* ... of this instance, 0 or higher */ - origin: c.uint, /* see bits below */ + origin: header_origin_bits, /* see bits below */ anchor: rawptr, /* handle privately used by libcurl */ } +header_origin_bits :: distinct bit_set[header_origin_bit; c.uint] /* 'origin' bits */ -H_HEADER :: 1<<0 /* plain server header */ -H_TRAILER :: 1<<1 /* trailers */ -H_CONNECT :: 1<<2 /* CONNECT headers */ -H_1XX :: 1<<3 /* 1xx headers */ -H_PSEUDO :: 1<<4 /* pseudo headers */ +header_origin_bit :: enum c.uint { + H_HEADER = 0, /* plain server header */ + H_TRAILER = 1, /* trailers */ + H_CONNECT = 2, /* CONNECT headers */ + H_1XX = 3, /* 1xx headers */ + H_PSEUDO = 4, /* pseudo headers */ +} + +H_HEADER :: header_origin_bits{.H_HEADER} /* plain server header */ +H_TRAILER :: header_origin_bits{.H_TRAILER} /* trailers */ +H_CONNECT :: header_origin_bits{.H_CONNECT} /* CONNECT headers */ +H_1XX :: header_origin_bits{.H_1XX} /* 1xx headers */ +H_PSEUDO :: header_origin_bits{.H_PSEUDO} /* pseudo headers */ Hcode :: enum c.int { E_OK, diff --git a/vendor/curl/curl_options.odin b/vendor/curl/curl_options.odin index bed424dbb..8425a53ee 100644 --- a/vendor/curl/curl_options.odin +++ b/vendor/curl/curl_options.odin @@ -14,9 +14,13 @@ easytype :: enum c.int { OT_FUNCTION, /* function pointer */ } -/* "alias" means it is provided for old programs to remain functional, - we prefer another name */ -OT_FLAG_ALIAS :: 1<<0 + +easyoptionflags :: distinct bit_set[easyoptionflag; c.uint] +easyoptionflag :: enum c.uint { + /* "alias" means it is provided for old programs to remain functional, + we prefer another name */ + ALIAS = 0, +} /* The CURLOPTTYPE_* id ranges can still be used to figure out what type/size to use for curl_easy_setopt() for the given id */ @@ -24,7 +28,7 @@ easyoption :: struct { name: cstring, id: option, type: easytype, - flags: c.uint, + flags: easyoptionflags, } diff --git a/vendor/curl/curl_urlapi.odin b/vendor/curl/curl_urlapi.odin index d0265962b..c11f75c70 100644 --- a/vendor/curl/curl_urlapi.odin +++ b/vendor/curl/curl_urlapi.odin @@ -54,30 +54,48 @@ UPart :: enum c.int { ZONEID, /* added in 7.65.0 */ } +UFlags :: distinct bit_set[UFlag; c.uint] +UFlag :: enum c.uint { + DEFAULT_PORT = 0, /* return default port number */ + NO_DEFAULT_PORT = 1, /* act as if no port number was set, + if the port number matches the + default for the scheme */ + DEFAULT_SCHEME = 2, /* return default scheme if + missing */ + NON_SUPPORT_SCHEME = 3, /* allow non-supported scheme */ + PATH_AS_IS = 4, /* leave dot sequences */ + DISALLOW_USER = 5, /* no user+password allowed */ + URLDECODE = 6, /* URL decode on get */ + URLENCODE = 7, /* URL encode on set */ + APPENDQUERY = 8, /* append a form style part */ + GUESS_SCHEME = 9, /* legacy curl-style guessing */ + NO_AUTHORITY = 10, /* Allow empty authority when the + scheme is unknown. */ + ALLOW_SPACE = 11, /* Allow spaces in the URL */ + PUNYCODE = 12, /* get the hostname in punycode */ + PUNY2IDN = 13, /* punycode => IDN conversion */ + GET_EMPTY = 14, /* allow empty queries and fragments + when extracting the URL or the + components */ + NO_GUESS_SCHEME = 15, /* for get, do not accept a guess */ +} -U_DEFAULT_PORT :: (1<<0) /* return default port number */ -U_NO_DEFAULT_PORT :: (1<<1) /* act as if no port number was set, - if the port number matches the - default for the scheme */ -U_DEFAULT_SCHEME :: (1<<2) /* return default scheme if - missing */ -U_NON_SUPPORT_SCHEME :: (1<<3) /* allow non-supported scheme */ -U_PATH_AS_IS :: (1<<4) /* leave dot sequences */ -U_DISALLOW_USER :: (1<<5) /* no user+password allowed */ -U_URLDECODE :: (1<<6) /* URL decode on get */ -U_URLENCODE :: (1<<7) /* URL encode on set */ -U_APPENDQUERY :: (1<<8) /* append a form style part */ -U_GUESS_SCHEME :: (1<<9) /* legacy curl-style guessing */ -U_NO_AUTHORITY :: (1<<10) /* Allow empty authority when the - scheme is unknown. */ -U_ALLOW_SPACE :: (1<<11) /* Allow spaces in the URL */ -U_PUNYCODE :: (1<<12) /* get the hostname in punycode */ -U_PUNY2IDN :: (1<<13) /* punycode => IDN conversion */ -U_GET_EMPTY :: (1<<14) /* allow empty queries and fragments - when extracting the URL or the - components */ -U_NO_GUESS_SCHEME :: (1<<15) /* for get, do not accept a guess */ - +U_DEFAULT_PORT :: UFlags{.DEFAULT_PORT} +U_NO_DEFAULT_PORT :: UFlags{.NO_DEFAULT_PORT} +U_DEFAULT_SCHEME :: UFlags{.DEFAULT_SCHEME} +U_NON_SUPPORT_SCHEME :: UFlags{.NON_SUPPORT_SCHEME} +U_PATH_AS_IS :: UFlags{.PATH_AS_IS} +U_DISALLOW_USER :: UFlags{.DISALLOW_USER} +U_URLDECODE :: UFlags{.URLDECODE} +U_URLENCODE :: UFlags{.URLENCODE} +U_APPENDQUERY :: UFlags{.APPENDQUERY} +U_GUESS_SCHEME :: UFlags{.GUESS_SCHEME} +U_NO_AUTHORITY :: UFlags{.NO_AUTHORITY} +U_ALLOW_SPACE :: UFlags{.ALLOW_SPACE} +U_PUNYCODE :: UFlags{.PUNYCODE} +U_PUNY2IDN :: UFlags{.PUNY2IDN} +U_GET_EMPTY :: UFlags{.GET_EMPTY} +U_NO_GUESS_SCHEME :: UFlags{.NO_GUESS_SCHEME} @(default_calling_convention="c", link_prefix="curl_") foreign lib { @@ -105,14 +123,14 @@ foreign lib { * handle. Returns error code. The returned pointer MUST be freed with * curl_free() afterwards. */ - url_get :: proc(handle: ^CURLU, what: UPart, part: ^[^]byte, flags: c.uint) -> ^Ucode --- + url_get :: proc(handle: ^CURLU, what: UPart, part: ^[^]byte, flags: UFlags) -> ^Ucode --- /* * curl_url_set() sets a specific part of the URL in a CURLU handle. Returns * error code. The passed in string will be copied. Passing a NULL instead of * a part string, clears that part. */ - url_set :: proc(handle: ^CURLU, what: ^UPart, part: cstring, flags: c.uint) -> Ucode --- + url_set :: proc(handle: ^CURLU, what: ^UPart, part: cstring, flags: UFlags) -> Ucode --- /* * curl_url_strerror() turns a CURLUcode value into the equivalent human diff --git a/vendor/curl/curl_websockets.odin b/vendor/curl/curl_websockets.odin index 6931a2948..530631612 100644 --- a/vendor/curl/curl_websockets.odin +++ b/vendor/curl/curl_websockets.odin @@ -5,22 +5,33 @@ import c "core:c/libc" ws_frame :: struct { age: c.int, /* zero */ - flags: c.int, /* See the CURLWS_* defines */ + flags: ws_flags, /* See the CURLWS_* defines */ offset: off_t, /* the offset of this data into the frame */ bytesleft: off_t, /* number of pending bytes left of the payload */ len: c.size_t, /* size of the current data chunk */ } -/* flag bits */ -WS_TEXT :: 1<<0 -WS_BINARY :: 1<<1 -WS_CONT :: 1<<2 -WS_CLOSE :: 1<<3 -WS_PING :: 1<<4 -WS_OFFSET :: 1<<5 +ws_flags :: distinct bit_set[ws_flag; c.uint] +ws_flag :: enum c.uint { + /* flag bits */ + TEXT = 0, + BINARY = 1, + CONT = 2, + CLOSE = 3, + PING = 4, + OFFSET = 5, -/* flags for curl_ws_send() */ -WS_PONG :: 1<<6 + /* flags for curl_ws_send() */ + PONG = 6, +} + +WS_TEXT :: ws_flags{.TEXT} +WS_BINARY :: ws_flags{.BINARY} +WS_CONT :: ws_flags{.CONT} +WS_CLOSE :: ws_flags{.CLOSE} +WS_PING :: ws_flags{.PING} +WS_OFFSET :: ws_flags{.OFFSET} +WS_PONG :: ws_flags{.PONG} /* bits for the CURLOPT_WS_OPTIONS bitmask: */ WS_RAW_MODE :: 1<<0 @@ -51,7 +62,7 @@ foreign lib { ws_send :: proc(curl: CURL, buffer: rawptr, buflen: c.size_t, sent: ^c.size_t, fragsize: off_t, - flags: c.uint) -> code --- + flags: ws_flags) -> code --- ws_meta :: proc(curl: ^CURL) -> ^ws_frame --- |