196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectpackage jdiff;
296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectimport java.io.*;
496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectimport java.util.*;
596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project/**
796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Class to represent a class, analogous to ClassDoc in the
896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * Javadoc doclet API.
996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project *
1096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * The method used for Collection comparison (compareTo) must make its
1196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * comparison based upon everything that is known about this class.
1296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project *
1396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * See the file LICENSE.txt for copyright details.
1496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project * @author Matthew Doar, mdoar@pobox.com
1596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project */
1696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Projectclass ClassAPI implements Comparable {
1796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
1896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Name of the class, not fully qualified. */
1996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public String name_;
2096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
2196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Set if this class is an interface. */
2296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public boolean isInterface_;
2396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
2496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Set if this class is abstract. */
2596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    boolean isAbstract_ = false;
2696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
2796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Modifiers for this class. */
2896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public Modifiers modifiers_;
2996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
3096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Name of the parent class, or null if there is no parent. */
3196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public String extends_; // Can only extend zero or one class or interface
3296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
3396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Interfaces implemented by this class. */
3496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public List implements_; // String[]
3596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
3696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Constructors in this class. */
3796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public List ctors_; // ConstructorAPI[]
3896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
3996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Methods in this class. */
4096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public List methods_; // MethodAPI[]
4196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
4296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Fields in this class. */
4396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public List fields_; //FieldAPI[]
4496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
4596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** The doc block, default is null. */
4696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public String doc_ = null;
4796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
4896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Constructor. */
4996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public ClassAPI(String name, String parent, boolean isInterface,
5096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project                    boolean isAbstract, Modifiers modifiers) {
5196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        name_ = name;
5296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        extends_ = parent;
5396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        isInterface_ = isInterface;
5496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        isAbstract_ = isAbstract;
5596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        modifiers_ = modifiers;
5696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
5796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        implements_ = new ArrayList(); // String[]
5896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        ctors_ = new ArrayList(); // ConstructorAPI[]
5996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        methods_ = new ArrayList(); // MethodAPI[]
6096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        fields_ = new ArrayList(); // FieldAPI[]
6196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    }
6296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
6396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /** Compare two ClassAPI objects by all the known information. */
6496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public int compareTo(Object o) {
6596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        ClassAPI oClassAPI = (ClassAPI)o;
6696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        int comp = name_.compareTo(oClassAPI.name_);
6796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        if (comp != 0)
6896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project            return comp;
6996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        if (isInterface_ != oClassAPI.isInterface_)
7096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project            return -1;
7196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        if (isAbstract_ != oClassAPI.isAbstract_)
7296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project            return -1;
7396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        comp = modifiers_.compareTo(oClassAPI.modifiers_);
7496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        if (comp != 0)
7596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project            return comp;
7696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        if (APIComparator.docChanged(doc_, oClassAPI.doc_))
7796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project            return -1;
7896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        return 0;
7996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    }
8096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
8196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    /**
8296b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project     * Tests two methods for equality using just the class name,
8396b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project     * used by indexOf().
8496b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project     */
8596b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    public boolean equals(Object o) {
8696b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        if (name_.compareTo(((ClassAPI)o).name_) == 0)
8796b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project            return true;
8896b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project        return false;
8996b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project    }
9096b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project
9196b00fec6cd6068c1c5ae09de0358340c0ec499eThe Android Open Source Project}
92