@@ -520,21 +520,25 @@ fn (mut g Gen) gen_struct_enc_dec(utyp ast.Type, type_info ast.TypeInfo, styp st
520
520
}
521
521
}
522
522
if field_sym.kind == .enum_ {
523
- enc.writeln ('\t cJSON_AddItemToObject(o, "${name} ", json__encode_u64(${prefix_enc} . ${c_name(field.name)} ));\n ' )
523
+ enc.writeln ('\t cJSON_AddItemToObject(o, "${name} ", json__encode_u64(${prefix_enc}${op} ${c_name(field.name)} ));\n ' )
524
524
} else {
525
525
if field_sym.name == 'time.Time' {
526
526
// time struct requires special treatment
527
527
// it has to be encoded as a unix timestamp number
528
- enc.writeln ('\t cJSON_AddItemToObject(o, "${name} ", json__encode_u64(${prefix_enc} . ${c_name(field.name)} ._v_unix));' )
528
+ enc.writeln ('\t cJSON_AddItemToObject(o, "${name} ", json__encode_u64(${prefix_enc}${op} ${c_name(field.name)} ._v_unix));' )
529
529
} else {
530
530
if ! field.typ.is_real_pointer () {
531
531
enc.writeln ('\t cJSON_AddItemToObject(o, "${name} ", ${enc_name} (${prefix_enc}${op}${c_name(field.name)} )); /*A*/' )
532
532
} else {
533
533
arg_prefix := if field.typ.is_ptr () { '' } else { '*' }
534
534
sptr_value := '${prefix_enc}${op}${c_name(field.name)} '
535
- enc.writeln ('\t if (${sptr_value} != 0) {' )
536
- enc.writeln ('\t\t cJSON_AddItemToObject(o, "${name} ", ${enc_name} (${arg_prefix}${sptr_value} ));' )
537
- enc.writeln ('\t }\n ' )
535
+ if ! field.typ.has_flag (.option) {
536
+ enc.writeln ('\t if (${sptr_value} != 0) {' )
537
+ enc.writeln ('\t\t cJSON_AddItemToObject(o, "${name} ", ${enc_name} (${arg_prefix}${sptr_value} ));' )
538
+ enc.writeln ('\t }\n ' )
539
+ } else {
540
+ enc.writeln ('\t\t cJSON_AddItemToObject(o, "${name} ", ${enc_name} (${arg_prefix}${sptr_value} ));' )
541
+ }
538
542
}
539
543
}
540
544
}
0 commit comments