+package org.simantics.scl.compiler.elaboration.expressions.annotations;
+
+import org.simantics.scl.compiler.constants.StringConstant;
+import org.simantics.scl.compiler.elaboration.expressions.ELiteral;
+import org.simantics.scl.compiler.elaboration.expressions.EStringLiteral;
+import org.simantics.scl.compiler.elaboration.expressions.EVar;
+import org.simantics.scl.compiler.elaboration.expressions.Expression;
+
+public class AnnotationUtils {
+ public static String extractString(Expression expression) {
+ if(expression instanceof EVar)
+ return ((EVar)expression).name;
+ else if(expression instanceof EStringLiteral) {
+ EStringLiteral literal = (EStringLiteral)expression;
+ if(literal.strings.length == 1)
+ return literal.strings[0];
+ }
+ else if(expression instanceof ELiteral) {
+ ELiteral literal = (ELiteral)expression;
+ if(literal.getValue() instanceof StringConstant) {
+ StringConstant constant = (StringConstant)literal.getValue();
+ return constant.getValue();
+ }
+ }
+ return null;
+ }
+}