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 2006/11/29 23:22:45 UTC

svn commit: r480734 - in /incubator/stdcxx/trunk/util: def.cpp def.h monetary.cpp

Author: sebor
Date: Wed Nov 29 14:22:44 2006
New Revision: 480734

URL: http://svn.apache.org/viewvc?view=rev&rev=480734
Log:
2006-11-29  Martin Sebor  <se...@roguewave.com>

	* def.h (create_format): Removed redundant const qualifier from
	function formal arguments and removed their names.
	(mon_punct_out_): Removed data member.
	* def.cpp (Def): Invalidated mon_out_ char members by assigning
	CHAR_MAX as expected (and required by C) rather than -1.
	* monetary.cpp (create_format): Assigned CHAR_MAX instead of -1
	to indicate missing values.
	(write_monetary): Renamed mon_punct_out_ to punct and made local.

Modified:
    incubator/stdcxx/trunk/util/def.cpp
    incubator/stdcxx/trunk/util/def.h
    incubator/stdcxx/trunk/util/monetary.cpp

Modified: incubator/stdcxx/trunk/util/def.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/util/def.cpp?view=diff&rev=480734&r1=480733&r2=480734
==============================================================================
--- incubator/stdcxx/trunk/util/def.cpp (original)
+++ incubator/stdcxx/trunk/util/def.cpp Wed Nov 29 14:22:44 2006
@@ -555,25 +555,28 @@
     std::memset (&ctype_out_, 0, sizeof (ctype_out_));
     std::memset (&time_out_, 0, sizeof (time_out_));
 
-    mon_out_.frac_digits    [0] = -1;
-    mon_out_.frac_digits    [1] = -1;
-    mon_out_.p_cs_precedes  [0] = -1;
-    mon_out_.p_sep_by_space [0] = -1;
-    mon_out_.n_cs_precedes  [0] = -1;
-    mon_out_.n_sep_by_space [0] = -1;
-    mon_out_.p_sign_posn    [0] = -1;
-    mon_out_.n_sign_posn    [0] = -1;
-    mon_st_.mon_grouping += -1;
+    // invalidate format characters by setting each to CHAR_MAX
+    // as specified by the C function localeconv()
+    mon_out_.frac_digits    [0] = CHAR_MAX;
+    mon_out_.frac_digits    [1] = CHAR_MAX;
+    mon_out_.p_cs_precedes  [0] = CHAR_MAX;
+    mon_out_.p_sep_by_space [0] = CHAR_MAX;
+    mon_out_.n_cs_precedes  [0] = CHAR_MAX;
+    mon_out_.n_sep_by_space [0] = CHAR_MAX;
+    mon_out_.p_sign_posn    [0] = CHAR_MAX;
+    mon_out_.n_sign_posn    [0] = CHAR_MAX;
 
-    // c99 extension
-    mon_out_.p_cs_precedes  [1] = -1;
-    mon_out_.p_sep_by_space [1] = -1;
-    mon_out_.n_cs_precedes  [1] = -1;
-    mon_out_.n_sep_by_space [1] = -1;
-    mon_out_.p_sign_posn    [1] = -1;
-    mon_out_.n_sign_posn    [1] = -1;
+    mon_st_.mon_grouping += CHAR_MAX;
+
+    // invalidate int'l formats
+    mon_out_.p_cs_precedes  [1] = CHAR_MAX;
+    mon_out_.p_sep_by_space [1] = CHAR_MAX;
+    mon_out_.n_cs_precedes  [1] = CHAR_MAX;
+    mon_out_.n_sep_by_space [1] = CHAR_MAX;
+    mon_out_.p_sign_posn    [1] = CHAR_MAX;
+    mon_out_.n_sign_posn    [1] = CHAR_MAX;
     
-    num_st_.grouping += -1;
+    num_st_.grouping += CHAR_MAX;
 
     collate_out_.largest_ce     = 1;
     collate_out_.longest_weight = 1;

Modified: incubator/stdcxx/trunk/util/def.h
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/util/def.h?view=diff&rev=480734&r1=480733&r2=480734
==============================================================================
--- incubator/stdcxx/trunk/util/def.h (original)
+++ incubator/stdcxx/trunk/util/def.h Wed Nov 29 14:22:44 2006
@@ -216,9 +216,7 @@
     void process_monetary();
 
     // create the monetary formats
-    void create_format (char format[], const char sign_posn, 
-                        const char cs_precedes, const char sep_by_space,
-                        bool is_positive);
+    void create_format (char [4], char, char, char, bool);
 
     // process the numeric section of the locale definition file
     void process_numeric();
@@ -458,7 +456,6 @@
 
     // the structures used to hold the offsets for each locale category
     // and any non-pointer locale information
-    _RW::__rw_punct_t mon_punct_out_;
     _RW::__rw_punct_t num_punct_out_;
     _RW::__rw_ctype_t ctype_out_;
     _RW::__rw_time_t time_out_;

Modified: incubator/stdcxx/trunk/util/monetary.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/util/monetary.cpp?view=diff&rev=480734&r1=480733&r2=480734
==============================================================================
--- incubator/stdcxx/trunk/util/monetary.cpp (original)
+++ incubator/stdcxx/trunk/util/monetary.cpp Wed Nov 29 14:22:44 2006
@@ -41,7 +41,7 @@
 static const char lc_name[] = "LC_MONETARY";
 
 
-void Def::process_monetary()
+void Def::process_monetary ()
 {
     issue_diag (I_STAGE, false, 0, "processing %s section\n", lc_name);
 
@@ -236,24 +236,27 @@
                             maxval, next.name.c_str ());
             }
             else
-                *pcharint = char (val);
+                *pcharint = -1 == val ? CHAR_MAX : char (val);
         }
     }
 }
 
 
-void Def::create_format (char format[], const char sign_posn, 
-                         const char cs_precedes, const char sep_by_space,
+void Def::create_format (char format [4],
+                         char sign_posn, 
+                         char cs_precedes,
+                         char sep_by_space,
                          bool is_positive) 
 {
     switch (sign_posn) {
         // the international extension is not defined for this locale
-    case -1:
-        format[0] = -1;
-        format[1] = -1;
-        format[2] = -1;
-        format[3] = -1;
+    case CHAR_MAX:
+        format [0] = CHAR_MAX;
+        format [1] = CHAR_MAX;
+        format [2] = CHAR_MAX;
+        format [3] = CHAR_MAX;
         return;
+
     case 0:
         // if sign_posn is 0 then we change the sign to "()", if sign is 
         // not the empty string then issue a warning
@@ -405,39 +408,41 @@
     std::ofstream out (dir_name.c_str(), std::ios::binary);
     out.exceptions (std::ios::failbit | std::ios::badbit);
 
+    _RW::__rw_punct_t punct;
+
     // calculate the offsets for the mon_punct structure
-    mon_punct_out_.decimal_point_off [1] = 0;
+    punct.decimal_point_off [1] = 0;
 
-    mon_punct_out_.thousands_sep_off [1] = 
-          mon_punct_out_.decimal_point_off [1] 
+    punct.thousands_sep_off [1] =
+          punct.decimal_point_off [1] 
         + (mon_st_.wmon_decimal_point.size () + 1) * sizeof (wchar_t);
 
-    mon_punct_out_.decimal_point_off [0] = 
-          mon_punct_out_.thousands_sep_off [1]
+    punct.decimal_point_off [0] =
+          punct.thousands_sep_off [1]
         + (mon_st_.wmon_thousands_sep.size () + 1) * sizeof (wchar_t);
 
-    mon_punct_out_.thousands_sep_off [0] = 
-          mon_punct_out_.decimal_point_off [0]
+    punct.thousands_sep_off [0] =
+          punct.decimal_point_off [0]
         + mon_st_.mon_decimal_point.size () + 1;
 
-    mon_punct_out_.grouping_off =
-          mon_punct_out_.thousands_sep_off [0]
+    punct.grouping_off =
+          punct.thousands_sep_off [0]
         + mon_st_.mon_thousands_sep.size () + 1;
 
-    mon_punct_out_.punct_ext_off =
-          mon_punct_out_.grouping_off
+    punct.punct_ext_off =
+          punct.grouping_off
         + mon_st_.mon_grouping.size () + 1;
 
     // compute the alignment requirement of any offset member
-    const std::size_t align = sizeof mon_punct_out_.punct_ext_off;
+    const std::size_t align = sizeof punct.punct_ext_off;
 
     // align the offset of the extension struct on the required boundary
-    const std::size_t misalign = mon_punct_out_.punct_ext_off % align;
+    const std::size_t misalign = punct.punct_ext_off % align;
 
     // compute the amount of padding between the two structs
     const std::size_t pad = misalign ? align - misalign : 0;
 
-    mon_punct_out_.punct_ext_off += pad;
+    punct.punct_ext_off += pad;
 
     mon_out_.curr_symbol_off [1][1] = 0;
 
@@ -494,12 +499,12 @@
                 "    charmap_off = %u\n"
                 "}\n",
                 lc_name,
-                mon_punct_out_.decimal_point_off [0],
-                mon_punct_out_.decimal_point_off [1],
-                mon_punct_out_.thousands_sep_off [0],
-                mon_punct_out_.thousands_sep_off [1],
-                mon_punct_out_.grouping_off,
-                mon_punct_out_.punct_ext_off,
+                punct.decimal_point_off [0],
+                punct.decimal_point_off [1],
+                punct.thousands_sep_off [0],
+                punct.thousands_sep_off [1],
+                punct.grouping_off,
+                punct.punct_ext_off,
                 mon_out_.curr_symbol_off [0][0],
                 mon_out_.curr_symbol_off [0][1],
                 mon_out_.curr_symbol_off [1][0],
@@ -527,9 +532,9 @@
                    false);
         
     // write out the mon_punct structure
-    out.write ((char*)&mon_punct_out_, sizeof (mon_punct_out_));
+    out.write ((char*)&punct, sizeof punct);
         
-    // write out the strings in the mon_punct_out_ structure
+    // write out the strings in the punct structure
     out.write ((const char*)mon_st_.wmon_decimal_point.c_str(),
                (mon_st_.wmon_decimal_point.size() + 1) * sizeof(wchar_t));
     out.write ((const char*)mon_st_.wmon_thousands_sep.c_str(),