15d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin/*
25d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * Copyright (C) 2014 Google, Inc.
35d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin *
45d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License");
55d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * you may not use this file except in compliance with the License.
65d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * You may obtain a copy of the License at
75d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin *
85d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0
95d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin *
105d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * Unless required by applicable law or agreed to in writing, software
115d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS,
125d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * See the License for the specific language governing permissions and
145d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin * limitations under the License.
155d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin */
165d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffinpackage dagger.internal.codegen.writer;
175d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
185d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffinimport java.io.IOException;
195d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffinimport java.util.Set;
205d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
215d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffinfinal class ArrayTypeName implements TypeName {
225d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  private final TypeName componentType;
235d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
245d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  ArrayTypeName(TypeName componentType) {
255d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin    this.componentType = componentType;
265d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  }
275d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
285d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  @Override
295d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  public Set<ClassName> referencedClasses() {
305d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin    return componentType.referencedClasses();
315d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  }
325d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
335d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  @Override
345d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  public Appendable write(Appendable appendable, Context context) throws IOException {
355d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin    return componentType.write(appendable, context).append("[]");
365d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  }
375d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
385d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  @Override
395d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  public boolean equals(Object obj) {
405d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin    return (obj instanceof ArrayTypeName)
415d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin        && this.componentType.equals(((ArrayTypeName) obj).componentType);
425d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  }
435d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
445d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  @Override
455d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  public int hashCode() {
465d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin    return componentType.hashCode();
475d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  }
485d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin
495d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  @Override
505d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  public String toString() {
515d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin    return Writables.writeToString(this);
525d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin  }
535d3207ac2713386ed61c6ca8f0356e8f093a62e1Paul Duffin}
54