1 #ifndef _XMLRPCUTIL_H_ 2 #define _XMLRPCUTIL_H_ 3 // 4 // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley 5 // 6 #if defined(_MSC_VER) 7 # pragma warning(disable:4786) // identifier was truncated in debug info 8 #endif 9 10 #ifndef MAKEDEPEND 11 # include <string> 12 #endif 13 14 #if defined(_MSC_VER) 15 # define snprintf _snprintf 16 # define vsnprintf _vsnprintf 17 # define strcasecmp _stricmp 18 # define strncasecmp _strnicmp 19 #elif defined(__BORLANDC__) 20 # define strcasecmp stricmp 21 # define strncasecmp strnicmp 22 #endif 23 24 namespace XmlRpc { 25 26 //! Utilities for XML parsing, encoding, and decoding and message handlers. 27 class XmlRpcUtil { 28 public: 29 // hokey xml parsing 30 //! Returns contents between <tag> and </tag>, updates offset to char after </tag> 31 static std::string parseTag(const char* tag, std::string const& xml, int* offset); 32 33 //! Returns true if the tag is found and updates offset to the char after the tag 34 static bool findTag(const char* tag, std::string const& xml, int* offset); 35 36 //! Returns the next tag and updates offset to the char after the tag, or empty string 37 //! if the next non-whitespace character is not '<' 38 static std::string getNextTag(std::string const& xml, int* offset); 39 40 //! Returns true if the tag is found at the specified offset (modulo any whitespace) 41 //! and updates offset to the char after the tag 42 static bool nextTagIs(const char* tag, std::string const& xml, int* offset); 43 44 45 //! Convert raw text to encoded xml. 46 static std::string xmlEncode(const std::string& raw); 47 48 //! Convert encoded xml to raw text 49 static std::string xmlDecode(const std::string& encoded); 50 51 52 //! Dump messages somewhere 53 static void log(int level, const char* fmt, ...); 54 55 //! Dump error messages somewhere 56 static void error(const char* fmt, ...); 57 58 }; 59 } // namespace XmlRpc 60 61 #endif // _XMLRPCUTIL_H_ 62