@@ -28,50 +28,50 @@ pub fn (e &Encoder) bytes() []u8 {
2828}
2929
3030pub fn (mut e Encoder) encode [T](data T) []u8 {
31- $if T.typ is string {
31+ $if T is string {
3232 e.encode_string (data)
33- } $else $if T.typ is bool {
33+ } $else $if T is bool {
3434 e.encode_bool (data)
3535 }
3636 // TODO: if int encode_int, if uint encode_uint
3737 // instead of needing to check each type, also
3838 // then we will be using the smallest storage
39- $else $if T.typ is i8 {
39+ $else $if T is i8 {
4040 e.encode_i8 (data)
41- } $else $if T.typ is i16 {
41+ } $else $if T is i16 {
4242 e.encode_i16 (data)
43- } $else $if T.typ is int {
43+ } $else $if T is int {
4444 e.encode_i32 (data)
45- } $else $if T.typ is i64 {
45+ } $else $if T is i64 {
4646 e.encode_i64 (data)
47- } $else $if T.typ is u8 {
47+ } $else $if T is u8 {
4848 e.encode_u8 (data)
49- } $else $if T.typ is u16 {
49+ } $else $if T is u16 {
5050 e.encode_u16 (data)
51- } $else $if T.typ is u32 {
51+ } $else $if T is u32 {
5252 e.encode_u32 (data)
53- } $else $if T.typ is u64 {
53+ } $else $if T is u64 {
5454 e.encode_u64 (data)
55- } $else $if T.typ is f32 {
55+ } $else $if T is f32 {
5656 e.encode_f32 (data)
57- } $else $if T.typ is f64 {
57+ } $else $if T is f64 {
5858 e.encode_f64 (data)
59- } $else $if T.typ is time.Time {
59+ } $else $if T is time.Time {
6060 e.encode_time (data)
61- } $else $if T.typ is []u8 {
61+ } $else $if T is []u8 {
6262 e.encode_string_bytes_raw (data)
63- } $else $if T is $Array {
63+ } $else $if T is $array {
6464 e.write_array_start (data.len)
6565 for value in data {
6666 e.encode (value)
6767 }
68- } $else $if T is $Map {
68+ } $else $if T is $map {
6969 e.write_map_start (data.len)
7070 for key, value in data {
7171 e.encode (key)
7272 e.encode (value)
7373 }
74- } $else $if T is $Struct {
74+ } $else $if T is $struct {
7575 // TODO: is there currently a way to get T.fields.len? if not, add it.
7676 mut fields_len := 0
7777 $for _ in T.fields {
@@ -84,6 +84,7 @@ pub fn (mut e Encoder) encode[T](data T) []u8 {
8484 e.write_map_start (fields_len)
8585 }
8686 $for field in T.fields {
87+ value := data.$(field.name)
8788 mut codec_attr := ''
8889 for attr in field.attrs {
8990 if attr.starts_with ('codec:' ) {
@@ -97,7 +98,9 @@ pub fn (mut e Encoder) encode[T](data T) []u8 {
9798 } else {
9899 e.encode_string (field.name)
99100 }
100- e.encode (data.$(field.name))
101+
102+ // e.encode(data.$(field.name)) // FIXME - not work - bug
103+ e.encode (value)
101104 }
102105 }
103106 return e.buffer
0 commit comments