help-smalltalk
[Top][All Lists]
Advanced

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

[Help-smalltalk] [PATCH 4/4] libgst: Define and use COUNT_OF


From: Lee Duhem
Subject: [Help-smalltalk] [PATCH 4/4] libgst: Define and use COUNT_OF
Date: Wed, 26 Apr 2017 19:19:32 +0800

2017-04-26  Lee Duhem  <address@hidden>

       * gstpriv.h (COUNT_OF): New macro.
       * dict.c (_gst_init_dictionary, _gst_init_dictionary_on_image_load):
       Use COUNT_OF.
       * sym.c (_gst_init_symbols_pass1): Ditto.
---
 libgst/ChangeLog | 7 +++++++
 libgst/dict.c    | 8 +++-----
 libgst/gstpriv.h | 5 +++++
 libgst/sym.c     | 6 +++---
 4 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/libgst/ChangeLog b/libgst/ChangeLog
index 4d1375c..5298b12 100644
--- a/libgst/ChangeLog
+++ b/libgst/ChangeLog
@@ -1,5 +1,12 @@
 2017-04-26  Lee Duhem  <address@hidden>
 
+       * gstpriv.h (COUNT_OF): New macro.
+       * dict.c (_gst_init_dictionary, _gst_init_dictionary_on_image_load):
+       Use COUNT_OF.
+       * sym.c (_gst_init_symbols_pass1): Ditto.
+
+2017-04-26  Lee Duhem  <address@hidden>
+
        * callin.c (_gst_type_name_to_oop): Replace sprintf with snprintf.
        (_gst_class_name_to_oop): Clean properly before return.
        * cint.c (_gst_invoke_croutine): Clean properly before return.
diff --git a/libgst/dict.c b/libgst/dict.c
index 6e11fc6..30845ce 100644
--- a/libgst/dict.c
+++ b/libgst/dict.c
@@ -828,13 +828,13 @@ _gst_init_dictionary (void)
 
   _gst_init_symbols_pass1 ();
 
-  create_classes_pass1 (class_info, sizeof (class_info) / sizeof 
(class_info[0]));
+  create_classes_pass1 (class_info, COUNT_OF (class_info));
 
   init_proto_oops();
   _gst_init_symbols_pass2 ();
   init_smalltalk_dictionary ();
 
-  create_classes_pass2 (class_info, sizeof (class_info) / sizeof 
(class_info[0]));
+  create_classes_pass2 (class_info, COUNT_OF (class_info));
 
   init_runtime_objects ();
   _gst_tenure_all_survivors ();
@@ -1308,9 +1308,7 @@ _gst_init_dictionary_on_image_load (mst_Boolean 
prim_table_matches)
 
   _gst_restore_symbols ();
 
-  for (ci = class_info; 
-       ci < class_info + sizeof(class_info) / sizeof(class_definition);
-       ci++)
+  for (ci = class_info; ci < class_info + COUNT_OF (class_info); ci++)
     if (ci->reloadAddress)
       {
        *ci->classVar = dictionary_at (_gst_smalltalk_dictionary,
diff --git a/libgst/gstpriv.h b/libgst/gstpriv.h
index 85aa9a0..ed68ef2 100644
--- a/libgst/gstpriv.h
+++ b/libgst/gstpriv.h
@@ -553,6 +553,11 @@ extern OOP _gst_nil_oop
 #define MIN(x, y)              ( ((x) > (y)) ? (y) : (x) )
 #endif
 
+#ifndef COUNT_OF
+#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / \
+               ((size_t)(!(sizeof(x) % sizeof(0[x])))))
+#endif
+
 #include "ansidecl.h"
 #include "mathl.h"
 #include "socketx.h"
diff --git a/libgst/sym.c b/libgst/sym.c
index 57f62e7..cbd0d32 100644
--- a/libgst/sym.c
+++ b/libgst/sym.c
@@ -1568,7 +1568,7 @@ _gst_init_symbols_pass1 (void)
      to the hash table entries.  */
   for (bs = _gst_builtin_selectors_hash;
        bs - _gst_builtin_selectors_hash <
-        sizeof (_gst_builtin_selectors_hash) / sizeof 
(_gst_builtin_selectors_hash[0]);
+        COUNT_OF (_gst_builtin_selectors_hash);
        bs++)
     if (bs->offset != -1)
       {
@@ -1594,7 +1594,7 @@ _gst_init_symbols_pass2 (void)
      to the hash table entries.  */
   for (bs = _gst_builtin_selectors_hash;
        bs - _gst_builtin_selectors_hash <
-        sizeof (_gst_builtin_selectors_hash) / sizeof 
(_gst_builtin_selectors_hash[0]);
+        COUNT_OF (_gst_builtin_selectors_hash);
        bs++)
     if (bs->offset != -1)
       {
@@ -1633,7 +1633,7 @@ _gst_restore_symbols (void)
      to the hash table entries.  */
   for (bs = _gst_builtin_selectors_hash;
        bs - _gst_builtin_selectors_hash <
-        sizeof (_gst_builtin_selectors_hash) / sizeof 
(_gst_builtin_selectors_hash[0]);
+        COUNT_OF (_gst_builtin_selectors_hash);
        bs++)
     if (bs->offset != -1)
       {
-- 
2.9.3




reply via email to

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