use of org.eclipse.titan.designer.AST.TTCN3.templates.PatternString in project titan.EclipsePlug-ins by eclipse.
the class UniversalCharstring_Type method checkThisTemplateString.
/**
* Checks if the provided template is valid for the provided type.
* <p>
* The type must be equivalent with the TTCN-3 universal charstring type
*
* @param timestamp the time stamp of the actual semantic check cycle.
* @param type the universal charstring type used for the check.
* @param template the template to be checked by the type.
* @param isModified true if the template is a modified template
*/
public static void checkThisTemplateString(final CompilationTimeStamp timestamp, final Type type, final ITTCN3Template template, final boolean isModified) {
template.setMyGovernor(type);
PatternString ps = null;
switch(template.getTemplatetype()) {
case VALUE_RANGE:
{
final ValueRange range = ((Value_Range_Template) template).getValueRange();
final IValue lower = checkBoundary(timestamp, type, range.getMin(), template, "lower");
final IValue upper = checkBoundary(timestamp, type, range.getMax(), template, "upper");
range.setTypeType(type.getTypetypeTtcn3());
if (lower != null && upper != null) {
UniversalCharstring value1;
if (Value_type.CHARSTRING_VALUE.equals(lower.getValuetype())) {
value1 = new UniversalCharstring(((Charstring_Value) lower).getValue());
} else {
value1 = ((UniversalCharstring_Value) lower).getValue();
}
UniversalCharstring value2;
if (Value_type.CHARSTRING_VALUE.equals(upper.getValuetype())) {
value2 = new UniversalCharstring(((Charstring_Value) upper).getValue());
} else {
value2 = ((UniversalCharstring_Value) upper).getValue();
}
if (value1.compareWith(value2) > 0) {
template.getLocation().reportSemanticError(INCORRECTBOUNDARIES);
}
}
break;
}
case CSTR_PATTERN:
{
// Change the pattern type
final CharString_Pattern_Template cstrpt = (CharString_Pattern_Template) template;
ps = cstrpt.getPatternstring();
ps.setPatterntype(PatternType.UNIVCHARSTRING_PATTERN);
// FIXME might need some implementation
break;
}
case USTR_PATTERN:
// FIXME implement as soon as charstring pattern templates become handled
ps = ((UnivCharString_Pattern_Template) template).getPatternstring();
break;
default:
template.getLocation().reportSemanticError(MessageFormat.format(TEMPLATENOTALLOWED, template.getTemplateTypeName(), type.getTypename()));
break;
}
}
Aggregations