#13795: Initial commit for sflphone-android

includes: libexpat libyaml libdbus-c++ commoncpp ccrtp
          libdbus (from android-4.0.4 sources)

TODO:
- git ignores "/jni/sflphone", sflphone repo should be cloned.
- sflphone-android only needs daemon directory. Ideally it should be possible
to clone it without cloning the whole sflphone project.
into sfl-android (commit 6a0fa7a "#13961: Fix cipher handling" has been used here)
- add pjsip-android project as a git submodule
- sflphone-android needs pjsip android project. Ideally daemon git repository
should not embed pjsip. Instead pjsip should be clone from official repositories.

Considering this, structure should have three distincts git repos:

sflphone-android/.git
sflphone-android/jni/ccrtp-1.8.0-android
sflphone-android/jni/commoncpp2-1.8.1-android
sflphone-android/jni/dbus
sflphone-android/jni/libdbus-c++-0.9.0-android
sflphone-android/jni/libexpat
sflphone-android/jni/libyaml

sflphone-android/jni/sflphone-daemon/.git
sflphone-android/jni/sflphone-daemon/src/audio
sflphone-android/jni/sflphone-daemon/src/config
sflphone-android/jni/sflphone-daemon/src/dbus
sflphone-android/jni/sflphone-daemon/src/history
sflphone-android/jni/sflphone-daemon/src/hooks
sflphone-android/jni/sflphone-daemon/src/iax
sflphone-android/jni/sflphone-daemon/src/sip
sflphone-android/jni/sflphone-daemon/src/video

sflphone-android/jni/pjsip-android/.git

Signed-off-by: Emeric Vigier <emeric.vigier@savoirfairelinux.com>
diff --git a/jni/libdbus-c++-0.9.0-android/tools/xml2cpp.cpp b/jni/libdbus-c++-0.9.0-android/tools/xml2cpp.cpp
new file mode 100644
index 0000000..ff031f8
--- /dev/null
+++ b/jni/libdbus-c++-0.9.0-android/tools/xml2cpp.cpp
@@ -0,0 +1,127 @@
+/*
+ *
+ *  D-Bus++ - C++ bindings for D-Bus
+ *
+ *  Copyright (C) 2005-2007  Paolo Durante <shackan@gmail.com>
+ *
+ *
+ *  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  USA
+ *
+ */
+
+#include <cstdlib>
+#include <cstring>
+#include <string>
+#include <map>
+#include <iostream>
+#include <fstream>
+#include <sstream>
+
+#include "xml2cpp.h"
+#include "generate_adaptor.h"
+#include "generate_proxy.h"
+
+using namespace std;
+using namespace DBus;
+
+//typedef map<string,string> TypeCache;
+
+void usage(const char *argv0)
+{
+  cerr << endl << "Usage: " << argv0 << " <xmlfile> [ --proxy=<outfile.h> ] [ --adaptor=<outfile.h> ]"
+       << endl << endl;
+  exit(-1);
+}
+
+/*int char_to_atomic_type(char t)
+{
+	if (strchr("ybnqiuxtdsgavre", t))
+		return t;
+
+	return DBUS_TYPE_INVALID;
+}*/
+
+
+
+/*bool is_atomic_type(const string &type)
+{
+	return type.length() == 1 && char_to_atomic_type(type[0]) != DBUS_TYPE_INVALID;
+}*/
+
+
+int main(int argc, char **argv)
+{
+  if (argc < 2)
+  {
+    usage(argv[0]);
+  }
+
+  bool proxy_mode, adaptor_mode;
+  char *proxy, *adaptor;
+
+  proxy_mode = false;
+  proxy = 0;
+
+  adaptor_mode = false;
+  adaptor = 0;
+
+  for (int a = 1; a < argc; ++a)
+  {
+    if (!strncmp(argv[a], "--proxy=", 8))
+    {
+      proxy_mode = true;
+      proxy = argv[a] + 8;
+    }
+    else if (!strncmp(argv[a], "--adaptor=", 10))
+    {
+      adaptor_mode = true;
+      adaptor = argv[a] + 10;
+    }
+  }
+
+  if (!proxy_mode && !adaptor_mode) usage(argv[0]);
+
+  ifstream xmlfile(argv[1]);
+
+  if (xmlfile.bad())
+  {
+    cerr << "unable to open file " << argv[1] << endl;
+    return -1;
+  }
+
+  Xml::Document doc;
+
+  try
+  {
+    xmlfile >> doc;
+    //cout << doc.to_xml();
+  }
+  catch (Xml::Error &e)
+  {
+    cerr << "error parsing " << argv[1] << ": " << e.what() << endl;
+    return -1;
+  }
+
+  if (!doc.root)
+  {
+    cerr << "empty document" << endl;
+    return -1;
+  }
+
+  if (proxy_mode)   generate_proxy(doc, proxy);
+  if (adaptor_mode) generate_adaptor(doc, adaptor);
+
+  return 0;
+}