You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2008/05/07 00:22:59 UTC

svn commit: r653942 - /stdcxx/branches/4.2.x/tests/localization/22.locale.num.get.mt.cpp

Author: sebor
Date: Tue May  6 15:22:58 2008
New Revision: 653942

URL: http://svn.apache.org/viewvc?rev=653942&view=rev
Log:
2008-05-06  Martin Sebor  <se...@roguewave.com>

	* tests/localization/22.locale.num.get.mt.cpp (rw_opt_nthreads,
	rw_opt_nloops, rw_opt_shared_locale): Removed rw_ prefix used
	by test driver symbols.
	(MyNumData): Added nlen_ and wlen_ data members.
	(thread_func): Avoided computing buffer length and used nlen_
	and wlen_ instead for efficiency.
	(run_test): Computed the length of input and stored in nlen_
	and wlen_.

Modified:
    stdcxx/branches/4.2.x/tests/localization/22.locale.num.get.mt.cpp

Modified: stdcxx/branches/4.2.x/tests/localization/22.locale.num.get.mt.cpp
URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/tests/localization/22.locale.num.get.mt.cpp?rev=653942&r1=653941&r2=653942&view=diff
==============================================================================
--- stdcxx/branches/4.2.x/tests/localization/22.locale.num.get.mt.cpp (original)
+++ stdcxx/branches/4.2.x/tests/localization/22.locale.num.get.mt.cpp Tue May  6 15:22:58 2008
@@ -42,10 +42,10 @@
 
 // default number of threads (will be adjusted to the number
 // of processors/cores later)
-int rw_opt_nthreads = 1;
+int opt_nthreads = 1;
 
 // the number of times each thread should iterate
-int rw_opt_nloops = MAX_LOOPS;
+int opt_nloops = MAX_LOOPS;
 
 #if !defined (_RWSTD_OS_HP_UX) || defined (_ILP32)
 
@@ -62,7 +62,7 @@
 
 // should all threads share the same set of locale objects instead
 // of creating their own?
-int rw_opt_shared_locale;
+int opt_shared_locale;
 
 /**************************************************************************/
 
@@ -117,11 +117,13 @@
 
     // holds the narrow/wide character representation of value_ and
     // the number of used 'charT' in each buffer.
-    char    ncs_ [BufferSize];
+    char        ncs_ [BufferSize];
+    std::size_t nlen_;   // number of valid characters in buffer
 
 #ifndef _RWSTD_NO_WCHAR_T
 
-    wchar_t wcs_ [BufferSize];
+    wchar_t     wcs_ [BufferSize];
+    std::size_t wlen_;   // number of valid characters in buffer
 
 #endif  // _RWSTD_NO_WCHAR_T
 
@@ -338,7 +340,7 @@
     wio.rdbuf (&wsb);
 #endif // _RWSTD_NO_WCHAR_T
 
-    for (int i = 0; i != rw_opt_nloops; ++i) {
+    for (int i = 0; i != opt_nloops; ++i) {
 
         // fill in the value and results for this locale
         const MyNumData& data = my_num_data [i % nlocales];
@@ -346,8 +348,8 @@
         // construct a named locale and imbue it in the ios object
         // so that the locale is used not only by the num_put facet
         const std::locale loc =
-            rw_opt_shared_locale ? data.locale_
-                                 : std::locale (data.locale_name_);
+            opt_shared_locale ? data.locale_
+                              : std::locale (data.locale_name_);
 
         if (test_char) {
             // exercise the narrow char specialization of the facet
@@ -356,7 +358,7 @@
                 std::use_facet<std::num_get<char> >(loc);
 
             nio.imbue (loc);
-            nsb.pubsetg (data.ncs_, Traits::length (data.ncs_));
+            nsb.pubsetg (data.ncs_, data.nlen_);
 
             test_get_data (data, ng,
                            std::istreambuf_iterator<char>(&nsb),
@@ -377,7 +379,7 @@
                 std::use_facet<std::num_get<wchar_t> >(loc);
 
             wio.imbue (loc);
-            wsb.pubsetg (data.wcs_, WTraits::length (data.wcs_));
+            wsb.pubsetg (data.wcs_, data.wlen_);
 
             test_get_data (data, wp,
                            std::istreambuf_iterator<wchar_t>(&wsb),
@@ -445,6 +447,8 @@
             test_put_data (data, np, std::ostreambuf_iterator<char>(&nsb),
                            nio, ' ', '\0');
 
+            data.nlen_ = std::char_traits<char>::length (data.ncs_);
+
             rw_fatal (!nio.fail (), __FILE__, __LINE__,
                       "num_put<char>::put(...) failed for locale(%#s)",
                       data.locale_name_);
@@ -460,13 +464,15 @@
             test_put_data (data, wp, std::ostreambuf_iterator<wchar_t>(&wsb),
                            wio, L' ', L'\0');
 
+            data.wlen_ = std::char_traits<wchar_t>::length (data.wcs_);
+
             rw_fatal (!wio.fail (), __FILE__, __LINE__,
                       "num_put<wchar_t>::put(...) failed for locale(%#s)",
                       data.locale_name_);
 
 #endif // _RWSTD_NO_WCHAR_T
 
-            if (rw_opt_shared_locale)
+            if (opt_shared_locale)
                 data.locale_ = loc;
 
             nlocales += 1;
@@ -487,8 +493,8 @@
     rw_info (0, 0, 0,
              "testing std::num_get<charT> with %d thread%{?}s%{;}, "
              "%d iteration%{?}s%{;} each, in %zu locales { %{ .*A@} }",
-             rw_opt_nthreads, 1 != rw_opt_nthreads,
-             rw_opt_nloops, 1 != rw_opt_nloops,
+             opt_nthreads, 1 != opt_nthreads,
+             opt_nloops, 1 != opt_nloops,
              nlocales, int (nlocales), "%#s", locales);
 
     rw_info (0, 0, 0, "exercising std::num_get<char>");
@@ -498,11 +504,11 @@
 
     // create and start a pool of threads and wait for them to finish
     int result =
-        rw_thread_pool (0, std::size_t (rw_opt_nthreads), 0, thread_func, 0);
+        rw_thread_pool (0, std::size_t (opt_nthreads), 0, thread_func, 0);
 
     rw_error (result == 0, 0, __LINE__,
               "rw_thread_pool(0, %d, 0, %{#f}, 0) failed",
-              rw_opt_nthreads, thread_func);
+              opt_nthreads, thread_func);
 
 #ifndef _RWSTD_NO_WCHAR_T
 
@@ -513,11 +519,11 @@
 
     // start a pool of threads to exercise wstring thread safety
     result =
-        rw_thread_pool (0, std::size_t (rw_opt_nthreads), 0, thread_func, 0);
+        rw_thread_pool (0, std::size_t (opt_nthreads), 0, thread_func, 0);
 
     rw_error (result == 0, 0, __LINE__,
               "rw_thread_pool(0, %d, 0, %{#f}, 0) failed",
-              rw_opt_nthreads, thread_func);
+              opt_nthreads, thread_func);
 
     // exercise both the char and the wchar_t specializations
     // at the same time
@@ -530,11 +536,11 @@
 
     // start a pool of threads to exercise wstring thread safety
     result =
-        rw_thread_pool (0, std::size_t (rw_opt_nthreads), 0, thread_func, 0);
+        rw_thread_pool (0, std::size_t (opt_nthreads), 0, thread_func, 0);
 
     rw_error (result == 0, 0, __LINE__,
               "rw_thread_pool(0, %d, 0, %{#f}, 0) failed",
-              rw_opt_nthreads, thread_func);
+              opt_nthreads, thread_func);
 
 #endif   // _RWSTD_NO_WCHAR_T
 
@@ -549,9 +555,9 @@
 
     // set nthreads to the greater of the number of processors
     // and 2 (for uniprocessor systems) by default
-    rw_opt_nthreads = rw_get_cpus ();
-    if (rw_opt_nthreads < 2)
-        rw_opt_nthreads = 2;
+    opt_nthreads = rw_get_cpus ();
+    if (opt_nthreads < 2)
+        opt_nthreads = 2;
 
 #endif   // _RWSTD_REENTRANT
 
@@ -563,10 +569,10 @@
                     "|-nlocales#0 "     // arg must be non-negative
                     "|-locales= "       // must be provided
                     "|-shared-locale# ",
-                    &rw_opt_nloops,
+                    &opt_nloops,
                     int (MAX_THREADS),
-                    &rw_opt_nthreads,
+                    &opt_nthreads,
                     &opt_nlocales,
                     &rw_opt_setlocales,
-                    &rw_opt_shared_locale);
+                    &opt_shared_locale);
 }