lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Issue 5733: Fix various type-conversion warnings (issue 559450053 by


From: nine . fierce . ballads
Subject: Re: Issue 5733: Fix various type-conversion warnings (issue 559450053 by address@hidden)
Date: Tue, 04 Feb 2020 06:37:42 -0800

Reviewers: lemzwerg,

Message:
On 2020/02/04 10:45:58, lemzwerg wrote:
> lily/accidental-placement.cc:62: scm_from_long  (stagger ?
context_hash : 1));
> Are you actually trying clang-format?  There's one space too much :-)

I was too lazy to deal with Han-Wen's config file as a patch.  Now that
it's in master, I plan to try it.

Description:
https://sourceforge.net/p/testlilyissues/issues/5733/

1: int->size_t in make_script_from_event ()
... and similarly in Fingering_engraver::make_script ().

2: Fix scm_from_... () with wrong types

3: Fix type-conversion warning in Scale
Assert that scale size is less than the max int value.

4: int->vsize in Dot_column

Please review this at https://codereview.appspot.com/559450053/

Affected files (+23, -26 lines):
  M lily/accidental-placement.cc
  M lily/dot-column.cc
  M lily/fingering-engraver.cc
  M lily/grob-array-scheme.cc
  M lily/include/script-interface.hh
  M lily/scale.cc
  M lily/script-engraver.cc
  M lily/tab-note-heads-engraver.cc


Index: lily/accidental-placement.cc
diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc
index 
0ac9fe98bcfcab465d19d1ff80b172827842423f..43b6971b9eb90b41189ee25c77b1ce8b8fbb514f
 100644
--- a/lily/accidental-placement.cc
+++ b/lily/accidental-placement.cc
@@ -56,10 +56,10 @@ Accidental_placement::add_accidental (Grob *me, Grob *a, 
bool stagger, long cont
     return;
 
   a->set_parent (me, X_AXIS);
-  long n = p->get_notename ();
 
   SCM accs = me->get_object ("accidental-grobs");
-  SCM key = scm_cons (scm_from_int (n), scm_from_long  (stagger ? context_hash 
: 1));
+  SCM key = scm_cons (scm_from_int (p->get_notename ()),
+                      scm_from_long  (stagger ? context_hash : 1));
   // assoc because we're dealing with pairs
   SCM entry = scm_assoc (key, accs);
   if (scm_is_false (entry))
Index: lily/dot-column.cc
diff --git a/lily/dot-column.cc b/lily/dot-column.cc
index 
744062c0edac9abc0a40d76ccae34b4d5628a5bb..66c9c91c2830ded090224fe1a22402be6b541d36
 100644
--- a/lily/dot-column.cc
+++ b/lily/dot-column.cc
@@ -170,11 +170,11 @@ Dot_column::calc_positioning_done (SCM smob)
       for (vsize j = 0; j < parent_stems.size (); j++)
         {
           Interval chord = Stem::head_positions (parent_stems[j]);
-          int total_room = ((int) chord.length () + 2
-                            + scm_to_int (chord_dots_limit)) / 2;
-          int total_dots = dots_each_stem[j].size ();
+          vsize total_room = (static_cast<size_t> (chord.length ()) + 2
+                            + scm_to_size_t (chord_dots_limit)) / 2;
+          vsize total_dots = dots_each_stem[j].size ();
           // remove excessive dots from the ends of the stem
-          for (int first_dot = 0; total_dots > total_room; total_dots--)
+          for (vsize first_dot = 0; total_dots > total_room; total_dots--)
             if (0 == (total_dots - total_room) % 2)
               dots_each_stem[j][first_dot++]->suicide ();
             else
Index: lily/fingering-engraver.cc
diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc
index 
d6a49f2dff55f261d028e849a9ef686f59b0516b..f7b9e68d29e7bf03af74fefb34b1ea08081d2fc4
 100644
--- a/lily/fingering-engraver.cc
+++ b/lily/fingering-engraver.cc
@@ -46,7 +46,7 @@ protected:
   void acknowledge_note_column (Grob_info);
 
 private:
-  void make_script (Direction, Stream_event *, int);
+  void make_script (Direction, Stream_event *, size_t);
 };
 
 void
@@ -100,7 +100,7 @@ Fingering_engraver::process_music ()
 }
 
 void
-Fingering_engraver::make_script (Direction d, Stream_event *r, int i)
+Fingering_engraver::make_script (Direction d, Stream_event *r, size_t i)
 {
   Item *fingering = make_item ("Fingering", r->self_scm ());
 
@@ -111,16 +111,12 @@ Fingering_engraver::make_script (Direction d, 
Stream_event *r, int i)
   Side_position_interface::set_axis (fingering, Y_AXIS);
   Self_alignment_interface::set_aligned_on_parent (fingering, X_AXIS);
 
-  // Hmm
-  int priority = 200;
-  SCM s = fingering->get_property ("script-priority");
-  if (scm_is_number (s))
-    priority = scm_to_int (s);
-
   /* See script-engraver.cc */
-  priority += i;
-
-  fingering->set_property ("script-priority", scm_from_int (priority));
+  SCM priority = fingering->get_property ("script-priority");
+  if (!scm_is_number (priority))
+    priority = scm_from_int (200); // TODO: Explain magic.
+  priority = scm_sum (priority, scm_from_size_t (i));
+  fingering->set_property ("script-priority", priority);
 
   if (d)
     fingering->set_property ("direction", scm_from_int (d));
Index: lily/grob-array-scheme.cc
diff --git a/lily/grob-array-scheme.cc b/lily/grob-array-scheme.cc
index 
23b6a14174af1f61af143a8528f11b999655aecd..3d9148d97c19e18cfb8b91d714a9a21a33815cc6
 100644
--- a/lily/grob-array-scheme.cc
+++ b/lily/grob-array-scheme.cc
@@ -29,7 +29,7 @@ LY_DEFINE (ly_grob_array_length, "ly:grob-array-length",
   LY_ASSERT_SMOB (Grob_array, grob_arr, 1);
 
   Grob_array *me = unsmob<Grob_array> (grob_arr);
-  return scm_from_int (me->size ());
+  return scm_from_size_t (me->size ());
 }
 
 LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref",
Index: lily/include/script-interface.hh
diff --git a/lily/include/script-interface.hh b/lily/include/script-interface.hh
index 
346b8da5282235ccb2d796d2cf8e880517c91324..85bf3e89025501bcde856616c3ee4fe4547dbc15
 100644
--- a/lily/include/script-interface.hh
+++ b/lily/include/script-interface.hh
@@ -41,7 +41,7 @@ public:
 };
 
 void make_script_from_event (Grob *p, Context *tg,
-                             SCM type, int index);
+                             SCM type, size_t index);
 
 #endif /* SCRIPT_INTERFACE_HH */
 
Index: lily/scale.cc
diff --git a/lily/scale.cc b/lily/scale.cc
index 
6f61854847206a09e0e28200083c33c8a11ddec5..fd82a7b3ce23459ba684e54313cafd0a6c23875e
 100644
--- a/lily/scale.cc
+++ b/lily/scale.cc
@@ -22,6 +22,8 @@
 #include "scale.hh"
 #include "protected-scm.hh"
 
+#include <limits>
+
 using std::vector;
 
 /*
@@ -94,7 +96,7 @@ LY_DEFINE (ly_set_default_scale, "ly:set-default-scale",
 int
 Scale::step_count () const
 {
-  return step_tones_.size ();
+  return static_cast<int> (step_tones_.size ());
 }
 
 Rational
@@ -136,6 +138,7 @@ Scale::normalize_step (int step) const
 
 Scale::Scale (vector<Rational> const &tones)
 {
+  assert (tones.size () <= std::numeric_limits<int>::max ());
   step_tones_ = tones;
 
   smobify_self ();
Index: lily/script-engraver.cc
diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc
index 
30faba863b430d1e7930459d3d88a6613a47031f..953f74983f5c6536e6f4e62f29492a6b2e7b6dc3
 100644
--- a/lily/script-engraver.cc
+++ b/lily/script-engraver.cc
@@ -106,7 +106,7 @@ copy_property (Grob *g, SCM sym, SCM alist)
 */
 void
 make_script_from_event (Grob *p, Context *tg,
-                        SCM art_type, int index)
+                        SCM art_type, size_t index)
 {
   SCM alist = tg->get_property ("scriptDefinitions");
   SCM art = scm_assoc (art_type, alist);
@@ -140,9 +140,7 @@ make_script_from_event (Grob *p, Context *tg,
           /* Make sure they're in order of user input by adding index i.
              Don't use the direction in this priority. Smaller means closer
              to the head.  */
-          int prio = scm_to_int (val) + index;
-
-          val = scm_from_int (prio);
+          val = scm_sum (val, scm_from_size_t (index));
         }
 
       SCM preset = p->get_property_data (sym);
@@ -154,7 +152,7 @@ make_script_from_event (Grob *p, Context *tg,
   if (!priority_found)
     {
       p->set_property ("script-priority",
-                       scm_from_int (index));
+                       scm_from_size_t (index));
     }
 }
 
Index: lily/tab-note-heads-engraver.cc
diff --git a/lily/tab-note-heads-engraver.cc b/lily/tab-note-heads-engraver.cc
index 
1ab941620574ca03c70522916a78d55fcd917303..89a33ac57cacebbab974a4d594a937cda4c1174d
 100644
--- a/lily/tab-note-heads-engraver.cc
+++ b/lily/tab-note-heads-engraver.cc
@@ -113,7 +113,7 @@ Tab_note_heads_engraver::process_music ()
   if (!scm_is_null (string_fret_finger))
     for (vsize i = 0; i < fret_count; i++)
       {
-        note_entry = scm_list_ref (string_fret_finger, scm_from_int (i));
+        note_entry = scm_list_ref (string_fret_finger, scm_from_size_t (i));
         string_number = scm_car (note_entry);
         if (scm_is_true (string_number))
           {





reply via email to

[Prev in Thread] Current Thread [Next in Thread]