-module(postgleam@codec@inet). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/postgleam/codec/inet.gleam"). -export([encode/1, decode/1, matcher/0]). -file("src/postgleam/codec/inet.gleam", 27). -spec encode(postgleam@value:value()) -> {ok, bitstring()} | {error, binary()}. encode(Val) -> case Val of {inet, Family, Address, Netmask} -> Addr_len = erlang:byte_size(Address), Is_cidr = case Family of 2 -> case Netmask =:= 32 of true -> 0; false -> 1 end; 3 -> case Netmask =:= 128 of true -> 0; false -> 1 end; _ -> 0 end, {ok, <>}; _ -> {error, <<"inet codec: expected Inet value"/utf8>>} end. -file("src/postgleam/codec/inet.gleam", 50). -spec decode(bitstring()) -> {ok, postgleam@value:value()} | {error, binary()}. decode(Data) -> case Data of <> -> case erlang:byte_size(Address) >= Addr_len of true -> Addr@1 = case gleam_stdlib:bit_array_slice( Address, 0, Addr_len ) of {ok, Addr} -> Addr; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"postgleam/codec/inet"/utf8>>, function => <<"decode"/utf8>>, line => 55, value => _assert_fail, start => 1412, 'end' => 1471, pattern_start => 1423, pattern_end => 1431}) end, {ok, {inet, Family, Addr@1, Netmask}}; false -> {error, <<"inet codec: address too short"/utf8>>} end; _ -> {error, <<"inet codec: invalid data"/utf8>>} end. -file("src/postgleam/codec/inet.gleam", 23). -spec build(integer()) -> postgleam@codec:codec(). build(Type_oid) -> {codec, <<"inet"/utf8>>, Type_oid, binary, fun encode/1, fun decode/1}. -file("src/postgleam/codec/inet.gleam", 13). -spec matcher() -> postgleam@codec:codec_matcher(). matcher() -> {codec_matcher, <<"inet"/utf8>>, [869, 650], none, binary, fun build/1}.