summaryrefslogtreecommitdiff
path: root/src/main/ActiveThorns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/ActiveThorns.c')
-rw-r--r--src/main/ActiveThorns.c65
1 files changed, 64 insertions, 1 deletions
diff --git a/src/main/ActiveThorns.c b/src/main/ActiveThorns.c
index 82707906..08eab08a 100644
--- a/src/main/ActiveThorns.c
+++ b/src/main/ActiveThorns.c
@@ -17,6 +17,7 @@
#include "cctk_Flesh.h"
#include "cctk_Config.h"
#include "cctk_ActiveThorns.h"
+#include "cctki_ActiveThorns.h"
#include "cctk_FortranString.h"
static const char *rcsid = "$Header$";
@@ -100,14 +101,76 @@ static int n_imps = 0;
-4 - failed to store thorn in tree
@endreturndesc
@@*/
-int CCTKi_RegisterThorn(const char *name, const char *imp)
+int CCTKi_RegisterThorn(const struct iAttributeList *attributes)
{
int retval;
+ int i,j;
+
t_sktree *node;
t_sktree *temp;
struct THORN *thorn;
+ const char *name;
+ const char *imp;
+
+#if 0
+ for(i=0; attributes[i].attribute; i++)
+ {
+ if(!strcmp(attributes[i].attribute, "functions"))
+ {
+ printf("Functions: \n");
+ for(j=0; attributes[i].AttributeData.FuncList[j].keyword; j++)
+ {
+ printf("keyword is %s\n", attributes[i].AttributeData.FuncList[j].keyword);
+ printf("signature is %s\n", attributes[i].AttributeData.FuncList[j].signature);
+ printf("pointer is %p\n", attributes[i].AttributeData.FuncList[j].func);
+ }
+ }
+ else
+ {
+ printf("attribute is %s\n", attributes[i].attribute);
+ if(attributes[i].AttributeData.StringList)
+ {
+ for(j=0; attributes[i].AttributeData.StringList[j]; j++)
+ {
+ printf(" datapoint %s\n", attributes[i].AttributeData.StringList[j]);
+ }
+ }
+ }
+ }
+#endif /* 0 */
+
+ for(i=0; attributes[i].attribute; i++)
+ {
+ if(!strcmp(attributes[i].attribute, "name"))
+ {
+ if(attributes[i].AttributeData.StringList)
+ {
+ name = attributes[i].AttributeData.StringList[0];
+ }
+ }
+ else if(!strcmp(attributes[i].attribute, "implementation"))
+ {
+ if(attributes[i].AttributeData.StringList)
+ {
+ imp = attributes[i].AttributeData.StringList[0];
+ }
+ }
+ else if(!strcmp(attributes[i].attribute, "ancestors"))
+ {
+ ;
+ }
+ else if(!strcmp(attributes[i].attribute, "friends"))
+ {
+ ;
+ }
+ else
+ {
+ fprintf(stderr, "Unknown/unimplemented thorn attribute %s\n", attributes[i].attribute);
+ }
+ }
+
/* printf("Registering thorn %s, which provides %s\n", name, imp);*/
/* Does the thorn already exist ? */