## Xalan-C++ API Documentation

### The Xalan C++ XSLT Processor Version 1.10

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

# XalanDOMString.hpp

Go to the documentation of this file.

    00001 /*
    00002  * Copyright 1999-2004 The Apache Software Foundation.
    00003  *
    00004  * Licensed under the Apache License, Version 2.0 (the "License");
    00005  * you may not use this file except in compliance with the License.
    00006  * You may obtain a copy of the License at
    00007  *
    00008  *     http://www.apache.org/licenses/LICENSE-2.0
    00009  *
    00010  * Unless required by applicable law or agreed to in writing, software
    00011  * distributed under the License is distributed on an "AS IS" BASIS,
    00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00013  * See the License for the specific language governing permissions and
    00014  * limitations under the License.
    00015  */
    00016 #if !defined(XALANDOMSTRING_HEADER_GUARD_1357924680)
    00017 #define XALANDOMSTRING_HEADER_GUARD_1357924680
    00018
    00019
    00020
    00021 #include <xalanc/XalanDOM/XalanDOMDefinitions.hpp>
    00022
    00023
    00024
    00025 #include <cassert>
    00026
    00027
    00028
    00029 #include <xalanc/Include/XalanMemoryManagement.hpp>
    00030 #include <xalanc/Include/XalanVector.hpp>
    00031
    00032
    00033
    00034 #include <xalanc/XalanDOM/XalanDOMException.hpp>
    00035
    00036
    00037
    00038 XALAN_CPP_NAMESPACE_BEGIN
    00039
    00040
    00041
    00042 class XALAN_DOM_EXPORT XalanDOMString
    00043 {
    00044 public:
    00045     typedef XalanVector<XalanDOMChar>       XalanDOMCharVectorType;
    00046     typedef XalanVector<char>               CharVectorType;
    00047     typedef XalanVector<wchar_t>            WideCharVectorType;
    00048
    00049     typedef XalanDOMChar                value_type;
    00050     typedef XalanDOMChar&               reference;
    00051     typedef const XalanDOMChar&         const_reference;
    00052
    00053     typedef unsigned int    size_type;
    00054
    00055     typedef XalanDOMCharVectorType::iterator                iterator;
    00056     typedef XalanDOMCharVectorType::const_iterator          const_iterator;
    00057     typedef XalanDOMCharVectorType::reverse_iterator        reverse_iterator;
    00058     typedef XalanDOMCharVectorType::const_reverse_iterator  const_reverse_iterator;
    00059
    00060 #if defined(XALAN_INLINE_INITIALIZATION)
    00061     static const size_type  npos = ~0u;
    00062 #else
    00063     enum { npos = -1 };
    00064 #endif
    00065
    00066     XalanDOMString(MemoryManagerType&  theManager XALAN_DEFAULT_CONSTRACTOR_MEMORY_MGR );
    00067
    00068     explicit
    00069     XalanDOMString(
    00070             const char*         theString,
    00071             MemoryManagerType&  theManager XALAN_DEFAULT_MEMMGR,
    00072             size_type           theCount = size_type(npos));
    00073
    00074     XalanDOMString(
    00075             const XalanDOMString&   theSource,
    00076             MemoryManagerType&      theManager XALAN_DEFAULT_CONSTRACTOR_MEMORY_MGR,
    00077             size_type               theStartPosition = 0,
    00078             size_type               theCount = size_type(npos));
    00079
    00080     explicit
    00081     XalanDOMString(
    00082             const XalanDOMChar*     theString,
    00083             MemoryManagerType&      theManager XALAN_DEFAULT_MEMMGR,
    00084             size_type               theCount = size_type(npos));
    00085
    00086     XalanDOMString(
    00087             size_type       theCount,
    00088             XalanDOMChar    theChar,
    00089             MemoryManagerType&  theManager XALAN_DEFAULT_MEMMGR);
    00090
    00091     XalanDOMString*
    00092     clone(MemoryManagerType&  theManager);
    00093
    00094     ~XalanDOMString()
    00095     {
    00096     }
    00097
    00098     XalanDOMString&
    00099     operator=(const XalanDOMString& theRHS)
    00100     {
    00101         return assign(theRHS);
    00102     }
    00103
    00104     XalanDOMString&
    00105     operator=(const XalanDOMChar*   theRHS)
    00106     {
    00107         return assign(theRHS);
    00108     }
    00109
    00110     XalanDOMString&
    00111     operator=(const char*   theRHS)
    00112     {
    00113         return assign(theRHS);
    00114     }
    00115
    00116     XalanDOMString&
    00117     operator=(XalanDOMChar  theRHS)
    00118     {
    00119         return assign(1, theRHS);
    00120     }
    00121
    00122     iterator
    00123     begin()
    00124     {
    00125         invariants();
    00126
    00127         return m_data.begin();
    00128     }
    00129
    00130     const_iterator
    00131     begin() const
    00132     {
    00133         invariants();
    00134
    00135         return m_data.begin();
    00136     }
    00137
    00138     iterator
    00139     end()
    00140     {
    00141         invariants();
    00142
    00143         return m_data.empty() == true ? m_data.end() : m_data.end() - 1;
    00144     }
    00145
    00146     const_iterator
    00147     end() const
    00148     {
    00149         invariants();
    00150
    00151         return m_data.empty() == true ? m_data.end() : m_data.end() - 1;
    00152     }
    00153
    00154     reverse_iterator
    00155     rbegin()
    00156     {
    00157         invariants();
    00158
    00159         reverse_iterator    i = m_data.rbegin();
    00160
    00161         if (m_data.empty() == false)
    00162         {
    00163             ++i;
    00164         }
    00165
    00166         return i;
    00167     }
    00168
    00169     const_reverse_iterator
    00170     rbegin() const
    00171     {
    00172         invariants();
    00173
    00174         const_reverse_iterator  i = m_data.rbegin();
    00175
    00176         if (m_data.empty() == false)
    00177         {
    00178             ++i;
    00179         }
    00180
    00181         return i;
    00182     }
    00183
    00184     reverse_iterator
    00185     rend()
    00186     {
    00187         invariants();
    00188
    00189         return m_data.rend();
    00190     }
    00191
    00192     const_reverse_iterator
    00193     rend() const
    00194     {
    00195         invariants();
    00196
    00197         return m_data.rend();
    00198     }
    00199
    00200     size_type
    00201     size() const
    00202     {
    00203         invariants();
    00204
    00205         return m_size;
    00206     }
    00207
    00208     size_type
    00209     length() const
    00210     {
    00211         invariants();
    00212
    00213         return size();
    00214     }
    00215
    00216     size_type
    00217     max_size() const
    00218     {
    00219         invariants();
    00220
    00221         return ~size_type(0);
    00222     }
    00223
    00224     void
    00225     resize(
    00226             size_type       theCount,
    00227             XalanDOMChar    theChar);
    00228
    00229     void
    00230     resize(size_type    theCount)
    00231     {
    00232         invariants();
    00233
    00234         resize(theCount, XalanDOMChar(0));
    00235     }
    00236
    00237     size_type
    00238     capacity() const
    00239     {
    00240         invariants();
    00241
    00242         const XalanDOMCharVectorType::size_type     theCapacity =
    00243                 m_data.capacity();
    00244
    00245         return theCapacity == 0 ? 0 : size_type(theCapacity - 1);
    00246     }
    00247
    00248     void
    00249     reserve(size_type   theCount = 0)
    00250     {
    00251         invariants();
    00252
    00253         m_data.reserve(theCount + 1);
    00254     }
    00255
    00256     void
    00257     clear()
    00258     {
    00259         invariants();
    00260
    00261         m_data.erase(m_data.begin(), m_data.end());
    00262
    00263         m_size = 0;
    00264
    00265         invariants();
    00266     }
    00267
    00268     void
    00269     erase(
    00270             size_type   theStartPosition = 0,
    00271             size_type   theCount = size_type(npos));
    00272
    00273     bool
    00274     empty() const
    00275     {
    00276         invariants();
    00277
    00278         return m_size == 0 ? true : false;
    00279     }
    00280
    00281     const_reference
    00282     operator[](size_type    theIndex) const
    00283     {
    00284         invariants();
    00285
    00286         return m_data[theIndex];
    00287     }
    00288
    00289     reference
    00290     operator[](size_type    theIndex)
    00291     {
    00292         invariants();
    00293
    00294         return m_data[theIndex];
    00295     }
    00296
    00297     const_reference
    00298     at(size_type    theIndex) const
    00299     {
    00300         invariants();
    00301
    00302         return m_data.at(theIndex);
    00303     }
    00304
    00305     reference
    00306     at(size_type    theIndex)
    00307     {
    00308         invariants();
    00309
    00310         return m_data.at(theIndex);
    00311     }
    00312
    00313     const XalanDOMChar*
    00314     c_str() const
    00315     {
    00316         invariants();
    00317
    00318         return m_data.empty() == true ? &s_empty : &m_data[0];
    00319     }
    00320
    00321     const XalanDOMChar*
    00322     data() const
    00323     {
    00324         invariants();
    00325
    00326         return c_str();
    00327     }
    00328
    00329     void
    00330     swap(XalanDOMString&    theOther)
    00331     {
    00332         invariants();
    00333
    00334         m_data.swap(theOther.m_data);
    00335
    00336 #if defined(XALAN_NO_STD_NAMESPACE)
    00337         ::swap(m_size, theOther.m_size);
    00338 #else
    00339         std::swap(m_size, theOther.m_size);
    00340 #endif
    00341     }
    00342
    00343     XalanDOMString&
    00344     operator+=(const XalanDOMString&    theSource)
    00345     {
    00346         return append(theSource);
    00347     }
    00348
    00349     XalanDOMString&
    00350     operator+=(const XalanDOMChar*  theString)
    00351     {
    00352         return append(theString);
    00353     }
    00354
    00355     XalanDOMString&
    00356     operator+=(XalanDOMChar theChar)
    00357     {
    00358         append(1, theChar);
    00359
    00360         return *this;
    00361     }
    00362
    00363     XalanDOMString&
    00364     assign(const XalanDOMChar*  theSource)
    00365     {
    00366         invariants();
    00367
    00368         erase();
    00369
    00370         invariants();
    00371
    00372         return append(theSource);
    00373     }
    00374
    00375     XalanDOMString&
    00376     assign(
    00377             const XalanDOMChar*     theSource,
    00378             size_type               theCount)
    00379     {
    00380         invariants();
    00381
    00382         erase();
    00383
    00384         invariants();
    00385
    00386         return append(theSource, theCount);
    00387     }
    00388
    00389     XalanDOMString&
    00390     assign(const char*  theSource)
    00391     {
    00392         invariants();
    00393
    00394         erase();
    00395
    00396         invariants();
    00397
    00398         return append(theSource);
    00399     }
    00400
    00401     XalanDOMString&
    00402     assign(
    00403             const char*     theSource,
    00404             size_type       theCount)
    00405     {
    00406         invariants();
    00407
    00408         erase();
    00409
    00410         invariants();
    00411
    00412         return append(theSource, theCount);
    00413     }
    00414
    00415     XalanDOMString&
    00416     assign(
    00417             const XalanDOMString&   theSource,
    00418             size_type               thePosition,
    00419             size_type               theCount);
    00420
    00421     XalanDOMString&
    00422     assign(const XalanDOMString&    theSource)
    00423     {
    00424         invariants();
    00425
    00426         if (&theSource != this)
    00427         {
    00428             m_data = theSource.m_data;
    00429
    00430             m_size = theSource.m_size;
    00431         }
    00432
    00433         invariants();
    00434
    00435         return *this;
    00436     }
    00437
    00438     XalanDOMString&
    00439     assign(
    00440             size_type       theCount,
    00441             XalanDOMChar    theChar)
    00442     {
    00443         invariants();
    00444
    00445         erase();
    00446
    00447         invariants();
    00448
    00449         return append(theCount, theChar);
    00450     }
    00451
    00452     XalanDOMString&
    00453     assign(
    00454         iterator    theFirstPosition,
    00455         iterator    theLastPosition);
    00456
    00457     XalanDOMString&
    00458     append(const XalanDOMString&    theSource)
    00459     {
    00460         return append(theSource.c_str(), theSource.length());
    00461     }
    00462
    00463     XalanDOMString&
    00464     append(
    00465             const XalanDOMString&   theSource,
    00466             size_type               thePosition,
    00467             size_type               theCount)
    00468     {
    00469         assert(thePosition < theSource.length() &&
    00470                (theCount == size_type(npos) || thePosition + theCount <= theSource.length()));
    00471
    00472         return append(theSource.c_str() + thePosition, theCount);
    00473     }
    00474
    00475     XalanDOMString&
    00476     append(
    00477             const XalanDOMChar*     theString,
    00478             size_type               theCount);
    00479
    00480     XalanDOMString&
    00481     append(const XalanDOMChar*  theString)
    00482     {
    00483         return append(theString, length(theString));
    00484     }
    00485
    00486     XalanDOMString&
    00487     append(
    00488             const char*     theString,
    00489             size_type       theCount);
    00490
    00491     XalanDOMString&
    00492     append(const char*  theString)
    00493     {
    00494         return append(theString, length(theString));
    00495     }
    00496
    00497     XalanDOMString&
    00498     append(
    00499             size_type       theCount,
    00500             XalanDOMChar    theChar);
    00501
    00502     void
    00503     push_back(XalanDOMChar  theChar)
    00504     {
    00505         invariants();
    00506
    00507         append(1, theChar);
    00508
    00509         invariants();
    00510     }
    00511
    00512     XalanDOMString&
    00513     insert(
    00514             size_type               thePosition,
    00515             const XalanDOMString&   theString)
    00516     {
    00517         return insert(thePosition, theString.c_str(), theString.length());
    00518     }
    00519
    00520     XalanDOMString&
    00521     insert(
    00522             size_type               thePosition1,
    00523             const XalanDOMString&   theString,
    00524             size_type               thePosition2,
    00525             size_type               theCount)
    00526     {
    00527         return insert(thePosition1, theString.c_str() + thePosition2, theCount);
    00528     }
    00529
    00530     XalanDOMString&
    00531     insert(
    00532             size_type               thePosition,
    00533             const XalanDOMChar*     theString,
    00534             size_type               theCount);
    00535
    00536     XalanDOMString&
    00537     insert(
    00538             size_type               thePosition,
    00539             const XalanDOMChar*     theString)
    00540     {
    00541         return insert(thePosition, theString, length(theString));
    00542     }
    00543
    00544     XalanDOMString&
    00545     insert(
    00546             size_type       thePosition,
    00547             size_type       theCount,
    00548             XalanDOMChar    theChar);
    00549
    00550     iterator
    00551     insert(
    00552             iterator        thePosition,
    00553             XalanDOMChar    theChar);
    00554
    00555     void
    00556     insert(
    00557             iterator        thePosition,
    00558             size_type       theCount,
    00559             XalanDOMChar    theChar);
    00560
    00561     void
    00562     insert(
    00563         iterator        theInsertPosition,
    00564         iterator    theFirstPosition,
    00565         iterator    theLastPosition);
    00566
    00567
    00568     XalanDOMString&
    00569     substr(
    00570             XalanDOMString&     theSubstring,
    00571             size_type           thePosition = 0,
    00572             size_type           theCount = size_type(npos)) const
    00573     {
    00574         assert(theCount == size_type(npos) && thePosition < length() ||
    00575                thePosition + theCount <= length());
    00576
    00577         invariants();
    00578
    00579         return theSubstring.assign(*this, thePosition, theCount);
    00580     }
    00581
    00582     int
    00583     compare(const XalanDOMString&   theString) const
    00584     {
    00585         invariants();
    00586
    00587         return compare(theString.c_str());
    00588     }
    00589
    00590     int
    00591     compare(
    00592             size_type               thePosition1,
    00593             size_type               theCount1,
    00594             const XalanDOMString&   theString) const
    00595     {
    00596         invariants();
    00597
    00598         return compare(thePosition1, theCount1, theString.c_str(), theString.length());
    00599     }
    00600
    00601     int
    00602     compare(
    00603             size_type               thePosition1,
    00604             size_type               theCount1,
    00605             const XalanDOMString&   theString,
    00606             size_type               thePosition2,
    00607             size_type               theCount2) const
    00608     {
    00609         invariants();
    00610
    00611         return compare(thePosition1, theCount1, theString.c_str() + thePosition2, theCount2);
    00612     }
    00613
    00614     int
    00615     compare(const XalanDOMChar*     theString) const;
    00616
    00617     int
    00618     compare(
    00619             size_type               thePosition1,
    00620             size_type               theCount1,
    00621             const XalanDOMChar*     theString,
    00622             size_type               theCount2 = size_type(npos)) const;
    00623
    00624
    00625     void
    00626     reset(MemoryManagerType& theManager, const char*    theString);
    00627
    00628     void
    00629     reset(MemoryManagerType& theManager, const XalanDOMChar* theString);
    00630
    00631     class TranscodingError : public XalanDOMException
    00632     {
    00633     public:
    00634
    00635         TranscodingError() :
    00636             XalanDOMException(TRANSCODING_ERR)
    00637         {
    00638         }
    00639
    00640         virtual
    00641         ~TranscodingError()
    00642         {
    00643         }
    00644     };
    00645
    00646
    00647
    00655     void
    00656     transcode(CharVectorType&   theResult) const;
    00657
    00658     MemoryManagerType&
    00659     getMemoryManager()
    00660     {
    00661         return m_data.getMemoryManager();
    00662     }
    00663
    00664     size_type
    00665     hash() const
    00666     {
    00667         return hash(c_str(), size());
    00668     }
    00669
    00670     static bool
    00671     equals(
    00672             const XalanDOMChar*     theLHS,
    00673             size_type               theLHSLength,
    00674             const XalanDOMChar*     theRHS,
    00675             size_type               theRHSLength);
    00676
    00677     static bool
    00678     equals(
    00679             const XalanDOMChar*     theLHS,
    00680             const XalanDOMChar*     theRHS)
    00681     {
    00682         return equals(theLHS, length(theLHS), theRHS, length(theRHS));
    00683     }
    00684
    00685     static bool
    00686     equals(
    00687             const XalanDOMString&   theLHS,
    00688             const XalanDOMString&   theRHS);
    00689
    00690     static bool
    00691     equals(
    00692             const XalanDOMString&   theLHS,
    00693             const XalanDOMChar*     theRHS)
    00694     {
    00695         return equals(theLHS.c_str(), theRHS);
    00696     }
    00697
    00698     static bool
    00699     equals(
    00700             const XalanDOMChar*     theLHS,
    00701             const XalanDOMString&   theRHS)
    00702     {
    00703         return equals(theLHS, theRHS.c_str());
    00704     }
    00705
    00706     /*
    00707      * Helper function to determine the length of a null-
    00708      * terminated string.
    00709      *
    00710      * @theString The string
    00711      * @return the length
    00712      */
    00713     static size_type
    00714     length(const XalanDOMChar*  theString);
    00715
    00716     /*
    00717      * Helper function to determine the length of a null-
    00718      * terminated string.
    00719      *
    00720      * @theString The string
    00721      * @return the length
    00722      */
    00723     static size_type
    00724     length(const char*  theString);
    00725
    00726     static size_type
    00727     hash(
    00728             const XalanDOMChar*     theString,
    00729             size_type               theLength);
    00730
    00731 protected:
    00732
    00733     /*
    00734      * Function to assert invariant conditions for the class.
    00735      *
    00736      * @return the iterator
    00737      */
    00738     void
    00739     invariants() const
    00740     {
    00741 #if !defined(NDEBUG)
    00742         assert((m_data.empty() == true && m_size == 0) || m_size == m_data.size() - 1);
    00743         assert(m_data.empty() == true || m_data.back() == 0);
    00744 #endif
    00745     }
    00746
    00747     /*
    00748      * Get an iterator to the position of the terminating null.
    00749      *
    00750      * @return the iterator
    00751      */
    00752     iterator
    00753     getBackInsertIterator()
    00754     {
    00755         invariants();
    00756
    00757         return m_data.empty() == true ? m_data.end() : m_data.end() - 1;
    00758     }
    00759
    00760     const_iterator
    00761     getBackInsertIterator() const
    00762     {
    00763         invariants();
    00764
    00765         return m_data.empty() == true ? m_data.end() : m_data.end() - 1;
    00766     }
    00767
    00768     iterator
    00769     getIteratorForPosition(size_type    thePosition)
    00770     {
    00771         invariants();
    00772
    00773         return m_data.begin() + thePosition;
    00774     }
    00775
    00776     const_iterator
    00777     getIteratorForPosition(size_type    thePosition) const
    00778     {
    00779         invariants();
    00780
    00781         return m_data.begin() + thePosition;
    00782     }
    00783
    00784 #if defined (XALAN_DEVELOPMENT)
    00785     // not defined
    00786     XalanDOMString();
    00787     XalanDOMString(const XalanDOMString&);
    00788 #endif
    00789
    00790 private:
    00791
    00792
    00793     XalanDOMCharVectorType      m_data;
    00794
    00795     size_type                   m_size;
    00796
    00797     static const XalanDOMChar   s_empty;
    00798 };
    00799
    00800
    00801
    00802 inline bool
    00803 operator==(
    00804             const XalanDOMString&   theLHS,
    00805             const XalanDOMString&   theRHS)
    00806 {
    00807     return XalanDOMString::equals(theLHS, theRHS);
    00808 }
    00809
    00810
    00811
    00812 inline bool
    00813 operator==(
    00814             const XalanDOMString&   theLHS,
    00815             const XalanDOMChar*     theRHS)
    00816 {
    00817     return XalanDOMString::equals(theLHS, theRHS);
    00818 }
    00819
    00820
    00821
    00822 inline bool
    00823 operator==(
    00824             const XalanDOMChar*     theLHS,
    00825             const XalanDOMString&   theRHS)
    00826 {
    00827     // Note reversing of operands...
    00828     return XalanDOMString::equals(theLHS, theRHS);
    00829 }
    00830
    00831
    00832
    00833 inline bool
    00834 operator!=(
    00835             const XalanDOMString&   theLHS,
    00836             const XalanDOMString&   theRHS)
    00837 {
    00838     return !(theLHS == theRHS);
    00839 }
    00840
    00841
    00842
    00843 inline bool
    00844 operator!=(
    00845             const XalanDOMChar*     theLHS,
    00846             const XalanDOMString&   theRHS)
    00847 {
    00848     return !(theLHS == theRHS);
    00849 }
    00850
    00851
    00852
    00853 inline bool
    00854 operator!=(
    00855             const XalanDOMString&   theLHS,
    00856             const XalanDOMChar*     theRHS)
    00857 {
    00858     return !(theRHS == theLHS);
    00859 }
    00860
    00861
    00862
    00863 inline XalanDOMString&
    00864 add(
    00865             const XalanDOMString&   theLHS,
    00866             const XalanDOMString&   theRHS,
    00867             XalanDOMString&         result)
    00868 {
    00869     result.assign(theLHS);
    00870
    00871     return result += theRHS;
    00872 }
    00873
    00874
    00875
    00876 inline XalanDOMString&
    00877 add(
    00878             const XalanDOMString&   theLHS,
    00879             const XalanDOMChar*     theRHS,
    00880             XalanDOMString&         result)
    00881 {
    00882     result.assign(theLHS);
    00883
    00884     return result += theRHS;
    00885 }
    00886
    00887
    00888
    00889 inline XalanDOMString&
    00890 add(
    00891             const XalanDOMChar*     theLHS,
    00892             const XalanDOMString&   theRHS,
    00893             XalanDOMString&         result)
    00894 {
    00895     result.assign(theLHS);
    00896
    00897     return result += theRHS;
    00898 }
    00899
    00900
    00901
    00902 inline const XalanDOMString&
    00903 add(
    00904             const char*             theLHS,
    00905             const XalanDOMString&   theRHS,
    00906             XalanDOMString&         result)
    00907 {
    00908     result.assign(theLHS);
    00909
    00910     result.append(theRHS);
    00911
    00912     return result;
    00913 }
    00914
    00915
    00916
    00917 inline const XalanDOMString&
    00918 add(
    00919             const XalanDOMString&   theLHS,
    00920             const char*             theRHS,
    00921             XalanDOMString&         result)
    00922 {
    00923     result.assign(theLHS);
    00924
    00925     result.append(theRHS);
    00926
    00927     return result;
    00928 }
    00929
    00930
    00931
    00932 // Standard vector of XalanDOMChars and chars
    00933 typedef XalanVector<XalanDOMChar>   XalanDOMCharVectorType;
    00934
    00935 typedef XalanVector<char>           CharVectorType;
    00936
    00937
    00938
    00939
    00940
    00952 XALAN_DOM_EXPORT_FUNCTION(bool)
    00953 TranscodeToLocalCodePage(
    00954             const XalanDOMChar*         theSourceString,
    00955             XalanDOMString::size_type   theSourceStringLength,
    00956             CharVectorType&             targetVector,
    00957             bool                        terminate = false);
    00958
    00972 XALAN_DOM_EXPORT_FUNCTION(void)
    00973 TranscodeToLocalCodePage(
    00974             const XalanDOMChar*         theSourceString,
    00975             XalanDOMString::size_type   theSourceStringLength,
    00976             CharVectorType&             targetVector,
    00977             bool                        terminate,
    00978             char                        theSubstitutionChar);
    00979
    00988 #if !defined(XALAN_DEVELOPMENT)
    00989 inline const XalanDOMString
    00990 TranscodeFromLocalCodePage(
    00991             const char*                 theSourceString,
    00992             XalanDOMString::size_type   theSourceStringLength = XalanDOMString::npos)
    00993 {
    00994     return XalanDOMString(theSourceString,XalanMemMgrs::getDefaultXercesMemMgr(), theSourceStringLength);
    00995 }
    00996 #endif
    00997
    00998
    01009 XALAN_DOM_EXPORT_FUNCTION(bool)
    01010 TranscodeToLocalCodePage(
    01011             const XalanDOMChar*     theSourceString,
    01012             CharVectorType&         targetVector,
    01013             bool                    terminate = false);
    01014
    01024 XALAN_DOM_EXPORT_FUNCTION(void)
    01025 TranscodeToLocalCodePage(
    01026             const XalanDOMChar*     theSourceString,
    01027             CharVectorType&         targetVector,
    01028             bool                    terminate,
    01029             char                    theSubstitutionChar);
    01030
    01039 #if !defined(XALAN_DEVELOPMENT)
    01040 inline const CharVectorType
    01041 TranscodeToLocalCodePage(const XalanDOMChar*    theSourceString)
    01042 {
    01043     CharVectorType  theResult;
    01044
    01045     TranscodeToLocalCodePage(theSourceString, theResult, true, '?');
    01046
    01047     return theResult;
    01048 }
    01049 #endif
    01050
    01051
    01061 inline bool
    01062 TranscodeToLocalCodePage(
    01063             const XalanDOMString&   theSourceString,
    01064             CharVectorType&         targetVector,
    01065             bool                    terminate = false)
    01066 {
    01067     return TranscodeToLocalCodePage(theSourceString.c_str(), targetVector, terminate);
    01068 }
    01069
    01080 inline void
    01081 TranscodeToLocalCodePage(
    01082             const XalanDOMString&   theSourceString,
    01083             CharVectorType&         targetVector,
    01084             bool                    terminate ,
    01085             char                    theSubstitutionChar)
    01086 {
    01087     TranscodeToLocalCodePage(theSourceString.c_str(), targetVector, terminate, theSubstitutionChar);
    01088 }
    01089
    01098 #if !defined(XALAN_DEVELOPMENT)
    01099 inline const CharVectorType
    01100 TranscodeToLocalCodePage(const XalanDOMString&  theSourceString)
    01101 {
    01102     CharVectorType  theResult;
    01103
    01104     TranscodeToLocalCodePage(theSourceString.c_str(), theResult, true, '?');
    01105
    01106     return theResult;
    01107 }
    01108 #endif
    01109
    01110
    01119 inline const XalanDOMString&
    01120 TranscodeFromLocalCodePage(
    01121             const char*                 theSourceString,
    01122              XalanDOMString&            result,
    01123             XalanDOMString::size_type   theSourceStringLength = XalanDOMString::npos)
    01124 {
    01125     result.assign(theSourceString, theSourceStringLength);
    01126
    01127     return result;
    01128 }
    01129
    01130
    01131
    01143 XALAN_DOM_EXPORT_FUNCTION(bool)
    01144 TranscodeFromLocalCodePage(
    01145             const char*                 theSourceString,
    01146             XalanDOMString::size_type   theSourceStringLength,
    01147             XalanDOMCharVectorType&     theTargetVector,
    01148             bool                        terminate = false);
    01149
    01160 XALAN_DOM_EXPORT_FUNCTION(bool)
    01161 TranscodeFromLocalCodePage(
    01162             const char*                 theSourceString,
    01163             XalanDOMCharVectorType&     theTargetVector,
    01164             bool                        terminate = false);
    01165
    01173 XALAN_DOM_EXPORT_FUNCTION(const XalanDOMString&)
    01174 TranscodeFromLocalCodePage(const CharVectorType&    theSourceString,
    01175                            XalanDOMString&          result);
    01176
    01177
    01178 XALAN_USES_MEMORY_MANAGER(XalanDOMString)
    01179
    01180
    01181
    01182 XALAN_CPP_NAMESPACE_END
    01183
    01184
    01185
    01186 #endif  // !defined(XALANDOMSTRING_HEADER_GUARD_1357924680)

Interpreting class diagrams

Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.

Xalan-C++ XSLT Processor Version 1.10 Copyright © 1999-2004 The Apache Software Foundation. All Rights Reserved.