00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef XSECSAFEBUFFERFORMATTER_INCLUDE
00029 #define XSECSAFEBUFFERFORMATTER_INCLUDE
00030
00031
00032
00033 #include <xsec/utils/XSECSafeBuffer.hpp>
00034
00035
00036
00037 #include <xercesc/framework/XMLFormatter.hpp>
00038
00043 class sbFormatTarget : public XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatTarget
00044 {
00045 public:
00046
00047 sbFormatTarget() {m_offset = 0;}
00048 ~sbFormatTarget() {}
00049
00050 void setBuffer (safeBuffer * toSet) {m_buffer = toSet;};
00051
00052
00053
00054
00055
00056
00057
00058 void writeChars(const XMLByte* const toWrite,
00059 const unsigned int count,
00060 XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter * const formatter)
00061 {
00062 m_buffer->sbMemcpyIn(m_offset, (char *) toWrite, (int) count);
00063 m_buffer->setBufferType(safeBuffer::BUFFER_CHAR);
00064 m_offset += count;
00065 (*m_buffer)[m_offset] = '\0';
00066 };
00067
00068 void reset(void) {m_offset = 0;(*m_buffer)[0] = '\0';}
00069
00070 private:
00071
00072 sbFormatTarget(const sbFormatTarget& other);
00073 void operator=(const sbFormatTarget& rhs);
00074
00075 safeBuffer * m_buffer;
00076 unsigned int m_offset;
00077
00078 };
00079
00088 class XSECSafeBufferFormatter {
00089
00090 XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter
00091 * formatter;
00092 safeBuffer formatBuffer;
00093 sbFormatTarget * sbf;
00094
00095 public:
00096
00097
00098
00099 XSECSafeBufferFormatter(
00100 const XMLCh * const outEncoding,
00101 const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::EscapeFlags
00102 escapeFlags=XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes,
00103 const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRepFlags
00104 unrepFlags=XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRep_Fail
00105 );
00106
00107 XSECSafeBufferFormatter(
00108 const char * const outEncoding,
00109 const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::EscapeFlags
00110 escapeFlags=XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes,
00111 const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRepFlags
00112 unrepFlags=XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRep_Fail
00113 );
00114
00115
00116
00117 ~XSECSafeBufferFormatter();
00118
00119
00120
00121 void formatBuf (
00122 const XMLCh *const toFormat,
00123 const unsigned int count,
00124 const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::EscapeFlags
00125 escapeFlags=XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::DefaultEscape,
00126 const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRepFlags
00127 unrepFlags=XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::DefaultUnRep
00128 );
00129
00130 XSECSafeBufferFormatter& operator<< (
00131 const XMLCh *const toFormat);
00132
00133 XSECSafeBufferFormatter& operator<< (
00134 const XMLCh toFormat);
00135
00136 const XMLCh* getEncodingName ()const;
00137
00138 void setEscapeFlags (const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::EscapeFlags newFlags);
00139 void setUnRepFlags (const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRepFlags newFlags);
00140
00141 XSECSafeBufferFormatter& operator<< (const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::EscapeFlags newFlags);
00142 XSECSafeBufferFormatter& operator<< (const XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRepFlags newFlags);
00143
00144
00145
00146 friend safeBuffer& operator<< (safeBuffer &to, const XSECSafeBufferFormatter & from);
00147
00148 private:
00149
00150
00151
00152 XSECSafeBufferFormatter() {};
00153
00154
00155 };
00156
00159 #endif