--- /dev/null	
+++ cli_ure/source/bootstrap/native_glue.cxx	
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ *  $RCSfile: $
+ *
+ *  $Revision: $
+ *
+ *  last change: $Author: $ $Date: $
+ *
+ *  The Contents of this file are made available subject to the terms of
+ *  either of the following licenses
+ *
+ *         - GNU Lesser General Public License Version 2.1
+ *         - Sun Industry Standards Source License Version 1.1
+ *
+ *  Sun Microsystems Inc., October, 2000
+ *
+ *  GNU Lesser General Public License Version 2.1
+ *  =============================================
+ *  Copyright 2000 by Sun Microsystems, Inc.
+ *  901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License version 2.1, as published by the Free Software Foundation.
+ *
+ *  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
+ *
+ *
+ *  Sun Industry Standards Source License Version 1.1
+ *  =================================================
+ *  The contents of this file are subject to the Sun Industry Standards
+ *  Source License Version 1.1 (the "License"); You may not use this file
+ *  except in compliance with the License. You may obtain a copy of the
+ *  License at http://www.openoffice.org/license.html.
+ *
+ *  Software provided under this License is provided on an "AS IS" basis,
+ *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ *  See the License for the specific provisions governing your rights and
+ *  obligations concerning the Software.
+ *
+ *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ *  Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ *  All Rights Reserved.
+ *
+ *  Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _RTL_USTRING_HXX_
+#include "rtl/ustring.hxx"
+#endif
+#ifndef _RTL_BOOTSTRAP_HXX_
+#include "rtl/bootstrap.hxx"
+#endif
+#ifndef _CPPUHELPER_BOOTSTRAP_HXX_
+#include "cppuhelper/bootstrap.hxx"
+#endif
+#ifndef _UNO_MAPPING_HXX_
+#include "uno/mapping.hxx"
+#endif
+extern "C" {
+#include "mono/metadata/object.h"
+}
+
+#define OUSTR(x) ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(x) )
+
+using namespace com::sun::star::uno;
+
+static void * to_cli( Reference< XComponentContext > const & context )
+{
+    Mapping mapping( OUSTR( CPPU_CURRENT_LANGUAGE_BINDING_NAME ), OUSTR( UNO_LB_CLI ) );
+    OSL_ASSERT( mapping.is() );
+    if (! mapping.is() )
+    {
+        // FIXME do something
+        return 0;
+    }
+
+    return (void *)mono_gchandle_new( (MonoObject *)mapping.mapInterface( context.get(), ::getCppuType( &context ) ), sal_False );
+}
+
+extern "C" {
+
+void SAL_CALL native_bootstrap_set( const sal_Unicode* pName, sal_Int32 nNameLength,
+                                    const sal_Unicode* pValue, sal_Int32 nValueLength )
+    SAL_THROW_EXTERN_C()
+{
+    ::rtl::OUString const name( pName, nNameLength );
+    ::rtl::OUString const value( pValue, nValueLength );
+
+    ::rtl::Bootstrap::set( name, value );
+}
+
+void * SAL_CALL native_defaultBootstrap_InitialComponentContext()
+    SAL_THROW_EXTERN_C()
+{
+	try {
+		Reference< XComponentContext > xContext = ::cppu::defaultBootstrap_InitialComponentContext();
+
+		return to_cli( xContext );
+	} catch (const Exception &ex) {
+			fprintf( stderr, "Exception bootstrapping '%s'\n",
+					 (const sal_Char *) rtl::OUStringToOString( ex.Message, RTL_TEXTENCODING_UTF8 ) );
+			return NULL;
+	}
+}
+
+void * SAL_CALL native_defaultBootstrap_InitialComponentContext_iniFile( const sal_Unicode *pIniFile, sal_Int32 nNameLength )
+    SAL_THROW_EXTERN_C()
+{
+    ::rtl::OUString sFileName( pIniFile, nNameLength );
+
+	try {
+			Reference< XComponentContext > xContext = ::cppu::defaultBootstrap_InitialComponentContext( sFileName );
+			if (!xContext.is())
+					fprintf( stderr, "Bootstrap context is in fact NULL\n" );
+
+			return to_cli( xContext );
+	} catch (const Exception &ex) {
+			rtl::OString aIni = rtl::OUStringToOString( sFileName, RTL_TEXTENCODING_UTF8 );
+			fprintf( stderr, "Exception bootstrapping from ini '%s' (%d) '%s'\n", (const sal_Char *) aIni, nNameLength,
+					 (const sal_Char *) rtl::OUStringToOString( ex.Message, RTL_TEXTENCODING_UTF8 ) );
+			return NULL;
+	}
+}
+
+void * SAL_CALL native_bootstrap()
+    SAL_THROW_EXTERN_C()
+{
+    Reference< XComponentContext > xContext = ::cppu::bootstrap();
+
+    return to_cli( xContext );
+}
+
+} // extern "C"
