$NetBSD: patch-aj,v 1.1.1.1 2002/02/13 18:09:23 mrauch Exp $

--- ../bridges/source/cpp_uno/gcc2_netbsd_powerpc/gcc2_netbsd_powerpc.hxx.orig	Sun Jan  6 11:43:06 2002
+++ ../bridges/source/cpp_uno/gcc2_netbsd_powerpc/gcc2_netbsd_powerpc.hxx
@@ -0,0 +1,95 @@
+
+#ifndef _RTL_STRING_HXX_
+#include <rtl/string.hxx>
+#endif
+#include <typeinfo>
+
+typedef struct _uno_Any uno_Any;
+typedef struct _uno_Mapping uno_Mapping;
+
+// private egcs type info structs
+
+// type_info for a simple class ( no base classes or an enum )
+struct __user_type_info : public std::type_info {
+	__user_type_info (const char *n) : type_info (n) {}
+	
+	//	 dynamic cast. built by gcc
+	virtual void* dcast (const type_info &, int, void *,
+						 const type_info * = 0, void * = 0) const;
+};
+// type_info for a class with one public, nonvirtual base class.
+
+class __si_type_info : public __user_type_info {
+	const __user_type_info &base;
+	
+public:
+	__si_type_info (const char *n, const __user_type_info &b)
+			: __user_type_info (n), base (b) { }
+	
+	//	 dynamic cast. built by gcc
+	virtual void *dcast (const type_info &, int, void *,
+						 const type_info * = 0, void * = 0) const;
+};
+
+// type_info for a general class.
+
+typedef unsigned int USItype    __attribute__ ((mode (SI)));
+
+struct __class_type_info : public __user_type_info {
+	enum access { PUBLIC = 1, PROTECTED = 2, PRIVATE = 3 };
+	
+	struct base_info {
+		const __user_type_info *base;
+		USItype offset: 29;
+		bool is_virtual: 1;
+		access access1: 2;
+	};
+	
+	const base_info *base_list;
+	size_t n_bases;
+	
+	__class_type_info (const char *name, const base_info *bl, size_t bn)
+			: __user_type_info (name), base_list (bl), n_bases (bn) {}
+	
+	//	 dynamic cast. built by gcc
+	virtual void* dcast (const type_info &, int, void *,
+						 const type_info * = 0, void * = 0) const;
+};
+
+struct cp_eh_info
+{
+	struct __eh_info 
+	{
+		void* match_function;
+		short language;
+		short version;
+	};
+	__eh_info eh_info;
+	void *value;
+	void *type;
+	void (*cleanup)(void *, int);
+	bool caught;
+	cp_eh_info *next;
+	long handlers;
+	void *original_value;
+};
+
+extern "C" {
+	void __cp_push_exception( void*, void*, void(*)(void*, int) );
+	void __throw();
+}
+
+
+//##################################################################################################
+//#### exceptions ##################################################################################
+//##################################################################################################
+
+namespace CPPU_CURRENT_NAMESPACE
+{
+	
+void gcc291_netbsd_powerpc_raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cpp );
+void gcc291_netbsd_powerpc_fillUnoException( cp_eh_info*, uno_Any*, uno_Mapping * pCpp2Uno );
+
+} 
+
+
