epoc32/include/stdapis/stlportv5/exception
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
--- a/epoc32/include/stdapis/stlportv5/exception	Wed Mar 31 12:27:01 2010 +0100
+++ b/epoc32/include/stdapis/stlportv5/exception	Wed Mar 31 12:33:34 2010 +0100
@@ -1,229 +1,116 @@
 /*
- * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Copyright (c) 1999 
- * Boris Fomitchev
+ * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(- *   * ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
  *
- * This material is provided "as is", with absolutely no warranty expressed
- * or implied. Any use is at your own risk.
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
  *
- * Permission to use or copy this software for any purpose is hereby granted 
- * without fee, provided the above notices are retained on all copies.
- * Permission to modify the code and to distribute modified code is granted,
- * provided the above notices are retained, and a notice that the code was
- * modified is included with the above copyright notice.
+ * Contributors:
+ *
+ * Description:
+ * Name       : exception
+ * Part of    : standard c++ library.
  *
  */
 
-// This header exists solely for portability.  Normally it just includes
-// the native header <exception>.
 
-// The header <exception> contains low-level functions that interact
-// with a compiler's exception-handling mechanism.  It is assumed to
-// be supplied with the compiler, rather than with the library, because
-// it is inherently tied very closely to the compiler itself.
-
-// On platforms where <exception> does not exist, this header defines
-// an exception base class.  This is *not* a substitute for everything
-// in <exception>, but it suffices to support a bare minimum of STL
-// functionality.
-
-
-# if !defined (_STLP_OUTERMOST_HEADER_ID)
-#  define _STLP_OUTERMOST_HEADER_ID 0x423
-#  include <stl/_prolog.h>
-# elif (_STLP_OUTERMOST_HEADER_ID == 0x423) && ! defined (_STLP_DONT_POP_0x423)
-#  define _STLP_DONT_POP_0x423
-# endif
-
-#ifndef _STLP_EXCEPTION
-#define _STLP_EXCEPTION
-
-# if   ! defined (_STLP_NO_EXCEPTION_HEADER)
-
-#  if defined ( _UNCAUGHT_EXCEPTION )
-#   undef _STLP_INCOMPLETE_EXCEPTION_HEADER
-#  endif
-
-# if defined(_STLP_BROKEN_EXCEPTION_CLASS)
-#  define exception     _STLP_NULLIFIED_BROKEN_EXCEPTION_CLASS
-#  define bad_exception _STLP_NULLIFIED_BROKEN_BAD_EXCEPTION_CLASS
-#  if defined (_STLP_NO_NEW_NEW_HEADER)
-#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception.h)
-#  else
-#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception)
-#  endif
-#  undef exception
-#  undef bad_exception
-# else
-
-#ifndef _STLP_NO_NEW_NEW_HEADER
-#define _STLP_NO_NEW_NEW_HEADER
-#endif
-
-# if defined (_STLP_NO_NEW_NEW_HEADER)
-#  include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception.h)
-# else
-#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception)
-# endif
-
-# endif
-
-#    if defined (_STLP_MSVC) || defined (__ICL)
-// dwa 02/04/00 - here I'm assuming that __ICL uses the same library headers as vc6.
-// the header <yvals.h> which ships with vc6 and is included by its native <exception>
-// actually turns on warnings, so we have to turn them back off.
-#      include <config/_msvc_warnings_off.h>
-#    endif
 
 
-#  ifdef _STLP_USE_OWN_NAMESPACE
-
-_STLP_BEGIN_NAMESPACE
-
-#if !defined(_STLP_BROKEN_EXCEPTION_CLASS)
-using _STLP_VENDOR_EXCEPT_STD::exception;
-using _STLP_VENDOR_EXCEPT_STD::bad_exception;
-#endif
-
-# if ! defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS)
-
-// fbp : many platforms present strange mix of
-// those in various namespaces
-#  if !defined(_STLP_VENDOR_UNEXPECTED_STD)
-#   define _STLP_VENDOR_UNEXPECTED_STD _STLP_VENDOR_EXCEPT_STD
-#  endif
-
-// weird errors
-# if (! defined (__BORLANDC__)) || (defined (__STD_EXCEPTION) && defined (__RWSTD_EXCEPTION_SEEN) && defined ( _STLP_DONT_POP_0x423))
-using _STLP_VENDOR_UNEXPECTED_STD::unexpected;
-using _STLP_VENDOR_UNEXPECTED_STD::unexpected_handler;
-using _STLP_VENDOR_UNEXPECTED_STD::set_unexpected;
-using _STLP_VENDOR_UNEXPECTED_STD::terminate;
-using _STLP_VENDOR_UNEXPECTED_STD::terminate_handler;
-using _STLP_VENDOR_UNEXPECTED_STD::set_terminate;
-# endif
-
-# if !defined (_STLP_INCOMPLETE_EXCEPTION_HEADER) 
-using _STLP_VENDOR_UNEXPECTED_STD::uncaught_exception;
-# endif
-
-#  endif
+#ifndef _SYMCPP_EXCEPTION_H_
+#define _SYMCPP_EXCEPTION_H_
 
-_STLP_END_NAMESPACE
-
-#  endif /* _STLP_OWN_NAMESPACE */
-
-#else /* _STLP_NO_EXCEPTION_HEADER */
-
-// fbp : absence of <exception> usually means that those
-// functions are not going to be called by compiler.
-// Still, define them for the user.
-#ifdef __SYMBIAN32__
-_STLP_BEGIN_NAMESPACE
-#endif //__SYMBIAN32__
-typedef void (*unexpected_handler)();
-unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY;
-void unexpected();
-
-typedef void (*terminate_handler)();
-terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY;
-void terminate();
-
-bool uncaught_exception(); // not implemented under mpw as of Jan/1999
-
-#ifdef __SYMBIAN32__
-_STLP_END_NAMESPACE
-#endif //__SYMBIAN32__
-
-#endif  /* _STLP_NO_EXCEPTION_HEADER */	
-
-# if   defined (_STLP_NO_EXCEPTION_HEADER) || defined(_STLP_BROKEN_EXCEPTION_CLASS)
-# ifndef _STLP_EXCEPTION_H
-#  define _STLP_EXCEPTION_H
-
-_STLP_BEGIN_NAMESPACE
+#ifdef __EABI__
+/* EABI specific definitions */
+#include <e32def.h>
+namespace std
+{
+    class exception
+        {
+    public:
+        IMPORT_C exception() __NO_THROW;
+        IMPORT_C exception(const exception&) __NO_THROW;
+        IMPORT_C exception& operator=(const exception&) __NO_THROW;
+        IMPORT_C virtual ~exception() __NO_THROW;
+        IMPORT_C virtual const char* what() const __NO_THROW;
+        };
 
-// section 18.6.1
-#ifdef __SYMBIAN32__
-class exception
-#else
-class _STLP_CLASS_DECLSPEC exception 
-#endif
-	{
-	public:
-# ifdef _STLP_OWN_IOSTREAMS
-        _STLP_DECLSPEC exception() _STLP_NOTHROW;
-        _STLP_DECLSPEC virtual ~exception() _STLP_NOTHROW;
-	_STLP_DECLSPEC virtual const char* what() const _STLP_NOTHROW;
-# else
-        exception() _STLP_NOTHROW {}
-		virtual ~exception() _STLP_NOTHROW {}
-		virtual const char* what() const _STLP_NOTHROW {return "class exception";}
-# endif
-	};
-	
-	
+    class bad_exception : public exception
+        {
+    public:
+        IMPORT_C bad_exception() __NO_THROW;
+        IMPORT_C bad_exception(const bad_exception&)  __NO_THROW;
+        IMPORT_C bad_exception& operator=(const bad_exception&)  __NO_THROW;
+        IMPORT_C virtual ~bad_exception()  __NO_THROW;
+        IMPORT_C virtual const char* what() const  __NO_THROW;
+        };
 
-// section 18.6.2.1
-#ifdef __SYMBIAN32__
-class bad_exception : public exception 
-#else
-class _STLP_CLASS_DECLSPEC bad_exception : public exception 
-#endif
-	{
-	public:
-# ifdef _STLP_OWN_IOSTREAMS
-	  _STLP_DECLSPEC bad_exception() _STLP_NOTHROW;
-	  _STLP_DECLSPEC ~bad_exception() _STLP_NOTHROW;
-	  _STLP_DECLSPEC const char* what() const _STLP_NOTHROW;
-# else
-	  bad_exception() _STLP_NOTHROW {}
-	  ~bad_exception() _STLP_NOTHROW {}
-	  const char* what() const _STLP_NOTHROW {return "class bad_exception";}
-# endif
-	};
+    typedef void (*unexpected_handler)();
 
-#ifdef __SYMBIAN32__
-// Give forward declaration, this should be supported by the stdard libraries from platform vendor.
-typedef void (*unexpected_handler)();
-_STLP_DECLSPEC unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY;
-_STLP_DECLSPEC void unexpected();
+    IMPORT_C unexpected_handler set_unexpected(unexpected_handler)  __NO_THROW;
+    IMPORT_C void unexpected();
 
-typedef void (*terminate_handler)();
-_STLP_DECLSPEC terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY;
-_STLP_DECLSPEC void terminate();
-
-_STLP_DECLSPEC bool uncaught_exception(); // not implemented under mpw as of Jan/1999
-
-#endif
-_STLP_END_NAMESPACE
-
-#endif /* _STLP_NO_EXCEPTION_HEADER */
+    typedef void (*terminate_handler)();
 
-_STLP_BEGIN_NAMESPACE
-// forward declaration
-class __Named_exception;
-_STLP_END_NAMESPACE
-#endif /* _STLP_EXCEPTION_H */
-
-#endif //_STLP_EXCEPTION
+    IMPORT_C terminate_handler set_terminate(terminate_handler)  __NO_THROW;
+    IMPORT_C void terminate();
 
-# if (_STLP_OUTERMOST_HEADER_ID == 0x423)
-#  if ! defined (_STLP_DONT_POP_0x423)
-#   include <stl/_epilog.h>
-#   undef  _STLP_OUTERMOST_HEADER_ID
-#   endif
-#   undef  _STLP_DONT_POP_0x423
-# endif
-
-
-// Local Variables:
-// mode:C++
-// End:
+    IMPORT_C extern bool uncaught_exception()  __NO_THROW;
+} 
 
 
 
+#  else
+
+/* Declarations common to all other platforms (Non-EABI) here.
+ * WINSCW specific definitions are in exception_winscw.h
+ */
+#    include <e32def.h>
+
+namespace std {
+
+  class exception {
+  public:
+	  exception() __NO_THROW;
+	  exception(const exception&) __NO_THROW;
+      exception& operator=(const exception&) __NO_THROW;
+      virtual ~exception() __NO_THROW;
+      virtual const char* what() const __NO_THROW;
+  };
+
+  class bad_exception : public exception {
+  public:
+      bad_exception() __NO_THROW; 
+      bad_exception(const bad_exception&) __NO_THROW; 
+      bad_exception& operator=(const bad_exception&) __NO_THROW;
+      virtual ~bad_exception() __NO_THROW;
+      virtual const char* what() const __NO_THROW;
+  };
+
+  typedef void (*terminate_handler)();
+  extern terminate_handler set_terminate(terminate_handler) __NO_THROW;
+
+  typedef void (*unexpected_handler)();
+  extern unexpected_handler set_unexpected(unexpected_handler) __NO_THROW;
+
+  void terminate();
+  void unexpected();
+  bool uncaught_exception() __NO_THROW;
+
+}
+
+#    ifdef __WINSCW__
+/*
+ * C++ Exception specific stuff required from the CW runtime.
+ * Certain functions are implemented inline in CW headers.
+ * We're providing the same in exception_winscw.h
+ */
+#      include <stdapis/stlportv5/exception_winscw.h>
+#    endif //__WINSCW__
+
+#endif // __EABI__
+#endif //_SYMCPP_EXCEPTION_
+