You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2013/04/26 19:53:24 UTC

git commit: Replace SIZE() with COUNTOF() and countof()

Updated Branches:
  refs/heads/master 207ac9a66 -> 1617f7620


Replace SIZE() with COUNTOF() and countof()


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1617f762
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1617f762
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1617f762

Branch: refs/heads/master
Commit: 1617f7620e652623779c28e29685f0f264190da5
Parents: 207ac9a
Author: James Peach <jp...@apache.org>
Authored: Fri Apr 26 10:49:20 2013 -0700
Committer: James Peach <jp...@apache.org>
Committed: Fri Apr 26 10:53:17 2013 -0700

----------------------------------------------------------------------
 CHANGES                          |    2 ++
 iocore/cache/Cache.cc            |    5 ++---
 iocore/cluster/ClusterHandler.cc |    2 +-
 iocore/cluster/P_ClusterCache.h  |    2 +-
 iocore/dns/DNS.cc                |    6 +++---
 iocore/net/NetVCTest.cc          |    2 +-
 iocore/net/P_NetVCTest.h         |    2 +-
 lib/ts/ink_defs.h                |   14 +++++++++++---
 mgmt/cli/TrafficLine.cc          |    2 +-
 mgmt/cli/cliMain.cc              |    3 +--
 proxy/Main.cc                    |    7 +++----
 proxy/StatSystem.cc              |    4 ++--
 proxy/logcat.cc                  |    5 ++---
 proxy/logstats.cc                |    8 +++-----
 proxy/sac.cc                     |    4 +---
 15 files changed, 35 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 9f48947..e13b24a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,8 @@
   Changes with Apache Traffic Server 3.3.3
 
 
+  *) [TS-1856] Replace SIZE() macro with COUNTOF() and countof().
+
   *) [TS-1853] Fix formatting in logstats to be consistenly 2 decimals.
 
   *) [TS-1852] Fix missing AC_PROG_SED on CentOS 5.9.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/iocore/cache/Cache.cc
----------------------------------------------------------------------
diff --git a/iocore/cache/Cache.cc b/iocore/cache/Cache.cc
index 9676291..bc273d3 100644
--- a/iocore/cache/Cache.cc
+++ b/iocore/cache/Cache.cc
@@ -859,7 +859,7 @@ CacheProcessor::cacheInitialized()
             break;
         }
       }
-      // let us cocalate the Size
+      // let us calculate the Size
       if (cache_config_ram_cache_size == AUTO_SIZE_RAM_CACHE) {
         Debug("cache_init", "CacheProcessor::cacheInitialized - cache_config_ram_cache_size == AUTO_SIZE_RAM_CACHE");
         for (i = 0; i < gnvol; i++) {
@@ -1125,7 +1125,6 @@ Vol::init(char *s, off_t blocks, off_t dir_skip, bool clear)
   len = blocks * STORE_BLOCK_SIZE;
   ink_assert(len <= MAX_VOL_SIZE);
   skip = dir_skip;
-  int i;
   prev_recover_pos = 0;
 
   // successive approximation, directory/meta data eats up some storage
@@ -1167,7 +1166,7 @@ Vol::init(char *s, off_t blocks, off_t dir_skip, bool clear)
   init_info->vol_aio[2].aiocb.aio_offset = bs;
   init_info->vol_aio[3].aiocb.aio_offset = bs + footer_offset;
 
-  for (i = 0; i < 4; i++) {
+  for (unsigned i = 0; i < countof(init_info->vol_aio); i++) {
     AIOCallback *aio = &(init_info->vol_aio[i]);
     aio->aiocb.aio_fildes = fd;
     aio->aiocb.aio_buf = &(init_info->vol_h_f[i * STORE_BLOCK_SIZE]);

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/iocore/cluster/ClusterHandler.cc
----------------------------------------------------------------------
diff --git a/iocore/cluster/ClusterHandler.cc b/iocore/cluster/ClusterHandler.cc
index 6e4c5ca..770aa89 100644
--- a/iocore/cluster/ClusterHandler.cc
+++ b/iocore/cluster/ClusterHandler.cc
@@ -34,7 +34,7 @@
 // Global Data
 /*************************************************************************/
 // Initialize clusterFunction[] size
-int SIZE_clusterFunction = SIZE(clusterFunction);
+unsigned SIZE_clusterFunction = countof(clusterFunction);
 
 // hook for testing
 ClusterFunction *ptest_ClusterFunction = NULL;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/iocore/cluster/P_ClusterCache.h
----------------------------------------------------------------------
diff --git a/iocore/cluster/P_ClusterCache.h b/iocore/cluster/P_ClusterCache.h
index 9fc001f..f885689 100644
--- a/iocore/cluster/P_ClusterCache.h
+++ b/iocore/cluster/P_ClusterCache.h
@@ -866,7 +866,7 @@ ClusterFunctionDescriptor clusterFunction[]
 #endif
 
 ;
-extern int SIZE_clusterFunction;        // clusterFunction[] entries
+extern unsigned SIZE_clusterFunction;        // clusterFunction[] entries
 
 //////////////////////////////////////////////////////////////
 // Map from Cluster Function code to send queue priority

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/iocore/dns/DNS.cc
----------------------------------------------------------------------
diff --git a/iocore/dns/DNS.cc b/iocore/dns/DNS.cc
index 2d99eea..3593cd4 100644
--- a/iocore/dns/DNS.cc
+++ b/iocore/dns/DNS.cc
@@ -569,7 +569,7 @@ DNSHandler::retry_named(int ndx, ink_hrtime t, bool reopen)
   char buffer[MAX_DNS_PACKET_LEN];
   Debug("dns", "trying to resolve '%s' from DNS connection, ndx %d", try_server_names[try_servers], ndx);
   int r = _ink_res_mkquery(m_res, try_server_names[try_servers], T_A, buffer);
-  try_servers = (try_servers + 1) % SIZE(try_server_names);
+  try_servers = (try_servers + 1) % countof(try_server_names);
   ink_assert(r >= 0);
   if (r >= 0) {                 // looking for a bounce
     int res = socketManager.send(con[ndx].fd, buffer, r, 0);
@@ -597,7 +597,7 @@ DNSHandler::try_primary_named(bool reopen)
     if (local_num_entries < DEFAULT_NUM_TRY_SERVER)
       try_servers = (try_servers + 1) % local_num_entries;
     else
-      try_servers = (try_servers + 1) % SIZE(try_server_names);
+      try_servers = (try_servers + 1) % countof(try_server_names);
     ink_assert(r >= 0);
     if (r >= 0) {               // looking for a bounce
       int res = socketManager.send(con[0].fd, buffer, r, 0);
@@ -1421,7 +1421,7 @@ dns_process(DNSHandler *handler, HostEnt *buf, int len)
     // e->qname_len, no ?
     if (local_num_entries >= DEFAULT_NUM_TRY_SERVER) {
       if ((attempt_num_entries % 50) == 0) {
-        try_servers = (try_servers + 1) % SIZE(try_server_names);
+        try_servers = (try_servers + 1) % countof(try_server_names);
         ink_strlcpy(try_server_names[try_servers], e->qname, MAXDNAME);
         memset(&try_server_names[try_servers][strlen(e->qname)], 0, 1);
         attempt_num_entries = 0;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/iocore/net/NetVCTest.cc
----------------------------------------------------------------------
diff --git a/iocore/net/NetVCTest.cc b/iocore/net/NetVCTest.cc
index 8903e72..55844f7 100644
--- a/iocore/net/NetVCTest.cc
+++ b/iocore/net/NetVCTest.cc
@@ -95,7 +95,7 @@ NVC_test_def netvc_tests_def[] = {
   {"overflow", 50, 50, 0, 35000, 1024, 35, EVENT_NONE, VC_EVENT_WRITE_COMPLETE}
 
 };
-int num_netvc_tests = SIZE(netvc_tests_def);
+const unsigned num_netvc_tests = countof(netvc_tests_def);
 
 
 NetVCTest::NetVCTest():

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/iocore/net/P_NetVCTest.h
----------------------------------------------------------------------
diff --git a/iocore/net/P_NetVCTest.h b/iocore/net/P_NetVCTest.h
index a950f2d..14f4ea1 100644
--- a/iocore/net/P_NetVCTest.h
+++ b/iocore/net/P_NetVCTest.h
@@ -69,7 +69,7 @@ struct NVC_test_def
 };
 
 extern NVC_test_def netvc_tests_def[];
-extern int num_netvc_tests;
+extern const unsigned num_netvc_tests;
 
 class NetTestDriver:public Continuation
 {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/lib/ts/ink_defs.h
----------------------------------------------------------------------
diff --git a/lib/ts/ink_defs.h b/lib/ts/ink_defs.h
index 5df5dcc..7aa4c10 100644
--- a/lib/ts/ink_defs.h
+++ b/lib/ts/ink_defs.h
@@ -85,9 +85,17 @@
 // interpreted as 32 bits
 #define NULL_PTR static_cast<void*>(0)
 
-/* Some popular defines
-*/
-#define SIZE(x) (sizeof(x)/sizeof((x)[0]))
+// Determine the element count for an array.
+#define COUNTOF(x) ((unsigned)(sizeof(x)/sizeof((x)[0])))
+
+#ifdef __cplusplus
+template<typename T, unsigned N>
+static inline unsigned
+countof(const T (&)[N]) {
+  return N;
+}
+#endif
+
 #define SOCKOPT_ON ((char*)&on)
 #define SOCKOPT_OFF ((char*)&off)
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/mgmt/cli/TrafficLine.cc
----------------------------------------------------------------------
diff --git a/mgmt/cli/TrafficLine.cc b/mgmt/cli/TrafficLine.cc
index 16c6a2f..4c318ea 100644
--- a/mgmt/cli/TrafficLine.cc
+++ b/mgmt/cli/TrafficLine.cc
@@ -190,7 +190,7 @@ main(int argc, char **argv)
   };
 
   // Process command line arguments and dump into variables
-  process_args(argument_descriptions, SIZE(argument_descriptions), argv);
+  process_args(argument_descriptions, countof(argument_descriptions), argv);
 
   // check for the version number request
   if (VersionFlag) {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/mgmt/cli/cliMain.cc
----------------------------------------------------------------------
diff --git a/mgmt/cli/cliMain.cc b/mgmt/cli/cliMain.cc
index 11d242f..671eba8 100644
--- a/mgmt/cli/cliMain.cc
+++ b/mgmt/cli/cliMain.cc
@@ -64,11 +64,10 @@ main(int argc, char *argv[])
     {"version", 'V', "Print Version Id", "T", &version_flag, NULL, NULL}
   };
 
-  int n_argument_descriptions = SIZE(argument_descriptions);
   NOWARN_UNUSED(argc);
 
   // Process command line arguments and dump into variables
-  process_args(argument_descriptions, n_argument_descriptions, argv);
+  process_args(argument_descriptions, countof(argument_descriptions), argv);
 
   // check for the version number request
   if (version_flag) {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/proxy/Main.cc
----------------------------------------------------------------------
diff --git a/proxy/Main.cc b/proxy/Main.cc
index 9d04841..793add0 100644
--- a/proxy/Main.cc
+++ b/proxy/Main.cc
@@ -243,7 +243,6 @@ static const ArgumentDescription argument_descriptions[] = {
    NULL, NULL},
   {"help", 'h', "HELP!", NULL, NULL, NULL, usage},
 };
-static const unsigned n_argument_descriptions = SIZE(argument_descriptions);
 
 //
 // Initialize operating system related information/services
@@ -707,7 +706,7 @@ static int
 cmd_index(char *p)
 {
   p += strspn(p, " \t");
-  for (unsigned c = 0; c < SIZE(commands); c++) {
+  for (unsigned c = 0; c < countof(commands); c++) {
     const char *l = commands[c].n;
     while (l) {
       const char *s = strchr(l, '/');
@@ -729,7 +728,7 @@ cmd_help(char *cmd)
   printf("HELP\n\n");
   cmd = skip(cmd, true);
   if (!cmd) {
-    for (unsigned i = 0; i < SIZE(commands); i++) {
+    for (unsigned i = 0; i < countof(commands); i++) {
       printf("%15s  %s\n", commands[i].n, commands[i].d);
     }
   } else {
@@ -1336,7 +1335,7 @@ main(int argc, char **argv)
   ink_strlcpy(management_directory, Layout::get()->sysconfdir, sizeof(management_directory));
   chdir_root(); // change directory to the install root of traffic server.
 
-  process_args(argument_descriptions, n_argument_descriptions, argv);
+  process_args(argument_descriptions, countof(argument_descriptions), argv);
 
   // Check for version number request
   if (version_flag) {

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/proxy/StatSystem.cc
----------------------------------------------------------------------
diff --git a/proxy/StatSystem.cc b/proxy/StatSystem.cc
index 480dfc9..f52bd57 100644
--- a/proxy/StatSystem.cc
+++ b/proxy/StatSystem.cc
@@ -167,12 +167,12 @@ static int
 persistent_stat(int i)
 {
 #ifndef DEFAULT_PERSISTENT
-  for (int j = 0; j < (int) SIZE(persistent_stats); j++)
+  for (unsigned j = 0; j < countof(persistent_stats); j++)
     if (persistent_stats[j] == i)
       return 1;
   return 0;
 #else
-  for (int j = 0; j < (int) SIZE(non_persistent_stats); j++)
+  for (unsigned j = 0; j < countof(non_persistent_stats); j++)
     if (non_persistent_stats[j] == i)
       return 0;
   return 1;

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/proxy/logcat.cc
----------------------------------------------------------------------
diff --git a/proxy/logcat.cc b/proxy/logcat.cc
index eab1a8d..fe9bd3e 100644
--- a/proxy/logcat.cc
+++ b/proxy/logcat.cc
@@ -77,7 +77,6 @@ static const ArgumentDescription argument_descriptions[] = {
   {"elf2", '2', "Convert to Extended2 Logging Format", "T", &elf2_flag, NULL,
    NULL}
 };
-static const int n_argument_descriptions = SIZE(argument_descriptions);
 
 static const char *USAGE_LINE = "Usage: " PROGRAM_NAME " [-o output-file | -a] [-CEhS"
 #ifdef DEBUG
@@ -241,7 +240,7 @@ main(int /* argc ATS_UNUSED */, char *argv[])
   // process command-line arguments
   //
   output_file[0] = 0;
-  process_args(argument_descriptions, n_argument_descriptions, argv, USAGE_LINE);
+  process_args(argument_descriptions, countof(argument_descriptions), argv, USAGE_LINE);
 
   // check for the version number request
   //
@@ -252,7 +251,7 @@ main(int /* argc ATS_UNUSED */, char *argv[])
   // check for help request
   //
   if (help) {
-    usage(argument_descriptions, n_argument_descriptions, USAGE_LINE);
+    usage(argument_descriptions, countof(argument_descriptions), USAGE_LINE);
     _exit(NO_ERROR);
   }
   // check that only one of the -o and -a options was specified

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/proxy/logstats.cc
----------------------------------------------------------------------
diff --git a/proxy/logstats.cc b/proxy/logstats.cc
index e99b2e1..dc5815a 100644
--- a/proxy/logstats.cc
+++ b/proxy/logstats.cc
@@ -658,8 +658,6 @@ static ArgumentDescription argument_descriptions[] = {
   {"version", 'V', "Print Version Id", "T", &cl.version, NULL, NULL},
 };
 
-static int n_argument_descriptions = SIZE(argument_descriptions);
-
 static const char *USAGE_LINE =
   "Usage: " PROGRAM_NAME " [-f logfile] [-o origin[,...]] [-O originfile] [-m minhits] [-inshv]";
 
@@ -667,7 +665,7 @@ void
 CommandLineArgs::parse_arguments(char** argv)
 {
   // process command-line arguments
-  process_args(argument_descriptions, n_argument_descriptions, argv, USAGE_LINE);
+  process_args(argument_descriptions, countof(argument_descriptions), argv, USAGE_LINE);
 
   // Process as "CGI" ?
   if (strstr(argv[0], ".cgi") || cgi) {
@@ -720,7 +718,7 @@ CommandLineArgs::parse_arguments(char** argv)
 
   // check for help request
   if (help) {
-    usage(argument_descriptions, n_argument_descriptions, USAGE_LINE);
+    usage(argument_descriptions, countof(argument_descriptions), USAGE_LINE);
     _exit(0);
   }
 }
@@ -2302,7 +2300,7 @@ main(int /* argc ATS_UNUSED */, char *argv[])
     fs.open(cl.origin_file, std::ios::in);
     if (!fs.is_open()) {
       std::cerr << "can't read " << cl.origin_file << std::endl;
-      usage(argument_descriptions, n_argument_descriptions, USAGE_LINE);
+      usage(argument_descriptions, countof(argument_descriptions), USAGE_LINE);
       _exit(0);
     }
 

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1617f762/proxy/sac.cc
----------------------------------------------------------------------
diff --git a/proxy/sac.cc b/proxy/sac.cc
index 11f9f43..1925113 100644
--- a/proxy/sac.cc
+++ b/proxy/sac.cc
@@ -70,8 +70,6 @@ ArgumentDescription argument_descriptions[] = {
 #endif
   {"help", 'h', "HELP!", NULL, NULL, NULL, usage},
 };
-int n_argument_descriptions = SIZE(argument_descriptions);
-
 
 /*-------------------------------------------------------------------------
   main
@@ -90,7 +88,7 @@ main(int /* argc ATS_UNUSED */, char *argv[])
   // take care of command-line arguments
   //
   snprintf(configDirectoryType, sizeof(configDirectoryType), "S%d", PATH_NAME_MAX - 1);
-  process_args(argument_descriptions, n_argument_descriptions, argv);
+  process_args(argument_descriptions, countof(argument_descriptions), argv);
 
   // Get log directory
   ink_strlcpy(system_log_dir, Layout::get()->logdir, sizeof(system_log_dir));


Re: git commit: Replace SIZE() with COUNTOF() and countof()

Posted by James Peach <jp...@apache.org>.
On Apr 26, 2013, at 12:06 PM, Igor Galić <i....@brainsware.org> wrote:

> 
> 
> ----- Original Message -----
>> Updated Branches:
>>  refs/heads/master 207ac9a66 -> 1617f7620
>> 
>> 
>> Replace SIZE() with COUNTOF() and countof()
> [snip]
>> Branch: refs/heads/master
>> Commit: 1617f7620e652623779c28e29685f0f264190da5
>> Parents: 207ac9a
> [snip]
>> diff --git a/iocore/cache/Cache.cc b/iocore/cache/Cache.cc
>> index 9676291..bc273d3 100644
>> --- a/iocore/cache/Cache.cc
>> +++ b/iocore/cache/Cache.cc
>> @@ -1167,7 +1166,7 @@ Vol::init(char *s, off_t blocks, off_t
>> dir_skip, bool clear)
>>   init_info->vol_aio[2].aiocb.aio_offset = bs;
>>   init_info->vol_aio[3].aiocb.aio_offset = bs + footer_offset;
>> 
>> -  for (i = 0; i < 4; i++) {
>> +  for (unsigned i = 0; i < countof(init_info->vol_aio); i++) {
>>     AIOCallback *aio = &(init_info->vol_aio[i]);
>>     aio->aiocb.aio_fildes = fd;
>>     aio->aiocb.aio_buf = &(init_info->vol_h_f[i *
>>     STORE_BLOCK_SIZE]);
> 
> Why not use size_t then?

Just because it seemed like overkill. unsigned is large enough and doesn't need an additional header to be included. size_t is usually 8 bytes and then we have to go and use %zu and do all of that platform compatibility goop ...

> 
> -- i
> Igor Galić
> 
> Tel: +43 (0) 664 886 22 883
> Mail: i.galic@brainsware.org
> URL: http://brainsware.org/
> GPG: 6880 4155 74BD FD7C B515  2EA5 4B1D 9E08 A097 C9AE
> 


Re: git commit: Replace SIZE() with COUNTOF() and countof()

Posted by Igor Galić <i....@brainsware.org>.

----- Original Message -----
> Updated Branches:
>   refs/heads/master 207ac9a66 -> 1617f7620
> 
> 
> Replace SIZE() with COUNTOF() and countof()
[snip]
> Branch: refs/heads/master
> Commit: 1617f7620e652623779c28e29685f0f264190da5
> Parents: 207ac9a
[snip]
> diff --git a/iocore/cache/Cache.cc b/iocore/cache/Cache.cc
> index 9676291..bc273d3 100644
> --- a/iocore/cache/Cache.cc
> +++ b/iocore/cache/Cache.cc
> @@ -1167,7 +1166,7 @@ Vol::init(char *s, off_t blocks, off_t
> dir_skip, bool clear)
>    init_info->vol_aio[2].aiocb.aio_offset = bs;
>    init_info->vol_aio[3].aiocb.aio_offset = bs + footer_offset;
>  
> -  for (i = 0; i < 4; i++) {
> +  for (unsigned i = 0; i < countof(init_info->vol_aio); i++) {
>      AIOCallback *aio = &(init_info->vol_aio[i]);
>      aio->aiocb.aio_fildes = fd;
>      aio->aiocb.aio_buf = &(init_info->vol_h_f[i *
>      STORE_BLOCK_SIZE]);

Why not use size_t then?

-- i
Igor Galić

Tel: +43 (0) 664 886 22 883
Mail: i.galic@brainsware.org
URL: http://brainsware.org/
GPG: 6880 4155 74BD FD7C B515  2EA5 4B1D 9E08 A097 C9AE