summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authoreschnett <eschnett@17b73243-c579-4c4c-a9d2-2d5706c11dac>2013-02-26 03:08:06 +0000
committereschnett <eschnett@17b73243-c579-4c4c-a9d2-2d5706c11dac>2013-02-26 03:08:06 +0000
commit6876767592de3e96dfe5aa24489906c1cd3b406b (patch)
treeae92b4b8027b7f34439dda98c0150bc314104964 /src/include
parent3f9e2a8886b5ad2534971f4fe0a9438de857c9cc (diff)
Implement CCTK_Error and friends
git-svn-id: http://svn.cactuscode.org/flesh/trunk@4963 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/include')
-rw-r--r--src/include/CommOverloadables.h10
-rw-r--r--src/include/IOOverloadables.h6
-rw-r--r--src/include/MainOverloadables.h6
-rw-r--r--src/include/OverloadMacros.h4
-rw-r--r--src/include/cctk_WarnLevel.h30
-rw-r--r--src/include/cctk_core.h9
6 files changed, 44 insertions, 21 deletions
diff --git a/src/include/CommOverloadables.h b/src/include/CommOverloadables.h
index 361d166f..9f95c1dd 100644
--- a/src/include/CommOverloadables.h
+++ b/src/include/CommOverloadables.h
@@ -40,9 +40,14 @@
#undef RETURN_TYPE
#endif
+#ifdef ATTRIBUTES
+#undef ATTRIBUTES
+#endif
+
#define RETURN_TYPE int
#define ARGUMENTS const cGH *GH, const char *group
#define USE_ARGUMENTS GH = GH; group = group;
+#define ATTRIBUTES
OVERLOADABLE(SyncGroup)
OVERLOADABLE(EnableGroupStorage)
@@ -77,6 +82,8 @@ OVERLOADABLE(ParallelInit)
#define USE_ARGUMENTS GH = GH; retval = retval;
#undef RETURN_TYPE
#define RETURN_TYPE int
+#undef ATTRIBUTES
+#define ATTRIBUTES CCTK_ATTRIBUTE_NORETURN
OVERLOADABLE(Exit)
OVERLOADABLE(Abort)
@@ -86,6 +93,8 @@ OVERLOADABLE(Abort)
#define USE_ARGUMENTS config = config; convergence_level = convergence_level;
#undef RETURN_TYPE
#define RETURN_TYPE cGH *
+#undef ATTRIBUTES
+#define ATTRIBUTES
OVERLOADABLE(SetupGH)
#undef ARGUMENTS
@@ -159,6 +168,7 @@ OVERLOADABLE(InterpGridArrays)
#undef ARGUMENTS
#undef USE_ARGUMENTS
#undef RETURN_TYPE
+#undef ATTRIBUTES
#undef OVERLOADABLE_CALL
#undef OVERLOADABLE_PREFIX
diff --git a/src/include/IOOverloadables.h b/src/include/IOOverloadables.h
index 2b0a50de..030a8c21 100644
--- a/src/include/IOOverloadables.h
+++ b/src/include/IOOverloadables.h
@@ -37,9 +37,14 @@
#undef RETURN_TYPE
#endif
+#ifdef ATTRIBUTES
+#undef ATTRIBUTES
+#endif
+
#define ARGUMENTS const cGH *GH
#define USE_ARGUMENTS GH = GH;
#define RETURN_TYPE int
+#define ATTRIBUTES
OVERLOADABLE(OutputGH)
#undef ARGUMENTS
@@ -54,6 +59,7 @@ OVERLOADABLE(OutputVarAsByMethod)
#undef ARGUMENTS
#undef USE_ARGUMENTS
#undef RETURN_TYPE
+#undef ATTRIBUTES
#undef OVERLOADABLE_CALL
#undef OVERLOADABLE_PREFIX
diff --git a/src/include/MainOverloadables.h b/src/include/MainOverloadables.h
index f112ece0..fef0307d 100644
--- a/src/include/MainOverloadables.h
+++ b/src/include/MainOverloadables.h
@@ -38,9 +38,14 @@
#undef RETURN_TYPE
#endif
+#ifdef ATTRIBUTES
+#undef ATTRIBUTES
+#endif
+
#define ARGUMENTS tFleshConfig *config
#define USE_ARGUMENTS config = config
#define RETURN_TYPE int
+#define ATTRIBUTES
OVERLOADABLE(Initialise)
OVERLOADABLE(Evolve)
@@ -67,6 +72,7 @@ OVERLOADABLE(SetMainLoopIndex)
#undef ARGUMENTS
#undef USE_ARGUMENTS
#undef RETURN_TYPE
+#undef ATTRIBUTES
#undef OVERLOADABLE_CALL
#undef OVERLOADABLE_PREFIX
diff --git a/src/include/OverloadMacros.h b/src/include/OverloadMacros.h
index 973c94c3..e967bb79 100644
--- a/src/include/OverloadMacros.h
+++ b/src/include/OverloadMacros.h
@@ -77,7 +77,7 @@ int call##Overload##name(RETURN_TYPE (*func)(ARGUMENTS)) \
#define _OVERLOADABLE_PROTOTYPE(prefix, dummy_prefix, name) __OVERLOADABLE_PROTOTYPE(prefix, dummy_prefix, name)
#define __OVERLOADABLE_PROTOTYPE(prefix, dummy_prefix, name) \
-extern RETURN_TYPE (*prefix##name)(ARGUMENTS);
+extern RETURN_TYPE (*prefix##name)(ARGUMENTS) ATTRIBUTES;
/* This macro defines a dummy function */
#define OVERLOADABLE_DUMMY(name) _OVERLOADABLE_DUMMY(OVERLOADABLE_PREFIX, OVERLOADABLE_DUMMY_PREFIX, name)
@@ -97,7 +97,7 @@ RETURN_TYPE dummy_prefix##name(ARGUMENTS) \
#define _OVERLOADABLE_DUMMYPROTOTYPE(prefix, dummy_prefix, name) __OVERLOADABLE_DUMMYPROTOTYPE(prefix, dummy_prefix, name)
#define __OVERLOADABLE_DUMMYPROTOTYPE(prefix, dummy_prefix, name) \
-RETURN_TYPE dummy_prefix##name(ARGUMENTS);
+RETURN_TYPE dummy_prefix##name(ARGUMENTS) ATTRIBUTES;
/* This macro initialises the function to the dummy if it
diff --git a/src/include/cctk_WarnLevel.h b/src/include/cctk_WarnLevel.h
index fed8bbad..a2a7b531 100644
--- a/src/include/cctk_WarnLevel.h
+++ b/src/include/cctk_WarnLevel.h
@@ -11,6 +11,8 @@
#ifndef _CCTK_WARNLEVEL_H_
#define _CCTK_WARNLEVEL_H_
+#include <cctk_Config.h>
+
#ifdef CCODE
#ifdef __cplusplus
@@ -28,24 +30,28 @@ int CCTK_VWarn(int level,
const char *file,
const char *thorn,
const char *format, ...)
-#ifdef __GNUC__
-__attribute__ ((format (printf, 5, 6)))
-#endif
-;
+ CCTK_ATTRIBUTE_FORMAT(printf, 5, 6);
+
+void CCTK_Error(int line,
+ const char *file,
+ const char *thorn,
+ const char *message)
+ CCTK_ATTRIBUTE_NORETURN;
+
+void CCTK_VError(int line,
+ const char *file,
+ const char *thorn,
+ const char *format, ...)
+ CCTK_ATTRIBUTE_FORMAT(printf, 4, 5)
+ CCTK_ATTRIBUTE_NORETURN;
int CCTK_VParamWarn (const char *thorn,
const char *format,
...)
-#ifdef __GNUC__
-__attribute__ ((format (printf, 2, 3)))
-#endif
-;
+ CCTK_ATTRIBUTE_FORMAT(printf, 2, 3);
int CCTK_ParamWarn(const char *thorn, const char *message);
int CCTK_Info(const char *thorn, const char *message);
int CCTK_VInfo(const char *thorn, const char *format, ...)
-#ifdef __GNUC__
-__attribute__ ((format (printf, 2, 3)))
-#endif
-;
+ CCTK_ATTRIBUTE_FORMAT(printf, 2, 3);
/* prototypes for warn/info callback routines */
diff --git a/src/include/cctk_core.h b/src/include/cctk_core.h
index cebc6c96..1878b4e8 100644
--- a/src/include/cctk_core.h
+++ b/src/include/cctk_core.h
@@ -66,6 +66,7 @@ cctk_ash1,cctk_ash2,cctk_ash3
CCTK_DECLARE(INTEGER,cctk_ash3,)&&
#define CCTK_WARN(a,b) CCTK_Warn(a,__LINE__,__FORTRANFILE__,CCTK_THORNSTRING,b)
+#define CCTK_ERROR(b) CCTK_Error(__LINE__,__FORTRANFILE__,CCTK_THORNSTRING,b)
#define CCTK_CoordRegisterSystem(a,b,c) CCTKi_CoordRegisterSystem(a,b,CCTK_THORNSTRING,c)
@@ -346,6 +347,7 @@ static inline int CCTK_VECTGFINDEX4D (const cGH *restrict cctkGH,
#define CCTK_DELTA_TIME (cctk_delta_time/cctk_timefac)
#define CCTK_WARN(a,b) CCTK_Warn(a,__LINE__,__FILE__,CCTK_THORNSTRING,b)
+#define CCTK_ERROR(b) CCTK_Error(__LINE__,__FILE__,CCTK_THORNSTRING,b)
#define CCTK_MALLOC(s) CCTKi_Malloc(s,__LINE__,__FILE__)
#define CCTK_FREE(p) CCTKi_Free(p)
@@ -355,11 +357,4 @@ static inline int CCTK_VECTGFINDEX4D (const cGH *restrict cctkGH,
#define CCTK_INFO(a) CCTK_Info(CCTK_THORNSTRING,(a))
#define CCTK_PARAMWARN(a) CCTK_ParamWarn(CCTK_THORNSTRING,(a))
-/*
-#define CCTK_MAKESTRING(x) CCTK_REALSTRING(x)
-#define CCTK_REALSTRING(x) #x
-#define CCTK_WARN(a,b) CCTK_Warn(a,CCTK_MAKESTRING(CCTK_THORN),b,__LINE__,__FILE__)
-*/
-
-
#endif