00001
00002
00003
00004
00005 #define DLMAIN
00006
00007 #include <stdlib.h>
00008 #include "gridlabd.h"
00009
00010
00011 #include "tape.h"
00012 extern "C" VARMAP varmap[];
00013
00014 CDECL EXPORT int setvar(char *varname, char *value)
00015 {
00016 VARMAP *p;
00017
00018 for (p=varmap; p->name!=NULL; p++)
00019 {
00020 if (strcmp(p->name,varname)==0)
00021 {
00022 if (p->type==VT_INTEGER)
00023 {
00024 int64 v = atoi64(value);
00025 if (v>=(int64)p->min && v<=(int64)p->max)
00026 { *(int64*)(p->addr) = v; return 1;}
00027 else return 0;
00028 }
00029 else if (p->type==VT_DOUBLE)
00030 {
00031 double v = atof(value);
00032 if (v>=p->min && v<=p->max)
00033 { *(double*)(p->addr) = v; return 1;}
00034 else return 0;
00035 }
00036 else if (p->type==VT_STRING)
00037 {
00038 strncpy((char*)(p->addr),value,(unsigned)p->min-1);
00039 return 1;
00040 }
00041 }
00042 }
00043 return 0;
00044 }
00045