| 791 | } |
| 792 | |
| 793 | string t_java_generator::render_const_value(ostream& out, t_type* type, t_const_value* value) { |
| 794 | type = get_true_type(type); |
| 795 | std::ostringstream render; |
| 796 | |
| 797 | if (type->is_base_type()) { |
| 798 | t_base_type::t_base tbase = ((t_base_type*)type)->get_base(); |
| 799 | switch (tbase) { |
| 800 | case t_base_type::TYPE_STRING: |
| 801 | if (((t_base_type*)type)->is_binary()) { |
| 802 | render << "java.nio.ByteBuffer.wrap(\"" << get_escaped_string(value) << "\".getBytes())"; |
| 803 | } else { |
| 804 | render << '"' << get_escaped_string(value) << '"'; |
| 805 | } |
| 806 | break; |
| 807 | case t_base_type::TYPE_UUID: |
| 808 | render << "java.util.UUID.fromString(\"" << get_escaped_string(value) << "\")"; |
| 809 | break; |
| 810 | case t_base_type::TYPE_BOOL: |
| 811 | render << ((value->get_integer() > 0) ? "true" : "false"); |
| 812 | break; |
| 813 | case t_base_type::TYPE_I8: |
| 814 | render << "(byte)" << value->get_integer(); |
| 815 | break; |
| 816 | case t_base_type::TYPE_I16: |
| 817 | render << "(short)" << value->get_integer(); |
| 818 | break; |
| 819 | case t_base_type::TYPE_I32: |
| 820 | render << value->get_integer(); |
| 821 | break; |
| 822 | case t_base_type::TYPE_I64: |
| 823 | render << value->get_integer() << "L"; |
| 824 | break; |
| 825 | case t_base_type::TYPE_DOUBLE: |
| 826 | if (value->get_type() == t_const_value::CV_INTEGER) { |
| 827 | render << value->get_integer() << "d"; |
| 828 | } else { |
| 829 | render << emit_double_as_string(value->get_double()); |
| 830 | } |
| 831 | break; |
| 832 | default: |
| 833 | throw "compiler error: no const of base type " + t_base_type::t_base_name(tbase); |
| 834 | } |
| 835 | } else if (type->is_enum()) { |
| 836 | std::string namespace_prefix = type->get_program()->get_namespace("java"); |
| 837 | if (namespace_prefix.length() > 0) { |
| 838 | namespace_prefix += "."; |
| 839 | } |
| 840 | render << namespace_prefix << value->get_identifier_with_parent(); |
| 841 | } else { |
| 842 | string t = tmp("tmp"); |
| 843 | print_const_value(out, t, type, value, true); |
| 844 | render << t; |
| 845 | } |
| 846 | |
| 847 | return render.str(); |
| 848 | } |
| 849 | |
| 850 | /** |
nothing calls this directly
no test coverage detected