⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlstring.hpp

📁 基于属性证书的访问控制源代码,由c++编写,包括openssl,xercesc等
💻 HPP
📖 第 1 页 / 共 5 页
字号:
/* * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, *    if any, must include the following acknowledgment: *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowledgment may appear in the software itself, *    if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must *    not be used to endorse or promote products derived from this *    software without prior written permission. For written *    permission, please contact apache\@apache.org. * * 5. Products derived from this software may not be called "Apache", *    nor may "Apache" appear in their name, without prior written *    permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation, and was * originally based on software copyright (c) 1999, International * Business Machines, Inc., http://www.ibm.com .  For more information * on the Apache Software Foundation, please see * <http://www.apache.org/>. *//* * $Log: XMLString.hpp,v $ * Revision 1.23  2003/12/24 15:24:13  cargilld * More updates to memory management so that the static memory manager. * * Revision 1.22  2003/12/17 20:00:49  cargilld * Update for memory management so that the static memory manager (one * used to call Initialize) is only for static data. * * Revision 1.21  2003/12/17 00:18:35  cargilld * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data. * * Revision 1.20  2003/10/02 11:07:26  gareth * Made the non-memory manager version of replicate not inlined. Updated the documentation for the memory manager versions so they don't tell you you should call release. * * Revision 1.19  2003/10/01 00:22:20  knoaman * Add a lastIndexOf method that takes the string length as one of the params. * * Revision 1.18  2003/08/25 20:39:47  neilg * fix XMLString::findAny(...) docs so that they match what the method actually does (and has done since time immemorial) * * Revision 1.17  2003/05/18 14:02:05  knoaman * Memory manager implementation: pass per instance manager. * * Revision 1.16  2003/05/15 19:07:46  knoaman * Partial implementation of the configurable memory manager. * * Revision 1.15  2003/04/21 20:07:05  knoaman * Performance: use memcpy in moveChars and replicate. * * Revision 1.14  2003/02/25 16:42:31  tng * [Bug 7072] Documentation for XMLString::transcode states invalid return value. * * Revision 1.13  2003/02/05 18:50:56  tng * [Bug 11915] Utility for freeing memory. * * Revision 1.12  2003/01/24 23:16:33  peiyongz * removeWS() added; * * Revision 1.11  2002/12/20 22:10:21  tng * XML 1.1 * * Revision 1.10  2002/12/18 14:17:54  gareth * Fix to bug #13438. When you eant a vector that calls delete[] on its members you should use RefArrayVectorOf. * * Revision 1.9  2002/12/04 02:32:43  knoaman * #include cleanup. * * Revision 1.8  2002/11/05 17:42:39  peiyongz * equals( const char* const, const char* const) * * Revision 1.7  2002/11/04 15:22:05  tng * C++ Namespace Support. * * Revision 1.6  2002/10/01 19:45:22  tng * Performance in XMLString::equals, only need to check one string for null as they are equal already. * * Revision 1.5  2002/09/24 19:41:21  tng * New inline function equals that is modified from compareString but simply return true or false. * * Revision 1.4  2002/09/23 18:42:18  tng * DOM L3: Support baseURI.   Add utility fixURI to transform an absolute path filename to standard URI form. * * Revision 1.3  2002/08/27 19:24:43  peiyongz * Bug#12087: patch from Thomas Ford (tom@decisionsoft.com) * * Revision 1.2  2002/02/20 18:17:02  tng * [Bug 5977] Warnings on generating apiDocs. * * Revision 1.1.1.1  2002/02/01 22:22:16  peiyongz * sane_include * * Revision 1.26  2001/08/10 16:23:06  peiyongz * isHex(), isAlphaNum(), isAllWhiteSpace() and patternMatch() Added * * Revision 1.25  2001/07/06 20:27:57  peiyongz * isValidaQName() * * Revision 1.24  2001/07/04 14:38:20  peiyongz * IDDatatypeValidator: created * DatatypeValidatorFactory: IDDTV enabled * XMLString:isValidName(): to validate Name (XML [4][5]) * * Revision 1.23  2001/06/13 14:07:55  peiyongz * isValidaEncName() to validate an encoding name (EncName) * * Revision 1.22  2001/05/23 15:44:51  tng * Schema: NormalizedString fix.  By Pei Yong Zhang. * * Revision 1.21  2001/05/11 13:26:31  tng * Copyright update. * * Revision 1.20  2001/05/09 18:43:30  tng * Add StringDatatypeValidator and BooleanDatatypeValidator.  By Pei Yong Zhang. * * Revision 1.19  2001/05/03 20:34:35  tng * Schema: SchemaValidator update * * Revision 1.18  2001/05/03 19:17:35  knoaman * TraverseSchema Part II. * * Revision 1.17  2001/03/21 21:56:13  tng * Schema: Add Schema Grammar, Schema Validator, and split the DTDValidator into DTDValidator, DTDScanner, and DTDGrammar. * * Revision 1.16  2001/03/02 20:52:46  knoaman * Schema: Regular expression - misc. updates for error messages, * and additions of new functions to XMLString class. * * Revision 1.15  2001/01/15 21:26:34  tng * Performance Patches by David Bertoni. * * Details: (see xerces-c-dev mailing Jan 14) * XMLRecognizer.cpp: the internal encoding string XMLUni::fgXMLChEncodingString * was going through this function numerous times.  As a result, the top hot-spot * for the parse was _wcsicmp().  The real problem is that the Microsofts wide string * functions are unbelievably slow.  For things like encodings, it might be * better to use a special comparison function that only considers a-z and * A-Z as characters with case.  This works since the character set for * encodings is limit to printable ASCII characters. * *  XMLScanner2.cpp: This also has some case-sensitive vs. insensitive compares. * They are also much faster.  The other tweak is to only make a copy of an attribute * string if it needs to be split.  And then, the strategy is to try to use a * stack-based buffer, rather than a dynamically-allocated one. * * SAX2XMLReaderImpl.cpp: Again, more case-sensitive vs. insensitive comparisons. * * KVStringPair.cpp & hpp: By storing the size of the allocation, the storage can * likely be re-used many times, cutting down on dynamic memory allocations. * * XMLString.hpp: a more efficient implementation of stringLen(). * * DTDValidator.cpp: another case of using a stack-based buffer when possible * * These patches made a big difference in parse time in some of our test * files, especially the ones are very attribute-heavy. * * Revision 1.14  2000/10/13 22:47:57  andyh * Fix bug (failure to null-terminate result) in XMLString::trim(). * Patch contributed by Nadav Aharoni * * Revision 1.13  2000/04/12 18:42:15  roddey * Improved docs in terms of what 'max chars' means in the method * parameters. * * Revision 1.12  2000/04/06 19:42:51  rahulj * Clarified how big the target buffer should be in the API * documentation. * * Revision 1.11  2000/03/23 01:02:38  roddey * Updates to the XMLURL class to correct a lot of parsing problems * and to add support for the port number. Updated the URL tests * to test some of this new stuff. * * Revision 1.10  2000/03/20 23:00:46  rahulj * Moved the inline definition of stringLen before the first * use. This satisfied the HP CC compiler. * * Revision 1.9  2000/03/02 19:54:49  roddey * This checkin includes many changes done while waiting for the * 1.1.0 code to be finished. I can't list them all here, but a list is * available elsewhere. * * Revision 1.8  2000/02/24 20:05:26  abagchi * Swat for removing Log from API docs * * Revision 1.7  2000/02/16 18:51:52  roddey * Fixed some facts in the docs and reformatted the docs to stay within * a reasonable line width. * * Revision 1.6  2000/02/16 17:07:07  abagchi * Added API docs * * Revision 1.5  2000/02/06 07:48:06  rahulj * Year 2K copyright swat. * * Revision 1.4  2000/01/12 00:16:23  roddey * Changes to deal with multiply nested, relative pathed, entities and to deal * with the new URL class changes. * * Revision 1.3  1999/12/18 00:18:10  roddey * More changes to support the new, completely orthagonal support for * intrinsic encodings. * * Revision 1.2  1999/12/15 19:41:28  roddey * Support for the new transcoder system, where even intrinsic encodings are * done via the same transcoder abstraction as external ones. * * Revision 1.1.1.1  1999/11/09 01:05:52  twl * Initial checkin * * Revision 1.2  1999/11/08 20:45:21  rahul * Swat for adding in Product name and CVS comment log variable. * */#if !defined(XMLSTRING_HPP)#define XMLSTRING_HPP#include <xercesc/util/BaseRefVectorOf.hpp>#include <xercesc/framework/MemoryManager.hpp>#include <string.h>XERCES_CPP_NAMESPACE_BEGINclass XMLLCPTranscoder;/**  * Class for representing native character strings and handling common string  * operations  *  * This class is Unicode compliant. This class is designed primarily  * for internal use, but due to popular demand, it is being made  * publicly available. Users of this class must understand that this  * is not an officially supported class. All public methods of this  * class are <i>static functions</i>.  *  */class XMLUTIL_EXPORT XMLString{public:    /* Static methods for native character mode string manipulation */    /** @name String concatenation functions */    //@{    /** Concatenates two strings.      *      * <code>catString</code> appends <code>src</code> to <code>target</code> and      * terminates the resulting string with a null character. The initial character      * of <code>src</code> overwrites the terminating character of <code>target      * </code>.      *      * No overflow checking is performed when strings are copied or appended.      * The behavior of <code>catString</code> is undefined if source and      * destination strings overlap.      *      * @param target Null-terminated destination string      * @param src Null-terminated source string      */    static void catString    (                char* const     target        , const char* const     src    );    /** Concatenates two strings.      *      * <code>catString</code> appends <code>src</code> to <code>target</code> and      * terminates the resulting string with a null character. The initial character of      * <code>src</code> overwrites the terminating character of <code>target</code>.      * No overflow checking is performed when strings are copied or appended.      * The behavior of <code>catString</code> is undefined if source and destination      * strings overlap.      *      *    @param target Null-terminated destination string      * @param src Null-terminated source string      */    static void catString    (                XMLCh* const    target        , const XMLCh* const    src    );    //@}    /** @name String comparison functions */    //@{    /** Lexicographically compares lowercase versions of <code>str1</code> and      * <code>str2</code> and returns a value indicating their relationship.      * @param str1 Null-terminated string to compare      * @param str2 Null-terminated string to compare      *      * @return The return value indicates the relation of <code>str1</code> to      * <code>str2</code> as follows      *  Less than 0 means <code>str1</code> is less than <code>str2</code>      *  Equal to 0 means <code>str1</code> is identical to <code>str2</code>      *  Greater than 0 means <code>str1</code> is more than <code>str2</code>      */    static int compareIString    (        const   char* const     str1        , const char* const     str2    );    /** Lexicographically compares lowercase versions of <code>str1</code> and      * <code>str2</code> and returns a value indicating their relationship.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -