Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

XSECSafeBuffer.hpp

Go to the documentation of this file.
00001 /*
00002  * The Apache Software License, Version 1.1
00003  *
00004  * Copyright (c) 2002 Berin Lautenbach.  All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  *
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, this list of conditions and the following disclaimer.
00012  *
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in
00015  *    the documentation and/or other materials provided with the
00016  *    distribution.
00017  *
00018  * 3. The end-user documentation included with the redistribution,
00019  *    if any, must include the following acknowledgment:
00020  *       "This product includes software developed by
00021  *                   Berin Lautenbach"
00022  *    Alternately, this acknowledgment may appear in the software itself,
00023  *    if and wherever such third-party acknowledgments normally appear.
00024  *
00025  * 4. The names "XSEC", "xml-security-c" and Berin Lautenbach must
00026  *    not be used to endorse or promote products derived from this
00027  *    software without prior written permission. For written
00028  *    permission, please contact berin@users.sourceforge.net.
00029  *
00030  * 5. Products derived from this software may not be called "xml-security-c",
00031  *    nor may "xml-security-c" appear in their name, without prior written
00032  *    permission of Berin Lautenbach.
00033  *
00034  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00035  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00036  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00037  * DISCLAIMED.  IN NO EVENT SHALL BERIN LAUTENBACH OR OTHER
00038  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00039  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00040  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00041  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00042  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00043  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00044  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00045  * SUCH DAMAGE.
00046  * ====================================================================
00047  */
00048 
00049 /*
00050  * XSEC
00051  *
00052  * XSECSafeBuffer := a class for storing expanding amounts of information.
00053  *                   
00054  *
00055  */
00056 
00057 
00058 #ifndef XSECSAFEBUFFER_INCLUDE
00059 #define XSECSAFEBUFFER_INCLUDE
00060 
00061 #include <xsec/framework/XSECDefs.hpp>
00062 #include <xercesc/util/XMLString.hpp>
00063 
00064 #define DEFAULT_SAFE_BUFFER_SIZE        1024        // Default size for a safe Buffer
00065 
00066 class CANON_EXPORT safeBuffer {
00067 
00068 private:
00069 
00070     unsigned char * buffer;
00071     unsigned int    bufferSize;
00072     XMLCh           * mp_XMLCh;
00073 
00074 public:
00075 
00076     safeBuffer();
00077     safeBuffer(int initialSize);
00078     safeBuffer(char * inStr, unsigned int initialSize = DEFAULT_SAFE_BUFFER_SIZE);
00079     safeBuffer(const safeBuffer & other);
00080 
00081     ~safeBuffer();
00082 
00083     // "IN" functions - these read in information to the buffer
00084 
00085     void sbStrcpyIn(const char * inStr);
00086     void sbStrcpyIn(const safeBuffer & inStr);
00087     void sbStrncpyIn(char * inStr, int n);
00088     void sbStrncpyIn(const safeBuffer & inStr, int n);
00089     void sbStrcatIn(char * inStr);
00090     void sbStrcatIn(const safeBuffer & inStr);
00091     void sbStrncatIn(char * inStr, int n);
00092     void sbStrinsIn(const char * inStr, unsigned int offset);
00093 
00094     void sbMemcpyIn(void * inBuf, int n);
00095     void sbMemcpyIn(int offset, const void * inBuf, int n);
00096 
00097     void sbMemcpyOut(void * outBuf, int n) const;
00098 
00099     // Comparison functions
00100 
00101     int sbStrncmp(char * inStr, int n);
00102     int sbOffsetStrcmp(char * inStr, unsigned int offset);
00103     int sbOffsetStrncmp(char * inStr, unsigned int offset, int n);
00104     int sbStrcmp(char * inStr) const;
00105     int sbStrcmp(const safeBuffer & inStr) const;
00106     int sbStrstr(char * inStr);
00107     int sbOffsetStrstr(const char * inStr, unsigned int offset);
00108 
00109 
00110     // Operators
00111 
00112     unsigned char & operator[](int n);
00113     safeBuffer & operator= (const safeBuffer & cpy);
00114 
00115     // Get functions
00116 
00117     int sbStrlen(void) const;
00118     unsigned int sbRawBufferSize(void) const;
00119 
00120     // raw buffer manipulation
00121 
00122     const unsigned char * rawBuffer() const;
00123     const char * rawCharBuffer() const;
00124     void resize(unsigned int sz);           // NOTE : Only grows
00125 
00126     // Unicode
00127     const XMLCh * sbStrToXMLCh(void);
00128 
00129 
00130 private:
00131 
00132     // Internal function that is used to get a string size and 
00133     // then re-allocate if necessary
00134 
00135     void checkAndExpand(unsigned int size);
00136 };
00137 
00138 #endif /* XSECSAFEBUFFER_INCLUDE */

Generated on Sat Jan 11 20:34:08 2003 for XML-Security-C by doxygen1.2.15