1
0
mirror of https://git.savannah.gnu.org/git/gperf.git synced 2025-12-02 13:09:22 +00:00

Avoid 'warning: use of old-style cast' in output code.

This commit is contained in:
Bruno Haible
2016-11-26 01:18:56 +01:00
parent bbe4d732f3
commit 658e826478
3 changed files with 40 additions and 7 deletions

View File

@@ -749,6 +749,21 @@ void Output_Compare_Memcmp::output_comparison (const Output_Expr& expr1,
/* ------------------------------------------------------------------------- */
/* Generates a C expression for an asso_values[] index. */
void
Output::output_asso_values_index (int pos) const
{
if (pos == Positions::LASTCHAR)
printf ("str[len - 1]");
else
{
printf ("str[%d]", pos);
if (_alpha_inc[pos])
printf ("+%u", _alpha_inc[pos]);
}
}
/* Generates a C expression for an asso_values[] reference. */
void
@@ -757,14 +772,18 @@ Output::output_asso_values_ref (int pos) const
printf ("asso_values[");
/* Always cast to unsigned char. This is necessary when the alpha_inc
is nonzero, and also avoids a gcc warning "subscript has type 'char'". */
printf ("(unsigned char)");
if (pos == Positions::LASTCHAR)
printf ("str[len - 1]");
if (option[CPLUSPLUS])
{
/* In C++, a C style cast may lead to a 'warning: use of old-style cast'.
Therefore prefer the C++ style cast syntax. */
printf ("static_cast<unsigned char>(");
output_asso_values_index (pos);
printf (")");
}
else
{
printf ("str[%d]", pos);
if (_alpha_inc[pos])
printf ("+%u", _alpha_inc[pos]);
printf ("(unsigned char)");
output_asso_values_index (pos);
}
printf ("]");
}

View File

@@ -2,7 +2,7 @@
/* Output routines.
Copyright (C) 1989-1998, 2000, 2002-2003, 2009 Free Software Foundation, Inc.
Copyright (C) 1989-1998, 2000, 2002-2003, 2009, 2016 Free Software Foundation, Inc.
Written by Douglas C. Schmidt <schmidt@ics.uci.edu>
and Bruno Haible <bruno@clisp.org>.
@@ -71,6 +71,9 @@ private:
/* Outputs the maximum and minimum hash values etc. */
void output_constants (struct Output_Constants&) const;
/* Generates a C expression for an asso_values[] index. */
void output_asso_values_index (int pos) const;
/* Generates a C expression for an asso_values[] reference. */
void output_asso_values_ref (int pos) const;