Index: sfi/sfiwrapper.cc
===================================================================
--- sfi/sfiwrapper.cc	(revision 4356)
+++ sfi/sfiwrapper.cc	(working copy)
@@ -15,7 +15,6 @@
  * with this library; if not, see http://www.gnu.org/copyleft/.
  */
 #include "sfiwrapper.h"
-#undef BIRNET__RUNTIME_PROBLEM
 #include <birnet/birnet.hh>
 #include <errno.h>
 
Index: sfi/ChangeLog
===================================================================
--- sfi/ChangeLog	(revision 4356)
+++ sfi/ChangeLog	(working copy)
@@ -1,3 +1,14 @@
+Thu Jul 12 23:56:34 2007  Stefan Westerfeld  <stefan@space.twc.de>
+
+	* sfiwrapper.h: When compiled in C++ sources, use [u]int16/32/...
+	typedefs from Birnet instead of providing own typedefs. This allows
+	using these types in C++ sources which are using namespace Birnet.
+	Fixes #456408.
+
+	* sfiwrapper.cc: There doesn't seem to be any need to #undef
+	BIRNET__RUNTIME_PROBLEM, but it causes problems with the changed
+	header, so I removed it.
+
 Mon Apr 16 13:51:51 2007  Stefan Westerfeld  <stefan@space.twc.de>
 
 	* sfidl-*[hc]: Refactored some code in order to remove unneccessary
Index: sfi/sfiwrapper.h
===================================================================
--- sfi/sfiwrapper.h	(revision 4356)
+++ sfi/sfiwrapper.h	(working copy)
@@ -26,9 +26,19 @@
  * provided by libbirnet.
  */
 
-BIRNET_EXTERN_C_BEGIN();
-
 /* --- short integer types --- */
+#ifdef __cplusplus
+#include <birnet/birnetutils.hh>
+using Birnet::uint8;
+using Birnet::uint16;
+using Birnet::uint32;
+using Birnet::uint64;
+using Birnet::int8;
+using Birnet::int16;
+using Birnet::int32;
+using Birnet::int64;
+using Birnet::unichar;
+#else
 typedef BirnetUInt8   uint8;
 typedef BirnetUInt16  uint16;
 typedef BirnetUInt32  uint32;
@@ -38,6 +48,9 @@ typedef BirnetInt16   int16;
 typedef BirnetInt32   int32;
 typedef BirnetInt64   int64;
 typedef BirnetUnichar unichar;
+#endif
+
+BIRNET_EXTERN_C_BEGIN();
 
 /* --- initialization --- */
 typedef struct
