You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2001/06/14 21:04:11 UTC
cvs commit: xml-xalan/c/src/PlatformSupport XalanDecimalFormat.cpp XalanDecimalFormat.hpp XalanNumberFormat.cpp XalanNumberFormat.hpp
dbertoni 01/06/14 12:04:10
Modified: c/src/PlatformSupport XalanDecimalFormat.cpp
XalanDecimalFormat.hpp XalanNumberFormat.cpp
XalanNumberFormat.hpp
Log:
New formatting overloads.
Revision Changes Path
1.2 +60 -4 xml-xalan/c/src/PlatformSupport/XalanDecimalFormat.cpp
Index: XalanDecimalFormat.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanDecimalFormat.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XalanDecimalFormat.cpp 2000/05/08 17:17:05 1.1
+++ XalanDecimalFormat.cpp 2001/06/14 19:04:02 1.2
@@ -58,6 +58,7 @@
#include "DOMStringHelper.hpp"
+
const XalanDOMString XalanDecimalFormat::s_defaultPatternString;
@@ -66,8 +67,8 @@
const XalanDOMString& thePatternString,
const XalanDecimalFormatSymbols& theSymbols) :
XalanNumberFormat(),
- m_patternString(length(thePatternString) == 0 ? s_defaultPatternString : thePatternString),
- m_decimalFormatSymbols(theSymbols)
+ m_patternString(thePatternString),
+ m_decimalFormatSymbols(&theSymbols)
{
}
@@ -88,6 +89,17 @@
+void
+XalanDecimalFormat::format(
+ double theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ XalanNumberFormat::format(theValue, theResult);
+}
+
+
+
XalanDOMString
XalanDecimalFormat::format(int theValue)
{
@@ -97,6 +109,17 @@
+void
+XalanDecimalFormat::format(
+ int theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ XalanNumberFormat::format(theValue, theResult);
+}
+
+
+
XalanDOMString
XalanDecimalFormat::format(unsigned int theValue)
{
@@ -106,6 +129,17 @@
+void
+XalanDecimalFormat::format(
+ unsigned int theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ XalanNumberFormat::format(theValue, theResult);
+}
+
+
+
XalanDOMString
XalanDecimalFormat::format(long theValue)
{
@@ -115,6 +149,17 @@
+void
+XalanDecimalFormat::format(
+ long theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ XalanNumberFormat::format(theValue, theResult);
+}
+
+
+
XalanDOMString
XalanDecimalFormat::format(unsigned long theValue)
{
@@ -125,6 +170,17 @@
void
+XalanDecimalFormat::format(
+ unsigned long theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ XalanNumberFormat::format(theValue, theResult);
+}
+
+
+
+void
XalanDecimalFormat::applyPattern(const XalanDOMString& thePattern)
{
// $$$ ToDo: Fix this!!!
@@ -149,7 +205,7 @@
// numbers, then assume that the pattern for negative
// numbers is the same as that for positive numbers.
const XalanDOMChar thePatternSeparatorChar =
- m_decimalFormatSymbols.getPatternSeparator();
+ m_decimalFormatSymbols->getPatternSeparator();
// Is the a separator?
const unsigned int theSeparatorIndex =
@@ -166,7 +222,7 @@
XalanDOMString theNewPattern(thePattern);
theNewPattern += thePatternSeparatorChar;
- theNewPattern += m_decimalFormatSymbols.getMinusSign();
+ theNewPattern += m_decimalFormatSymbols->getMinusSign();
theNewPattern += thePattern;
return theNewPattern;
1.2 +31 -8 xml-xalan/c/src/PlatformSupport/XalanDecimalFormat.hpp
Index: XalanDecimalFormat.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanDecimalFormat.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XalanDecimalFormat.hpp 2000/05/08 17:17:05 1.1
+++ XalanDecimalFormat.hpp 2001/06/14 19:04:03 1.2
@@ -85,10 +85,9 @@
* @param theSymbols class defining the symbols used for output, for
* example, symbol for currency
*/
- explicit
XalanDecimalFormat(
- const XalanDOMString& thePatternString = XalanDOMString(),
- const XalanDecimalFormatSymbols& theSymbols = XalanDecimalFormatSymbols());
+ const XalanDOMString& thePatternString,
+ const XalanDecimalFormatSymbols& theSymbols);
virtual
~XalanDecimalFormat();
@@ -97,18 +96,42 @@
virtual XalanDOMString
format(double theValue);
+ virtual void
+ format(
+ double theValue,
+ XalanDOMString& theResult);
+
virtual XalanDOMString
format(int theValue);
+ virtual void
+ format(
+ int theValue,
+ XalanDOMString& theResult);
+
virtual XalanDOMString
format(unsigned int theValue);
+ virtual void
+ format(
+ unsigned int theValue,
+ XalanDOMString& theResult);
+
virtual XalanDOMString
format(long theValue);
+ virtual void
+ format(
+ long theValue,
+ XalanDOMString& theResult);
+
virtual XalanDOMString
format(unsigned long theValue);
+ virtual void
+ format(
+ unsigned long theValue,
+ XalanDOMString& theResult);
// New for XalanDecimalFormat...
@@ -121,7 +144,7 @@
const XalanDecimalFormatSymbols&
getDecimalFormatSymbols() const
{
- return m_decimalFormatSymbols;
+ return *m_decimalFormatSymbols;
}
/**
@@ -133,7 +156,7 @@
void
setDecimalFormatSymbols(const XalanDecimalFormatSymbols& theDecimalFormatSymbols)
{
- m_decimalFormatSymbols = theDecimalFormatSymbols;
+ m_decimalFormatSymbols = &theDecimalFormatSymbols;
}
void
@@ -160,11 +183,11 @@
// Data members...
- XalanDOMString m_patternString;
+ XalanDOMString m_patternString;
- XalanDecimalFormatSymbols m_decimalFormatSymbols;
+ const XalanDecimalFormatSymbols* m_decimalFormatSymbols;
- static const XalanDOMString s_defaultPatternString;
+ static const XalanDOMString s_defaultPatternString;
};
1.9 +133 -34 xml-xalan/c/src/PlatformSupport/XalanNumberFormat.cpp
Index: XalanNumberFormat.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanNumberFormat.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- XalanNumberFormat.cpp 2001/04/30 18:07:06 1.8
+++ XalanNumberFormat.cpp 2001/06/14 19:04:04 1.9
@@ -92,10 +92,27 @@
XalanDOMString
-XalanNumberFormat::format(double theValue)
+XalanNumberFormat::format(double theValue)
{
// $$$ ToDo: Fix this!
- return applyGrouping(DoubleToDOMString(theValue));
+ XalanDOMString theResult;
+
+ format(theValue, theResult);
+
+ return theResult;
+}
+
+
+
+void
+XalanNumberFormat::format(
+ double theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ DoubleToDOMString(theValue, theResult);
+
+ applyGrouping(theResult, theResult);
}
@@ -104,16 +121,50 @@
XalanNumberFormat::format(int theValue)
{
// $$$ ToDo: Fix this!
- return applyGrouping(LongToDOMString(theValue));
+ XalanDOMString theResult;
+
+ format(theValue, theResult);
+
+ return theResult;
}
+void
+XalanNumberFormat::format(
+ int theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ LongToDOMString(theValue, theResult);
+
+ applyGrouping(theResult, theResult);
+}
+
+
+
XalanDOMString
XalanNumberFormat::format(unsigned int theValue)
{
+ // $$$ ToDo: Fix this!
+ XalanDOMString theResult;
+
+ format(theValue, theResult);
+
+ return theResult;
+}
+
+
+
+void
+XalanNumberFormat::format(
+ unsigned int theValue,
+ XalanDOMString& theResult)
+{
// $$$ ToDo: Fix this!
- return applyGrouping(UnsignedLongToDOMString(theValue));
+ UnsignedLongToDOMString(theValue, theResult);
+
+ applyGrouping(theResult, theResult);
}
@@ -121,58 +172,106 @@
XalanDOMString
XalanNumberFormat::format(long theValue)
{
+ // $$$ ToDo: Fix this!
+ XalanDOMString theResult;
+
+ format(theValue, theResult);
+
+ return theResult;
+}
+
+
+
+void
+XalanNumberFormat::format(
+ long theValue,
+ XalanDOMString& theResult)
+{
// $$$ ToDo: Fix this!
- return applyGrouping(LongToDOMString(theValue));
+ LongToDOMString(theValue, theResult);
+
+ applyGrouping(theResult, theResult);
}
XalanDOMString
-XalanNumberFormat::applyGrouping(const XalanDOMString& value)
-/*
- * Convert a string value using the currently active values for grouping size
- * and separator; returns the converted string
- */
+XalanNumberFormat::format(unsigned long theValue)
{
- if (!m_isGroupingUsed) return value;
- if (m_groupingSize == 0) return value;
- const unsigned int len = length(value);
- if (len == 0) return value;
+ // $$$ ToDo: Fix this!
+ XalanDOMString theResult;
- const unsigned int bufsize = len + len/m_groupingSize + 1;
+ format(theValue, theResult);
- XalanDOMChar* const buffer = new XalanDOMChar[bufsize];
+ return theResult;
+}
- XalanArrayAutoPtr<XalanDOMChar> theGuard(buffer);
- XalanDOMChar* p = buffer + bufsize - 1;
- *p-- = 0; // null terminate
+void
+XalanNumberFormat::format(
+ unsigned long theValue,
+ XalanDOMString& theResult)
+{
+ // $$$ ToDo: Fix this!
+ UnsignedLongToDOMString(theValue, theResult);
+
+ applyGrouping(theResult, theResult);
+}
- for (unsigned int i = 0, ix = len - 1; i < len; i++, ix--)
+
+
+/*
+ * Convert a string value using the currently active values for grouping size
+ * and separator; returns the converted string
+ */
+void
+XalanNumberFormat::applyGrouping(
+ const XalanDOMString& value,
+ XalanDOMString& result)
+{
+ if (m_isGroupingUsed == false ||
+ m_groupingSize == 0)
+ {
+ result = value;
+ }
+ else
{
- const XalanDOMChar c = charAt(value, ix);
+ const unsigned int len = length(value);
- if (i && !(i% m_groupingSize))
+ if (len == 0)
{
- // Could be a multiple character separator??
- for (int j= m_groupingSeparator.length()-1; j>=0; j--)
- *p-- = charAt(m_groupingSeparator, j);
+ result = value;
}
+ else
+ {
+ const unsigned int bufsize = len + len/m_groupingSize + 1;
- *p-- = c;
- }
+ XalanDOMChar* const buffer = new XalanDOMChar[bufsize];
- return XalanDOMString(++p);
-}
+ XalanArrayAutoPtr<XalanDOMChar> theGuard(buffer);
+ XalanDOMChar* p = buffer + bufsize - 1;
+ *p-- = 0; // null terminate
-XalanDOMString
-XalanNumberFormat::format(unsigned long theValue)
-{
- // $$$ ToDo: Fix this!
- return UnsignedLongToDOMString(theValue);
+ for (unsigned int i = 0, ix = len - 1; i < len; i++, ix--)
+ {
+ const XalanDOMChar c = charAt(value, ix);
+
+ if (i && !(i% m_groupingSize))
+ {
+ // Could be a multiple character separator??
+ for (int j= m_groupingSeparator.length()-1; j>=0; j--)
+ *p-- = charAt(m_groupingSeparator, j);
+ }
+
+ *p-- = c;
+ }
+
+ result = ++p;
+ }
+ }
}
1.4 +61 -3 xml-xalan/c/src/PlatformSupport/XalanNumberFormat.hpp
Index: XalanNumberFormat.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/PlatformSupport/XalanNumberFormat.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XalanNumberFormat.hpp 2001/02/08 21:39:09 1.3
+++ XalanNumberFormat.hpp 2001/06/14 19:04:05 1.4
@@ -91,6 +91,17 @@
* Format a number into a string.
*
* @param theValue number to format
+ * @param theResult the string result
+ */
+ virtual void
+ format(
+ double theValue,
+ XalanDOMString& theResult);
+
+ /**
+ * Format a number into a string.
+ *
+ * @param theValue number to format
* @return string representation of number
*/
virtual XalanDOMString
@@ -100,6 +111,17 @@
* Format a number into a string.
*
* @param theValue number to format
+ * @param theResult the string result
+ */
+ virtual void
+ format(
+ int theValue,
+ XalanDOMString& theResult);
+
+ /**
+ * Format a number into a string.
+ *
+ * @param theValue number to format
* @return string representation of number
*/
virtual XalanDOMString
@@ -109,6 +131,17 @@
* Format a number into a string.
*
* @param theValue number to format
+ * @param theResult the string result
+ */
+ virtual void
+ format(
+ unsigned int theValue,
+ XalanDOMString& theResult);
+
+ /**
+ * Format a number into a string.
+ *
+ * @param theValue number to format
* @return string representation of number
*/
virtual XalanDOMString
@@ -118,12 +151,34 @@
* Format a number into a string.
*
* @param theValue number to format
+ * @param theResult the string result
+ */
+ virtual void
+ format(
+ long theValue,
+ XalanDOMString& theResult);
+
+ /**
+ * Format a number into a string.
+ *
+ * @param theValue number to format
* @return string representation of number
*/
virtual XalanDOMString
format(unsigned long theValue);
/**
+ * Format a number into a string.
+ *
+ * @param theValue number to format
+ * @param theResult the string result
+ */
+ virtual void
+ format(
+ unsigned long theValue,
+ XalanDOMString& theResult);
+
+ /**
* Whether groupings are used for numbers, for example, "234,678"
*
* @return true if grouping used
@@ -156,11 +211,14 @@
virtual void
setGroupingSeparator(const XalanDOMString& s);
-private:
+protected:
- XalanDOMString
- applyGrouping(const XalanDOMString& value);
+ void
+ applyGrouping(
+ const XalanDOMString& value,
+ XalanDOMString& result);
+private:
// Not implemented...
XalanNumberFormat(const XalanNumberFormat&);
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org