git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@12093 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -139,6 +139,8 @@ void Variable::set(int narg, char **arg)
|
|||||||
{
|
{
|
||||||
if (narg < 2) error->all(FLERR,"Illegal variable command");
|
if (narg < 2) error->all(FLERR,"Illegal variable command");
|
||||||
|
|
||||||
|
int replaceflag = 0;
|
||||||
|
|
||||||
// DELETE
|
// DELETE
|
||||||
// doesn't matter if variable no longer exists
|
// doesn't matter if variable no longer exists
|
||||||
|
|
||||||
@ -262,17 +264,20 @@ void Variable::set(int narg, char **arg)
|
|||||||
"All universe/uloop variables must have same # of values");
|
"All universe/uloop variables must have same # of values");
|
||||||
|
|
||||||
// STRING
|
// STRING
|
||||||
// remove pre-existing var if also style STRING (allows it to be reset)
|
// replace pre-existing var if also style STRING (allows it to be reset)
|
||||||
// num = 1, which = 1st value
|
// num = 1, which = 1st value
|
||||||
// data = 1 value, string to eval
|
// data = 1 value, string to eval
|
||||||
|
|
||||||
} else if (strcmp(arg[1],"string") == 0) {
|
} else if (strcmp(arg[1],"string") == 0) {
|
||||||
if (narg != 3) error->all(FLERR,"Illegal variable command");
|
if (narg != 3) error->all(FLERR,"Illegal variable command");
|
||||||
if (find(arg[0]) >= 0) {
|
int ivar = find(arg[0]);
|
||||||
if (style[find(arg[0])] != STRING)
|
if (ivar >= 0) {
|
||||||
|
if (style[ivar] != STRING)
|
||||||
error->all(FLERR,"Cannot redefine variable as a different style");
|
error->all(FLERR,"Cannot redefine variable as a different style");
|
||||||
remove(find(arg[0]));
|
delete [] data[ivar][0];
|
||||||
}
|
copy(1,&arg[2],data[ivar]);
|
||||||
|
replaceflag = 1;
|
||||||
|
} else {
|
||||||
if (nvar == maxvar) grow();
|
if (nvar == maxvar) grow();
|
||||||
style[nvar] = STRING;
|
style[nvar] = STRING;
|
||||||
num[nvar] = 1;
|
num[nvar] = 1;
|
||||||
@ -280,6 +285,7 @@ void Variable::set(int narg, char **arg)
|
|||||||
pad[nvar] = 0;
|
pad[nvar] = 0;
|
||||||
data[nvar] = new char*[num[nvar]];
|
data[nvar] = new char*[num[nvar]];
|
||||||
copy(1,&arg[2],data[nvar]);
|
copy(1,&arg[2],data[nvar]);
|
||||||
|
}
|
||||||
|
|
||||||
// GETENV
|
// GETENV
|
||||||
// remove pre-existing var if also style GETENV (allows it to be reset)
|
// remove pre-existing var if also style GETENV (allows it to be reset)
|
||||||
@ -357,17 +363,22 @@ void Variable::set(int narg, char **arg)
|
|||||||
data[nvar][2] = NULL;
|
data[nvar][2] = NULL;
|
||||||
|
|
||||||
// EQUAL
|
// EQUAL
|
||||||
// remove pre-existing var if also style EQUAL (allows it to be reset)
|
// replace pre-existing var if also style EQUAL (allows it to be reset)
|
||||||
// num = 2, which = 1st value
|
// num = 2, which = 1st value
|
||||||
// data = 2 values, 1st is string to eval, 2nd is filled on retrieval
|
// data = 2 values, 1st is string to eval, 2nd is filled on retrieval
|
||||||
|
|
||||||
} else if (strcmp(arg[1],"equal") == 0) {
|
} else if (strcmp(arg[1],"equal") == 0) {
|
||||||
if (narg != 3) error->all(FLERR,"Illegal variable command");
|
if (narg != 3) error->all(FLERR,"Illegal variable command");
|
||||||
if (find(arg[0]) >= 0) {
|
int ivar = find(arg[0]);
|
||||||
if (style[find(arg[0])] != EQUAL)
|
if (ivar >= 0) {
|
||||||
|
if (style[ivar] != EQUAL)
|
||||||
error->all(FLERR,"Cannot redefine variable as a different style");
|
error->all(FLERR,"Cannot redefine variable as a different style");
|
||||||
remove(find(arg[0]));
|
delete [] data[ivar][0];
|
||||||
}
|
if (data[ivar][1]) delete [] data[ivar][1];
|
||||||
|
copy(1,&arg[2],data[ivar]);
|
||||||
|
data[ivar][1] = NULL;
|
||||||
|
replaceflag = 1;
|
||||||
|
} else {
|
||||||
if (nvar == maxvar) grow();
|
if (nvar == maxvar) grow();
|
||||||
style[nvar] = EQUAL;
|
style[nvar] = EQUAL;
|
||||||
num[nvar] = 2;
|
num[nvar] = 2;
|
||||||
@ -376,19 +387,23 @@ void Variable::set(int narg, char **arg)
|
|||||||
data[nvar] = new char*[num[nvar]];
|
data[nvar] = new char*[num[nvar]];
|
||||||
copy(1,&arg[2],data[nvar]);
|
copy(1,&arg[2],data[nvar]);
|
||||||
data[nvar][1] = NULL;
|
data[nvar][1] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// ATOM
|
// ATOM
|
||||||
// remove pre-existing var if also style ATOM (allows it to be reset)
|
// replace pre-existing var if also style ATOM (allows it to be reset)
|
||||||
// num = 1, which = 1st value
|
// num = 1, which = 1st value
|
||||||
// data = 1 value, string to eval
|
// data = 1 value, string to eval
|
||||||
|
|
||||||
} else if (strcmp(arg[1],"atom") == 0) {
|
} else if (strcmp(arg[1],"atom") == 0) {
|
||||||
if (narg != 3) error->all(FLERR,"Illegal variable command");
|
if (narg != 3) error->all(FLERR,"Illegal variable command");
|
||||||
if (find(arg[0]) >= 0) {
|
int ivar = find(arg[0]);
|
||||||
if (style[find(arg[0])] != ATOM)
|
if (ivar >= 0) {
|
||||||
|
if (style[ivar] != ATOM)
|
||||||
error->all(FLERR,"Cannot redefine variable as a different style");
|
error->all(FLERR,"Cannot redefine variable as a different style");
|
||||||
remove(find(arg[0]));
|
delete [] data[ivar][0];
|
||||||
}
|
copy(1,&arg[2],data[ivar]);
|
||||||
|
replaceflag = 1;
|
||||||
|
} else {
|
||||||
if (nvar == maxvar) grow();
|
if (nvar == maxvar) grow();
|
||||||
style[nvar] = ATOM;
|
style[nvar] = ATOM;
|
||||||
num[nvar] = 1;
|
num[nvar] = 1;
|
||||||
@ -396,13 +411,15 @@ void Variable::set(int narg, char **arg)
|
|||||||
pad[nvar] = 0;
|
pad[nvar] = 0;
|
||||||
data[nvar] = new char*[num[nvar]];
|
data[nvar] = new char*[num[nvar]];
|
||||||
copy(1,&arg[2],data[nvar]);
|
copy(1,&arg[2],data[nvar]);
|
||||||
|
}
|
||||||
|
|
||||||
} else error->all(FLERR,"Illegal variable command");
|
} else error->all(FLERR,"Illegal variable command");
|
||||||
|
|
||||||
// set name of variable
|
// set name of variable, if not replacing (STRING/EQUAL/ATOM)
|
||||||
// must come at end, since STRING/EQUAL/ATOM reset may have removed name
|
|
||||||
// name must be all alphanumeric chars or underscores
|
// name must be all alphanumeric chars or underscores
|
||||||
|
|
||||||
|
if (replaceflag) return;
|
||||||
|
|
||||||
int n = strlen(arg[0]) + 1;
|
int n = strlen(arg[0]) + 1;
|
||||||
names[nvar] = new char[n];
|
names[nvar] = new char[n];
|
||||||
strcpy(names[nvar],arg[0]);
|
strcpy(names[nvar],arg[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user