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
24namespace 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