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) {