Mercurial > projects > dwt-addons
annotate dwtx/core/commands/common/HandleObject.d @ 200:eb3414669eb0 default tip
fix for dmd 1.041 and tango 0.99.8
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 28 Mar 2009 03:09:57 +0100 |
parents | 6518c18a01f7 |
children |
rev | line source |
---|---|
3
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2004, 2006 IBM Corporation and others. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 * Port to the D programming language: |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 * Frank Benoit <benoit@tionex.de> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 module dwtx.core.commands.common.HandleObject; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 import dwtx.core.internal.commands.util.Util; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 import dwtx.core.commands.common.IIdentifiable; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import dwtx.core.commands.common.EventManager; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.dwthelper.utils; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 * <p> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 * An object that can exist in one of two states: defined and undefined. This is |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 * used by APIs that want to give a handle to an object, even though the object |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 * does not fully exist yet. This way, users can attach listeners to objects |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 * before they come into existence. It also protects the API from users that do |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 * not release references when they should. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 * </p> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 * <p> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 * To enforce good coding practice, all handle objects must implement |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 * <code>equals</code> and <code>toString</code>. Please use |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 * <code>string</code> to cache the result for <code>toString</code> once |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 * calculated. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 * </p> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 * <p> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 * All handle objects are referred to using a single identifier. This identifier |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 * is a instance of <code>String</code>. It is important that this identifier |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 * remain unique within whatever context that handle object is being used. For |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 * example, there should only ever be one instance of <code>Command</code> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 * with a given identifier. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 * </p> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 * @since 3.1 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 public abstract class HandleObject : EventManager, |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 IIdentifiable { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 * The constant integer hash code value meaning the hash code has not yet |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * been computed. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 private static const int HASH_CODE_NOT_COMPUTED = -1; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * A factor for computing the hash code for all schemes. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 private static const int HASH_FACTOR = 89; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 * The seed for the hash code for all schemes. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 private static const int HASH_INITIAL; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 static this(){ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 HASH_INITIAL = |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 //typeid(char[]).getHash(& HandleObject.classinfo.name ); |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 dwt.dwthelper.utils.toHash(HandleObject.classinfo.name); |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 * Whether this object is defined. A defined object is one that has been |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 * fully initialized. By default, all objects start as undefined. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 protected /+transient+/ bool defined = false; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 * The hash code for this object. This value is computed lazily, and marked |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 * as invalid when one of the values on which it is based changes. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 private /+transient+/ int hashCode = HASH_CODE_NOT_COMPUTED; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 * The identifier for this object. This identifier should be unique across |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 * all objects of the same type and should never change. This value will |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 * never be <code>null</code>. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 protected /+final+/ String id; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * The string representation of this object. This string is for debugging |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 * purposes only, and is not meant to be displayed to the user. This value |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 * is computed lazily, and is cleared if one of its dependent values |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 * changes. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 protected /+transient+/ String string = null; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * Constructs a new instance of <code>HandleObject</code>. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 * @param id |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 * The id of this handle; must not be <code>null</code>. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 protected this(String id) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 if (id is null) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 throw new NullPointerException( |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 "Cannot create a handle with a null id"); //$NON-NLS-1$ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 this.id = id; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 * Tests whether this object is equal to another object. A handle object is |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 * only equal to another handle object with the same id and the same class. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 * @param object |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 * The object with which to compare; may be <code>null</code>. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 * @return <code>true</code> if the objects are equal; <code>false</code> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 * otherwise. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 public override int opEquals(Object object) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 // Check if they're the same. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 if (object is this) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 return true; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 // Check if they're the same type. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 if (!(cast(HandleObject)object)) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 return false; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 // Check each property in turn. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 final HandleObject handle= cast(HandleObject) object; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 return Util.equals(id, handle.id) |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 && (this.classinfo is handle.classinfo); |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 |
200
eb3414669eb0
fix for dmd 1.041 and tango 0.99.8
Frank Benoit <benoit@tionex.de>
parents:
3
diff
changeset
|
136 public final String getId() { |
3
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 return id; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 * Computes the hash code for this object based on the id. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 * @return The hash code for this object. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 public final override hash_t toHash() { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 if (hashCode is HASH_CODE_NOT_COMPUTED) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 hashCode = HASH_INITIAL * HASH_FACTOR + Util.toHash(id); |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 if (hashCode is HASH_CODE_NOT_COMPUTED) { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 hashCode++; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 return hashCode; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 * Whether this instance is defined. A defined instance is one that has been |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 * fully initialized. This allows objects to effectively disappear even |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 * though other objects may still have references to them. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 * @return <code>true</code> if this object is defined; <code>false</code> |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 * otherwise. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 public final bool isDefined() { |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 return defined; |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 } |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 * The string representation of this object -- for debugging purposes only. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 * This string should not be shown to an end user. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 * |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 * @return The string representation; never <code>null</code>. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 public override abstract String toString(); |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 /** |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 * Makes this object becomes undefined. This method should make any defined |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 * properties <code>null</code>. It should also send notification to any |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 * listeners that these properties have changed. |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 */ |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 public abstract void undefine(); |
6518c18a01f7
eclipse.core package without osgi dependencies
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 } |