File indexing completed on 2025-01-18 10:15:16
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #if !defined(XERCESC_INCLUDE_GUARD_XMLURL_HPP)
0023 #define XERCESC_INCLUDE_GUARD_XMLURL_HPP
0024
0025 #include <xercesc/util/PlatformUtils.hpp>
0026
0027 XERCES_CPP_NAMESPACE_BEGIN
0028
0029 class BinInputStream;
0030
0031
0032
0033
0034
0035 class XMLUTIL_EXPORT XMLURL : public XMemory
0036 {
0037 public:
0038
0039
0040
0041
0042
0043
0044 enum Protocols
0045 {
0046 File
0047 , HTTP
0048 , FTP
0049 , HTTPS
0050
0051 , Protocols_Count
0052 , Unknown
0053 };
0054
0055
0056
0057
0058
0059 static Protocols lookupByName(const XMLCh* const protoName);
0060 static bool parse(const XMLCh* const urlText, XMLURL& xmlURL);
0061
0062
0063
0064
0065 XMLURL(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
0066 XMLURL
0067 (
0068 const XMLCh* const baseURL
0069 , const XMLCh* const relativeURL
0070 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
0071 );
0072 XMLURL
0073 (
0074 const XMLCh* const baseURL
0075 , const char* const relativeURL
0076 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
0077 );
0078 XMLURL
0079 (
0080 const XMLURL& baseURL
0081 , const XMLCh* const relativeURL
0082 );
0083 XMLURL
0084 (
0085 const XMLURL& baseURL
0086 , const char* const relativeURL
0087 );
0088 XMLURL
0089 (
0090 const XMLCh* const urlText
0091 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
0092 );
0093 XMLURL
0094 (
0095 const char* const urlText
0096 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
0097 );
0098 XMLURL(const XMLURL& toCopy);
0099 virtual ~XMLURL();
0100
0101
0102
0103
0104
0105 XMLURL& operator=(const XMLURL& toAssign);
0106 bool operator==(const XMLURL& toCompare) const;
0107 bool operator!=(const XMLURL& toCompare) const;
0108
0109
0110
0111
0112
0113 const XMLCh* getFragment() const;
0114 const XMLCh* getHost() const;
0115 const XMLCh* getPassword() const;
0116 const XMLCh* getPath() const;
0117 unsigned int getPortNum() const;
0118 Protocols getProtocol() const;
0119 const XMLCh* getProtocolName() const;
0120 const XMLCh* getQuery() const;
0121 const XMLCh* getURLText() const;
0122 const XMLCh* getUser() const;
0123 MemoryManager* getMemoryManager() const;
0124
0125
0126
0127
0128
0129 void setURL(const XMLCh* const urlText);
0130 void setURL
0131 (
0132 const XMLCh* const baseURL
0133 , const XMLCh* const relativeURL
0134 );
0135 void setURL
0136 (
0137 const XMLURL& baseURL
0138 , const XMLCh* const relativeURL
0139 );
0140
0141 bool setURL(
0142 const XMLCh* const baseURL
0143 , const XMLCh* const relativeURL
0144 , XMLURL& xmlURL);
0145
0146
0147
0148 bool isRelative() const;
0149 bool hasInvalidChar() const;
0150 BinInputStream* makeNewStream() const;
0151 void makeRelativeTo(const XMLCh* const baseURLText);
0152 void makeRelativeTo(const XMLURL& baseURL);
0153
0154
0155 private:
0156
0157
0158
0159 void buildFullText();
0160 void cleanUp();
0161 bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true);
0162 void parse
0163 (
0164 const XMLCh* const urlText
0165 );
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208 MemoryManager* fMemoryManager;
0209 XMLCh* fFragment;
0210 XMLCh* fHost;
0211 XMLCh* fPassword;
0212 XMLCh* fPath;
0213 unsigned int fPortNum;
0214 Protocols fProtocol;
0215 XMLCh* fQuery;
0216 XMLCh* fUser;
0217 XMLCh* fURLText;
0218 bool fHasInvalidChar;
0219 };
0220
0221
0222
0223
0224
0225 inline bool XMLURL::operator!=(const XMLURL& toCompare) const
0226 {
0227 return !operator==(toCompare);
0228 }
0229
0230
0231
0232
0233
0234 inline const XMLCh* XMLURL::getFragment() const
0235 {
0236 return fFragment;
0237 }
0238
0239 inline const XMLCh* XMLURL::getHost() const
0240 {
0241 return fHost;
0242 }
0243
0244 inline const XMLCh* XMLURL::getPassword() const
0245 {
0246 return fPassword;
0247 }
0248
0249 inline const XMLCh* XMLURL::getPath() const
0250 {
0251 return fPath;
0252 }
0253
0254 inline XMLURL::Protocols XMLURL::getProtocol() const
0255 {
0256 return fProtocol;
0257 }
0258
0259 inline const XMLCh* XMLURL::getQuery() const
0260 {
0261 return fQuery;
0262 }
0263
0264 inline const XMLCh* XMLURL::getUser() const
0265 {
0266 return fUser;
0267 }
0268
0269 inline const XMLCh* XMLURL::getURLText() const
0270 {
0271
0272
0273
0274
0275
0276 if (!fURLText)
0277 ((XMLURL*)this)->buildFullText();
0278
0279 return fURLText;
0280 }
0281
0282 inline MemoryManager* XMLURL::getMemoryManager() const
0283 {
0284 return fMemoryManager;
0285 }
0286
0287 MakeXMLException(MalformedURLException, XMLUTIL_EXPORT)
0288
0289 XERCES_CPP_NAMESPACE_END
0290
0291
0292 #endif