Mercurial > hg > truffle
diff graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java @ 16759:23415229349b
Truffle-DSL: new package structure.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Mon, 11 Aug 2014 15:57:14 +0200 |
parents | bd28da642eea |
children | 45c8f64978d6 |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java Mon Aug 11 15:53:05 2014 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/ProcessorContext.java Mon Aug 11 15:57:14 2014 +0200 @@ -22,8 +22,6 @@ */ package com.oracle.truffle.dsl.processor; -import static com.oracle.truffle.dsl.processor.Utils.*; - import java.util.*; import javax.annotation.processing.*; @@ -31,9 +29,9 @@ import javax.lang.model.type.*; import javax.lang.model.util.*; -import com.oracle.truffle.dsl.processor.ast.*; -import com.oracle.truffle.dsl.processor.ast.CodeTypeMirror.ArrayCodeTypeMirror; -import com.oracle.truffle.dsl.processor.template.*; +import com.oracle.truffle.dsl.processor.java.*; +import com.oracle.truffle.dsl.processor.java.model.*; +import com.oracle.truffle.dsl.processor.model.*; /** * THIS IS NOT PUBLIC API. @@ -43,13 +41,12 @@ private final ProcessingEnvironment environment; private final Map<String, Template> models = new HashMap<>(); - private final Map<String, Map<String, TypeMirror>> generatedClasses = new HashMap<>(); private final ProcessCallback callback; private final Log log; private final TruffleTypes truffleTypes; - public ProcessorContext(ProcessingEnvironment env, ProcessCallback callback) { + ProcessorContext(ProcessingEnvironment env, ProcessCallback callback) { this.environment = env; this.callback = callback; this.log = new Log(environment); @@ -69,86 +66,23 @@ } public boolean containsTemplate(TypeElement element) { - return models.containsKey(Utils.getQualifiedName(element)); + return models.containsKey(ElementUtils.getQualifiedName(element)); } public void registerTemplate(TypeElement element, Template model) { - models.put(Utils.getQualifiedName(element), model); - } - - public void registerType(TypeElement templateType, TypeMirror generatedTypeMirror) { - String templateQualifiedName = getQualifiedName(templateType); - Map<String, TypeMirror> simpleNameToType = generatedClasses.get(templateQualifiedName); - if (simpleNameToType == null) { - simpleNameToType = new HashMap<>(); - generatedClasses.put(templateQualifiedName, simpleNameToType); - } - String generatedSimpleName = getSimpleName(generatedTypeMirror); - simpleNameToType.put(generatedSimpleName, generatedTypeMirror); + models.put(ElementUtils.getQualifiedName(element), model); } public Template getTemplate(TypeMirror templateTypeMirror, boolean invokeCallback) { - String qualifiedName = Utils.getQualifiedName(templateTypeMirror); + String qualifiedName = ElementUtils.getQualifiedName(templateTypeMirror); Template model = models.get(qualifiedName); if (model == null && invokeCallback) { - callback.callback(Utils.fromTypeMirror(templateTypeMirror)); + callback.callback(ElementUtils.fromTypeMirror(templateTypeMirror)); model = models.get(qualifiedName); } return model; } - public TypeMirror resolveNotYetCompiledType(TypeMirror mirror, Template templateHint) { - TypeMirror resolvedType = null; - if (mirror.getKind() == TypeKind.ARRAY) { - TypeMirror originalComponentType = ((ArrayType) mirror).getComponentType(); - TypeMirror resolvedComponent = resolveNotYetCompiledType(originalComponentType, templateHint); - if (resolvedComponent != originalComponentType) { - return new ArrayCodeTypeMirror(resolvedComponent); - } - } - - if (mirror.getKind() == TypeKind.ERROR) { - Element element = ((ErrorType) mirror).asElement(); - ElementKind kind = element.getKind(); - if (kind == ElementKind.CLASS || kind == ElementKind.PARAMETER || kind == ElementKind.ENUM) { - String simpleName = element.getSimpleName().toString(); - resolvedType = findGeneratedClassBySimpleName(simpleName, templateHint); - } - } else { - resolvedType = mirror; - } - - return resolvedType; - } - - public TypeMirror findGeneratedClassBySimpleName(String simpleName, Template templateHint) { - if (templateHint == null) { - // search all - for (String qualifiedTemplateName : generatedClasses.keySet()) { - Map<String, TypeMirror> mirrors = generatedClasses.get(qualifiedTemplateName); - if (mirrors.get(simpleName) != null) { - return mirrors.get(simpleName); - } - } - return null; - } else { - String templateQualifiedName = getQualifiedName(templateHint.getTemplateType()); - Map<String, TypeMirror> simpleNameToType = generatedClasses.get(templateQualifiedName); - if (simpleNameToType == null) { - return null; - } - return simpleNameToType.get(simpleName); - } - } - - public TypeMirror getType(String className) { - TypeElement element = environment.getElementUtils().getTypeElement(className); - if (element != null) { - return element.asType(); - } - return null; - } - public TypeMirror getType(Class<?> element) { TypeMirror mirror; if (element.isPrimitive()) { @@ -191,6 +125,14 @@ return getType(type.getQualifiedName().toString()); } + private TypeMirror getType(String className) { + TypeElement element = environment.getElementUtils().getTypeElement(className); + if (element != null) { + return element.asType(); + } + return null; + } + public TypeMirror reloadType(TypeMirror type) { if (type instanceof CodeTypeMirror) { return type;