{% macro emit(field, suffix="") -%} {%- import "emit.java" as _self -%} {{- _self.types[field.__class__.__name__](field, suffix) -}} {%- endmacro %} {% macro common(field, suffix="") -%} buffer.put{{ field.java_type.capitalize() }}({{ field.java_name }}{{ suffix }}); {%- endmacro %} {% macro byte(field, suffix="") -%} buffer.put({{ field.java_name }}{{ suffix }}); {%- endmacro %} {% macro boolean(field, suffix="") -%} putBoolean(buffer, {{ field.java_name }}{{ suffix }}); {%- endmacro %} {% macro string(field, suffix="") -%} putString(buffer, {{ field.java_name }}{{ suffix }}); {%- endmacro %} {% macro message(field, suffix="") -%} putMessage(buffer, {{ field.java_name }}{{ suffix }}); {%- endmacro %} {% macro queue(field, suffix="") -%} putQueue(buffer, {{ field.java_name }}{{ suffix }}); {%- endmacro %} {% macro error(field, suffix="") -%} buffer.put((byte) {{ field.java_name }}{{ suffix }}.ordinal()); {%- endmacro %} {% macro list(field, suffix="") -%} {%- import "emit.java" as _self -%} buffer.putInt({{ field.java_name }}.length); for (int i = 0; i < {{ field.java_name}}.length; i++) { {{ _self.emit(field._field, "[i]") }} } {%- endmacro %} {% set types = { 'Bool': boolean, 'Byte': byte, 'Short': common, 'Int': common, 'Long': common, 'Float': common, 'Double': common, 'String': string, 'TelestoMessage': message, 'TelestoQueue': queue, 'TelestoErrorType': error, 'List': list } %}