package com.laytonsmith.core.constructs;
/**
*
*
*/
public class Variable extends Construct {
public static final long serialVersionUID = 1L;
final private String name;
private String def;
private boolean optional;
private boolean final_var;
private CString var_value;
public Variable(String name, String def, boolean optional, boolean final_var, Target t) {
super(name, ConstructType.VARIABLE, t);
this.name = name;
setDefault(def);
this.final_var = final_var;
this.optional = optional;
this.var_value = new CString(def, t);
}
public Variable(String name, String def, Target t) {
this(name, def, false, false, t);
}
@Override
public String toString() {
return "var:" + name;
}
public String getVariableName() {
return name;
}
public void setFinal(boolean final_var) {
this.final_var = final_var;
}
public boolean isFinal() {
return final_var;
}
public void setOptional(boolean optional) {
this.optional = optional;
}
public boolean isOptional() {
return optional;
}
public String getDefault() {
return def;
}
public void setDefault(String def) {
if(def == null){
def = "";
}
this.def = def;
}
@Override
public String val() {
return var_value.toString();
}
public void setVal(CString val) {
this.var_value = val;
}
public void setVal(String val){
this.var_value = new CString(val, this.getTarget());
}
@Override
public Variable clone() throws CloneNotSupportedException {
Variable clone = (Variable) super.clone();
if (this.var_value != null) {
clone.var_value = var_value;
}
return clone;
}
@Override
public boolean isDynamic() {
return true;
}
}