equal
deleted
inserted
replaced
41 * This code and its internal interfaces are subject to change or |
41 * This code and its internal interfaces are subject to change or |
42 * deletion without notice.</b> |
42 * deletion without notice.</b> |
43 */ |
43 */ |
44 public class Todo extends AbstractQueue<Env<AttrContext>> { |
44 public class Todo extends AbstractQueue<Env<AttrContext>> { |
45 /** The context key for the todo list. */ |
45 /** The context key for the todo list. */ |
46 protected static final Context.Key<Todo> todoKey = |
46 protected static final Context.Key<Todo> todoKey = new Context.Key<>(); |
47 new Context.Key<Todo>(); |
|
48 |
47 |
49 /** Get the Todo instance for this context. */ |
48 /** Get the Todo instance for this context. */ |
50 public static Todo instance(Context context) { |
49 public static Todo instance(Context context) { |
51 Todo instance = context.get(todoKey); |
50 Todo instance = context.get(todoKey); |
52 if (instance == null) |
51 if (instance == null) |
96 return (size() == 0 ? null : contents.get(0)); |
95 return (size() == 0 ? null : contents.get(0)); |
97 } |
96 } |
98 |
97 |
99 public Queue<Queue<Env<AttrContext>>> groupByFile() { |
98 public Queue<Queue<Env<AttrContext>>> groupByFile() { |
100 if (contentsByFile == null) { |
99 if (contentsByFile == null) { |
101 contentsByFile = new LinkedList<Queue<Env<AttrContext>>>(); |
100 contentsByFile = new LinkedList<>(); |
102 for (Env<AttrContext> env: contents) { |
101 for (Env<AttrContext> env: contents) { |
103 addByFile(env); |
102 addByFile(env); |
104 } |
103 } |
105 } |
104 } |
106 return contentsByFile; |
105 return contentsByFile; |
107 } |
106 } |
108 |
107 |
109 private void addByFile(Env<AttrContext> env) { |
108 private void addByFile(Env<AttrContext> env) { |
110 JavaFileObject file = env.toplevel.sourcefile; |
109 JavaFileObject file = env.toplevel.sourcefile; |
111 if (fileMap == null) |
110 if (fileMap == null) |
112 fileMap = new HashMap<JavaFileObject, FileQueue>(); |
111 fileMap = new HashMap<>(); |
113 FileQueue fq = fileMap.get(file); |
112 FileQueue fq = fileMap.get(file); |
114 if (fq == null) { |
113 if (fq == null) { |
115 fq = new FileQueue(); |
114 fq = new FileQueue(); |
116 fileMap.put(file, fq); |
115 fileMap.put(file, fq); |
117 contentsByFile.add(fq); |
116 contentsByFile.add(fq); |
130 contentsByFile.remove(fq); |
129 contentsByFile.remove(fq); |
131 } |
130 } |
132 } |
131 } |
133 } |
132 } |
134 |
133 |
135 LinkedList<Env<AttrContext>> contents = new LinkedList<Env<AttrContext>>(); |
134 LinkedList<Env<AttrContext>> contents = new LinkedList<>(); |
136 LinkedList<Queue<Env<AttrContext>>> contentsByFile; |
135 LinkedList<Queue<Env<AttrContext>>> contentsByFile; |
137 Map<JavaFileObject, FileQueue> fileMap; |
136 Map<JavaFileObject, FileQueue> fileMap; |
138 |
137 |
139 class FileQueue extends AbstractQueue<Env<AttrContext>> { |
138 class FileQueue extends AbstractQueue<Env<AttrContext>> { |
140 @Override |
139 @Override |
165 |
164 |
166 public Env<AttrContext> peek() { |
165 public Env<AttrContext> peek() { |
167 return (fileContents.size() == 0 ? null : fileContents.get(0)); |
166 return (fileContents.size() == 0 ? null : fileContents.get(0)); |
168 } |
167 } |
169 |
168 |
170 LinkedList<Env<AttrContext>> fileContents = new LinkedList<Env<AttrContext>>(); |
169 LinkedList<Env<AttrContext>> fileContents = new LinkedList<>(); |
171 } |
170 } |
172 } |
171 } |