[ros-ros-comm] 01/01: Dropped unused patch

Leopold Palomo-Avellaneda leo at alaxarxa.net
Fri Jun 10 08:22:58 UTC 2016


This is an automated email from the git hooks/post-receive script.

lepalom-guest pushed a commit to branch master
in repository ros-ros-comm.

commit 6bf9ef720ab8e8f7925c0bb21dba5aeda9e976fc
Author: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
Date:   Fri Jun 10 10:22:27 2016 +0200

    Dropped unused patch
---
 .../patches/0008-Change-location-of-headers.patch  | 3143 --------------------
 1 file changed, 3143 deletions(-)

diff --git a/debian/patches/0008-Change-location-of-headers.patch b/debian/patches/0008-Change-location-of-headers.patch
deleted file mode 100644
index 8ecd637..0000000
--- a/debian/patches/0008-Change-location-of-headers.patch
+++ /dev/null
@@ -1,3143 +0,0 @@
-From: Leopold Palomo-Avellaneda <leopold.palomo at upc.edu>
-Date: Fri, 20 May 2016 15:57:36 +0200
-Subject: Change location of headers
-
----
- utilities/xmlrpcpp/include/XmlRpc.h                | 102 ------
- utilities/xmlrpcpp/include/XmlRpcClient.h          | 133 --------
- utilities/xmlrpcpp/include/XmlRpcDecl.h            |  55 ---
- utilities/xmlrpcpp/include/XmlRpcDispatch.h        |  89 -----
- utilities/xmlrpcpp/include/XmlRpcException.h       |  44 ---
- utilities/xmlrpcpp/include/XmlRpcServer.h          | 114 -------
- .../xmlrpcpp/include/XmlRpcServerConnection.h      | 103 ------
- utilities/xmlrpcpp/include/XmlRpcServerMethod.h    |  49 ---
- utilities/xmlrpcpp/include/XmlRpcSocket.h          |  80 -----
- utilities/xmlrpcpp/include/XmlRpcSource.h          |  57 ----
- utilities/xmlrpcpp/include/XmlRpcUtil.h            |  63 ----
- utilities/xmlrpcpp/include/XmlRpcValue.h           | 195 -----------
- utilities/xmlrpcpp/include/base64.h                | 380 ---------------------
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h       | 102 ++++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h | 133 ++++++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h   |  55 +++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h     |  89 +++++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcException.h    |  44 +++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h | 114 +++++++
- .../include/xmlrpcpp/XmlRpcServerConnection.h      | 103 ++++++
- .../xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h |  49 +++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h |  80 +++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h |  57 ++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h   |  63 ++++
- utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h  | 195 +++++++++++
- utilities/xmlrpcpp/include/xmlrpcpp/base64.h       | 380 +++++++++++++++++++++
- 26 files changed, 1464 insertions(+), 1464 deletions(-)
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpc.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcClient.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcDecl.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcDispatch.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcException.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcServer.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcServerConnection.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcServerMethod.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcSocket.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcSource.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcUtil.h
- delete mode 100644 utilities/xmlrpcpp/include/XmlRpcValue.h
- delete mode 100644 utilities/xmlrpcpp/include/base64.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
- create mode 100644 utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-
-diff --git a/utilities/xmlrpcpp/include/XmlRpc.h b/utilities/xmlrpcpp/include/XmlRpc.h
-deleted file mode 100644
-index 6b00b18..0000000
---- a/utilities/xmlrpcpp/include/XmlRpc.h
-+++ /dev/null
-@@ -1,102 +0,0 @@
--// this file modified by Morgan Quigley on 22 April 2008 to add 
--// a std::exception-derived class
--#ifndef _XMLRPC_H_
--#define _XMLRPC_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--// This library is free software; you can redistribute it and/or
--// modify it under the terms of the GNU Lesser General Public
--// License as published by the Free Software Foundation; either
--// version 2.1 of the License, or (at your option) any later version.
--// 
--// This library is distributed in the hope that it will be useful,
--// but WITHOUT ANY WARRANTY; without even the implied warranty of
--// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--// Lesser General Public License for more details.
--// 
--// You should have received a copy of the GNU Lesser General Public
--// License along with this library; if not, write to the Free Software
--// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
--// 
--
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcClient.h"
--#include "XmlRpcException.h"
--#include "XmlRpcServer.h"
--#include "XmlRpcServerMethod.h"
--#include "XmlRpcValue.h"
--#include "XmlRpcUtil.h"
--
--#include <stdexcept>
--
--namespace XmlRpc {
--
--
--  //! An interface allowing custom handling of error message reporting.
--  class XmlRpcErrorHandler {
--  public:
--    virtual ~XmlRpcErrorHandler() { }
--
--    //! Returns a pointer to the currently installed error handling object.
--    static XmlRpcErrorHandler* getErrorHandler() 
--    { return _errorHandler; }
--
--    //! Specifies the error handler.
--    static void setErrorHandler(XmlRpcErrorHandler* eh)
--    { _errorHandler = eh; }
--
--    //! Report an error. Custom error handlers should define this method.
--    virtual void error(const char* msg) = 0;
--
--  protected:
--    static XmlRpcErrorHandler* _errorHandler;
--  };
--
--  //! An interface allowing custom handling of informational message reporting.
--  class XmlRpcLogHandler {
--  public:
--    virtual ~XmlRpcLogHandler() { }
--
--    //! Returns a pointer to the currently installed message reporting object.
--    static XmlRpcLogHandler* getLogHandler() 
--    { return _logHandler; }
--
--    //! Specifies the message handler.
--    static void setLogHandler(XmlRpcLogHandler* lh)
--    { _logHandler = lh; }
--
--    //! Returns the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
--    static int getVerbosity() 
--    { return _verbosity; }
--
--    //! Specify the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
--    static void setVerbosity(int v) 
--    { _verbosity = v; }
--
--    //! Output a message. Custom error handlers should define this method.
--    virtual void log(int level, const char* msg) = 0;
--
--  protected:
--    static XmlRpcLogHandler* _logHandler;
--    static int _verbosity;
--  };
--
--  //! Returns log message verbosity. This is short for XmlRpcLogHandler::getVerbosity()
--  int getVerbosity();
--  //! Sets log message verbosity. This is short for XmlRpcLogHandler::setVerbosity(level)
--  void setVerbosity(int level);
--
--
--  //! Version identifier
--  extern const char XMLRPC_VERSION[];
--
--} // namespace XmlRpc
--
--#endif // _XMLRPC_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcClient.h b/utilities/xmlrpcpp/include/XmlRpcClient.h
-deleted file mode 100644
-index 6f47778..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcClient.h
-+++ /dev/null
-@@ -1,133 +0,0 @@
--
--#ifndef _XMLRPCCLIENT_H_
--#define _XMLRPCCLIENT_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDispatch.h"
--#include "XmlRpcSource.h"
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--  // Arguments and results are represented by XmlRpcValues
--  class XmlRpcValue;
--
--  //! A class to send XML RPC requests to a server and return the results.
--  class XMLRPCPP_DECL XmlRpcClient : public XmlRpcSource {
--  public:
--    // Static data
--    static const char REQUEST_BEGIN[];
--    static const char REQUEST_END_METHODNAME[];
--    static const char PARAMS_TAG[];
--    static const char PARAMS_ETAG[];
--    static const char PARAM_TAG[];
--    static const char PARAM_ETAG[];
--    static const char REQUEST_END[];
--    // Result tags
--    static const char METHODRESPONSE_TAG[];
--    static const char FAULT_TAG[];
--
--    //! Construct a client to connect to the server at the specified host:port address
--    //!  @param host The name of the remote machine hosting the server
--    //!  @param port The port on the remote machine where the server is listening
--    //!  @param uri  An optional string to be sent as the URI in the HTTP GET header
--    XmlRpcClient(const char* host, int port, const char* uri=0);
--
--    //! Destructor
--    virtual ~XmlRpcClient();
--
--    //! Execute the named procedure on the remote server.
--    //!  @param method The name of the remote procedure to execute
--    //!  @param params An array of the arguments for the method
--    //!  @param result The result value to be returned to the client
--    //!  @return true if the request was sent and a result received 
--    //!   (although the result might be a fault).
--    //!
--    //! Currently this is a synchronous (blocking) implementation (execute
--    //! does not return until it receives a response or an error). Use isFault()
--    //! to determine whether the result is a fault response.
--    bool execute(const char* method, XmlRpcValue const& params, XmlRpcValue& result);
--
--    bool executeNonBlock(const char* method, XmlRpcValue const& params);
--    bool executeCheckDone(XmlRpcValue& result);
--
--    //! Returns true if the result of the last execute() was a fault response.
--    bool isFault() const { return _isFault; }
--
--
--    // XmlRpcSource interface implementation
--    //! Close the connection
--    virtual void close();
--
--    //! Handle server responses. Called by the event dispatcher during execute.
--    //!  @param eventType The type of event that occurred. 
--    //!  @see XmlRpcDispatch::EventType
--    virtual unsigned handleEvent(unsigned eventType);
--
--  protected:
--    // Execution processing helpers
--    virtual bool doConnect();
--    virtual bool setupConnection();
--
--    virtual bool generateRequest(const char* method, XmlRpcValue const& params);
--    virtual std::string generateHeader(std::string const& body);
--    virtual bool writeRequest();
--    virtual bool readHeader();
--    virtual bool readResponse();
--    virtual bool parseResponse(XmlRpcValue& result);
--
--    // Possible IO states for the connection
--    enum ClientConnectionState { NO_CONNECTION, CONNECTING, WRITE_REQUEST, READ_HEADER, READ_RESPONSE, IDLE };
--    ClientConnectionState _connectionState;
--
--    // Server location
--    std::string _host;
--    std::string _uri;
--    int _port;
--  public:
--    const std::string &getHost() { return _host; }
--    const std::string &getUri()  { return _uri; }
--    int getPort() const { return _port; }
--    
--    // The xml-encoded request, http header of response, and response xml
--    std::string _request;
--    std::string _header;
--    std::string _response;
--
--    // Number of times the client has attempted to send the request
--    int _sendAttempts;
--
--    // Number of bytes of the request that have been written to the socket so far
--    int _bytesWritten;
--
--    // True if we are currently executing a request. If you want to multithread,
--    // each thread should have its own client.
--    bool _executing;
--
--    // True if the server closed the connection
--    bool _eof;
--
--    // True if a fault response was returned by the server
--    bool _isFault;
--
--    // Number of bytes expected in the response body (parsed from response header)
--    int _contentLength;
--
--    // Event dispatcher
--    XmlRpcDispatch _disp;
--
--  };	// class XmlRpcClient
--
--}	// namespace XmlRpc
--
--#endif	// _XMLRPCCLIENT_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcDecl.h b/utilities/xmlrpcpp/include/XmlRpcDecl.h
-deleted file mode 100644
-index 8af174a..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcDecl.h
-+++ /dev/null
-@@ -1,55 +0,0 @@
--/*********************************************************************
--*
--* Software License Agreement (BSD License)
--*
--*  Copyright (c) 2009, Willow Garage, Inc.
--*  All rights reserved.
--*
--*  Redistribution and use in source and binary forms, with or without
--*  modification, are permitted provided that the following conditions
--*  are met:
--*
--*   * Redistributions of source code must retain the above copyright
--*     notice, this list of conditions and the following disclaimer.
--*   * Redistributions in binary form must reproduce the above
--*     copyright notice, this list of conditions and the following
--*     disclaimer in the documentation and/or other materials provided
--*     with the distribution.
--*   * Neither the name of the Willow Garage nor the names of its
--*     contributors may be used to endorse or promote products derived
--*     from this software without specific prior written permission.
--*
--*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
--*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
--*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
--*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
--*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
--*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
--*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
--*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
--*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
--*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--*  POSSIBILITY OF SUCH DAMAGE.
--*
--*********************************************************************/
--/*
-- * Cross platform macros.
-- *
-- */
--#ifndef XMLRPCPP_DECL_H_INCLUDED
--#define XMLRPCPP_DECL_H_INCLUDED
--
--#include <ros/macros.h>
--
--#ifdef ROS_BUILD_SHARED_LIBS // ros is being built around shared libraries
--  #ifdef xmlrpcpp_EXPORTS // we are building a shared lib/dll
--    #define XMLRPCPP_DECL ROS_HELPER_EXPORT
--  #else // we are using shared lib/dll
--    #define XMLRPCPP_DECL ROS_HELPER_IMPORT
--  #endif
--#else // ros is being built around static libraries
--  #define XMLRPCPP_DECL
--#endif
--
--#endif /* XMLRPCPP_DECL_H_INCLUDED */
-diff --git a/utilities/xmlrpcpp/include/XmlRpcDispatch.h b/utilities/xmlrpcpp/include/XmlRpcDispatch.h
-deleted file mode 100644
-index 12b01ad..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcDispatch.h
-+++ /dev/null
-@@ -1,89 +0,0 @@
--
--#ifndef _XMLRPCDISPATCH_H_
--#define _XMLRPCDISPATCH_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--#ifndef MAKEDEPEND
--# include <list>
--#endif
--
--namespace XmlRpc {
--
--  // An RPC source represents a file descriptor to monitor
--  class XmlRpcSource;
--
--  //! An object which monitors file descriptors for events and performs
--  //! callbacks when interesting events happen.
--  class XMLRPCPP_DECL XmlRpcDispatch {
--  public:
--    //! Constructor
--    XmlRpcDispatch();
--    ~XmlRpcDispatch();
--
--    //! Values indicating the type of events a source is interested in
--    enum EventType {
--      ReadableEvent = 1,    //!< data available to read
--      WritableEvent = 2,    //!< connected/data can be written without blocking
--      Exception     = 4     //!< uh oh
--    };
--    
--    //! Monitor this source for the event types specified by the event mask
--    //! and call its event handler when any of the events occur.
--    //!  @param source The source to monitor
--    //!  @param eventMask Which event types to watch for. \see EventType
--    void addSource(XmlRpcSource* source, unsigned eventMask);
--
--    //! Stop monitoring this source.
--    //!  @param source The source to stop monitoring
--    void removeSource(XmlRpcSource* source);
--
--    //! Modify the types of events to watch for on this source
--    void setSourceEvents(XmlRpcSource* source, unsigned eventMask);
--
--
--    //! Watch current set of sources and process events for the specified
--    //! duration (in ms, -1 implies wait forever, or until exit is called)
--    void work(double msTime);
--
--    //! Exit from work routine
--    void exit();
--
--    //! Clear all sources from the monitored sources list. Sources are closed.
--    void clear();
--
--    // helper
--    double getTime();
--
--    // A source to monitor and what to monitor it for
--    struct MonitoredSource {
--      MonitoredSource(XmlRpcSource* src, unsigned mask) : _src(src), _mask(mask) {}
--      XmlRpcSource* getSource() const { return _src; }
--      unsigned& getMask() { return _mask; }
--      XmlRpcSource* _src;
--      unsigned _mask;
--    };
--
--    // A list of sources to monitor
--    typedef std::list< MonitoredSource > SourceList; 
--
--    // Sources being monitored
--    SourceList _sources;
--  protected:
--
--    // When work should stop (-1 implies wait forever, or until exit is called)
--    double _endTime;
--
--    bool _doClear;
--    bool _inWork;
--
--  };
--} // namespace XmlRpc
--
--#endif  // _XMLRPCDISPATCH_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcException.h b/utilities/xmlrpcpp/include/XmlRpcException.h
-deleted file mode 100644
-index bff5bf2..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcException.h
-+++ /dev/null
-@@ -1,44 +0,0 @@
--
--#ifndef _XMLRPCEXCEPTION_H_
--#define _XMLRPCEXCEPTION_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDecl.h"
--
--
--namespace XmlRpc {
--
--  //! A class representing an error.
--  //! If server methods throw this exception, a fault response is returned
--  //! to the client.
--  class XMLRPCPP_DECL XmlRpcException {
--  public:
--    //! Constructor
--    //!   @param message  A descriptive error message
--    //!   @param code     An integer error code
--    XmlRpcException(const std::string& message, int code=-1) :
--        _message(message), _code(code) {}
--
--    //! Return the error message.
--    const std::string& getMessage() const { return _message; }
--
--    //! Return the error code.
--    int getCode() const { return _code; }
--
--  private:
--    std::string _message;
--    int _code;
--  };
--
--}
--
--#endif	// _XMLRPCEXCEPTION_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcServer.h b/utilities/xmlrpcpp/include/XmlRpcServer.h
-deleted file mode 100644
-index 035d383..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcServer.h
-+++ /dev/null
-@@ -1,114 +0,0 @@
--// this file modified by Morgan Quigley on 22 Apr 2008.
--// added features: server can be opened on port 0 and you can read back
--// what port the OS gave you
--
--#ifndef _XMLRPCSERVER_H_
--#define _XMLRPCSERVER_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <map>
--# include <string>
--#endif
--
--#include "XmlRpcDispatch.h"
--#include "XmlRpcSource.h"
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--
--  // An abstract class supporting XML RPC methods
--  class XmlRpcServerMethod;
--
--  // Class representing connections to specific clients
--  class XmlRpcServerConnection;
--
--  // Class representing argument and result values
--  class XmlRpcValue;
--
--
--  //! A class to handle XML RPC requests
--  class XMLRPCPP_DECL XmlRpcServer : public XmlRpcSource {
--  public:
--    //! Create a server object.
--    XmlRpcServer();
--    //! Destructor.
--    virtual ~XmlRpcServer();
--
--    //! Specify whether introspection is enabled or not. Default is not enabled.
--    void enableIntrospection(bool enabled=true);
--
--    //! Add a command to the RPC server
--    void addMethod(XmlRpcServerMethod* method);
--
--    //! Remove a command from the RPC server
--    void removeMethod(XmlRpcServerMethod* method);
--
--    //! Remove a command from the RPC server by name
--    void removeMethod(const std::string& methodName);
--
--    //! Look up a method by name
--    XmlRpcServerMethod* findMethod(const std::string& name) const;
--
--    //! Create a socket, bind to the specified port, and
--    //! set it in listen mode to make it available for clients.
--    bool bindAndListen(int port, int backlog = 5);
--
--    //! Process client requests for the specified time
--    void work(double msTime);
--
--    //! Temporarily stop processing client requests and exit the work() method.
--    void exit();
--
--    //! Close all connections with clients and the socket file descriptor
--    void shutdown();
--
--    //! Introspection support
--    void listMethods(XmlRpcValue& result);
--
--    // XmlRpcSource interface implementation
--
--    //! Handle client connection requests
--    virtual unsigned handleEvent(unsigned eventType);
--
--    //! Remove a connection from the dispatcher
--    virtual void removeConnection(XmlRpcServerConnection*);
--
--    inline int get_port() { return _port; }
--
--    XmlRpcDispatch *get_dispatch() { return &_disp; }
--
--  protected:
--
--    //! Accept a client connection request
--    virtual void acceptConnection();
--
--    //! Create a new connection object for processing requests from a specific client.
--    virtual XmlRpcServerConnection* createConnection(int socket);
--
--    // Whether the introspection API is supported by this server
--    bool _introspectionEnabled;
--
--    // Event dispatcher
--    XmlRpcDispatch _disp;
--
--    // Collection of methods. This could be a set keyed on method name if we wanted...
--    typedef std::map< std::string, XmlRpcServerMethod* > MethodMap;
--    MethodMap _methods;
--
--    // system methods
--    XmlRpcServerMethod* _listMethods;
--    XmlRpcServerMethod* _methodHelp;
--
--    int _port;
--
--  };
--} // namespace XmlRpc
--
--#endif //_XMLRPCSERVER_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcServerConnection.h b/utilities/xmlrpcpp/include/XmlRpcServerConnection.h
-deleted file mode 100644
-index f5c224d..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcServerConnection.h
-+++ /dev/null
-@@ -1,103 +0,0 @@
--#ifndef _XMLRPCSERVERCONNECTION_H_
--#define _XMLRPCSERVERCONNECTION_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcValue.h"
--#include "XmlRpcSource.h"
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--
--  // The server waits for client connections and provides methods
--  class XmlRpcServer;
--  class XmlRpcServerMethod;
--
--  //! A class to handle XML RPC requests from a particular client
--  class XMLRPCPP_DECL XmlRpcServerConnection : public XmlRpcSource {
--  public:
--    // Static data
--    static const char METHODNAME_TAG[];
--    static const char PARAMS_TAG[];
--    static const char PARAMS_ETAG[];
--    static const char PARAM_TAG[];
--    static const char PARAM_ETAG[];
--
--    static const std::string SYSTEM_MULTICALL;
--    static const std::string METHODNAME;
--    static const std::string PARAMS;
--
--    static const std::string FAULTCODE;
--    static const std::string FAULTSTRING;
--
--    //! Constructor
--    XmlRpcServerConnection(int fd, XmlRpcServer* server, bool deleteOnClose = false);
--    //! Destructor
--    virtual ~XmlRpcServerConnection();
--
--    // XmlRpcSource interface implementation
--    //! Handle IO on the client connection socket.
--    //!   @param eventType Type of IO event that occurred. @see XmlRpcDispatch::EventType.
--    virtual unsigned handleEvent(unsigned eventType);
--
--  protected:
--
--    bool readHeader();
--    bool readRequest();
--    bool writeResponse();
--
--    // Parses the request, runs the method, generates the response xml.
--    virtual void executeRequest();
--
--    // Parse the methodName and parameters from the request.
--    std::string parseRequest(XmlRpcValue& params);
--
--    // Execute a named method with the specified params.
--    bool executeMethod(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
--
--    // Execute multiple calls and return the results in an array.
--    bool executeMulticall(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
--
--    // Construct a response from the result XML.
--    void generateResponse(std::string const& resultXml);
--    void generateFaultResponse(std::string const& msg, int errorCode = -1);
--    std::string generateHeader(std::string const& body);
--
--
--    // The XmlRpc server that accepted this connection
--    XmlRpcServer* _server;
--
--    // Possible IO states for the connection
--    enum ServerConnectionState { READ_HEADER, READ_REQUEST, WRITE_RESPONSE };
--    ServerConnectionState _connectionState;
--
--    // Request headers
--    std::string _header;
--
--    // Number of bytes expected in the request body (parsed from header)
--    int _contentLength;
--
--    // Request body
--    std::string _request;
--
--    // Response
--    std::string _response;
--
--    // Number of bytes of the response written so far
--    int _bytesWritten;
--
--    // Whether to keep the current client connection open for further requests
--    bool _keepAlive;
--  };
--} // namespace XmlRpc
--
--#endif // _XMLRPCSERVERCONNECTION_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcServerMethod.h b/utilities/xmlrpcpp/include/XmlRpcServerMethod.h
-deleted file mode 100644
-index 7b7ddca..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcServerMethod.h
-+++ /dev/null
-@@ -1,49 +0,0 @@
--
--#ifndef _XMLRPCSERVERMETHOD_H_
--#define _XMLRPCSERVERMETHOD_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--namespace XmlRpc {
--
--  // Representation of a parameter or result value
--  class XmlRpcValue;
--
--  // The XmlRpcServer processes client requests to call RPCs
--  class XmlRpcServer;
--
--  //! Abstract class representing a single RPC method
--  class XMLRPCPP_DECL XmlRpcServerMethod {
--  public:
--    //! Constructor
--    XmlRpcServerMethod(std::string const& name, XmlRpcServer* server = 0);
--    //! Destructor
--    virtual ~XmlRpcServerMethod();
--
--    //! Returns the name of the method
--    std::string& name() { return _name; }
--
--    //! Execute the method. Subclasses must provide a definition for this method.
--    virtual void execute(XmlRpcValue& params, XmlRpcValue& result) = 0;
--
--    //! Returns a help string for the method.
--    //! Subclasses should define this method if introspection is being used.
--    virtual std::string help() { return std::string(); }
--
--  protected:
--    std::string _name;
--    XmlRpcServer* _server;
--  };
--} // namespace XmlRpc
--
--#endif // _XMLRPCSERVERMETHOD_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcSocket.h b/utilities/xmlrpcpp/include/XmlRpcSocket.h
-deleted file mode 100644
-index 711a520..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcSocket.h
-+++ /dev/null
-@@ -1,80 +0,0 @@
--// this file modified by Morgan Quigley on 22 Apr 2008.
--// added features: server can be opened on port 0 and you can read back
--// what port the OS gave you
--
--#ifndef _XMLRPCSOCKET_H_
--#define _XMLRPCSOCKET_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--  //! A platform-independent socket API.
--  class XMLRPCPP_DECL XmlRpcSocket {
--  public:
--
--    static bool s_use_ipv6_;
--
--    //! Creates a stream (TCP) socket. Returns -1 on failure.
--    static int socket();
--
--    //! Closes a socket.
--    static void close(int socket);
--
--
--    //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure.
--    static bool setNonBlocking(int socket);
--
--    //! Read text from the specified socket. Returns false on error.
--    static bool nbRead(int socket, std::string& s, bool *eof);
--
--    //! Write text to the specified socket. Returns false on error.
--    static bool nbWrite(int socket, std::string& s, int *bytesSoFar);
--
--
--    // The next four methods are appropriate for servers.
--
--    //! Allow the port the specified socket is bound to to be re-bound immediately so 
--    //! server re-starts are not delayed. Returns false on failure.
--    static bool setReuseAddr(int socket);
--
--    //! Bind to a specified port
--    static bool bind(int socket, int port);
--    
--    static int get_port(int socket);
--
--    //! Set socket in listen mode
--    static bool listen(int socket, int backlog);
--
--    //! Accept a client connection request
--    static int accept(int socket);
--
--
--
--    //! Connect a socket to a server (from a client)
--    static bool connect(int socket, std::string& host, int port);
--
--
--    //! Returns last errno
--    static int getError();
--
--    //! Returns message corresponding to last error
--    static std::string getErrorMsg();
--
--    //! Returns message corresponding to error
--    static std::string getErrorMsg(int error);
--  };
--
--} // namespace XmlRpc
--
--#endif
-diff --git a/utilities/xmlrpcpp/include/XmlRpcSource.h b/utilities/xmlrpcpp/include/XmlRpcSource.h
-deleted file mode 100644
-index f82ccb1..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcSource.h
-+++ /dev/null
-@@ -1,57 +0,0 @@
--
--#ifndef _XMLRPCSOURCE_H_
--#define _XMLRPCSOURCE_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--namespace XmlRpc {
--
--  //! An RPC source represents a file descriptor to monitor
--  class XMLRPCPP_DECL XmlRpcSource {
--  public:
--    //! Constructor
--    //!  @param fd The socket file descriptor to monitor.
--    //!  @param deleteOnClose If true, the object deletes itself when close is called.
--    XmlRpcSource(int fd = -1, bool deleteOnClose = false);
--
--    //! Destructor
--    virtual ~XmlRpcSource();
--
--    //! Return the file descriptor being monitored.
--    int getfd() const { return _fd; }
--    //! Specify the file descriptor to monitor.
--    void setfd(int fd) { _fd = fd; }
--
--    //! Return whether the file descriptor should be kept open if it is no longer monitored.
--    bool getKeepOpen() const { return _keepOpen; }
--    //! Specify whether the file descriptor should be kept open if it is no longer monitored.
--    void setKeepOpen(bool b=true) { _keepOpen = b; }
--
--    //! Close the owned fd. If deleteOnClose was specified at construction, the object is deleted.
--    virtual void close();
--
--    //! Return true to continue monitoring this source
--    virtual unsigned handleEvent(unsigned eventType) = 0;
--
--  private:
--
--    // Socket. This should really be a SOCKET (an alias for unsigned int*) on windows...
--    int _fd;
--
--    // In the server, a new source (XmlRpcServerConnection) is created
--    // for each connected client. When each connection is closed, the
--    // corresponding source object is deleted.
--    bool _deleteOnClose;
--
--    // In the client, keep connections open if you intend to make multiple calls.
--    bool _keepOpen;
--  };
--} // namespace XmlRpc
--
--#endif //_XMLRPCSOURCE_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcUtil.h b/utilities/xmlrpcpp/include/XmlRpcUtil.h
-deleted file mode 100644
-index 78627f4..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcUtil.h
-+++ /dev/null
-@@ -1,63 +0,0 @@
--#ifndef _XMLRPCUTIL_H_
--#define _XMLRPCUTIL_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#ifndef MAKEDEPEND
--# include <string>
--#endif
--
--#include "XmlRpcDecl.h"
--
--#if defined(_MSC_VER)
--# define snprintf	    _snprintf_s
--# define vsnprintf    _vsnprintf_s
--# define strcasecmp	  _stricmp
--# define strncasecmp	_strnicmp
--#elif defined(__BORLANDC__)
--# define strcasecmp stricmp
--# define strncasecmp strnicmp
--#endif
--
--namespace XmlRpc {
--
--  //! Utilities for XML parsing, encoding, and decoding and message handlers.
--  class XMLRPCPP_DECL XmlRpcUtil {
--  public:
--    // hokey xml parsing
--    //! Returns contents between <tag> and </tag>, updates offset to char after </tag>
--    static std::string parseTag(const char* tag, std::string const& xml, int* offset);
--
--    //! Returns true if the tag is found and updates offset to the char after the tag
--    static bool findTag(const char* tag, std::string const& xml, int* offset);
--
--    //! Returns the next tag and updates offset to the char after the tag, or empty string
--    //! if the next non-whitespace character is not '<'
--    static std::string getNextTag(std::string const& xml, int* offset);
--
--    //! Returns true if the tag is found at the specified offset (modulo any whitespace)
--    //! and updates offset to the char after the tag
--    static bool nextTagIs(const char* tag, std::string const& xml, int* offset);
--
--
--    //! Convert raw text to encoded xml.
--    static std::string xmlEncode(const std::string& raw);
--
--    //! Convert encoded xml to raw text
--    static std::string xmlDecode(const std::string& encoded);
--
--
--    //! Dump messages somewhere
--    static void log(int level, const char* fmt, ...);
--
--    //! Dump error messages somewhere
--    static void error(const char* fmt, ...);
--
--  };
--} // namespace XmlRpc
--
--#endif // _XMLRPCUTIL_H_
-diff --git a/utilities/xmlrpcpp/include/XmlRpcValue.h b/utilities/xmlrpcpp/include/XmlRpcValue.h
-deleted file mode 100644
-index fe6cb8c..0000000
---- a/utilities/xmlrpcpp/include/XmlRpcValue.h
-+++ /dev/null
-@@ -1,195 +0,0 @@
--
--#ifndef _XMLRPCVALUE_H_
--#define _XMLRPCVALUE_H_
--//
--// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
--//
--#if defined(_MSC_VER)
--# pragma warning(disable:4786)    // identifier was truncated in debug info
--#endif
--
--#include "XmlRpcDecl.h"
--
--#ifndef MAKEDEPEND
--# include <map>
--# include <string>
--# include <vector>
--# include <time.h>
--#endif
--
--namespace XmlRpc {
--
--  //! RPC method arguments and results are represented by Values
--  //   should probably refcount them...
--  class XMLRPCPP_DECL XmlRpcValue {
--  public:
--
--
--    enum Type {
--      TypeInvalid,
--      TypeBoolean,
--      TypeInt,
--      TypeDouble,
--      TypeString,
--      TypeDateTime,
--      TypeBase64,
--      TypeArray,
--      TypeStruct
--    };
--
--    // Non-primitive types
--    typedef std::vector<char> BinaryData;
--    typedef std::vector<XmlRpcValue> ValueArray;
--    typedef std::map<std::string, XmlRpcValue> ValueStruct;
--    typedef ValueStruct::iterator iterator;
--
--
--    //! Constructors
--    XmlRpcValue() : _type(TypeInvalid) { _value.asBinary = 0; }
--    XmlRpcValue(bool value) : _type(TypeBoolean) { _value.asBool = value; }
--    XmlRpcValue(int value)  : _type(TypeInt) { _value.asInt = value; }
--    XmlRpcValue(double value)  : _type(TypeDouble) { _value.asDouble = value; }
--
--    XmlRpcValue(std::string const& value) : _type(TypeString) 
--    { _value.asString = new std::string(value); }
--
--    XmlRpcValue(const char* value)  : _type(TypeString)
--    { _value.asString = new std::string(value); }
--
--    XmlRpcValue(struct tm* value)  : _type(TypeDateTime) 
--    { _value.asTime = new struct tm(*value); }
--
--
--    XmlRpcValue(void* value, int nBytes)  : _type(TypeBase64)
--    {
--      _value.asBinary = new BinaryData((char*)value, ((char*)value)+nBytes);
--    }
--
--    //! Construct from xml, beginning at *offset chars into the string, updates offset
--    XmlRpcValue(std::string const& xml, int* offset) : _type(TypeInvalid)
--    { if ( ! fromXml(xml,offset)) _type = TypeInvalid; }
--
--    //! Copy
--    XmlRpcValue(XmlRpcValue const& rhs) : _type(TypeInvalid) { *this = rhs; }
--
--    //! Destructor (make virtual if you want to subclass)
--    /*virtual*/ ~XmlRpcValue() { invalidate(); }
--
--    //! Erase the current value
--    void clear() { invalidate(); }
--
--    // Operators
--    XmlRpcValue& operator=(XmlRpcValue const& rhs);
--    XmlRpcValue& operator=(int const& rhs) { return operator=(XmlRpcValue(rhs)); }
--    XmlRpcValue& operator=(double const& rhs) { return operator=(XmlRpcValue(rhs)); }
--    XmlRpcValue& operator=(const char* rhs) { return operator=(XmlRpcValue(std::string(rhs))); }
--
--    bool operator==(XmlRpcValue const& other) const;
--    bool operator!=(XmlRpcValue const& other) const;
--
--    operator bool&()          { assertTypeOrInvalid(TypeBoolean); return _value.asBool; }
--    operator int&()           { assertTypeOrInvalid(TypeInt); return _value.asInt; }
--    operator double&()        { assertTypeOrInvalid(TypeDouble); return _value.asDouble; }
--    operator std::string&()   { assertTypeOrInvalid(TypeString); return *_value.asString; }
--    operator BinaryData&()    { assertTypeOrInvalid(TypeBase64); return *_value.asBinary; }
--    operator struct tm&()     { assertTypeOrInvalid(TypeDateTime); return *_value.asTime; }
--
--    XmlRpcValue const& operator[](int i) const { assertArray(i+1); return _value.asArray->at(i); }
--    XmlRpcValue& operator[](int i)             { assertArray(i+1); return _value.asArray->at(i); }
--
--    XmlRpcValue& operator[](std::string const& k) { assertStruct(); return (*_value.asStruct)[k]; }
--    XmlRpcValue& operator[](const char* k) { assertStruct(); std::string s(k); return (*_value.asStruct)[s]; }
--
--    iterator begin() {assertStruct(); return (*_value.asStruct).begin(); }
--    iterator end() {assertStruct(); return (*_value.asStruct).end(); }
--
--    // Accessors
--    //! Return true if the value has been set to something.
--    bool valid() const { return _type != TypeInvalid; }
--
--    //! Return the type of the value stored. \see Type.
--    Type const &getType() const { return _type; }
--
--    //! Return the size for string, base64, array, and struct values.
--    int size() const;
--
--    //! Specify the size for array values. Array values will grow beyond this size if needed.
--    void setSize(int size)    { assertArray(size); }
--
--    //! Check for the existence of a struct member by name.
--    bool hasMember(const std::string& name) const;
--
--    //! Decode xml. Destroys any existing value.
--    bool fromXml(std::string const& valueXml, int* offset);
--
--    //! Encode the Value in xml
--    std::string toXml() const;
--
--    //! Write the value (no xml encoding)
--    std::ostream& write(std::ostream& os) const;
--
--    // Formatting
--    //! Return the format used to write double values.
--    static std::string const& getDoubleFormat() { return _doubleFormat; }
--
--    //! Specify the format used to write double values.
--    static void setDoubleFormat(const char* f) { _doubleFormat = f; }
--
--
--  protected:
--    // Clean up
--    void invalidate();
--
--    // Type checking
--    void assertTypeOrInvalid(Type t);
--    void assertArray(int size) const;
--    void assertArray(int size);
--    void assertStruct();
--
--    // XML decoding
--    bool boolFromXml(std::string const& valueXml, int* offset);
--    bool intFromXml(std::string const& valueXml, int* offset);
--    bool doubleFromXml(std::string const& valueXml, int* offset);
--    bool stringFromXml(std::string const& valueXml, int* offset);
--    bool timeFromXml(std::string const& valueXml, int* offset);
--    bool binaryFromXml(std::string const& valueXml, int* offset);
--    bool arrayFromXml(std::string const& valueXml, int* offset);
--    bool structFromXml(std::string const& valueXml, int* offset);
--
--    // XML encoding
--    std::string boolToXml() const;
--    std::string intToXml() const;
--    std::string doubleToXml() const;
--    std::string stringToXml() const;
--    std::string timeToXml() const;
--    std::string binaryToXml() const;
--    std::string arrayToXml() const;
--    std::string structToXml() const;
--
--    // Format strings
--    static std::string _doubleFormat;
--
--    // Type tag and values
--    Type _type;
--
--    // At some point I will split off Arrays and Structs into
--    // separate ref-counted objects for more efficient copying.
--    union {
--      bool          asBool;
--      int           asInt;
--      double        asDouble;
--      struct tm*    asTime;
--      std::string*  asString;
--      BinaryData*   asBinary;
--      ValueArray*   asArray;
--      ValueStruct*  asStruct;
--    } _value;
--    
--  };
--} // namespace XmlRpc
--
--
--std::ostream& operator<<(std::ostream& os, XmlRpc::XmlRpcValue& v);
--
--
--#endif // _XMLRPCVALUE_H_
-diff --git a/utilities/xmlrpcpp/include/base64.h b/utilities/xmlrpcpp/include/base64.h
-deleted file mode 100644
-index c239403..0000000
---- a/utilities/xmlrpcpp/include/base64.h
-+++ /dev/null
-@@ -1,380 +0,0 @@
--
--
--//  base64.hpp 
--//  Autor Konstantin Pilipchuk
--//  mailto:lostd at ukr.net
--//
--//
--
--#if !defined(__BASE64_H_INCLUDED__)
--#define __BASE64_H_INCLUDED__ 1
--
--#ifndef MAKEDEPEND
--# include <iterator>
--#endif
--
--#include <ios>
--
--static
--int _base64Chars[]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
--				     'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
--			         '0','1','2','3','4','5','6','7','8','9',
--			         '+','/' };
--
--
--#define _0000_0011 0x03
--#define _1111_1100 0xFC
--#define _1111_0000 0xF0
--#define _0011_0000 0x30
--#define _0011_1100 0x3C
--#define _0000_1111 0x0F
--#define _1100_0000 0xC0
--#define _0011_1111 0x3F
--
--#define _EQUAL_CHAR   (-1)
--#define _UNKNOWN_CHAR (-2)
--
--#define _IOS_FAILBIT   std::ios_base::failbit
--#define _IOS_EOFBIT    std::ios_base::eofbit
--#define _IOS_BADBIT    std::ios_base::badbit
--#define _IOS_GOODBIT   std::ios_base::goodbit
--
--// TEMPLATE CLASS base64_put
--template<class _E = char, class _Tr = std::char_traits<_E> >
--class base64
--{
--public:
--
--	typedef unsigned char byte_t;
--	typedef _E            char_type;
--	typedef _Tr           traits_type; 
--
--	// base64 requires max line length <= 72 characters
--	// you can fill end of line
--	// it may be crlf, crlfsp, noline or other class like it
--
--
--	struct crlf
--	{
--		template<class _OI>
--			_OI operator()(_OI _To) const{
--			*_To = _Tr::to_char_type('\r'); ++_To;
--			*_To = _Tr::to_char_type('\n'); ++_To;
--
--			return (_To);
--		}
--	};
--
--
--	struct crlfsp
--	{
--		template<class _OI>
--			_OI operator()(_OI _To) const{
--			*_To = _Tr::to_char_type('\r'); ++_To;
--			*_To = _Tr::to_char_type('\n'); ++_To;
--			*_To = _Tr::to_char_type(' '); ++_To;
--
--			return (_To);
--		}
--	};
--
--	struct noline
--	{
--		template<class _OI>
--			_OI operator()(_OI _To) const{
--			return (_To);
--		}
--	};
--
--	struct three2four
--	{
--		void zero()
--		{
--			_data[0] = 0;
--			_data[1] = 0;
--			_data[2] = 0;
--		}
--
--		byte_t get_0()	const
--		{
--			return _data[0];
--		}
--		byte_t get_1()	const
--		{
--			return _data[1];
--		}
--		byte_t get_2()	const
--		{
--			return _data[2];
--		}
--
--		void set_0(byte_t _ch)
--		{
--			_data[0] = _ch;
--		}
--
--		void set_1(byte_t _ch)
--		{
--			_data[1] = _ch;
--		}
--
--		void set_2(byte_t _ch)
--		{
--			_data[2] = _ch;
--		}
--
--		// 0000 0000  1111 1111  2222 2222
--		// xxxx xxxx  xxxx xxxx  xxxx xxxx
--		// 0000 0011  1111 2222  2233 3333
--
--		int b64_0()	const	{return (_data[0] & _1111_1100) >> 2;}
--		int b64_1()	const	{return ((_data[0] & _0000_0011) << 4) + ((_data[1] & _1111_0000)>>4);}
--		int b64_2()	const	{return ((_data[1] & _0000_1111) << 2) + ((_data[2] & _1100_0000)>>6);}
--		int b64_3()	const	{return (_data[2] & _0011_1111);}
--
--		void b64_0(int _ch)	{_data[0] = ((_ch & _0011_1111) << 2) | (_0000_0011 & _data[0]);}
--
--		void b64_1(int _ch)	{
--			_data[0] = ((_ch & _0011_0000) >> 4) | (_1111_1100 & _data[0]);
--			_data[1] = ((_ch & _0000_1111) << 4) | (_0000_1111 & _data[1]);	}
--
--		void b64_2(int _ch)	{
--			_data[1] = ((_ch & _0011_1100) >> 2) | (_1111_0000 & _data[1]);
--			_data[2] = ((_ch & _0000_0011) << 6) | (_0011_1111 & _data[2]);	}
--
--		void b64_3(int _ch){
--			_data[2] = (_ch & _0011_1111) | (_1100_0000 & _data[2]);}
--
--	private:
--		byte_t _data[3];
--
--	};
--
--
--
--
--	template<class _II, class _OI, class _State, class _Endline>
--        _II put(_II _First, _II _Last, _OI _To, _State&, _Endline)  const
--	{
--		three2four _3to4;
--		int line_octets = 0;
--
--		while(_First != _Last)
--		{
--			_3to4.zero();
--
--			_3to4.set_0(*_First);
--			_First++;
--
--			if(_First == _Last)
--			{
--				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
--				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
--				*_To = _Tr::to_char_type('='); ++_To;
--				*_To = _Tr::to_char_type('='); ++_To;
--				goto __end;
--			}
--
--			_3to4.set_1(*_First);
--			_First++;
--
--			if(_First == _Last)
--			{
--				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
--				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
--				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
--				*_To = _Tr::to_char_type('='); ++_To;
--				goto __end;
--			}
--
--			_3to4.set_2(*_First);
--			_First++;
--
--			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
--			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
--			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
--			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_3()]); ++_To;
--
--			if(line_octets == 17)
--			{
--                                //_To = _Endl(_To);
--                                *_To = '\n'; ++_To;
--                                line_octets = 0;
--			}
--			else
--				++line_octets;
--		}
--
--		__end: ;
--
--		return (_First);
--
--	}
--
--
--	template<class _II, class _OI, class _State>
--		_II get(_II _First, _II _Last, _OI _To, _State& _St) const
--	{
--		three2four _3to4;
--		int _Char;
--
--		while(_First != _Last)
--		{
--
--			// Take octet
--			_3to4.zero();
--
--			// -- 0 --
--			// Search next valid char... 
--			while((_Char =  _getCharType(*_First)) < 0 && _Char == _UNKNOWN_CHAR)
--			{
--				if(++_First == _Last)
--				{
--					_St |= _IOS_FAILBIT|_IOS_EOFBIT; return _First; // unexpected EOF
--				}
--			}
--
--			if(_Char == _EQUAL_CHAR){
--				// Error! First character in octet can't be '='
--				_St |= _IOS_FAILBIT; 
--				return _First; 
--			}
--			else
--				_3to4.b64_0(_Char);
--
--
--			// -- 1 --
--			// Search next valid char... 
--			while(++_First != _Last)
--				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
--					break;
--
--			if(_First == _Last)	{
--				_St |= _IOS_FAILBIT|_IOS_EOFBIT; // unexpected EOF 
--				return _First;
--			}
--
--			if(_Char == _EQUAL_CHAR){
--				// Error! Second character in octet can't be '='
--				_St |= _IOS_FAILBIT; 
--				return _First; 
--			}
--			else
--				_3to4.b64_1(_Char);
--
--
--			// -- 2 --
--			// Search next valid char... 
--			while(++_First != _Last)
--				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
--					break;
--
--			if(_First == _Last)	{
--				// Error! Unexpected EOF. Must be '=' or base64 character
--				_St |= _IOS_FAILBIT|_IOS_EOFBIT; 
--				return _First; 
--			}
--
--			if(_Char == _EQUAL_CHAR){
--				// OK!
--				_3to4.b64_2(0); 
--				_3to4.b64_3(0); 
--
--				// chek for EOF
--				if(++_First == _Last)
--				{
--					// Error! Unexpected EOF. Must be '='. Ignore it.
--					//_St |= _IOS_BADBIT|_IOS_EOFBIT;
--					_St |= _IOS_EOFBIT;
--				}
--				else 
--					if(_getCharType(*_First) != _EQUAL_CHAR)
--					{
--						// Error! Must be '='. Ignore it.
--						//_St |= _IOS_BADBIT;
--					}
--				else
--					++_First; // Skip '='
--
--				// write 1 byte to output
--				*_To = (byte_t) _3to4.get_0();
--				return _First;
--			}
--			else
--				_3to4.b64_2(_Char);
--
--
--			// -- 3 --
--			// Search next valid char... 
--			while(++_First != _Last)
--				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
--					break;
--
--			if(_First == _Last)	{
--				// Unexpected EOF. It's error. But ignore it.
--				//_St |= _IOS_FAILBIT|_IOS_EOFBIT; 
--					_St |= _IOS_EOFBIT; 
--				
--				return _First; 
--			}
--
--			if(_Char == _EQUAL_CHAR)
--			{
--				// OK!
--				_3to4.b64_3(0); 
--
--				// write to output 2 bytes
--				*_To = (byte_t) _3to4.get_0();
--				*_To = (byte_t) _3to4.get_1();
--
--				++_First; // set position to next character
--
--				return _First;
--			}
--			else
--				_3to4.b64_3(_Char);
--
--
--			// write to output 3 bytes
--			*_To = (byte_t) _3to4.get_0();
--			*_To = (byte_t) _3to4.get_1();
--			*_To = (byte_t) _3to4.get_2();
--
--			++_First;
--			
--
--		} // while(_First != _Last)
--
--		return (_First);
--	}
--
--protected:
--	
--	int _getCharType(int _Ch) const
--	{
--		if(_base64Chars[62] == _Ch)
--			return 62;
--
--		if(_base64Chars[63] == _Ch)
--			return 63;
--
--		if((_base64Chars[0] <= _Ch) && (_base64Chars[25] >= _Ch))
--			return _Ch - _base64Chars[0];
--
--		if((_base64Chars[26] <= _Ch) && (_base64Chars[51] >= _Ch))
--			return _Ch - _base64Chars[26] + 26;
--
--		if((_base64Chars[52] <= _Ch) && (_base64Chars[61] >= _Ch))
--			return _Ch - _base64Chars[52] + 52;
--
--		if(_Ch == _Tr::to_int_type('='))
--			return _EQUAL_CHAR;
--
--		return _UNKNOWN_CHAR;
--	}
--
--
--};
--
--
--#endif
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
-new file mode 100644
-index 0000000..6b00b18
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpc.h
-@@ -0,0 +1,102 @@
-+// this file modified by Morgan Quigley on 22 April 2008 to add 
-+// a std::exception-derived class
-+#ifndef _XMLRPC_H_
-+#define _XMLRPC_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+// This library is free software; you can redistribute it and/or
-+// modify it under the terms of the GNU Lesser General Public
-+// License as published by the Free Software Foundation; either
-+// version 2.1 of the License, or (at your option) any later version.
-+// 
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+// Lesser General Public License for more details.
-+// 
-+// You should have received a copy of the GNU Lesser General Public
-+// License along with this library; if not, write to the Free Software
-+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-+// 
-+
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "XmlRpcClient.h"
-+#include "XmlRpcException.h"
-+#include "XmlRpcServer.h"
-+#include "XmlRpcServerMethod.h"
-+#include "XmlRpcValue.h"
-+#include "XmlRpcUtil.h"
-+
-+#include <stdexcept>
-+
-+namespace XmlRpc {
-+
-+
-+  //! An interface allowing custom handling of error message reporting.
-+  class XmlRpcErrorHandler {
-+  public:
-+    virtual ~XmlRpcErrorHandler() { }
-+
-+    //! Returns a pointer to the currently installed error handling object.
-+    static XmlRpcErrorHandler* getErrorHandler() 
-+    { return _errorHandler; }
-+
-+    //! Specifies the error handler.
-+    static void setErrorHandler(XmlRpcErrorHandler* eh)
-+    { _errorHandler = eh; }
-+
-+    //! Report an error. Custom error handlers should define this method.
-+    virtual void error(const char* msg) = 0;
-+
-+  protected:
-+    static XmlRpcErrorHandler* _errorHandler;
-+  };
-+
-+  //! An interface allowing custom handling of informational message reporting.
-+  class XmlRpcLogHandler {
-+  public:
-+    virtual ~XmlRpcLogHandler() { }
-+
-+    //! Returns a pointer to the currently installed message reporting object.
-+    static XmlRpcLogHandler* getLogHandler() 
-+    { return _logHandler; }
-+
-+    //! Specifies the message handler.
-+    static void setLogHandler(XmlRpcLogHandler* lh)
-+    { _logHandler = lh; }
-+
-+    //! Returns the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-+    static int getVerbosity() 
-+    { return _verbosity; }
-+
-+    //! Specify the level of verbosity of informational messages. 0 is no output, 5 is very verbose.
-+    static void setVerbosity(int v) 
-+    { _verbosity = v; }
-+
-+    //! Output a message. Custom error handlers should define this method.
-+    virtual void log(int level, const char* msg) = 0;
-+
-+  protected:
-+    static XmlRpcLogHandler* _logHandler;
-+    static int _verbosity;
-+  };
-+
-+  //! Returns log message verbosity. This is short for XmlRpcLogHandler::getVerbosity()
-+  int getVerbosity();
-+  //! Sets log message verbosity. This is short for XmlRpcLogHandler::setVerbosity(level)
-+  void setVerbosity(int level);
-+
-+
-+  //! Version identifier
-+  extern const char XMLRPC_VERSION[];
-+
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPC_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
-new file mode 100644
-index 0000000..6f47778
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcClient.h
-@@ -0,0 +1,133 @@
-+
-+#ifndef _XMLRPCCLIENT_H_
-+#define _XMLRPCCLIENT_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "XmlRpcDispatch.h"
-+#include "XmlRpcSource.h"
-+#include "XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+  // Arguments and results are represented by XmlRpcValues
-+  class XmlRpcValue;
-+
-+  //! A class to send XML RPC requests to a server and return the results.
-+  class XMLRPCPP_DECL XmlRpcClient : public XmlRpcSource {
-+  public:
-+    // Static data
-+    static const char REQUEST_BEGIN[];
-+    static const char REQUEST_END_METHODNAME[];
-+    static const char PARAMS_TAG[];
-+    static const char PARAMS_ETAG[];
-+    static const char PARAM_TAG[];
-+    static const char PARAM_ETAG[];
-+    static const char REQUEST_END[];
-+    // Result tags
-+    static const char METHODRESPONSE_TAG[];
-+    static const char FAULT_TAG[];
-+
-+    //! Construct a client to connect to the server at the specified host:port address
-+    //!  @param host The name of the remote machine hosting the server
-+    //!  @param port The port on the remote machine where the server is listening
-+    //!  @param uri  An optional string to be sent as the URI in the HTTP GET header
-+    XmlRpcClient(const char* host, int port, const char* uri=0);
-+
-+    //! Destructor
-+    virtual ~XmlRpcClient();
-+
-+    //! Execute the named procedure on the remote server.
-+    //!  @param method The name of the remote procedure to execute
-+    //!  @param params An array of the arguments for the method
-+    //!  @param result The result value to be returned to the client
-+    //!  @return true if the request was sent and a result received 
-+    //!   (although the result might be a fault).
-+    //!
-+    //! Currently this is a synchronous (blocking) implementation (execute
-+    //! does not return until it receives a response or an error). Use isFault()
-+    //! to determine whether the result is a fault response.
-+    bool execute(const char* method, XmlRpcValue const& params, XmlRpcValue& result);
-+
-+    bool executeNonBlock(const char* method, XmlRpcValue const& params);
-+    bool executeCheckDone(XmlRpcValue& result);
-+
-+    //! Returns true if the result of the last execute() was a fault response.
-+    bool isFault() const { return _isFault; }
-+
-+
-+    // XmlRpcSource interface implementation
-+    //! Close the connection
-+    virtual void close();
-+
-+    //! Handle server responses. Called by the event dispatcher during execute.
-+    //!  @param eventType The type of event that occurred. 
-+    //!  @see XmlRpcDispatch::EventType
-+    virtual unsigned handleEvent(unsigned eventType);
-+
-+  protected:
-+    // Execution processing helpers
-+    virtual bool doConnect();
-+    virtual bool setupConnection();
-+
-+    virtual bool generateRequest(const char* method, XmlRpcValue const& params);
-+    virtual std::string generateHeader(std::string const& body);
-+    virtual bool writeRequest();
-+    virtual bool readHeader();
-+    virtual bool readResponse();
-+    virtual bool parseResponse(XmlRpcValue& result);
-+
-+    // Possible IO states for the connection
-+    enum ClientConnectionState { NO_CONNECTION, CONNECTING, WRITE_REQUEST, READ_HEADER, READ_RESPONSE, IDLE };
-+    ClientConnectionState _connectionState;
-+
-+    // Server location
-+    std::string _host;
-+    std::string _uri;
-+    int _port;
-+  public:
-+    const std::string &getHost() { return _host; }
-+    const std::string &getUri()  { return _uri; }
-+    int getPort() const { return _port; }
-+    
-+    // The xml-encoded request, http header of response, and response xml
-+    std::string _request;
-+    std::string _header;
-+    std::string _response;
-+
-+    // Number of times the client has attempted to send the request
-+    int _sendAttempts;
-+
-+    // Number of bytes of the request that have been written to the socket so far
-+    int _bytesWritten;
-+
-+    // True if we are currently executing a request. If you want to multithread,
-+    // each thread should have its own client.
-+    bool _executing;
-+
-+    // True if the server closed the connection
-+    bool _eof;
-+
-+    // True if a fault response was returned by the server
-+    bool _isFault;
-+
-+    // Number of bytes expected in the response body (parsed from response header)
-+    int _contentLength;
-+
-+    // Event dispatcher
-+    XmlRpcDispatch _disp;
-+
-+  };	// class XmlRpcClient
-+
-+}	// namespace XmlRpc
-+
-+#endif	// _XMLRPCCLIENT_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
-new file mode 100644
-index 0000000..8af174a
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDecl.h
-@@ -0,0 +1,55 @@
-+/*********************************************************************
-+*
-+* Software License Agreement (BSD License)
-+*
-+*  Copyright (c) 2009, Willow Garage, Inc.
-+*  All rights reserved.
-+*
-+*  Redistribution and use in source and binary forms, with or without
-+*  modification, are permitted provided that the following conditions
-+*  are met:
-+*
-+*   * Redistributions of source code must retain the above copyright
-+*     notice, this list of conditions and the following disclaimer.
-+*   * Redistributions in binary form must reproduce the above
-+*     copyright notice, this list of conditions and the following
-+*     disclaimer in the documentation and/or other materials provided
-+*     with the distribution.
-+*   * Neither the name of the Willow Garage nor the names of its
-+*     contributors may be used to endorse or promote products derived
-+*     from this software without specific prior written permission.
-+*
-+*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-+*  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-+*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-+*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-+*  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-+*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-+*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+*  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-+*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+*  POSSIBILITY OF SUCH DAMAGE.
-+*
-+*********************************************************************/
-+/*
-+ * Cross platform macros.
-+ *
-+ */
-+#ifndef XMLRPCPP_DECL_H_INCLUDED
-+#define XMLRPCPP_DECL_H_INCLUDED
-+
-+#include <ros/macros.h>
-+
-+#ifdef ROS_BUILD_SHARED_LIBS // ros is being built around shared libraries
-+  #ifdef xmlrpcpp_EXPORTS // we are building a shared lib/dll
-+    #define XMLRPCPP_DECL ROS_HELPER_EXPORT
-+  #else // we are using shared lib/dll
-+    #define XMLRPCPP_DECL ROS_HELPER_IMPORT
-+  #endif
-+#else // ros is being built around static libraries
-+  #define XMLRPCPP_DECL
-+#endif
-+
-+#endif /* XMLRPCPP_DECL_H_INCLUDED */
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
-new file mode 100644
-index 0000000..12b01ad
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcDispatch.h
-@@ -0,0 +1,89 @@
-+
-+#ifndef _XMLRPCDISPATCH_H_
-+#define _XMLRPCDISPATCH_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <list>
-+#endif
-+
-+namespace XmlRpc {
-+
-+  // An RPC source represents a file descriptor to monitor
-+  class XmlRpcSource;
-+
-+  //! An object which monitors file descriptors for events and performs
-+  //! callbacks when interesting events happen.
-+  class XMLRPCPP_DECL XmlRpcDispatch {
-+  public:
-+    //! Constructor
-+    XmlRpcDispatch();
-+    ~XmlRpcDispatch();
-+
-+    //! Values indicating the type of events a source is interested in
-+    enum EventType {
-+      ReadableEvent = 1,    //!< data available to read
-+      WritableEvent = 2,    //!< connected/data can be written without blocking
-+      Exception     = 4     //!< uh oh
-+    };
-+    
-+    //! Monitor this source for the event types specified by the event mask
-+    //! and call its event handler when any of the events occur.
-+    //!  @param source The source to monitor
-+    //!  @param eventMask Which event types to watch for. \see EventType
-+    void addSource(XmlRpcSource* source, unsigned eventMask);
-+
-+    //! Stop monitoring this source.
-+    //!  @param source The source to stop monitoring
-+    void removeSource(XmlRpcSource* source);
-+
-+    //! Modify the types of events to watch for on this source
-+    void setSourceEvents(XmlRpcSource* source, unsigned eventMask);
-+
-+
-+    //! Watch current set of sources and process events for the specified
-+    //! duration (in ms, -1 implies wait forever, or until exit is called)
-+    void work(double msTime);
-+
-+    //! Exit from work routine
-+    void exit();
-+
-+    //! Clear all sources from the monitored sources list. Sources are closed.
-+    void clear();
-+
-+    // helper
-+    double getTime();
-+
-+    // A source to monitor and what to monitor it for
-+    struct MonitoredSource {
-+      MonitoredSource(XmlRpcSource* src, unsigned mask) : _src(src), _mask(mask) {}
-+      XmlRpcSource* getSource() const { return _src; }
-+      unsigned& getMask() { return _mask; }
-+      XmlRpcSource* _src;
-+      unsigned _mask;
-+    };
-+
-+    // A list of sources to monitor
-+    typedef std::list< MonitoredSource > SourceList; 
-+
-+    // Sources being monitored
-+    SourceList _sources;
-+  protected:
-+
-+    // When work should stop (-1 implies wait forever, or until exit is called)
-+    double _endTime;
-+
-+    bool _doClear;
-+    bool _inWork;
-+
-+  };
-+} // namespace XmlRpc
-+
-+#endif  // _XMLRPCDISPATCH_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
-new file mode 100644
-index 0000000..bff5bf2
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcException.h
-@@ -0,0 +1,44 @@
-+
-+#ifndef _XMLRPCEXCEPTION_H_
-+#define _XMLRPCEXCEPTION_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+
-+namespace XmlRpc {
-+
-+  //! A class representing an error.
-+  //! If server methods throw this exception, a fault response is returned
-+  //! to the client.
-+  class XMLRPCPP_DECL XmlRpcException {
-+  public:
-+    //! Constructor
-+    //!   @param message  A descriptive error message
-+    //!   @param code     An integer error code
-+    XmlRpcException(const std::string& message, int code=-1) :
-+        _message(message), _code(code) {}
-+
-+    //! Return the error message.
-+    const std::string& getMessage() const { return _message; }
-+
-+    //! Return the error code.
-+    int getCode() const { return _code; }
-+
-+  private:
-+    std::string _message;
-+    int _code;
-+  };
-+
-+}
-+
-+#endif	// _XMLRPCEXCEPTION_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
-new file mode 100644
-index 0000000..035d383
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServer.h
-@@ -0,0 +1,114 @@
-+// this file modified by Morgan Quigley on 22 Apr 2008.
-+// added features: server can be opened on port 0 and you can read back
-+// what port the OS gave you
-+
-+#ifndef _XMLRPCSERVER_H_
-+#define _XMLRPCSERVER_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <map>
-+# include <string>
-+#endif
-+
-+#include "XmlRpcDispatch.h"
-+#include "XmlRpcSource.h"
-+#include "XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+
-+  // An abstract class supporting XML RPC methods
-+  class XmlRpcServerMethod;
-+
-+  // Class representing connections to specific clients
-+  class XmlRpcServerConnection;
-+
-+  // Class representing argument and result values
-+  class XmlRpcValue;
-+
-+
-+  //! A class to handle XML RPC requests
-+  class XMLRPCPP_DECL XmlRpcServer : public XmlRpcSource {
-+  public:
-+    //! Create a server object.
-+    XmlRpcServer();
-+    //! Destructor.
-+    virtual ~XmlRpcServer();
-+
-+    //! Specify whether introspection is enabled or not. Default is not enabled.
-+    void enableIntrospection(bool enabled=true);
-+
-+    //! Add a command to the RPC server
-+    void addMethod(XmlRpcServerMethod* method);
-+
-+    //! Remove a command from the RPC server
-+    void removeMethod(XmlRpcServerMethod* method);
-+
-+    //! Remove a command from the RPC server by name
-+    void removeMethod(const std::string& methodName);
-+
-+    //! Look up a method by name
-+    XmlRpcServerMethod* findMethod(const std::string& name) const;
-+
-+    //! Create a socket, bind to the specified port, and
-+    //! set it in listen mode to make it available for clients.
-+    bool bindAndListen(int port, int backlog = 5);
-+
-+    //! Process client requests for the specified time
-+    void work(double msTime);
-+
-+    //! Temporarily stop processing client requests and exit the work() method.
-+    void exit();
-+
-+    //! Close all connections with clients and the socket file descriptor
-+    void shutdown();
-+
-+    //! Introspection support
-+    void listMethods(XmlRpcValue& result);
-+
-+    // XmlRpcSource interface implementation
-+
-+    //! Handle client connection requests
-+    virtual unsigned handleEvent(unsigned eventType);
-+
-+    //! Remove a connection from the dispatcher
-+    virtual void removeConnection(XmlRpcServerConnection*);
-+
-+    inline int get_port() { return _port; }
-+
-+    XmlRpcDispatch *get_dispatch() { return &_disp; }
-+
-+  protected:
-+
-+    //! Accept a client connection request
-+    virtual void acceptConnection();
-+
-+    //! Create a new connection object for processing requests from a specific client.
-+    virtual XmlRpcServerConnection* createConnection(int socket);
-+
-+    // Whether the introspection API is supported by this server
-+    bool _introspectionEnabled;
-+
-+    // Event dispatcher
-+    XmlRpcDispatch _disp;
-+
-+    // Collection of methods. This could be a set keyed on method name if we wanted...
-+    typedef std::map< std::string, XmlRpcServerMethod* > MethodMap;
-+    MethodMap _methods;
-+
-+    // system methods
-+    XmlRpcServerMethod* _listMethods;
-+    XmlRpcServerMethod* _methodHelp;
-+
-+    int _port;
-+
-+  };
-+} // namespace XmlRpc
-+
-+#endif //_XMLRPCSERVER_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
-new file mode 100644
-index 0000000..f5c224d
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerConnection.h
-@@ -0,0 +1,103 @@
-+#ifndef _XMLRPCSERVERCONNECTION_H_
-+#define _XMLRPCSERVERCONNECTION_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "XmlRpcValue.h"
-+#include "XmlRpcSource.h"
-+#include "XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+
-+  // The server waits for client connections and provides methods
-+  class XmlRpcServer;
-+  class XmlRpcServerMethod;
-+
-+  //! A class to handle XML RPC requests from a particular client
-+  class XMLRPCPP_DECL XmlRpcServerConnection : public XmlRpcSource {
-+  public:
-+    // Static data
-+    static const char METHODNAME_TAG[];
-+    static const char PARAMS_TAG[];
-+    static const char PARAMS_ETAG[];
-+    static const char PARAM_TAG[];
-+    static const char PARAM_ETAG[];
-+
-+    static const std::string SYSTEM_MULTICALL;
-+    static const std::string METHODNAME;
-+    static const std::string PARAMS;
-+
-+    static const std::string FAULTCODE;
-+    static const std::string FAULTSTRING;
-+
-+    //! Constructor
-+    XmlRpcServerConnection(int fd, XmlRpcServer* server, bool deleteOnClose = false);
-+    //! Destructor
-+    virtual ~XmlRpcServerConnection();
-+
-+    // XmlRpcSource interface implementation
-+    //! Handle IO on the client connection socket.
-+    //!   @param eventType Type of IO event that occurred. @see XmlRpcDispatch::EventType.
-+    virtual unsigned handleEvent(unsigned eventType);
-+
-+  protected:
-+
-+    bool readHeader();
-+    bool readRequest();
-+    bool writeResponse();
-+
-+    // Parses the request, runs the method, generates the response xml.
-+    virtual void executeRequest();
-+
-+    // Parse the methodName and parameters from the request.
-+    std::string parseRequest(XmlRpcValue& params);
-+
-+    // Execute a named method with the specified params.
-+    bool executeMethod(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
-+
-+    // Execute multiple calls and return the results in an array.
-+    bool executeMulticall(const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
-+
-+    // Construct a response from the result XML.
-+    void generateResponse(std::string const& resultXml);
-+    void generateFaultResponse(std::string const& msg, int errorCode = -1);
-+    std::string generateHeader(std::string const& body);
-+
-+
-+    // The XmlRpc server that accepted this connection
-+    XmlRpcServer* _server;
-+
-+    // Possible IO states for the connection
-+    enum ServerConnectionState { READ_HEADER, READ_REQUEST, WRITE_RESPONSE };
-+    ServerConnectionState _connectionState;
-+
-+    // Request headers
-+    std::string _header;
-+
-+    // Number of bytes expected in the request body (parsed from header)
-+    int _contentLength;
-+
-+    // Request body
-+    std::string _request;
-+
-+    // Response
-+    std::string _response;
-+
-+    // Number of bytes of the response written so far
-+    int _bytesWritten;
-+
-+    // Whether to keep the current client connection open for further requests
-+    bool _keepAlive;
-+  };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCSERVERCONNECTION_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
-new file mode 100644
-index 0000000..7b7ddca
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcServerMethod.h
-@@ -0,0 +1,49 @@
-+
-+#ifndef _XMLRPCSERVERMETHOD_H_
-+#define _XMLRPCSERVERMETHOD_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+namespace XmlRpc {
-+
-+  // Representation of a parameter or result value
-+  class XmlRpcValue;
-+
-+  // The XmlRpcServer processes client requests to call RPCs
-+  class XmlRpcServer;
-+
-+  //! Abstract class representing a single RPC method
-+  class XMLRPCPP_DECL XmlRpcServerMethod {
-+  public:
-+    //! Constructor
-+    XmlRpcServerMethod(std::string const& name, XmlRpcServer* server = 0);
-+    //! Destructor
-+    virtual ~XmlRpcServerMethod();
-+
-+    //! Returns the name of the method
-+    std::string& name() { return _name; }
-+
-+    //! Execute the method. Subclasses must provide a definition for this method.
-+    virtual void execute(XmlRpcValue& params, XmlRpcValue& result) = 0;
-+
-+    //! Returns a help string for the method.
-+    //! Subclasses should define this method if introspection is being used.
-+    virtual std::string help() { return std::string(); }
-+
-+  protected:
-+    std::string _name;
-+    XmlRpcServer* _server;
-+  };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCSERVERMETHOD_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
-new file mode 100644
-index 0000000..711a520
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSocket.h
-@@ -0,0 +1,80 @@
-+// this file modified by Morgan Quigley on 22 Apr 2008.
-+// added features: server can be opened on port 0 and you can read back
-+// what port the OS gave you
-+
-+#ifndef _XMLRPCSOCKET_H_
-+#define _XMLRPCSOCKET_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+  //! A platform-independent socket API.
-+  class XMLRPCPP_DECL XmlRpcSocket {
-+  public:
-+
-+    static bool s_use_ipv6_;
-+
-+    //! Creates a stream (TCP) socket. Returns -1 on failure.
-+    static int socket();
-+
-+    //! Closes a socket.
-+    static void close(int socket);
-+
-+
-+    //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure.
-+    static bool setNonBlocking(int socket);
-+
-+    //! Read text from the specified socket. Returns false on error.
-+    static bool nbRead(int socket, std::string& s, bool *eof);
-+
-+    //! Write text to the specified socket. Returns false on error.
-+    static bool nbWrite(int socket, std::string& s, int *bytesSoFar);
-+
-+
-+    // The next four methods are appropriate for servers.
-+
-+    //! Allow the port the specified socket is bound to to be re-bound immediately so 
-+    //! server re-starts are not delayed. Returns false on failure.
-+    static bool setReuseAddr(int socket);
-+
-+    //! Bind to a specified port
-+    static bool bind(int socket, int port);
-+    
-+    static int get_port(int socket);
-+
-+    //! Set socket in listen mode
-+    static bool listen(int socket, int backlog);
-+
-+    //! Accept a client connection request
-+    static int accept(int socket);
-+
-+
-+
-+    //! Connect a socket to a server (from a client)
-+    static bool connect(int socket, std::string& host, int port);
-+
-+
-+    //! Returns last errno
-+    static int getError();
-+
-+    //! Returns message corresponding to last error
-+    static std::string getErrorMsg();
-+
-+    //! Returns message corresponding to error
-+    static std::string getErrorMsg(int error);
-+  };
-+
-+} // namespace XmlRpc
-+
-+#endif
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
-new file mode 100644
-index 0000000..f82ccb1
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcSource.h
-@@ -0,0 +1,57 @@
-+
-+#ifndef _XMLRPCSOURCE_H_
-+#define _XMLRPCSOURCE_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+namespace XmlRpc {
-+
-+  //! An RPC source represents a file descriptor to monitor
-+  class XMLRPCPP_DECL XmlRpcSource {
-+  public:
-+    //! Constructor
-+    //!  @param fd The socket file descriptor to monitor.
-+    //!  @param deleteOnClose If true, the object deletes itself when close is called.
-+    XmlRpcSource(int fd = -1, bool deleteOnClose = false);
-+
-+    //! Destructor
-+    virtual ~XmlRpcSource();
-+
-+    //! Return the file descriptor being monitored.
-+    int getfd() const { return _fd; }
-+    //! Specify the file descriptor to monitor.
-+    void setfd(int fd) { _fd = fd; }
-+
-+    //! Return whether the file descriptor should be kept open if it is no longer monitored.
-+    bool getKeepOpen() const { return _keepOpen; }
-+    //! Specify whether the file descriptor should be kept open if it is no longer monitored.
-+    void setKeepOpen(bool b=true) { _keepOpen = b; }
-+
-+    //! Close the owned fd. If deleteOnClose was specified at construction, the object is deleted.
-+    virtual void close();
-+
-+    //! Return true to continue monitoring this source
-+    virtual unsigned handleEvent(unsigned eventType) = 0;
-+
-+  private:
-+
-+    // Socket. This should really be a SOCKET (an alias for unsigned int*) on windows...
-+    int _fd;
-+
-+    // In the server, a new source (XmlRpcServerConnection) is created
-+    // for each connected client. When each connection is closed, the
-+    // corresponding source object is deleted.
-+    bool _deleteOnClose;
-+
-+    // In the client, keep connections open if you intend to make multiple calls.
-+    bool _keepOpen;
-+  };
-+} // namespace XmlRpc
-+
-+#endif //_XMLRPCSOURCE_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
-new file mode 100644
-index 0000000..78627f4
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcUtil.h
-@@ -0,0 +1,63 @@
-+#ifndef _XMLRPCUTIL_H_
-+#define _XMLRPCUTIL_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#ifndef MAKEDEPEND
-+# include <string>
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+#if defined(_MSC_VER)
-+# define snprintf	    _snprintf_s
-+# define vsnprintf    _vsnprintf_s
-+# define strcasecmp	  _stricmp
-+# define strncasecmp	_strnicmp
-+#elif defined(__BORLANDC__)
-+# define strcasecmp stricmp
-+# define strncasecmp strnicmp
-+#endif
-+
-+namespace XmlRpc {
-+
-+  //! Utilities for XML parsing, encoding, and decoding and message handlers.
-+  class XMLRPCPP_DECL XmlRpcUtil {
-+  public:
-+    // hokey xml parsing
-+    //! Returns contents between <tag> and </tag>, updates offset to char after </tag>
-+    static std::string parseTag(const char* tag, std::string const& xml, int* offset);
-+
-+    //! Returns true if the tag is found and updates offset to the char after the tag
-+    static bool findTag(const char* tag, std::string const& xml, int* offset);
-+
-+    //! Returns the next tag and updates offset to the char after the tag, or empty string
-+    //! if the next non-whitespace character is not '<'
-+    static std::string getNextTag(std::string const& xml, int* offset);
-+
-+    //! Returns true if the tag is found at the specified offset (modulo any whitespace)
-+    //! and updates offset to the char after the tag
-+    static bool nextTagIs(const char* tag, std::string const& xml, int* offset);
-+
-+
-+    //! Convert raw text to encoded xml.
-+    static std::string xmlEncode(const std::string& raw);
-+
-+    //! Convert encoded xml to raw text
-+    static std::string xmlDecode(const std::string& encoded);
-+
-+
-+    //! Dump messages somewhere
-+    static void log(int level, const char* fmt, ...);
-+
-+    //! Dump error messages somewhere
-+    static void error(const char* fmt, ...);
-+
-+  };
-+} // namespace XmlRpc
-+
-+#endif // _XMLRPCUTIL_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
-new file mode 100644
-index 0000000..fe6cb8c
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/XmlRpcValue.h
-@@ -0,0 +1,195 @@
-+
-+#ifndef _XMLRPCVALUE_H_
-+#define _XMLRPCVALUE_H_
-+//
-+// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
-+//
-+#if defined(_MSC_VER)
-+# pragma warning(disable:4786)    // identifier was truncated in debug info
-+#endif
-+
-+#include "XmlRpcDecl.h"
-+
-+#ifndef MAKEDEPEND
-+# include <map>
-+# include <string>
-+# include <vector>
-+# include <time.h>
-+#endif
-+
-+namespace XmlRpc {
-+
-+  //! RPC method arguments and results are represented by Values
-+  //   should probably refcount them...
-+  class XMLRPCPP_DECL XmlRpcValue {
-+  public:
-+
-+
-+    enum Type {
-+      TypeInvalid,
-+      TypeBoolean,
-+      TypeInt,
-+      TypeDouble,
-+      TypeString,
-+      TypeDateTime,
-+      TypeBase64,
-+      TypeArray,
-+      TypeStruct
-+    };
-+
-+    // Non-primitive types
-+    typedef std::vector<char> BinaryData;
-+    typedef std::vector<XmlRpcValue> ValueArray;
-+    typedef std::map<std::string, XmlRpcValue> ValueStruct;
-+    typedef ValueStruct::iterator iterator;
-+
-+
-+    //! Constructors
-+    XmlRpcValue() : _type(TypeInvalid) { _value.asBinary = 0; }
-+    XmlRpcValue(bool value) : _type(TypeBoolean) { _value.asBool = value; }
-+    XmlRpcValue(int value)  : _type(TypeInt) { _value.asInt = value; }
-+    XmlRpcValue(double value)  : _type(TypeDouble) { _value.asDouble = value; }
-+
-+    XmlRpcValue(std::string const& value) : _type(TypeString) 
-+    { _value.asString = new std::string(value); }
-+
-+    XmlRpcValue(const char* value)  : _type(TypeString)
-+    { _value.asString = new std::string(value); }
-+
-+    XmlRpcValue(struct tm* value)  : _type(TypeDateTime) 
-+    { _value.asTime = new struct tm(*value); }
-+
-+
-+    XmlRpcValue(void* value, int nBytes)  : _type(TypeBase64)
-+    {
-+      _value.asBinary = new BinaryData((char*)value, ((char*)value)+nBytes);
-+    }
-+
-+    //! Construct from xml, beginning at *offset chars into the string, updates offset
-+    XmlRpcValue(std::string const& xml, int* offset) : _type(TypeInvalid)
-+    { if ( ! fromXml(xml,offset)) _type = TypeInvalid; }
-+
-+    //! Copy
-+    XmlRpcValue(XmlRpcValue const& rhs) : _type(TypeInvalid) { *this = rhs; }
-+
-+    //! Destructor (make virtual if you want to subclass)
-+    /*virtual*/ ~XmlRpcValue() { invalidate(); }
-+
-+    //! Erase the current value
-+    void clear() { invalidate(); }
-+
-+    // Operators
-+    XmlRpcValue& operator=(XmlRpcValue const& rhs);
-+    XmlRpcValue& operator=(int const& rhs) { return operator=(XmlRpcValue(rhs)); }
-+    XmlRpcValue& operator=(double const& rhs) { return operator=(XmlRpcValue(rhs)); }
-+    XmlRpcValue& operator=(const char* rhs) { return operator=(XmlRpcValue(std::string(rhs))); }
-+
-+    bool operator==(XmlRpcValue const& other) const;
-+    bool operator!=(XmlRpcValue const& other) const;
-+
-+    operator bool&()          { assertTypeOrInvalid(TypeBoolean); return _value.asBool; }
-+    operator int&()           { assertTypeOrInvalid(TypeInt); return _value.asInt; }
-+    operator double&()        { assertTypeOrInvalid(TypeDouble); return _value.asDouble; }
-+    operator std::string&()   { assertTypeOrInvalid(TypeString); return *_value.asString; }
-+    operator BinaryData&()    { assertTypeOrInvalid(TypeBase64); return *_value.asBinary; }
-+    operator struct tm&()     { assertTypeOrInvalid(TypeDateTime); return *_value.asTime; }
-+
-+    XmlRpcValue const& operator[](int i) const { assertArray(i+1); return _value.asArray->at(i); }
-+    XmlRpcValue& operator[](int i)             { assertArray(i+1); return _value.asArray->at(i); }
-+
-+    XmlRpcValue& operator[](std::string const& k) { assertStruct(); return (*_value.asStruct)[k]; }
-+    XmlRpcValue& operator[](const char* k) { assertStruct(); std::string s(k); return (*_value.asStruct)[s]; }
-+
-+    iterator begin() {assertStruct(); return (*_value.asStruct).begin(); }
-+    iterator end() {assertStruct(); return (*_value.asStruct).end(); }
-+
-+    // Accessors
-+    //! Return true if the value has been set to something.
-+    bool valid() const { return _type != TypeInvalid; }
-+
-+    //! Return the type of the value stored. \see Type.
-+    Type const &getType() const { return _type; }
-+
-+    //! Return the size for string, base64, array, and struct values.
-+    int size() const;
-+
-+    //! Specify the size for array values. Array values will grow beyond this size if needed.
-+    void setSize(int size)    { assertArray(size); }
-+
-+    //! Check for the existence of a struct member by name.
-+    bool hasMember(const std::string& name) const;
-+
-+    //! Decode xml. Destroys any existing value.
-+    bool fromXml(std::string const& valueXml, int* offset);
-+
-+    //! Encode the Value in xml
-+    std::string toXml() const;
-+
-+    //! Write the value (no xml encoding)
-+    std::ostream& write(std::ostream& os) const;
-+
-+    // Formatting
-+    //! Return the format used to write double values.
-+    static std::string const& getDoubleFormat() { return _doubleFormat; }
-+
-+    //! Specify the format used to write double values.
-+    static void setDoubleFormat(const char* f) { _doubleFormat = f; }
-+
-+
-+  protected:
-+    // Clean up
-+    void invalidate();
-+
-+    // Type checking
-+    void assertTypeOrInvalid(Type t);
-+    void assertArray(int size) const;
-+    void assertArray(int size);
-+    void assertStruct();
-+
-+    // XML decoding
-+    bool boolFromXml(std::string const& valueXml, int* offset);
-+    bool intFromXml(std::string const& valueXml, int* offset);
-+    bool doubleFromXml(std::string const& valueXml, int* offset);
-+    bool stringFromXml(std::string const& valueXml, int* offset);
-+    bool timeFromXml(std::string const& valueXml, int* offset);
-+    bool binaryFromXml(std::string const& valueXml, int* offset);
-+    bool arrayFromXml(std::string const& valueXml, int* offset);
-+    bool structFromXml(std::string const& valueXml, int* offset);
-+
-+    // XML encoding
-+    std::string boolToXml() const;
-+    std::string intToXml() const;
-+    std::string doubleToXml() const;
-+    std::string stringToXml() const;
-+    std::string timeToXml() const;
-+    std::string binaryToXml() const;
-+    std::string arrayToXml() const;
-+    std::string structToXml() const;
-+
-+    // Format strings
-+    static std::string _doubleFormat;
-+
-+    // Type tag and values
-+    Type _type;
-+
-+    // At some point I will split off Arrays and Structs into
-+    // separate ref-counted objects for more efficient copying.
-+    union {
-+      bool          asBool;
-+      int           asInt;
-+      double        asDouble;
-+      struct tm*    asTime;
-+      std::string*  asString;
-+      BinaryData*   asBinary;
-+      ValueArray*   asArray;
-+      ValueStruct*  asStruct;
-+    } _value;
-+    
-+  };
-+} // namespace XmlRpc
-+
-+
-+std::ostream& operator<<(std::ostream& os, XmlRpc::XmlRpcValue& v);
-+
-+
-+#endif // _XMLRPCVALUE_H_
-diff --git a/utilities/xmlrpcpp/include/xmlrpcpp/base64.h b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-new file mode 100644
-index 0000000..c239403
---- /dev/null
-+++ b/utilities/xmlrpcpp/include/xmlrpcpp/base64.h
-@@ -0,0 +1,380 @@
-+
-+
-+//  base64.hpp 
-+//  Autor Konstantin Pilipchuk
-+//  mailto:lostd at ukr.net
-+//
-+//
-+
-+#if !defined(__BASE64_H_INCLUDED__)
-+#define __BASE64_H_INCLUDED__ 1
-+
-+#ifndef MAKEDEPEND
-+# include <iterator>
-+#endif
-+
-+#include <ios>
-+
-+static
-+int _base64Chars[]= {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-+				     'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
-+			         '0','1','2','3','4','5','6','7','8','9',
-+			         '+','/' };
-+
-+
-+#define _0000_0011 0x03
-+#define _1111_1100 0xFC
-+#define _1111_0000 0xF0
-+#define _0011_0000 0x30
-+#define _0011_1100 0x3C
-+#define _0000_1111 0x0F
-+#define _1100_0000 0xC0
-+#define _0011_1111 0x3F
-+
-+#define _EQUAL_CHAR   (-1)
-+#define _UNKNOWN_CHAR (-2)
-+
-+#define _IOS_FAILBIT   std::ios_base::failbit
-+#define _IOS_EOFBIT    std::ios_base::eofbit
-+#define _IOS_BADBIT    std::ios_base::badbit
-+#define _IOS_GOODBIT   std::ios_base::goodbit
-+
-+// TEMPLATE CLASS base64_put
-+template<class _E = char, class _Tr = std::char_traits<_E> >
-+class base64
-+{
-+public:
-+
-+	typedef unsigned char byte_t;
-+	typedef _E            char_type;
-+	typedef _Tr           traits_type; 
-+
-+	// base64 requires max line length <= 72 characters
-+	// you can fill end of line
-+	// it may be crlf, crlfsp, noline or other class like it
-+
-+
-+	struct crlf
-+	{
-+		template<class _OI>
-+			_OI operator()(_OI _To) const{
-+			*_To = _Tr::to_char_type('\r'); ++_To;
-+			*_To = _Tr::to_char_type('\n'); ++_To;
-+
-+			return (_To);
-+		}
-+	};
-+
-+
-+	struct crlfsp
-+	{
-+		template<class _OI>
-+			_OI operator()(_OI _To) const{
-+			*_To = _Tr::to_char_type('\r'); ++_To;
-+			*_To = _Tr::to_char_type('\n'); ++_To;
-+			*_To = _Tr::to_char_type(' '); ++_To;
-+
-+			return (_To);
-+		}
-+	};
-+
-+	struct noline
-+	{
-+		template<class _OI>
-+			_OI operator()(_OI _To) const{
-+			return (_To);
-+		}
-+	};
-+
-+	struct three2four
-+	{
-+		void zero()
-+		{
-+			_data[0] = 0;
-+			_data[1] = 0;
-+			_data[2] = 0;
-+		}
-+
-+		byte_t get_0()	const
-+		{
-+			return _data[0];
-+		}
-+		byte_t get_1()	const
-+		{
-+			return _data[1];
-+		}
-+		byte_t get_2()	const
-+		{
-+			return _data[2];
-+		}
-+
-+		void set_0(byte_t _ch)
-+		{
-+			_data[0] = _ch;
-+		}
-+
-+		void set_1(byte_t _ch)
-+		{
-+			_data[1] = _ch;
-+		}
-+
-+		void set_2(byte_t _ch)
-+		{
-+			_data[2] = _ch;
-+		}
-+
-+		// 0000 0000  1111 1111  2222 2222
-+		// xxxx xxxx  xxxx xxxx  xxxx xxxx
-+		// 0000 0011  1111 2222  2233 3333
-+
-+		int b64_0()	const	{return (_data[0] & _1111_1100) >> 2;}
-+		int b64_1()	const	{return ((_data[0] & _0000_0011) << 4) + ((_data[1] & _1111_0000)>>4);}
-+		int b64_2()	const	{return ((_data[1] & _0000_1111) << 2) + ((_data[2] & _1100_0000)>>6);}
-+		int b64_3()	const	{return (_data[2] & _0011_1111);}
-+
-+		void b64_0(int _ch)	{_data[0] = ((_ch & _0011_1111) << 2) | (_0000_0011 & _data[0]);}
-+
-+		void b64_1(int _ch)	{
-+			_data[0] = ((_ch & _0011_0000) >> 4) | (_1111_1100 & _data[0]);
-+			_data[1] = ((_ch & _0000_1111) << 4) | (_0000_1111 & _data[1]);	}
-+
-+		void b64_2(int _ch)	{
-+			_data[1] = ((_ch & _0011_1100) >> 2) | (_1111_0000 & _data[1]);
-+			_data[2] = ((_ch & _0000_0011) << 6) | (_0011_1111 & _data[2]);	}
-+
-+		void b64_3(int _ch){
-+			_data[2] = (_ch & _0011_1111) | (_1100_0000 & _data[2]);}
-+
-+	private:
-+		byte_t _data[3];
-+
-+	};
-+
-+
-+
-+
-+	template<class _II, class _OI, class _State, class _Endline>
-+        _II put(_II _First, _II _Last, _OI _To, _State&, _Endline)  const
-+	{
-+		three2four _3to4;
-+		int line_octets = 0;
-+
-+		while(_First != _Last)
-+		{
-+			_3to4.zero();
-+
-+			_3to4.set_0(*_First);
-+			_First++;
-+
-+			if(_First == _Last)
-+			{
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+				*_To = _Tr::to_char_type('='); ++_To;
-+				*_To = _Tr::to_char_type('='); ++_To;
-+				goto __end;
-+			}
-+
-+			_3to4.set_1(*_First);
-+			_First++;
-+
-+			if(_First == _Last)
-+			{
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+				*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-+				*_To = _Tr::to_char_type('='); ++_To;
-+				goto __end;
-+			}
-+
-+			_3to4.set_2(*_First);
-+			_First++;
-+
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_0()]); ++_To;
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_1()]); ++_To;
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_2()]); ++_To;
-+			*_To = _Tr::to_char_type(_base64Chars[_3to4.b64_3()]); ++_To;
-+
-+			if(line_octets == 17)
-+			{
-+                                //_To = _Endl(_To);
-+                                *_To = '\n'; ++_To;
-+                                line_octets = 0;
-+			}
-+			else
-+				++line_octets;
-+		}
-+
-+		__end: ;
-+
-+		return (_First);
-+
-+	}
-+
-+
-+	template<class _II, class _OI, class _State>
-+		_II get(_II _First, _II _Last, _OI _To, _State& _St) const
-+	{
-+		three2four _3to4;
-+		int _Char;
-+
-+		while(_First != _Last)
-+		{
-+
-+			// Take octet
-+			_3to4.zero();
-+
-+			// -- 0 --
-+			// Search next valid char... 
-+			while((_Char =  _getCharType(*_First)) < 0 && _Char == _UNKNOWN_CHAR)
-+			{
-+				if(++_First == _Last)
-+				{
-+					_St |= _IOS_FAILBIT|_IOS_EOFBIT; return _First; // unexpected EOF
-+				}
-+			}
-+
-+			if(_Char == _EQUAL_CHAR){
-+				// Error! First character in octet can't be '='
-+				_St |= _IOS_FAILBIT; 
-+				return _First; 
-+			}
-+			else
-+				_3to4.b64_0(_Char);
-+
-+
-+			// -- 1 --
-+			// Search next valid char... 
-+			while(++_First != _Last)
-+				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+					break;
-+
-+			if(_First == _Last)	{
-+				_St |= _IOS_FAILBIT|_IOS_EOFBIT; // unexpected EOF 
-+				return _First;
-+			}
-+
-+			if(_Char == _EQUAL_CHAR){
-+				// Error! Second character in octet can't be '='
-+				_St |= _IOS_FAILBIT; 
-+				return _First; 
-+			}
-+			else
-+				_3to4.b64_1(_Char);
-+
-+
-+			// -- 2 --
-+			// Search next valid char... 
-+			while(++_First != _Last)
-+				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+					break;
-+
-+			if(_First == _Last)	{
-+				// Error! Unexpected EOF. Must be '=' or base64 character
-+				_St |= _IOS_FAILBIT|_IOS_EOFBIT; 
-+				return _First; 
-+			}
-+
-+			if(_Char == _EQUAL_CHAR){
-+				// OK!
-+				_3to4.b64_2(0); 
-+				_3to4.b64_3(0); 
-+
-+				// chek for EOF
-+				if(++_First == _Last)
-+				{
-+					// Error! Unexpected EOF. Must be '='. Ignore it.
-+					//_St |= _IOS_BADBIT|_IOS_EOFBIT;
-+					_St |= _IOS_EOFBIT;
-+				}
-+				else 
-+					if(_getCharType(*_First) != _EQUAL_CHAR)
-+					{
-+						// Error! Must be '='. Ignore it.
-+						//_St |= _IOS_BADBIT;
-+					}
-+				else
-+					++_First; // Skip '='
-+
-+				// write 1 byte to output
-+				*_To = (byte_t) _3to4.get_0();
-+				return _First;
-+			}
-+			else
-+				_3to4.b64_2(_Char);
-+
-+
-+			// -- 3 --
-+			// Search next valid char... 
-+			while(++_First != _Last)
-+				if((_Char = _getCharType(*_First)) != _UNKNOWN_CHAR)
-+					break;
-+
-+			if(_First == _Last)	{
-+				// Unexpected EOF. It's error. But ignore it.
-+				//_St |= _IOS_FAILBIT|_IOS_EOFBIT; 
-+					_St |= _IOS_EOFBIT; 
-+				
-+				return _First; 
-+			}
-+
-+			if(_Char == _EQUAL_CHAR)
-+			{
-+				// OK!
-+				_3to4.b64_3(0); 
-+
-+				// write to output 2 bytes
-+				*_To = (byte_t) _3to4.get_0();
-+				*_To = (byte_t) _3to4.get_1();
-+
-+				++_First; // set position to next character
-+
-+				return _First;
-+			}
-+			else
-+				_3to4.b64_3(_Char);
-+
-+
-+			// write to output 3 bytes
-+			*_To = (byte_t) _3to4.get_0();
-+			*_To = (byte_t) _3to4.get_1();
-+			*_To = (byte_t) _3to4.get_2();
-+
-+			++_First;
-+			
-+
-+		} // while(_First != _Last)
-+
-+		return (_First);
-+	}
-+
-+protected:
-+	
-+	int _getCharType(int _Ch) const
-+	{
-+		if(_base64Chars[62] == _Ch)
-+			return 62;
-+
-+		if(_base64Chars[63] == _Ch)
-+			return 63;
-+
-+		if((_base64Chars[0] <= _Ch) && (_base64Chars[25] >= _Ch))
-+			return _Ch - _base64Chars[0];
-+
-+		if((_base64Chars[26] <= _Ch) && (_base64Chars[51] >= _Ch))
-+			return _Ch - _base64Chars[26] + 26;
-+
-+		if((_base64Chars[52] <= _Ch) && (_base64Chars[61] >= _Ch))
-+			return _Ch - _base64Chars[52] + 52;
-+
-+		if(_Ch == _Tr::to_int_type('='))
-+			return _EQUAL_CHAR;
-+
-+		return _UNKNOWN_CHAR;
-+	}
-+
-+
-+};
-+
-+
-+#endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ros/ros-ros-comm.git



More information about the debian-science-commits mailing list