aboutsummaryrefslogtreecommitdiff
path: root/src/Ell_Register.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ell_Register.c')
-rw-r--r--src/Ell_Register.c57
1 files changed, 43 insertions, 14 deletions
diff --git a/src/Ell_Register.c b/src/Ell_Register.c
index ee233b7..d296c6d 100644
--- a/src/Ell_Register.c
+++ b/src/Ell_Register.c
@@ -32,6 +32,7 @@ int Ell_RegisterEq(void *(function)(const char *, void*), const char *eqname)
DECLARE_CCTK_PARAMETERS
+ int retval = ELL_FAILURE;
/* Register if function not already there with this name */
if (!GetNamedData(EqNameDB, eqname))
@@ -47,6 +48,7 @@ int Ell_RegisterEq(void *(function)(const char *, void*), const char *eqname)
CCTK_INFO(msg);
free(msg);
}
+ retval = ELL_SUCCESS;
}
else
{
@@ -62,10 +64,13 @@ int Ell_RegisterEq(void *(function)(const char *, void*), const char *eqname)
char *msg;
msg = (char *)malloc( (200+strlen(eqname))*sizeof(char) );
sprintf(msg,"Elliptic class %s already registered",eqname);
- CCTK_INFO(msg);
+ CCTK_WARN(0,msg);
free(msg);
+ retval = ELL_CLASSEXISTS;
}
+ return retval;
+
}
/* Ell_RegisterSolver takes a routine ("function") and registers that
@@ -86,34 +91,58 @@ int Ell_RegisterSolver(void (*function),
DECLARE_CCTK_PARAMETERS
- int retval;
- void (*fn)(void *, const char *);
+ int retval=ELL_FAILURE;
+ int ierr;
+ int (*fn)(void *, const char *);
- fn = (void(*)(void (*function), const char *sname))
+ fn = (int(*)(void (*function), const char *sname))
GetNamedData(EqNameDB, eqname);
if (fn)
{
- fn(function,sname);
+ ierr = fn(function,sname);
- if CCTK_EQUALS(elliptic_verbose,"yes")
+ if (ierr==ELL_SUCCESS)
+ {
+
+ if CCTK_EQUALS(elliptic_verbose,"yes")
+ {
+ char *msg;
+ msg = (char *)malloc((200+strlen(eqname)+strlen(sname))*sizeof(char));
+ sprintf(msg,"Registered elliptic solver %s for %s",sname,eqname);
+ CCTK_INFO(msg);
+ free(msg);
+ }
+
+ retval = ELL_SUCCESS;
+ }
+ else if (ierr==ELL_SOLVEREXISTS)
{
char *msg;
- msg = (char *)malloc( (200+strlen(eqname)+strlen(sname))*sizeof(char) );
- sprintf(msg,"Registered elliptic solver %s for %s",sname,eqname);
- CCTK_INFO(msg);
+ msg = (char *)malloc((200+strlen(eqname)+strlen(sname))*sizeof(char));
+ sprintf(msg,"Registered second solver %s for %s",sname,eqname);
+ CCTK_WARN(0,msg);
+ free(msg);
+
+ retval = ELL_SOLVEREXISTS;
+ }
+ else
+ {
+ char *msg;
+ msg = (char *)malloc((200+strlen(eqname)+strlen(sname))*sizeof(char));
+ sprintf(msg,"Failed to register solver %s for %s",sname,eqname);
+ CCTK_WARN(1,msg);
free(msg);
}
- retval = ELL_SUCCESS;
}
else
{
- CCTK_WARN(0,"Cannot get function in EqName");
- retval = ELL_NOCLASS;
+ CCTK_WARN(0,"Cannot get function in EqName");
+ retval = ELL_NOCLASS;
}
-
- return retval;
+
+ return retval;
}