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: InputSource.hpp,v $ 00059 * Revision 1.1 2002/05/11 20:23:12 bhavani 00060 * CR#CR062582# adding xercesc 1.7 file 00061 * 00062 * Revision 1.2 2002/02/20 18:17:01 tng 00063 * [Bug 5977] Warnings on generating apiDocs. 00064 * 00065 * Revision 1.1.1.1 2002/02/01 22:22:08 peiyongz 00066 * sane_include 00067 * 00068 * Revision 1.10 2001/11/21 16:14:32 tng 00069 * Schema: New method InputSource::get/setIssueFatalErrorIfNotFound to tell the parser whether to issue fatal error or not if cannot find it (the InputSource). This is required for schema processing as it shouldn't be a fatal error if the schema is not found. 00070 * 00071 * Revision 1.9 2000/03/02 19:54:35 roddey 00072 * This checkin includes many changes done while waiting for the 00073 * 1.1.0 code to be finished. I can't list them all here, but a list is 00074 * available elsewhere. 00075 * 00076 * Revision 1.8 2000/02/24 20:12:55 abagchi 00077 * Swat for removing Log from API docs 00078 * 00079 * Revision 1.7 2000/02/12 03:42:21 rahulj 00080 * Fixed DOC++ documentation formatting errors. 00081 * 00082 * Revision 1.6 2000/02/12 03:31:55 rahulj 00083 * Removed duplicate CVS Log entries. 00084 * 00085 * Revision 1.5 2000/02/12 01:27:19 aruna1 00086 * Documentation updated 00087 * 00088 * Revision 1.4 2000/02/09 02:15:28 abagchi 00089 * Documented destructor 00090 * 00091 * Revision 1.3 2000/02/06 07:47:58 rahulj 00092 * Year 2K copyright swat. 00093 * 00094 * Revision 1.2 2000/01/12 00:15:39 roddey 00095 * Changes to deal with multiply nested, relative pathed, entities and to deal 00096 * with the new URL class changes. 00097 * 00098 * Revision 1.1.1.1 1999/11/09 01:07:46 twl 00099 * Initial checkin 00100 * 00101 * Revision 1.2 1999/11/08 20:45:01 rahul 00102 * Swat for adding in Product name and CVS comment log variable. 00103 * 00104 */ 00105 00106 00107 #ifndef INPUTSOURCE_HPP 00108 #define INPUTSOURCE_HPP 00109 00110 #include <xercesc/util/XercesDefs.hpp> 00111 00112 class BinInputStream; 00113 00114 00145 class SAX_EXPORT InputSource 00146 { 00147 public: 00148 // ----------------------------------------------------------------------- 00149 // All constructors are hidden, just the destructor is available 00150 // ----------------------------------------------------------------------- 00157 virtual ~InputSource(); 00159 00160 00161 // ----------------------------------------------------------------------- 00174 virtual BinInputStream* makeStream() const = 0; 00175 00177 00178 00179 // ----------------------------------------------------------------------- 00191 const XMLCh* getEncoding() const; 00192 00193 00200 const XMLCh* getPublicId() const; 00201 00202 00211 const XMLCh* getSystemId() const; 00212 00221 const bool getIssueFatalErrorIfNotFound() const; 00222 00224 00225 00226 // ----------------------------------------------------------------------- 00229 00241 void setEncoding(const XMLCh* const encodingStr); 00242 00243 00255 void setPublicId(const XMLCh* const publicId); 00256 00273 void setSystemId(const XMLCh* const systemId); 00274 00284 void setIssueFatalErrorIfNotFound(const bool flag); 00285 00287 00288 00289 protected : 00290 // ----------------------------------------------------------------------- 00291 // Hidden constructors 00292 // ----------------------------------------------------------------------- 00296 InputSource(); 00297 00301 InputSource(const XMLCh* const systemId); 00302 00307 InputSource 00308 ( 00309 const XMLCh* const systemId 00310 , const XMLCh* const publicId 00311 ); 00312 00316 InputSource(const char* const systemId); 00317 00322 InputSource 00323 ( 00324 const char* const systemId 00325 , const char* const publicId 00326 ); 00327 00329 00330 00331 00332 00333 00334 private: 00335 // ----------------------------------------------------------------------- 00336 // Unimplemented constructors and operators 00337 // ----------------------------------------------------------------------- 00338 InputSource(const InputSource&); 00339 void operator=(const InputSource&); 00340 00341 00342 // ----------------------------------------------------------------------- 00343 // Private data members 00344 // 00345 // fEncoding 00346 // This is the encoding to use. Usually this is null, which means 00347 // to use the information found in the file itself. But, if set, 00348 // this encoding will be used without question. 00349 // 00350 // fPublicId 00351 // This is the optional public id for the input source. It can be 00352 // null if none is desired. 00353 // 00354 // fSystemId 00355 // This is the system id for the input source. This is what is 00356 // actually used to open the source. 00357 // 00358 // fFatalErrorIfNotFound 00359 // ----------------------------------------------------------------------- 00360 XMLCh* fEncoding; 00361 XMLCh* fPublicId; 00362 XMLCh* fSystemId; 00363 bool fFatalErrorIfNotFound; 00364 }; 00365 00366 00367 // --------------------------------------------------------------------------- 00368 // InputSource: Getter methods 00369 // --------------------------------------------------------------------------- 00370 inline const XMLCh* InputSource::getEncoding() const 00371 { 00372 return fEncoding; 00373 } 00374 00375 inline const XMLCh* InputSource::getPublicId() const 00376 { 00377 return fPublicId; 00378 } 00379 00380 inline const XMLCh* InputSource::getSystemId() const 00381 { 00382 return fSystemId; 00383 } 00384 00385 inline const bool InputSource::getIssueFatalErrorIfNotFound() const 00386 { 00387 return fFatalErrorIfNotFound; 00388 } 00389 00390 // --------------------------------------------------------------------------- 00391 // InputSource: Setter methods 00392 // --------------------------------------------------------------------------- 00393 inline void InputSource::setIssueFatalErrorIfNotFound(const bool flag) 00394 { 00395 fFatalErrorIfNotFound = flag; 00396 } 00397 00398 #endif