// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1997 *
+ * Author: Juergen Pfeifer, 1997 *
****************************************************************************/
-// $Id: etip.h.in,v 1.4 1998/02/17 09:01:38 juergen Exp $
+// $Id: etip.h.in,v 1.25 2003/10/25 15:05:58 tom Exp $
-#ifndef _ETIP_H
-#define _ETIP_H
+#ifndef NCURSES_ETIP_H_incl
+#define NCURSES_ETIP_H_incl 1
// These are substituted at configure/build time
#ifndef HAVE_BUILTIN_H
#define HAVE_BUILTIN_H 0
#endif
+#ifndef HAVE_GXX_BUILTIN_H
+#define HAVE_GXX_BUILTIN_H 0
+#endif
+
+#ifndef HAVE_GPP_BUILTIN_H
+#define HAVE_GPP_BUILTIN_H 0
+#endif
+
+#ifndef HAVE_STRSTREAM_H
+#define HAVE_STRSTREAM_H 0
+#endif
+
#ifndef HAVE_TYPEINFO
#define HAVE_TYPEINFO 0
#endif
#define HAVE_VALUES_H 0
#endif
+#ifndef ETIP_NEEDS_MATH_H
+#define ETIP_NEEDS_MATH_H 0
+#endif
+
+#ifndef ETIP_NEEDS_MATH_EXCEPTION
+#define ETIP_NEEDS_MATH_EXCEPTION 0
+#endif
+
+#ifndef CPP_HAS_PARAM_INIT
+#define CPP_HAS_PARAM_INIT 0
+#endif
+
+#ifndef USE_STRSTREAM_VSCAN
+#define USE_STRSTREAM_VSCAN 0
+#endif
+
+#ifndef USE_STRSTREAM_VSCAN_CAST
+#define USE_STRSTREAM_VSCAN_CAST 0
+#endif
+
#ifdef __GNUG__
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
# if HAVE_TYPEINFO
#endif
#if defined(__GNUG__)
-# if HAVE_BUILTIN_H
+# if HAVE_BUILTIN_H || HAVE_GXX_BUILTIN_H || HAVE_GPP_BUILTIN_H
+# if ETIP_NEEDS_MATH_H
+# if ETIP_NEEDS_MATH_EXCEPTION
+# undef exception
+# define exception math_exception
+# endif
+# include <math.h>
+# endif
+# undef exception
# define exception builtin_exception
-# include <builtin.h>
+# if HAVE_GPP_BUILTIN_H
+# include <gpp/builtin.h>
+# elif HAVE_GXX_BUILTIN_H
+# include <g++/builtin.h>
+# else
+# include <builtin.h>
+# endif
# undef exception
# endif
#elif defined (__SUNPRO_CC)
# include <string.h>
#endif
+#include <ncurses_dll.h>
+
extern "C" {
#if HAVE_VALUES_H
# include <values.h>
#include <errno.h>
}
+// Language features
+#if CPP_HAS_PARAM_INIT
+#define NCURSES_PARAM_INIT(value) = value
+#else
+#define NCURSES_PARAM_INIT(value) /*nothing*/
+#endif
+
// Forward Declarations
-class NCursesPanel;
-class NCursesMenu;
-class NCursesForm;
+class NCURSES_IMPEXP NCursesPanel;
+class NCURSES_IMPEXP NCursesMenu;
+class NCURSES_IMPEXP NCursesForm;
-class NCursesException
+class NCURSES_IMPEXP NCursesException
{
public:
- int errorno;
const char *message;
+ int errorno;
NCursesException (const char* msg, int err)
: message(msg), errorno (err)
}
};
-class NCursesPanelException : public NCursesException
+class NCURSES_IMPEXP NCursesPanelException : public NCursesException
{
public:
const NCursesPanel* p;
- NCursesPanelException (const char *msg, int err) :
+ NCursesPanelException (const char *msg, int err) :
NCursesException (msg, err),
p ((NCursesPanel*)0)
{};
NCursesPanelException (const NCursesPanel* panel,
const char *msg,
- int err) :
+ int err) :
NCursesException (msg, err),
p (panel)
{};
- NCursesPanelException (int err) :
+ NCursesPanelException (int err) :
NCursesException ("panel library error", err),
p ((NCursesPanel*)0)
{};
NCursesPanelException (const NCursesPanel* panel,
- int err) :
+ int err) :
NCursesException ("panel library error", err),
p (panel)
{};
};
-class NCursesMenuException : public NCursesException
+class NCURSES_IMPEXP NCursesMenuException : public NCursesException
{
public:
const NCursesMenu* m;
- NCursesMenuException (const char *msg, int err) :
+ NCursesMenuException (const char *msg, int err) :
NCursesException (msg, err),
m ((NCursesMenu *)0)
{};
NCursesMenuException (const NCursesMenu* menu,
const char *msg,
- int err) :
+ int err) :
NCursesException (msg, err),
m (menu)
{};
- NCursesMenuException (int err) :
+ NCursesMenuException (int err) :
NCursesException ("menu library error", err),
m ((NCursesMenu *)0)
{};
NCursesMenuException (const NCursesMenu* menu,
- int err) :
+ int err) :
NCursesException ("menu library error", err),
m (menu)
{};
};
-class NCursesFormException : public NCursesException
+class NCURSES_IMPEXP NCursesFormException : public NCursesException
{
public:
const NCursesForm* f;
- NCursesFormException (const char *msg, int err) :
+ NCursesFormException (const char *msg, int err) :
NCursesException (msg, err),
f ((NCursesForm*)0)
{};
NCursesFormException (const NCursesForm* form,
const char *msg,
- int err) :
+ int err) :
NCursesException (msg, err),
f (form)
{};
- NCursesFormException (int err) :
+ NCursesFormException (int err) :
NCursesException ("form library error", err),
f ((NCursesForm*)0)
{};
NCursesFormException (const NCursesForm* form,
- int err) :
+ int err) :
NCursesException ("form library error", err),
f (form)
{};
};
-#if !(defined(__GNUG__)||defined(__SUNPRO_CC))
+#if !((defined(__GNUG__) && defined(__EXCEPTIONS)) || defined(__SUNPRO_CC))
# include <iostream.h>
extern "C" void exit(int);
#endif
inline void THROW(const NCursesException *e) {
-#if defined(__GNUG__)
+#if defined(__GNUG__) && defined(__EXCEPTIONS)
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
(*lib_error_handler)(e?e->classname():"",e?e->message:"");
#else
throw *e;
#endif
#elif defined(__SUNPRO_CC)
+# if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5)
genericerror(1, ((e != 0) ? (char *)(e->message) : ""));
+#else
+ throw *e;
+#endif
#else
if (e)
cerr << e->message << endl;
exit(0);
-#endif
+#endif
}
#define THROWS(s)
-#endif // _ETIP_H
+#endif // NCURSES_ETIP_H_incl