xsec/utils/XSECSafeBufferFormatter.cpp (73 lines of code) (raw):

/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /* * XSEC * * XSECSafeBufferFormatter := Class for formatting DOMStrings into SafeBuffers * * $Id$ * */ #include <xsec/utils/XSECSafeBufferFormatter.hpp> #include <xercesc/util/XMLString.hpp> #include <xsec/framework/XSECError.hpp> XERCES_CPP_NAMESPACE_USE // Constructor XSECSafeBufferFormatter::XSECSafeBufferFormatter( const XMLCh * const outEncoding, const XMLFormatter::EscapeFlags escapeFlags, const XMLFormatter::UnRepFlags unrepFlags) { sbf = new sbFormatTarget(); sbf->setBuffer(&formatBuffer); formatter = new XMLFormatter(outEncoding, 0, sbf, escapeFlags, unrepFlags); } XSECSafeBufferFormatter::XSECSafeBufferFormatter( const char * const outEncoding, const XMLFormatter::EscapeFlags escapeFlags, const XMLFormatter::UnRepFlags unrepFlags) { sbf = new sbFormatTarget(); sbf->setBuffer(&formatBuffer); formatter = new XMLFormatter(outEncoding, 0, sbf, escapeFlags, unrepFlags); } // Destructor XSECSafeBufferFormatter::~XSECSafeBufferFormatter() { if (formatter != NULL) delete formatter; if (sbf != NULL) delete sbf; } // Reimplementation of XMLFormatter functions void XSECSafeBufferFormatter::formatBuf ( const XMLCh *const toFormat, const XMLSize_t count, const XMLFormatter::EscapeFlags escapeFlags, const XMLFormatter::UnRepFlags unrepFlags) { formatter->formatBuf(toFormat, count, escapeFlags, unrepFlags); } XSECSafeBufferFormatter& XSECSafeBufferFormatter::operator<< (const XMLCh *const toFormat) { sbf->reset(); *formatter << toFormat; return *this; } XSECSafeBufferFormatter& XSECSafeBufferFormatter::operator<< (const XMLCh toFormat) { sbf->reset(); *formatter << toFormat; return *this; } const XMLCh* XSECSafeBufferFormatter::getEncodingName ()const { return formatter->getEncodingName(); } void XSECSafeBufferFormatter::setEscapeFlags (const XMLFormatter::EscapeFlags newFlags) { formatter->setEscapeFlags(newFlags); } void XSECSafeBufferFormatter::setUnRepFlags (const XMLFormatter::UnRepFlags newFlags) { formatter->setUnRepFlags(newFlags); } XSECSafeBufferFormatter& XSECSafeBufferFormatter::operator<< (const XMLFormatter::EscapeFlags newFlags) { *formatter << newFlags; return *this; } XSECSafeBufferFormatter& XSECSafeBufferFormatter::operator<< (const XMLFormatter::UnRepFlags newFlags) { *formatter << newFlags; return *this; } // Friends for working with safestrings safeBuffer& operator<< (safeBuffer &to, const XSECSafeBufferFormatter & from) { // Simply copy out the format buffer, but zeroise the original first to = from.formatBuffer; return to; }