use of org.eclipse.titan.designer.AST.TTCN3.values.Boolean_Value in project titan.EclipsePlug-ins by eclipse.
the class IsBoundExpression method evaluateValue.
@Override
public /**
* {@inheritDoc}
*/
IValue evaluateValue(final CompilationTimeStamp timestamp, final Expected_Value_type expectedValue, final IReferenceChain referenceChain) {
if (lastTimeChecked != null && !lastTimeChecked.isLess(timestamp)) {
return lastValue;
}
isErroneous = false;
lastTimeChecked = timestamp;
lastValue = this;
if (templateInstance == null) {
return lastValue;
}
checkExpressionOperands(timestamp, expectedValue, referenceChain);
if (getIsErroneous(timestamp)) {
return lastValue;
}
if (isUnfoldable(timestamp, referenceChain)) {
return lastValue;
}
ITTCN3Template template = templateInstance.getTemplateBody();
template = template.getTemplateReferencedLast(timestamp);
boolean result = false;
if (template.getTemplatetype() == Template_type.TEMPLATE_REFD) {
final TTCN3Template last = template.getTemplateReferencedLast(timestamp);
if (last != null && Template_type.SPECIFIC_VALUE.equals(last.getTemplatetype())) {
result = ((SpecificValue_Template) last).getValue().evaluateIsbound(timestamp, ((Referenced_Template) template).getReference(), 1);
}
} else if (template.getTemplatetype() == Template_type.SPECIFIC_VALUE) {
final IValue value = ((SpecificValue_Template) template).getValue();
if (value.getValuetype() == Value_type.REFERENCED_VALUE) {
result = value.evaluateIsbound(timestamp, ((Referenced_Value) value).getReference(), 1);
} else {
result = !value.getIsErroneous(timestamp);
}
}
lastValue = new Boolean_Value(result);
lastValue.copyGeneralProperties(this);
return lastValue;
}
use of org.eclipse.titan.designer.AST.TTCN3.values.Boolean_Value in project titan.EclipsePlug-ins by eclipse.
the class IsChoosenExpression method evaluateValue.
@Override
public /**
* {@inheritDoc}
*/
IValue evaluateValue(final CompilationTimeStamp timestamp, final Expected_Value_type expectedValue, final IReferenceChain referenceChain) {
if (lastTimeChecked != null && !lastTimeChecked.isLess(timestamp)) {
return lastValue;
}
isErroneous = false;
lastTimeChecked = timestamp;
lastValue = this;
if (reference == null) {
return lastValue;
}
checkExpressionOperands(timestamp, expectedValue, referenceChain);
if (getIsErroneous(timestamp)) {
return lastValue;
}
if (value == null) {
return lastValue;
}
if (isUnfoldable(timestamp, referenceChain)) {
return lastValue;
}
IValue last = value.getValueRefdLast(timestamp, referenceChain);
boolean result;
switch(last.getValuetype()) {
case CHOICE_VALUE:
result = ((Choice_Value) last).fieldIsChosen(identifier);
break;
case SEQUENCE_VALUE:
last = last.setValuetype(timestamp, Value_type.CHOICE_VALUE);
result = ((Choice_Value) last).fieldIsChosen(identifier);
break;
case ANYTYPE_VALUE:
result = ((Anytype_Value) last).fieldIsChosen(timestamp, identifier);
break;
default:
setIsErroneous(true);
return last;
}
lastValue = new Boolean_Value(result);
lastValue.copyGeneralProperties(this);
return lastValue;
}
use of org.eclipse.titan.designer.AST.TTCN3.values.Boolean_Value in project titan.EclipsePlug-ins by eclipse.
the class IsPresentExpression method evaluateValue.
@Override
public /**
* {@inheritDoc}
*/
IValue evaluateValue(final CompilationTimeStamp timestamp, final Expected_Value_type expectedValue, final IReferenceChain referenceChain) {
if (lastTimeChecked != null && !lastTimeChecked.isLess(timestamp)) {
return lastValue;
}
isErroneous = false;
lastTimeChecked = timestamp;
lastValue = this;
if (templateInstance == null) {
return lastValue;
}
checkExpressionOperands(timestamp, expectedValue, referenceChain);
if (getIsErroneous(timestamp)) {
return lastValue;
}
if (isUnfoldable(timestamp, referenceChain)) {
return lastValue;
}
ITTCN3Template template = templateInstance.getTemplateBody();
if (template.getIfPresent()) {
lastValue = new Boolean_Value(false);
lastValue.copyGeneralProperties(this);
return lastValue;
}
template = template.getTemplateReferencedLast(timestamp);
if (template.getIfPresent()) {
lastValue = new Boolean_Value(false);
lastValue.copyGeneralProperties(this);
return lastValue;
}
boolean result = false;
if (template.getTemplatetype() == Template_type.TEMPLATE_REFD) {
final TTCN3Template last = template.getTemplateReferencedLast(timestamp);
if (last != null && Template_type.SPECIFIC_VALUE.equals(last.getTemplatetype())) {
result = ((SpecificValue_Template) last).getValue().evaluateIspresent(timestamp, ((Referenced_Template) template).getReference(), 1);
}
} else if (template.getTemplatetype() == Template_type.SPECIFIC_VALUE) {
final IValue value = ((SpecificValue_Template) template).getValue();
if (value.getValuetype() == Value_type.REFERENCED_VALUE) {
result = value.evaluateIspresent(timestamp, ((Referenced_Value) value).getReference(), 1);
} else if (value.getValuetype() == Value_type.OMIT_VALUE) {
result = false;
} else {
result = !value.getIsErroneous(timestamp);
}
}
lastValue = new Boolean_Value(result);
lastValue.copyGeneralProperties(this);
return lastValue;
}
use of org.eclipse.titan.designer.AST.TTCN3.values.Boolean_Value in project titan.EclipsePlug-ins by eclipse.
the class LessThanExpression method evaluateValue.
@Override
public /**
* {@inheritDoc}
*/
IValue evaluateValue(final CompilationTimeStamp timestamp, final Expected_Value_type expectedValue, final IReferenceChain referenceChain) {
if (lastTimeChecked != null && !lastTimeChecked.isLess(timestamp)) {
return lastValue;
}
isErroneous = false;
lastTimeChecked = timestamp;
lastValue = this;
if (value1 == null || value2 == null) {
return lastValue;
}
checkExpressionOperands(timestamp, expectedValue, referenceChain);
if (getIsErroneous(timestamp) || isUnfoldable(timestamp, referenceChain)) {
return lastValue;
}
final IValue last1 = value1.getValueRefdLast(timestamp, referenceChain);
final IValue last2 = value2.getValueRefdLast(timestamp, referenceChain);
if (last1.getIsErroneous(timestamp) || last2.getIsErroneous(timestamp)) {
setIsErroneous(true);
return lastValue;
}
switch(last1.getValuetype()) {
case INTEGER_VALUE:
{
lastValue = new Boolean_Value(((Integer_Value) last1).compareTo((Integer_Value) last2) < 0);
lastValue.copyGeneralProperties(this);
break;
}
case REAL_VALUE:
{
final double float1 = ((Real_Value) last1).getValue();
final double float2 = ((Real_Value) last2).getValue();
lastValue = new Boolean_Value(Double.compare(float1, float2) < 0);
lastValue.copyGeneralProperties(this);
break;
}
case ENUMERATED_VALUE:
{
IType governor1 = last1.getExpressionGovernor(timestamp, expectedValue);
governor1 = governor1.getTypeRefdLast(timestamp);
IType governor2 = last2.getExpressionGovernor(timestamp, expectedValue);
governor2 = governor2.getTypeRefdLast(timestamp);
if (governor1 instanceof TTCN3_Enumerated_Type) {
final EnumItem item1 = ((TTCN3_Enumerated_Type) governor1).getEnumItemWithName(((Enumerated_Value) last1).getValue());
final EnumItem item2 = ((TTCN3_Enumerated_Type) governor2).getEnumItemWithName(((Enumerated_Value) last2).getValue());
lastValue = new Boolean_Value(((Integer_Value) item1.getValue()).intValue() < ((Integer_Value) item2.getValue()).intValue());
lastValue.copyGeneralProperties(this);
} else {
final EnumItem item1 = ((ASN1_Enumerated_Type) governor1).getEnumItemWithName(((Enumerated_Value) last1).getValue());
final EnumItem item2 = ((ASN1_Enumerated_Type) governor2).getEnumItemWithName(((Enumerated_Value) last2).getValue());
lastValue = new Boolean_Value(((Integer_Value) item1.getValue()).intValue() < ((Integer_Value) item2.getValue()).intValue());
lastValue.copyGeneralProperties(this);
}
break;
}
default:
setIsErroneous(true);
}
return lastValue;
}
use of org.eclipse.titan.designer.AST.TTCN3.values.Boolean_Value in project titan.EclipsePlug-ins by eclipse.
the class NotExpression method evaluateValue.
@Override
public /**
* {@inheritDoc}
*/
IValue evaluateValue(final CompilationTimeStamp timestamp, final Expected_Value_type expectedValue, final IReferenceChain referenceChain) {
if (lastTimeChecked != null && !lastTimeChecked.isLess(timestamp)) {
return lastValue;
}
isErroneous = false;
lastTimeChecked = timestamp;
lastValue = this;
if (value == null) {
setIsErroneous(true);
return lastValue;
}
checkExpressionOperands(timestamp, expectedValue, referenceChain);
if (getIsErroneous(timestamp)) {
return lastValue;
}
if (isUnfoldable(timestamp, referenceChain)) {
return lastValue;
}
final IValue last = value.getValueRefdLast(timestamp, referenceChain);
if (last.getIsErroneous(timestamp)) {
setIsErroneous(true);
return lastValue;
}
switch(last.getValuetype()) {
case BOOLEAN_VALUE:
final boolean b = ((Boolean_Value) last).getValue();
lastValue = new Boolean_Value(!b);
lastValue.copyGeneralProperties(this);
break;
default:
setIsErroneous(true);
break;
}
return lastValue;
}
Aggregations