aboutsummaryrefslogtreecommitdiff
path: root/core/flags/internal_rtti_nonbsd.odin
blob: e1286186b620ccc6c6a802a1bad9be521c2c9c8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#+private
#+build !netbsd
#+build !openbsd
package flags

import "core:net"

// This proc exists purely as a workaround for import restrictions.
// Returns true if caller should return early.
try_net_parse_workaround :: #force_inline proc (
	data_type: typeid,
	str: string,
	ptr: rawptr,
	out_error: ^Error,
) -> bool {
	if data_type == net.Host_Or_Endpoint {
		addr, net_error := net.parse_hostname_or_endpoint(str)
		if net_error != nil {
			// We pass along `net.Error` here.
			out_error^ = Parse_Error {
				net_error,
				"Invalid Host/Endpoint.",
			}
			return true
		}

		(cast(^net.Host_Or_Endpoint)ptr)^ = addr
		return true
	}

	return false
}