summaryrefslogtreecommitdiff
path: root/xsd/xsd/cxx/tree/default-value.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsd/xsd/cxx/tree/default-value.cxx')
-rw-r--r--xsd/xsd/cxx/tree/default-value.cxx266
1 files changed, 142 insertions, 124 deletions
diff --git a/xsd/xsd/cxx/tree/default-value.cxx b/xsd/xsd/cxx/tree/default-value.cxx
index ff964d3..4f27d7f 100644
--- a/xsd/xsd/cxx/tree/default-value.cxx
+++ b/xsd/xsd/cxx/tree/default-value.cxx
@@ -1,11 +1,11 @@
// file : xsd/cxx/tree/default-value.cxx
-// author : Boris Kolpackov <boris@codesynthesis.com>
-// copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC
+// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
#include <cxx/tree/default-value.hxx>
using std::hex;
+using std::dec;
namespace CXX
{
@@ -13,14 +13,14 @@ namespace CXX
{
namespace
{
- Void
+ void
normalize (String& s)
{
- Size n (s.size ());
+ size_t n (s.size ());
- for (Size i (0); i < n; ++i)
+ for (size_t i (0); i < n; ++i)
{
- WideChar& c (s[i]);
+ wchar_t& c (s[i]);
if (c == 0x0D || // carriage return
c == 0x09 || // tab
@@ -29,15 +29,15 @@ namespace CXX
}
}
- Void
+ void
collapse (String& s)
{
- Size n (s.size ()), j (0);
- Boolean subs (false), trim (true);
+ size_t n (s.size ()), j (0);
+ bool subs (false), trim (true);
- for (Size i (0); i < n; ++i)
+ for (size_t i (0); i < n; ++i)
{
- WideChar c (s[i]);
+ wchar_t c (s[i]);
if (c == 0x20 || c == 0x09 || c == 0x0A)
subs = true;
@@ -61,21 +61,21 @@ namespace CXX
s.resize (j);
}
- Void
+ void
strip_zeros (String& s)
{
- Size n (s.size ()), i (0);
+ size_t n (s.size ()), i (0);
if (n > 0 && (s[i] == '-' || s[i] == '+'))
i++;
- Size j (i);
+ size_t j (i);
- Boolean strip (true);
+ bool strip (true);
for (; i < n; ++i)
{
- WideChar c (s[i]);
+ wchar_t c (s[i]);
if (c == '0')
{
@@ -97,7 +97,7 @@ namespace CXX
s.resize (j);
}
- Void
+ void
make_float (String& s)
{
if (s.find ('.') == String::npos &&
@@ -112,13 +112,13 @@ namespace CXX
//
IsLiteralValue::
- IsLiteralValue (Boolean& r)
+ IsLiteralValue (bool& r)
: IsFundamentalType (r)
{
*this >> inherits_ >> *this;
}
- Void IsLiteralValue::
+ void IsLiteralValue::
traverse (SemanticGraph::Complex& c)
{
inherits (c);
@@ -144,7 +144,7 @@ namespace CXX
return literal_;
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Complex& c)
{
inherits (c);
@@ -152,7 +152,7 @@ namespace CXX
// Boolean.
//
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Boolean&)
{
collapse (value_);
@@ -161,7 +161,7 @@ namespace CXX
// Integral types.
//
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Byte&)
{
collapse (value_);
@@ -169,15 +169,15 @@ namespace CXX
literal_ = value_;
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::UnsignedByte&)
{
collapse (value_);
strip_zeros (value_);
- literal_ = value_;
+ literal_ = value_ + L"U";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Short&)
{
collapse (value_);
@@ -185,15 +185,15 @@ namespace CXX
literal_ = value_;
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::UnsignedShort&)
{
collapse (value_);
strip_zeros (value_);
- literal_ = value_;
+ literal_ = value_ + L"U";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Int&)
{
collapse (value_);
@@ -201,15 +201,15 @@ namespace CXX
literal_ = value_;
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::UnsignedInt&)
{
collapse (value_);
strip_zeros (value_);
- literal_ = value_;
+ literal_ = value_ + L"U";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Long&)
{
collapse (value_);
@@ -218,7 +218,7 @@ namespace CXX
literal_ += L"LL";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::UnsignedLong&)
{
collapse (value_);
@@ -227,7 +227,7 @@ namespace CXX
literal_ += L"ULL";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Integer&)
{
collapse (value_);
@@ -235,7 +235,7 @@ namespace CXX
literal_ = value_ + L"LL";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::NonPositiveInteger&)
{
collapse (value_);
@@ -243,7 +243,7 @@ namespace CXX
literal_ = value_ + L"LL";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::NonNegativeInteger&)
{
collapse (value_);
@@ -251,7 +251,7 @@ namespace CXX
literal_ = value_ + L"ULL";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::PositiveInteger&)
{
collapse (value_);
@@ -259,7 +259,7 @@ namespace CXX
literal_ = value_ + L"ULL";
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::NegativeInteger&)
{
collapse (value_);
@@ -269,7 +269,7 @@ namespace CXX
// Floats.
//
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Float& t)
{
collapse (value_);
@@ -297,7 +297,7 @@ namespace CXX
}
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Double& t)
{
collapse (value_);
@@ -325,7 +325,7 @@ namespace CXX
}
}
- Void LiteralValue::
+ void LiteralValue::
traverse (SemanticGraph::Fundamental::Decimal&)
{
collapse (value_);
@@ -345,43 +345,43 @@ namespace CXX
*this >> inherits_ >> *this;
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::List&)
{
r_ = function;
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::Complex& c)
{
inherits (c);
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::Fundamental::Base64Binary&)
{
r_ = data;
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::Fundamental::HexBinary&)
{
r_ = data;
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::Fundamental::NameTokens&)
{
r_ = function;
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::Fundamental::IdRefs&)
{
r_ = function;
}
- Void InitKind::
+ void InitKind::
traverse (SemanticGraph::Fundamental::Entities&)
{
r_ = function;
@@ -397,14 +397,14 @@ namespace CXX
{
}
- Void InitValue::
+ void InitValue::
dispatch (SemanticGraph::Node& type, String const& value)
{
value_ = value;
Traversal::NodeBase::dispatch (type);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::List& l)
{
collapse (value_);
@@ -415,9 +415,9 @@ namespace CXX
SemanticGraph::Type& t (l.argumented ().type ());
String ov (value_);
- Size b (0);
+ size_t b (0);
- for (Size e (ov.find (' ')); ; e = ov.find (' ', b))
+ for (size_t e (ov.find (' ')); ; e = ov.find (' ', b))
{
String v (ov, b, e != String::npos ? e - b : e);
@@ -448,21 +448,27 @@ namespace CXX
value_ = ov;
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Union&)
{
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Complex& c)
{
Traversal::NodeBase::dispatch (ultimate_base (c));
}
- // anySimpleType.
+ // anyType & anySimpleType.
//
- Void InitValue::
+ void InitValue::
+ traverse (SemanticGraph::AnyType& t)
+ {
+ os << fq_name (t) << " (" << strlit (value_) << ")";
+ }
+
+ void InitValue::
traverse (SemanticGraph::AnySimpleType& t)
{
os << fq_name (t) << " (" << strlit (value_) << ")";
@@ -470,34 +476,34 @@ namespace CXX
// Strings.
//
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::String&)
{
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::NormalizedString&)
{
normalize (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Token&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::NameToken&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::NameTokens&)
{
string_sequence_type (
@@ -505,21 +511,21 @@ namespace CXX
xs_ns ().find ("NMTOKEN").first->named ()));
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Name&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::NCName&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Language&)
{
collapse (value_);
@@ -528,10 +534,10 @@ namespace CXX
// Qualified name.
//
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::QName& t)
{
- Size p (value_.rfind ('#'));
+ size_t p (value_.rfind ('#'));
if (p != String::npos)
{
@@ -563,21 +569,21 @@ namespace CXX
// ID/IDREF.
//
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Id&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::IdRef&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::IdRefs&)
{
string_sequence_type (
@@ -587,7 +593,7 @@ namespace CXX
// URI.
//
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::AnyURI&)
{
collapse (value_);
@@ -615,7 +621,7 @@ namespace CXX
return r;
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Base64Binary& t)
{
collapse (value_);
@@ -628,17 +634,17 @@ namespace CXX
// Decode.
//
- Size size (value_.size ());
+ size_t size (value_.size ());
// Remove all whitespaces.
//
{
- Size j (0);
- Boolean subs (false);
+ size_t j (0);
+ bool subs (false);
- for (Size i (0); i < size; ++i)
+ for (size_t i (0); i < size; ++i)
{
- WideChar c (value_[i]);
+ wchar_t c (value_[i]);
if (c == 0x20 || c == 0x0A || c == 0x0D || c == 0x09)
subs = true;
@@ -657,20 +663,20 @@ namespace CXX
// Our length should be a multiple of four.
//
- Size quad_count (size / 4);
+ size_t quad_count (size / 4);
// Source and destination indexes.
//
- Size si (0), di (0);
+ size_t si (0), di (0);
// Process all quads except the last one.
//
unsigned short v;
unsigned char b1, b2, b3, b4;
- WideChar prev_fill (os.fill ('0'));
+ wchar_t prev_fill (os.fill ('0'));
- for (Size q (0); q < quad_count - 1; ++q)
+ for (size_t q (0); q < quad_count - 1; ++q)
{
b1 = base64_decode (value_[si++]);
b2 = base64_decode (value_[si++]);
@@ -683,17 +689,21 @@ namespace CXX
if (di % 9 == 0)
os << endl;
+ os << hex;
+
v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
os.width (2);
- os << "0x" << hex << v;
+ os << "0x" << v;
v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
os.width (2);
- os << ", 0x" << hex << v;
+ os << ", 0x" << v;
v = static_cast<unsigned char> ((b3 << 6) | b4);
os.width (2);
- os << ", 0x" << hex << v;
+ os << ", 0x" << v;
+
+ os << dec;
di += 3;
}
@@ -703,7 +713,7 @@ namespace CXX
b1 = base64_decode (value_[si++]);
b2 = base64_decode (value_[si++]);
- WideChar e3 (value_[si++]), e4 (value_[si++]);
+ wchar_t e3 (value_[si++]), e4 (value_[si++]);
if (quad_count != 1)
os << ", ";
@@ -718,7 +728,7 @@ namespace CXX
// Two pads. Last 4 bits in b2 should be zero.
//
v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
- os << "0x" << hex << v;
+ os << "0x" << hex << v << dec;
di++;
}
else
@@ -727,13 +737,17 @@ namespace CXX
//
b3 = base64_decode (e3);
+ os << hex;
+
v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
os.width (2);
- os << "0x" << hex << v;
+ os << "0x" << v;
v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
os.width (2);
- os << ", 0x" << hex << v;
+ os << ", 0x" << v;
+
+ os << dec;
di += 2;
}
@@ -745,17 +759,21 @@ namespace CXX
b3 = base64_decode (e3);
b4 = base64_decode (e4);
+ os << hex;
+
v = static_cast<unsigned char> ((b1 << 2) | (b2 >> 4));
os.width (2);
- os << "0x" << hex << v;
+ os << "0x" << v;
v = static_cast<unsigned char> ((b2 << 4) | (b3 >> 2));
os.width (2);
- os << ", 0x" << hex << v;
+ os << ", 0x" << v;
v = static_cast<unsigned char> ((b3 << 6) | b4);
os.width (2);
- os << ", 0x" << hex << v;
+ os << ", 0x" << v;
+
+ os << dec;
di += 3;
}
@@ -797,7 +815,7 @@ namespace CXX
return r;
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::HexBinary& t)
{
collapse (value_);
@@ -810,10 +828,10 @@ namespace CXX
// Decode.
//
- Size n (value_.size () / 2);
- WideChar prev_fill (os.fill ('0'));
+ size_t n (value_.size () / 2);
+ wchar_t prev_fill (os.fill ('0'));
- for (Size i (0); i < n; ++i)
+ for (size_t i (0); i < n; ++i)
{
unsigned char h (hex_decode (value_[2 * i]));
unsigned char l (hex_decode (value_[2 * i + 1]));
@@ -829,7 +847,7 @@ namespace CXX
unsigned short v = static_cast<unsigned char> ((h << 4) | l);
os.width (2);
- os << "0x" << hex << v;
+ os << "0x" << hex << v << dec;
}
os.fill (prev_fill);
@@ -856,15 +874,15 @@ namespace CXX
// Date/time.
//
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Date& t)
{
// date := [-]CCYY[N]*-MM-DD[Z|(+|-)HH:MM]
//
collapse (value_);
- Size b (0);
- Size e (value_.find ('-', value_[0] == '-' ? 5 : 4));
+ size_t b (0);
+ size_t e (value_.find ('-', value_[0] == '-' ? 5 : 4));
String year (value_, 0, e);
b = e + 1;
@@ -882,15 +900,15 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::DateTime& t)
{
// date_time := [-]CCYY[N]*-MM-DDTHH:MM:SS[.S+][Z|(+|-)HH:MM]
//
collapse (value_);
- Size b (0);
- Size e (value_.find ('-', value_[0] == '-' ? 5 : 4));
+ size_t b (0);
+ size_t e (value_.find ('-', value_[0] == '-' ? 5 : 4));
String year (value_, 0, e);
b = e + 1;
@@ -909,7 +927,7 @@ namespace CXX
e = b + 2;
for (; e < value_.size (); ++e)
{
- WideChar c (value_[e]);
+ wchar_t c (value_[e]);
if (c == 'Z' || c == '+' || c == '-')
break;
@@ -934,12 +952,12 @@ namespace CXX
namespace
{
- Size
- find_delim (String const& s, Size pos)
+ size_t
+ find_delim (String const& s, size_t pos)
{
for (; pos < s.size (); ++pos)
{
- WideChar c (s[pos]);
+ wchar_t c (s[pos]);
if (c == 'Y' || c == 'D' || c == 'M' || c == 'H' ||
c == 'M' || c == 'S' || c == 'T')
@@ -950,14 +968,14 @@ namespace CXX
}
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Duration& t)
{
// duration := [-]P[nY][nM][nD][TnHnMn[.n+]S]
//
collapse (value_);
- Size b (1), e, n (value_.size ());
+ size_t b (1), e, n (value_.size ());
os << fq_name (t) << " (";
@@ -1053,7 +1071,7 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Day& t)
{
// gday := ---DD[Z|(+|-)HH:MM]
@@ -1068,7 +1086,7 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Month& t)
{
// gmonth := --MM[Z|(+|-)HH:MM]
@@ -1083,7 +1101,7 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::MonthDay& t)
{
// gmonth_day := --MM-DD[Z|(+|-)HH:MM]
@@ -1101,17 +1119,17 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Year& t)
{
// gyear := [-]CCYY[N]*[Z|(+|-)HH:MM]
//
collapse (value_);
- Size pos (value_[0] == '-' ? 5 : 4);
+ size_t pos (value_[0] == '-' ? 5 : 4);
for (; pos < value_.size (); ++pos)
{
- WideChar c (value_[pos]);
+ wchar_t c (value_[pos]);
if (c == 'Z' || c == '+' || c == '-')
break;
@@ -1125,14 +1143,14 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::YearMonth& t)
{
// gyear_month := [-]CCYY[N]*-MM[Z|(+|-)HH:MM]
//
collapse (value_);
- Size pos (value_.find ('-', value_[0] == '-' ? 5 : 4));
+ size_t pos (value_.find ('-', value_[0] == '-' ? 5 : 4));
String year (value_, 0, pos);
String month (value_, pos + 1, 2);
@@ -1145,7 +1163,7 @@ namespace CXX
os << ")";
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Time& t)
{
// time := HH:MM:SS[.S+][Z|(+|-)HH:MM]
@@ -1155,10 +1173,10 @@ namespace CXX
String hours (value_, 0, 2);
String minutes (value_, 3, 2);
- Size e (8);
+ size_t e (8);
for (; e < value_.size (); ++e)
{
- WideChar c (value_[e]);
+ wchar_t c (value_[e]);
if (c == 'Z' || c == '+' || c == '-')
break;
@@ -1176,8 +1194,8 @@ namespace CXX
os << ")";
}
- Void InitValue::
- time_zone (Size pos)
+ void InitValue::
+ time_zone (size_t pos)
{
// time_zone := Z|(+|-)HH:MM
//
@@ -1211,14 +1229,14 @@ namespace CXX
// Entity.
//
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Entity&)
{
collapse (value_);
os << strlit (value_);
}
- Void InitValue::
+ void InitValue::
traverse (SemanticGraph::Fundamental::Entities&)
{
string_sequence_type (
@@ -1226,7 +1244,7 @@ namespace CXX
xs_ns ().find ("ENTITY").first->named ()));
}
- Void InitValue::
+ void InitValue::
string_sequence_type (SemanticGraph::Type& t)
{
collapse (value_);
@@ -1234,9 +1252,9 @@ namespace CXX
if (!value_)
return;
- Size b (0);
+ size_t b (0);
- for (Size e (value_.find (' ')); ; e = value_.find (' ', b))
+ for (size_t e (value_.find (' ')); ; e = value_.find (' ', b))
{
String v (value_, b, e != String::npos ? e - b : e);