summaryrefslogtreecommitdiff
path: root/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cpp/src/thrift/generate/t_delphi_generator.cc')
-rw-r--r--compiler/cpp/src/thrift/generate/t_delphi_generator.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/compiler/cpp/src/thrift/generate/t_delphi_generator.cc b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
index 2d0af119f..f35ffcb99 100644
--- a/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_delphi_generator.cc
@@ -1024,6 +1024,7 @@ void t_delphi_generator::init_known_types_list() {
// known base types
types_known[type_name(g_type_string)] = 1;
types_known[type_name(g_type_binary)] = 1;
+ types_known[type_name(g_type_uuid)] = 1;
types_known[type_name(g_type_bool)] = 1;
types_known[type_name(g_type_i8)] = 1;
types_known[type_name(g_type_i16)] = 1;
@@ -1398,6 +1399,9 @@ string t_delphi_generator::render_const_value(ostream& vars,
case t_base_type::TYPE_STRING:
render << "'" << get_escaped_string(value) << "'";
break;
+ case t_base_type::TYPE_UUID:
+ render << "['{" << value->get_uuid() << "}']";
+ break;
case t_base_type::TYPE_BOOL:
render << ((value->get_integer() > 0) ? "True" : "False");
break;
@@ -2709,6 +2713,9 @@ void t_delphi_generator::generate_deserialize_field(ostream& out,
out << "ReadString();";
}
break;
+ case t_base_type::TYPE_UUID:
+ out << "ReadUuid();";
+ break;
case t_base_type::TYPE_BOOL:
out << "ReadBool();";
break;
@@ -2910,6 +2917,9 @@ void t_delphi_generator::generate_serialize_field(ostream& out,
}
out << name << ");";
break;
+ case t_base_type::TYPE_UUID:
+ out << "WriteUuid(" << name << ");";
+ break;
case t_base_type::TYPE_BOOL:
out << "WriteBool(" << name << ");";
break;
@@ -3195,6 +3205,7 @@ string t_delphi_generator::input_arg_prefix(t_type* ttype) {
// these should be const'ed for optimal performamce
case t_base_type::TYPE_STRING: // refcounted pointer
+ case t_base_type::TYPE_UUID: // refcounted pointer
case t_base_type::TYPE_I64: // larger than 32 bit
case t_base_type::TYPE_DOUBLE: // larger than 32 bit
return "const ";
@@ -3247,6 +3258,8 @@ string t_delphi_generator::base_type_name(t_base_type* tbase) {
} else {
return com_types_ ? "System.WideString" : "System.string";
}
+ case t_base_type::TYPE_UUID:
+ return "System.TGuid";
case t_base_type::TYPE_BOOL:
return "System.Boolean";
case t_base_type::TYPE_I8:
@@ -3413,6 +3426,8 @@ string t_delphi_generator::type_to_enum(t_type* type) {
throw "NO T_VOID CONSTRUCT";
case t_base_type::TYPE_STRING:
return "TType.String_";
+ case t_base_type::TYPE_UUID:
+ return "TType.Uuid";
case t_base_type::TYPE_BOOL:
return "TType.Bool_";
case t_base_type::TYPE_I8:
@@ -3461,6 +3476,8 @@ string t_delphi_generator::empty_value(t_type* type) {
} else {
return "''";
}
+ case t_base_type::TYPE_UUID:
+ return "System.TGuid.Empty";
case t_base_type::TYPE_BOOL:
return "False";
case t_base_type::TYPE_I8:
@@ -4065,6 +4082,9 @@ void t_delphi_generator::generate_delphi_struct_tostring_impl(ostream& out,
<< type_name(ttype, false, true, false, false)
<< ">.ToString( System.Ord( Self."
<< prop_name((*f_iter), is_exception) << ")));" << endl;
+ } else if (ttype->is_uuid()) {
+ indent_impl(out) << tmp_sb << ".Append( GUIDToString(Self." << prop_name((*f_iter), is_exception) << "));"
+ << endl;
} else {
indent_impl(out) << tmp_sb << ".Append( Self." << prop_name((*f_iter), is_exception) << ");"
<< endl;