Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/virtuosotechnologies/lib/base/HierarchicalType.java


1   /*
2   ================================================================================
3   
4     FILE:  HierarchicalType.java
5     
6     PROJECT:
7     
8       Virtuoso Utilities
9     
10    CONTENTS:
11    
12      Hierarchical type interface
13    
14    PROGRAMMERS:
15    
16      Daniel Azuma (DA)  <dazuma@kagi.com>
17    
18    COPYRIGHT:
19    
20      Copyright (C) 2003  Daniel Azuma  (dazuma@kagi.com)
21      
22      This program is free software; you can redistribute it and/or
23      modify it under the terms of the GNU General Public License as
24      published by the Free Software Foundation; either version 2
25      of the License, or (at your option) any later version.
26      
27      This program is distributed in the hope that it will be useful,
28      but WITHOUT ANY WARRANTY; without even the implied warranty of
29      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30      GNU General Public License for more details.
31      
32      You should have received a copy of the GNU General Public
33      License along with this program; if not, write to
34        Free Software Foundation, Inc.
35        59 Temple Place, Suite 330
36        Boston, MA 02111-1307 USA
37  
38  ================================================================================
39  */
40  
41  
42  package com.virtuosotechnologies.lib.base;
43  
44  import java.util.Iterator;
45  
46  
47  /**
48   * An interface for objects that implement a hierarchical type system.
49   * <p>
50   * A hierarchical type system is a class of objects with the following
51   * properties:
52   * <ul>
53   * <li>The object may have zero or more parents, which must be within
54   *     the same class. An object is said to "extend" all of its ancestors.
55   * <li>The object is not a descendant of itself. That is, the parent
56   *     relationships form an acyclic graph.
57   * <li>The object can quickly determine, given another object, whether it
58   *     extends that object.
59   * <li>The object is immutable.
60   * <li>The equals() method is suitably defined to preserve the above
61   *     semantics. Normally, objects should be uniques whose equals()
62   *     method uses reference equality.
63   * </ul>
64   */
65  public interface HierarchicalType
66  {
67    /**
68     * Returns true if and only if this HierarchicalType the same as or
69     * an extension of the given parameter.
70     *
71     * @param type a type to test
72     * @return true if this type equals or extends the given type
73     */
74    public boolean equalsOrExtends(
75      HierarchicalType type);
76    
77    
78    /**
79     * Get an interator over the immediate parents
80     *
81     * @return an Iterator over the immediate parents. The remove() method
82     *    of the iterator is not implemented.
83     */
84    public Iterator getParents();
85  }