X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2Fannotations%2FAnnotationUtils.java;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Felaboration%2Fexpressions%2Fannotations%2FAnnotationUtils.java;h=fb7334cd2b2cf52cdbd1faf85dc266b762af9bc8;hb=7045f0f516c243563976207abcec13a68891ff1d;hp=0000000000000000000000000000000000000000;hpb=fa9b9d56a9a16226e6409724cedfbbe94463b301;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java new file mode 100644 index 000000000..fb7334cd2 --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/expressions/annotations/AnnotationUtils.java @@ -0,0 +1,27 @@ +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; + } +}