http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Readme
Installation
Build

API Docs
Samples
Programming
Migration
FAQs

Releases
Feedback
Bug-Todo

Download
CVS Repository
Mail Archive

API Docs for SAX and DOM
 

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

MemBufInputSource.hpp

Go to the documentation of this file.
00001 /*
00002  * The Apache Software License, Version 1.1

00003  * 

00004  * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights

00005  * reserved.

00006  * 

00007  * Redistribution and use in source and binary forms, with or without

00008  * modification, are permitted provided that the following conditions

00009  * are met:

00010  * 

00011  * 1. Redistributions of source code must retain the above copyright

00012  *    notice, this list of conditions and the following disclaimer. 

00013  * 

00014  * 2. Redistributions in binary form must reproduce the above copyright

00015  *    notice, this list of conditions and the following disclaimer in

00016  *    the documentation and/or other materials provided with the

00017  *    distribution.

00018  * 

00019  * 3. The end-user documentation included with the redistribution,

00020  *    if any, must include the following acknowledgment:  

00021  *       "This product includes software developed by the

00022  *        Apache Software Foundation (http://www.apache.org/)."

00023  *    Alternately, this acknowledgment may appear in the software itself,

00024  *    if and wherever such third-party acknowledgments normally appear.

00025  * 

00026  * 4. The names "Xerces" and "Apache Software Foundation" must

00027  *    not be used to endorse or promote products derived from this

00028  *    software without prior written permission. For written 

00029  *    permission, please contact apache\@apache.org.

00030  * 

00031  * 5. Products derived from this software may not be called "Apache",

00032  *    nor may "Apache" appear in their name, without prior written

00033  *    permission of the Apache Software Foundation.

00034  * 

00035  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED

00036  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES

00037  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

00038  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR

00039  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

00040  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

00041  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF

00042  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND

00043  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

00044  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

00045  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

00046  * SUCH DAMAGE.

00047  * ====================================================================

00048  * 

00049  * This software consists of voluntary contributions made by many

00050  * individuals on behalf of the Apache Software Foundation, and was

00051  * originally based on software copyright (c) 1999, International

00052  * Business Machines, Inc., http://www.ibm.com .  For more information

00053  * on the Apache Software Foundation, please see

00054  * <http://www.apache.org/>.

00055  */
00056 
00057 /*
00058  * $Log: MemBufInputSource.hpp,v $

00059  * Revision 1.6  2000/12/14 18:49:54  tng

00060  * Fix API document generation warning: "Warning: end of member group without matching begin"

00061  *
00062  * Revision 1.5  2000/02/24 20:00:22  abagchi

00063  * Swat for removing Log from API docs

00064  *
00065  * Revision 1.4  2000/02/15 23:59:06  roddey

00066  * More updated documentation of Framework classes.

00067  *
00068  * Revision 1.3  2000/02/15 01:21:30  roddey

00069  * Some initial documentation improvements. More to come...

00070  *
00071  * Revision 1.2  2000/02/06 07:47:46  rahulj

00072  * Year 2K copyright swat.

00073  *
00074  * Revision 1.1  2000/01/12 00:13:26  roddey

00075  * These were moved from internal/ to framework/, which was something that should have

00076  * happened long ago. They are really framework type of classes.

00077  *
00078  * Revision 1.1.1.1  1999/11/09 01:08:10  twl

00079  * Initial checkin

00080  *
00081  * Revision 1.2  1999/11/08 20:44:43  rahul

00082  * Swat for adding in Product name and CVS comment log variable.

00083  *
00084  */
00085 
00086 
00087 #if !defined(MEMBUFINPUTSOURCE_HPP)
00088 #define MEMBUFINPUTSOURCE_HPP
00089 
00090 #include <sax/InputSource.hpp>
00091 
00092 class BinInputStream;
00093 
00094 
00123 class  MemBufInputSource : public InputSource
00124 {
00125 public :
00126     // -----------------------------------------------------------------------
00127     //  Constructors and Destructor
00128     // -----------------------------------------------------------------------
00129 
00132 
00152     MemBufInputSource
00153     (
00154         const   XMLByte* const  srcDocBytes
00155         , const unsigned int    byteCount
00156         , const XMLCh* const    bufId
00157         , const bool            adoptBuffer = false
00158     );
00159 
00164     MemBufInputSource
00165     (
00166         const   XMLByte* const  srcDocBytes
00167         , const unsigned int    byteCount
00168         , const char* const     bufId
00169         , const bool            adoptBuffer = false
00170     );
00172 
00175 
00179     ~MemBufInputSource();
00181 
00182 
00183     // -----------------------------------------------------------------------
00184     //  Virtual input source interface
00185     // -----------------------------------------------------------------------
00186 
00189 
00200     BinInputStream* makeStream() const;
00201 
00203 
00204 
00205     // -----------------------------------------------------------------------
00206     //  Setter methods
00207     // -----------------------------------------------------------------------
00208 
00210 
00212 
00228     void setCopyBufToStream(const bool newState);
00229 
00231 
00232 
00233 private :
00234     // -----------------------------------------------------------------------
00235     //  Private data members
00236     //
00237     //  fAdopted
00238     //      Indicates whether the buffer is adopted or not. If so, then it
00239     //      is destroyed when the input source is destroyed.
00240     //
00241     //  fByteCount
00242     //      The size of the source document.
00243     //
00244     //  fCopyBufToStream
00245     //      This defaults to true (the safe option), which causes it to
00246     //      give a copy of the buffer to any streams it creates. If you set
00247     //      it to false, it will allow the streams to just reference the
00248     //      buffer (in which case this input source must stay alive as long
00249     //      as the buffer is in use by the stream.)
00250     //
00251     //  fSrcBytes
00252     //      The source memory buffer that is being spooled from. Whether it
00253     //      belongs to the this input source or not is controlled by the
00254     //      fAdopted flag.
00255     // -----------------------------------------------------------------------
00256     bool            fAdopted;
00257     unsigned int    fByteCount;
00258     bool            fCopyBufToStream;
00259     const XMLByte*  fSrcBytes;
00260 };
00261 
00262 
00263 inline void MemBufInputSource::setCopyBufToStream(const bool newState)

00264 {
00265     fCopyBufToStream = newState;
00266 }
00267 
00268 #endif


Copyright © 2000 The Apache Software Foundation. All Rights Reserved.