MCPcopy Create free account
hub / github.com/apache/thrift / render_const_value

Method render_const_value

compiler/cpp/src/thrift/generate/t_java_generator.cc:793–848  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

791}
792
793string 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/**

Callers

nothing calls this directly

Calls 13

emit_double_as_stringFunction · 0.85
get_baseMethod · 0.80
get_integerMethod · 0.80
strMethod · 0.80
lengthMethod · 0.65
is_base_typeMethod · 0.45
is_binaryMethod · 0.45
get_typeMethod · 0.45
get_doubleMethod · 0.45
is_enumMethod · 0.45
get_namespaceMethod · 0.45

Tested by

no test coverage detected