00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 00045 00046 00047 00048 00049 00050 00051 00052 00053 00054 00055
00056
00057 00058 00059 00060 00061 00062 00063 00064 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099 00100 00101 00102 00103 00104 00105 00106 00107 00108 00109 00110 00111 00112
00113
00114 #if !defined(XMLSTRING_HPP)
00115 #define XMLSTRING_HPP
00116
00117 #include <util/XercesDefs.hpp>
00118
00119 class XMLLCPTranscoder;
00120
00132 class XMLString
00133 {
00134 public:
00135
00137
00138
00149 static void binToText
00150 (
00151 const unsigned int toFormat
00152 , char* const toFill
00153 , const unsigned int maxChars
00154 , const unsigned int radix
00155 );
00156
00167 static void binToText
00168 (
00169 const unsigned int toFormat
00170 , XMLCh* const toFill
00171 , const unsigned int maxChars
00172 , const unsigned int radix
00173 );
00174
00185 static void binToText
00186 (
00187 const unsigned long toFormat
00188 , char* const toFill
00189 , const unsigned int maxChars
00190 , const unsigned int radix
00191 );
00192
00203 static void binToText
00204 (
00205 const unsigned long toFormat
00206 , XMLCh* const toFill
00207 , const unsigned int maxChars
00208 , const unsigned int radix
00209 );
00210
00221 static void binToText
00222 (
00223 const long toFormat
00224 , char* const toFill
00225 , const unsigned int maxChars
00226 , const unsigned int radix
00227 );
00228
00239 static void binToText
00240 (
00241 const long toFormat
00242 , XMLCh* const toFill
00243 , const unsigned int maxChars
00244 , const unsigned int radix
00245 );
00246
00257 static void binToText
00258 (
00259 const int toFormat
00260 , char* const toFill
00261 , const unsigned int maxChars
00262 , const unsigned int radix
00263 );
00264
00275 static void binToText
00276 (
00277 const int toFormat
00278 , XMLCh* const toFill
00279 , const unsigned int maxChars
00280 , const unsigned int radix
00281 );
00282
00293 static bool textToBin
00294 (
00295 const XMLCh* const toConvert
00296 , unsigned int& toFill
00297 );
00298
00299
00301
00316 static void catString
00317 (
00318 char* const target
00319 , const char* const src
00320 );
00321
00334 static void catString
00335 (
00336 XMLCh* const target
00337 , const XMLCh* const src
00338 );
00339
00340
00342
00354 static int compareIString
00355 (
00356 const char* const str1
00357 , const char* const str2
00358 );
00359
00370 static int compareIString
00371 (
00372 const XMLCh* const str1
00373 , const XMLCh* const str2
00374 );
00375
00376
00390 static int compareNString
00391 (
00392 const char* const str1
00393 , const char* const str2
00394 , const unsigned int count
00395 );
00396
00410 static int compareNString
00411 (
00412 const XMLCh* const str1
00413 , const XMLCh* const str2
00414 , const unsigned int count
00415 );
00416
00417
00431 static int compareNIString
00432 (
00433 const char* const str1
00434 , const char* const str2
00435 , const unsigned int count
00436 );
00437
00452 static int compareNIString
00453 (
00454 const XMLCh* const str1
00455 , const XMLCh* const str2
00456 , const unsigned int count
00457 );
00458
00471 static int compareString
00472 (
00473 const char* const str1
00474 , const char* const str2
00475 );
00476
00488 static int compareString
00489 (
00490 const XMLCh* const str1
00491 , const XMLCh* const str2
00492 );
00493
00494
00496
00507 static void copyString
00508 (
00509 char* const target
00510 , const char* const src
00511 );
00512
00523 static void copyString
00524 (
00525 XMLCh* const target
00526 , const XMLCh* const src
00527 );
00528
00541 static bool copyNString
00542 (
00543 XMLCh* const target
00544 , const XMLCh* const src
00545 , const unsigned int maxChars
00546 );
00547
00548
00550
00557 static unsigned int hash
00558 (
00559 const char* const tohash
00560 , const unsigned int hashModulus
00561 );
00562
00569 static unsigned int hash
00570 (
00571 const XMLCh* const toHash
00572 , const unsigned int hashModulus
00573 );
00574
00584 static unsigned int hashN
00585 (
00586 const XMLCh* const toHash
00587 , const unsigned int numChars
00588 , const unsigned int hashModulus
00589 );
00590
00591
00592
00594
00603 static int indexOf(const char* const toSearch, const char ch);
00604
00613 static int indexOf(const XMLCh* const toSearch, const XMLCh ch);
00614
00623 static int lastIndexOf(const char* const toSearch, const char ch);
00624
00633 static int lastIndexOf(const XMLCh* const toSearch, const XMLCh ch);
00634
00645 static int lastIndexOf
00646 (
00647 const char* const toSearch
00648 , const char chToFind
00649 , const unsigned int fromIndex
00650 );
00651
00662 static int lastIndexOf
00663 (
00664 const XMLCh* const toSearch
00665 , const XMLCh ch
00666 , const unsigned int fromIndex
00667 );
00668
00669
00671
00677 static void moveChars
00678 (
00679 XMLCh* const targetStr
00680 , const XMLCh* const srcStr
00681 , const unsigned int count
00682 );
00683
00684
00685
00687
00692 static char* replicate(const char* const toRep);
00693
00698 static XMLCh* replicate(const XMLCh* const toRep);
00699
00700
00701
00703
00710 static bool startsWith
00711 (
00712 const char* const toTest
00713 , const char* const prefix
00714 );
00715
00722 static bool startsWith
00723 (
00724 const XMLCh* const toTest
00725 , const XMLCh* const prefix
00726 );
00727
00736 static bool startsWithI
00737 (
00738 const char* const toTest
00739 , const char* const prefix
00740 );
00741
00751 static bool startsWithI
00752 (
00753 const XMLCh* const toTest
00754 , const XMLCh* const prefix
00755 );
00756
00763 static const XMLCh* findAny
00764 (
00765 const XMLCh* const toSearch
00766 , const XMLCh* const searchList
00767 );
00768
00775 static XMLCh* findAny
00776 (
00777 XMLCh* const toSearch
00778 , const XMLCh* const searchList
00779 );
00780
00785 static unsigned int stringLen(const char* const src);
00786
00791 static unsigned int stringLen(const XMLCh* const src);
00792
00793
00795
00796
00802 static void cut
00803 (
00804 XMLCh* const toCutFrom
00805 , const unsigned int count
00806 );
00807
00816 static char* transcode
00817 (
00818 const XMLCh* const toTranscode
00819 );
00820
00837 static bool transcode
00838 (
00839 const XMLCh* const toTranscode
00840 , char* const toFill
00841 , const unsigned int maxChars
00842 );
00843
00852 static XMLCh* transcode
00853 (
00854 const char* const toTranscode
00855 );
00856
00868 static bool transcode
00869 (
00870 const char* const toTranscode
00871 , XMLCh* const toFill
00872 , const unsigned int maxChars
00873 );
00874
00879 static void trim(char* const toTrim);
00880
00885 static void trim(XMLCh* const toTrim);
00886
00887
00889
00898 static XMLCh* makeUName
00899 (
00900 const XMLCh* const pszURI
00901 , const XMLCh* const pszName
00902 );
00903
00919 static unsigned int replaceTokens
00920 (
00921 XMLCh* const errText
00922 , const unsigned int maxChars
00923 , const XMLCh* const text1
00924 , const XMLCh* const text2
00925 , const XMLCh* const text3
00926 , const XMLCh* const text4
00927 );
00928
00933 static void upperCase(XMLCh* const toUpperCase);
00934
00935
00936
00937 private :
00938
00940
00942 XMLString();
00944 ~XMLString();
00945
00946
00947
00949
00951 static void initString(XMLLCPTranscoder* const defToUse);
00952 static void termString();
00953
00954 friend class XMLPlatformUtils;
00955 };
00956
00957
00958
00959
00960
00961
00962 inline void XMLString::moveChars( XMLCh* const targetStr
00963 , const XMLCh* const srcStr
00964 , const unsigned int count)
00965 {
00966 XMLCh* outPtr = targetStr;
00967 const XMLCh* inPtr = srcStr;
00968 for (unsigned int index = 0; index < count; index++)
00969 *outPtr++ = *inPtr++;
00970 }
00971
00972 inline unsigned int XMLString::stringLen(const XMLCh* const src)
00973 {
00974 unsigned int len = 0;
00975 if (src)
00976 {
00977 const XMLCh* pszTmp = src;
00978 while (*pszTmp++)
00979 len++;
00980 }
00981 return len;
00982 }
00983
00984 inline bool XMLString::startsWith( const XMLCh* const toTest
00985 , const XMLCh* const prefix)
00986 {
00987 return (compareNString(toTest, prefix, stringLen(prefix)) == 0);
00988 }
00989
00990 inline bool XMLString::startsWithI( const XMLCh* const toTest
00991 , const XMLCh* const prefix)
00992 {
00993 return (compareNIString(toTest, prefix, stringLen(prefix)) == 0);
00994 }
00995
00996 inline XMLCh* XMLString::replicate(const XMLCh* const toRep)
00997 {
00998
00999 XMLCh* ret = 0;
01000 if (toRep)
01001 {
01002 const unsigned int len = stringLen(toRep);
01003 ret = new XMLCh[len + 1];
01004 XMLCh* outPtr = ret;
01005 const XMLCh* inPtr = toRep;
01006 for (unsigned int index = 0; index <= len; index++)
01007 *outPtr++ = *inPtr++;
01008 }
01009 return ret;
01010 }
01011
01012 #endif