You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by jf...@apache.org on 2011/10/25 04:20:26 UTC

svn commit: r1188494 - /thrift/trunk/compiler/cpp/src/generate/t_delphi_generator.cc

Author: jfarrell
Date: Tue Oct 25 02:20:26 2011
New Revision: 1188494

URL: http://svn.apache.org/viewvc?rev=1188494&view=rev
Log:
Thrift-1395: Patch to prevent warnings for integer types in some cases
Client: delpi
Patch: Jens Geyer

Constants such as i32 = 0x80000000 produce a Delphi warning. The current code renders such values as positive integer, which needs an explicit typecast to satisfy the Delphi compiler.


Modified:
    thrift/trunk/compiler/cpp/src/generate/t_delphi_generator.cc

Modified: thrift/trunk/compiler/cpp/src/generate/t_delphi_generator.cc
URL: http://svn.apache.org/viewvc/thrift/trunk/compiler/cpp/src/generate/t_delphi_generator.cc?rev=1188494&r1=1188493&r2=1188494&view=diff
==============================================================================
--- thrift/trunk/compiler/cpp/src/generate/t_delphi_generator.cc (original)
+++ thrift/trunk/compiler/cpp/src/generate/t_delphi_generator.cc Tue Oct 25 02:20:26 2011
@@ -756,10 +756,32 @@ string t_delphi_generator::render_const_
         render << ((value->get_integer() > 0) ? "True" : "False");
         break;
       case t_base_type::TYPE_BYTE:
+        if( 0x7F < value->get_integer()) {
+          render << "ShortInt( " << value->get_integer() << ")";
+        } else {
+          render << value->get_integer();
+        }
+        break;
       case t_base_type::TYPE_I16:
+        if( 0x7FFF < value->get_integer()) {
+          render << "SmallInt( " << value->get_integer() << ")";
+        } else {
+          render << value->get_integer();
+        }
+        break;
       case t_base_type::TYPE_I32:
+        if( 0x7FFFFFFF < value->get_integer()) {
+          render << "LongInt( " << value->get_integer() << ")";
+        } else {
+          render << value->get_integer();
+        }
+        break;
       case t_base_type::TYPE_I64:
-        render << value->get_integer();
+        if( 0x7FFFFFFFFFFFFFFF < value->get_integer()) {
+          render << "Int64( " << value->get_integer() << ")";
+        } else {
+          render << value->get_integer();
+        }
         break;
       case t_base_type::TYPE_DOUBLE:
         if (value->get_type() == t_const_value::CV_INTEGER) {