jaroslav@235: /* jaroslav@235: * To change this template, choose Tools | Templates jaroslav@235: * and open the template in the editor. jaroslav@235: */ jaroslav@235: package java.lang; jaroslav@235: jaroslav@235: import java.lang.annotation.Annotation; jaroslav@235: import org.apidesign.bck2brwsr.core.JavaScriptBody; jaroslav@235: jaroslav@235: /** jaroslav@235: * jaroslav@235: * @author Jaroslav Tulach jaroslav@235: */ jaroslav@235: final class AnnotationImpl implements Annotation { jaroslav@235: public Class annotationType() { jaroslav@235: return getClass(); jaroslav@235: } jaroslav@235: jaroslav@235: @JavaScriptBody(args = { "a", "n", "values" }, body = jaroslav@235: "var v = values;" jaroslav@235: + "for (p in values) {" jaroslav@235: + " a[p + 'I'] = function() { return v[p]; }" jaroslav@235: + "}" jaroslav@235: + "a['$instOf_' + n] = true;" jaroslav@235: + "return a;" jaroslav@235: ) jaroslav@235: private static T create(AnnotationImpl a, String n, Object values) { jaroslav@235: return null; jaroslav@235: } jaroslav@235: static T create(Class annoClass, Object values) { jaroslav@235: return create(new AnnotationImpl(), annoClass.getName().replace('.', '_'), values); jaroslav@235: } jaroslav@235: }