You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2002/11/25 19:14:35 UTC
cvs commit: xml-xerces/c/src/xercesc/util Base64.cpp
peiyongz 2002/11/25 10:14:35
Modified: c/src/xercesc/util Base64.cpp
Log:
Schema Errata: E2-9 Base64
Revision Changes Path
1.6 +47 -6 xml-xerces/c/src/xercesc/util/Base64.cpp
Index: Base64.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Base64.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Base64.cpp 4 Nov 2002 15:22:03 -0000 1.5
+++ Base64.cpp 25 Nov 2002 18:14:35 -0000 1.6
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.6 2002/11/25 18:14:35 peiyongz
+ * Schema Errata: E2-9 Base64
+ *
* Revision 1.5 2002/11/04 15:22:03 tng
* C++ Namespace Support.
*
@@ -97,8 +100,7 @@
#include <xercesc/util/Base64.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/Janitor.hpp>
-#include <xercesc/util/PlatformUtils.hpp>
-#include <xercesc/util/TransService.hpp>
+#include <xercesc/internal/XMLReader.hpp>
XERCES_CPP_NAMESPACE_BEGIN
@@ -135,6 +137,31 @@
bool Base64::isInitialized = false;
+/**
+ * E2-9
+ *
+ * Canonical-base64Binary ::= (B64line* B64lastline)?
+ *
+ * B64line ::= B64x15 B64x15 B64x15 B64x15 B64x15 B64 #xA
+ * 76 Base64 characters followed by newline
+ *
+ * B64x15 ::= B64 B64 B64 B64 B64
+ * B64 B64 B64 B64 B64
+ * B64 B64 B64 B64 B64
+ *
+ * B64lastline ::= B64x4? B64x4? B64x4? B64x4?
+ * B64x4? B64x4? B64x4? B64x4?
+ * B64x4? B64x4? B64x4? B64x4?
+ * B64x4? B64x4? B64x4? B64x4?
+ * B64x4? B64x4?
+ * (B64x4 | (B64 B64 B16 '=') | (B64 B04 '=='))
+ * #xA
+ *
+ * B64x4 ::= B64 B64 B64 B64
+ * B04 ::= [AQgw]
+ * B16 ::= [AEIMQUYcgkosw048]
+*/
+
// number of quadruplets per one line ( must be >1 and <19 )
const unsigned int Base64::quadsPerLine = 15;
@@ -269,6 +296,22 @@
//
// temporary data, rawInputData, is ALWAYS released by this function.
//
+
+/***
+ * E2-9
+ *
+ * Base64Binary ::= S? B64quartet* B64final?
+ *
+ * B64quartet ::= B64 S? B64 S? B64 S? B64 S?
+ *
+ * B64final ::= B64 S? B04 S? '=' S? '=' S?
+ * | B64 S? B64 S? B16 S? '=' S?
+ *
+ * B04 ::= [AQgw]
+ * B16 ::= [AEIMQUYcgkosw048]
+ * B64 ::= [A-Za-z0-9+/]
+*/
+
XMLByte* Base64::decode(const XMLByte* const inputData,
unsigned int* outputLength)
{
@@ -279,9 +322,8 @@
return 0;
//
- // remove all whitespaces from the base64Data
+ // remove all XML whitespaces from the base64Data
//
-
int inputLength = XMLString::stringLen( (const char* const)inputData );
XMLByte* rawInputData = new XMLByte[ inputLength + 1 ];
ArrayJanitor<XMLByte> jan(rawInputData);
@@ -290,8 +332,7 @@
int rawInputLength = 0;
while ( inputIndex < inputLength )
{
-// if( !isspace( inputData[ inputIndex ] ))
- if (!XMLPlatformUtils::fgTransService->isSpace(inputData[inputIndex]))
+ if (!XMLReader::isWhitespace(inputData[inputIndex]))
rawInputData[ rawInputLength++ ] = inputData[ inputIndex ];
inputIndex++;
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org