00001 /*
00002 * The Apache Software License, Version 1.1
00003 *
00004 * Copyright (c) 1999-2003 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: XMLNotationDecl.hpp,v $
00059 * Revision 1.8 2003/05/22 02:10:51 knoaman
00060 * Default the memory manager.
00061 *
00062 * Revision 1.7 2003/05/16 21:36:55 knoaman
00063 * Memory manager implementation: Modify constructors to pass in the memory manager.
00064 *
00065 * Revision 1.6 2003/05/15 18:26:07 knoaman
00066 * Partial implementation of the configurable memory manager.
00067 *
00068 * Revision 1.5 2003/04/21 20:46:01 knoaman
00069 * Use XMLString::release to prepare for configurable memory manager.
00070 *
00071 * Revision 1.4 2003/03/07 18:08:10 tng
00072 * Return a reference instead of void for operator=
00073 *
00074 * Revision 1.3 2002/11/04 15:00:21 tng
00075 * C++ Namespace Support.
00076 *
00077 * Revision 1.2 2002/08/22 19:27:41 tng
00078 * [Bug 11448] DomCount has problems with XHTML1.1 DTD.
00079 *
00080 * Revision 1.1.1.1 2002/02/01 22:21:52 peiyongz
00081 * sane_include
00082 *
00083 * Revision 1.5 2000/03/02 19:54:25 roddey
00084 * This checkin includes many changes done while waiting for the
00085 * 1.1.0 code to be finished. I can't list them all here, but a list is
00086 * available elsewhere.
00087 *
00088 * Revision 1.4 2000/02/24 20:00:23 abagchi
00089 * Swat for removing Log from API docs
00090 *
00091 * Revision 1.3 2000/02/15 01:21:31 roddey
00092 * Some initial documentation improvements. More to come...
00093 *
00094 * Revision 1.2 2000/02/06 07:47:48 rahulj
00095 * Year 2K copyright swat.
00096 *
00097 * Revision 1.1.1.1 1999/11/09 01:08:35 twl
00098 * Initial checkin
00099 *
00100 * Revision 1.2 1999/11/08 20:44:39 rahul
00101 * Swat for adding in Product name and CVS comment log variable.
00102 *
00103 */
00104
00105 #if !defined(XMLNOTATIONDECL_HPP)00106#define XMLNOTATIONDECL_HPP
00107
00108 #include <xercesc/util/XMemory.hpp>
00109 #include <xercesc/util/PlatformUtils.hpp>
00110 #include <xercesc/util/XMLString.hpp>
00111
00112 XERCES_CPP_NAMESPACE_BEGIN
00113
00123class XMLNotationDecl : publicXMemory
00124 {
00125 public:
00126 // -----------------------------------------------------------------------
00127 // Constructors and Destructor
00128 // -----------------------------------------------------------------------
00129
00132 XMLNotationDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
00133 XMLNotationDecl
00134 (
00135 const XMLCh* const notName
00136 , const XMLCh* const pubId
00137 , const XMLCh* const sysId
00138 , const XMLCh* const baseURI = 0
00139 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00140 );
00142
00145 ~XMLNotationDecl();
00147
00148
00149 // -----------------------------------------------------------------------
00150 // Getter methods
00151 // -----------------------------------------------------------------------
00152 unsignedint getId() const;
00153 const XMLCh* getName() const;
00154 const XMLCh* getPublicId() const;
00155 const XMLCh* getSystemId() const;
00156 const XMLCh* getBaseURI() const;
00157 MemoryManager* getMemoryManager() const;
00158
00159
00160 // -----------------------------------------------------------------------
00161 // Setter methods
00162 // -----------------------------------------------------------------------
00163 void setId(constunsignedint newId);
00164 void setName
00165 (
00166 const XMLCh* const notName
00167 );
00168 void setPublicId(const XMLCh* const newId);
00169 void setSystemId(const XMLCh* const newId);
00170 void setBaseURI(const XMLCh* const newId);
00171
00172
00173 // -----------------------------------------------------------------------
00174 // Support named collection element semantics
00175 // -----------------------------------------------------------------------
00176 const XMLCh* getKey() const;
00177
00178
00179 private :
00180 // -----------------------------------------------------------------------
00181 // Unimplemented constructors and operators
00182 // -----------------------------------------------------------------------
00183 XMLNotationDecl(constXMLNotationDecl&);
00184 XMLNotationDecl& operator=(constXMLNotationDecl&);
00185
00186
00187 // -----------------------------------------------------------------------
00188 // XMLNotationDecl: Private helper methods
00189 // -----------------------------------------------------------------------
00190 void cleanUp();
00191
00192
00193 // -----------------------------------------------------------------------
00194 // Private data members
00195 //
00196 // fId
00197 // This is the unique id given to this notation decl.
00198 //
00199 // fName
00200 // The notation's name, which identifies the type of notation it
00201 // applies to.
00202 //
00203 // fPublicId
00204 // The text of the notation's public id, if any.
00205 //
00206 // fSystemId
00207 // The text of the notation's system id, if any.
00208 //
00209 // fBaseURI
00210 // The text of the notation's base URI
00211 // -----------------------------------------------------------------------
00212 unsignedint fId;
00213 XMLCh* fName;
00214 XMLCh* fPublicId;
00215 XMLCh* fSystemId;
00216 XMLCh* fBaseURI;
00217 MemoryManager* fMemoryManager;
00218 };
00219
00220
00221 // -----------------------------------------------------------------------
00222 // Getter methods
00223 // -----------------------------------------------------------------------00224inlineunsignedintXMLNotationDecl::getId() const
00225 {
00226 return fId;
00227 }
00228
00229inlineconst XMLCh* XMLNotationDecl::getName() const
00230 {
00231 return fName;
00232 }
00233
00234inlineconst XMLCh* XMLNotationDecl::getPublicId() const
00235 {
00236 return fPublicId;
00237 }
00238
00239inlineconst XMLCh* XMLNotationDecl::getSystemId() const
00240 {
00241 return fSystemId;
00242 }
00243
00244inlineconst XMLCh* XMLNotationDecl::getBaseURI() const
00245 {
00246 return fBaseURI;
00247 }
00248
00249inlineMemoryManager* XMLNotationDecl::getMemoryManager() const
00250 {
00251 return fMemoryManager;
00252 }
00253
00254 // -----------------------------------------------------------------------
00255 // Setter methods
00256 // -----------------------------------------------------------------------00257inlinevoidXMLNotationDecl::setId(constunsignedint newId)
00258 {
00259 fId = newId;
00260 }
00261
00262inlinevoidXMLNotationDecl::setPublicId(const XMLCh* const newId)
00263 {
00264 if (fPublicId)
00265 fMemoryManager->deallocate(fPublicId);
00266
00267 fPublicId = XMLString::replicate(newId, fMemoryManager);
00268 }
00269
00270inlinevoidXMLNotationDecl::setSystemId(const XMLCh* const newId)
00271 {
00272 if (fSystemId)
00273 fMemoryManager->deallocate(fSystemId);
00274
00275 fSystemId = XMLString::replicate(newId, fMemoryManager);
00276 }
00277
00278inlinevoidXMLNotationDecl::setBaseURI(const XMLCh* const newId)
00279 {
00280 if (fBaseURI)
00281 fMemoryManager->deallocate(fBaseURI);
00282
00283 fBaseURI = XMLString::replicate(newId, fMemoryManager);
00284 }
00285
00286
00287 // ---------------------------------------------------------------------------
00288 // XMLNotationDecl: Support named pool element semantics
00289 // ---------------------------------------------------------------------------00290inlineconst XMLCh* XMLNotationDecl::getKey() const
00291 {
00292 return fName;
00293 }
00294
00295 XERCES_CPP_NAMESPACE_END
00296
00297 #endif