From colnet at users.gforge.inria.fr Tue Dec 20 10:07:29 2005
From: colnet at users.gforge.inria.fr (colnet at users.gforge.inria.fr)
Date: Tue, 20 Dec 2005 09:07:29 +0000
Subject: [Smarteiffel-commits] r6719 - trunk/tools
Message-ID: <20051220_090729_016783. colnet@users.gforge.inria.fr>
Author: colnet
Date: 2005-12-20 09:07:28 +0000 (Tue, 20 Dec 2005)
New Revision: 6719
Modified:
trunk/tools/smart_eiffel.e
Log:
Started 2.3 and trying svn...
Modified: trunk/tools/smart_eiffel.e
===================================================================
--- trunk/tools/smart_eiffel.e 2005-12-19 15:55:45 UTC (rev 6718)
+++ trunk/tools/smart_eiffel.e 2005-12-20 09:07:28 UTC (rev 6719)
@@ -27,7 +27,7 @@
]")
end
- release_number: STRING is "Release 2.2 (Monday December 19th 2005) [Pomme de terre]%N"
+ release_number: STRING is "Release 2.3 (???? January ??th 2006) [?????? ?????]%N"
status: STATUS is
once
From colnet at users.gforge.inria.fr Tue Dec 20 11:12:53 2005
From: colnet at users.gforge.inria.fr (colnet at users.gforge.inria.fr)
Date: Tue, 20 Dec 2005 10:12:53 +0000
Subject: [Smarteiffel-commits] r6720 - trunk/lib/string
Message-ID: <20051220_101253_017242. colnet@users.gforge.inria.fr>
Author: colnet
Date: 2005-12-20 10:12:52 +0000 (Tue, 20 Dec 2005)
New Revision: 6720
Modified:
trunk/lib/string/string.e
Log:
Old obsolete removed.
Modified: trunk/lib/string/string.e
===================================================================
--- trunk/lib/string/string.e 2005-12-20 09:07:28 UTC (rev 6719)
+++ trunk/lib/string/string.e 2005-12-20 10:12:52 UTC (rev 6720)
@@ -1100,12 +1100,6 @@
capacity >= old capacity
end
- clear is
- obsolete "The new name is now `clear_count' (July 2004)."
- do
- clear_count
- end
-
clear_count, wipe_out is
-- Discard all characters so that `is_empty' is True after that call.
-- The internal `capacity' is not changed by this call (i.e. the internal `storage' memory is
From colnet at users.gforge.inria.fr Tue Dec 20 11:50:48 2005
From: colnet at users.gforge.inria.fr (colnet at users.gforge.inria.fr)
Date: Tue, 20 Dec 2005 10:50:48 +0000
Subject: [Smarteiffel-commits] r6721 - in trunk
Message-ID: <20051220_105048_086850. colnet@users.gforge.inria.fr>
Author: colnet
Date: 2005-12-20 10:50:47 +0000 (Tue, 20 Dec 2005)
New Revision: 6721
Modified:
trunk/tools/expression/create_expression.e
trunk/tools/instruction/create_instruction.e
trunk/tools/kernel/string_aliaser.e
trunk/tools/smart_eiffel.e
trunk/tools/utils/aliased_string_list.e
trunk/work/lib_test3/bad_create_dictionary1.msg
trunk/work/lib_test3/bad_create_dictionary2.msg
trunk/work/lib_test3/c_self_test.ok
Log:
Removed old automatic replacement of DICTIONARY with
HASHED_DICTIONARY (as well for SET / HASHED_SET).
Modified: trunk/tools/expression/create_expression.e
===================================================================
--- trunk/tools/expression/create_expression.e 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/tools/expression/create_expression.e 2005-12-20 10:50:47 UTC (rev 6721)
@@ -60,7 +60,7 @@
specialize_2 (type: TYPE): like Current is
local
created_type_memory: TYPE; c: like call; fake_target: FAKE_TARGET; fs: FEATURE_STAMP; name: FEATURE_NAME
- test_default: BOOLEAN; tm: like explicit_type
+ test_default: BOOLEAN
do
created_type_memory := created_type(type)
if call = Void then
@@ -82,15 +82,6 @@
fs := any_default_create_fs.resolve_dynamic_binding_for(created_type_memory)
default_create_call := c.feature_stamp = fs
end
- -- To check/replace create {DICTIONARY} with create {HASHED_DICTIONARY} (or SET...), created_type_memory is computed:
- tm := created_type_memory.canonical_type_mark
- tm := smart_eiffel.deferred_dictionary_or_set_creation_check(explicit_type.start_position, tm)
- if tm /= Void then
- explicit_type := tm
- created_type_memory := tm.type
- c.deferred_dictionary_or_set_fix(created_type_memory)
- end
- -- check/replace warning done.
Result := current_or_twin_init(explicit_type, c)
Result.specialize_2_checks(type)
ensure then
Modified: trunk/tools/instruction/create_instruction.e
===================================================================
--- trunk/tools/instruction/create_instruction.e 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/tools/instruction/create_instruction.e 2005-12-20 10:50:47 UTC (rev 6721)
@@ -247,29 +247,15 @@
specialize_2_without_checks (type: TYPE): like Current is
local
- w: like writable; c: like call; tm: TYPE_MARK; creation_type: TYPE; fs: FEATURE_STAMP
+ w: like writable; c: like call; creation_type: TYPE; fs: FEATURE_STAMP
name: FEATURE_NAME; test_default: BOOLEAN
do
w := writable.specialize_2(type)
- -- To check/replace create {DICTIONARY} with create {HASHED_DICTIONARY} (or SET...), creation_type
- -- is computed:
if explicit_type /= Void then
- tm := explicit_type.to_static(type)
- creation_type := tm.type
+ creation_type := explicit_type.resolve_in(type)
else
creation_type := w.resolve_in(type)
- tm := creation_type.canonical_type_mark
end
- tm := smart_eiffel.deferred_dictionary_or_set_creation_check(start_position, tm)
- if tm /= Void then
- create {CREATE_WRITABLE} w.make_specialized(tm, w)
- explicit_type := tm
- if call /= Void then
- call.set_target(w)
- end
- creation_type := explicit_type.resolve_in(type)
- end
- -- check/replace warning done.
if call = Void then
-- Create the call to the default creation feature if it is implicit.
default_create_call := True
Modified: trunk/tools/kernel/string_aliaser.e
===================================================================
--- trunk/tools/kernel/string_aliaser.e 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/tools/kernel/string_aliaser.e 2005-12-20 10:50:47 UTC (rev 6721)
@@ -108,14 +108,11 @@
create_hashed_string(as_array),
create_hashed_string(as_boolean),
create_hashed_string(as_character),
- create_hashed_string(as_dictionary),
create_hashed_string(as_disposable),
create_hashed_string(as_double),
create_hashed_string(as_exceptions),
create_hashed_string(as_fixed_array),
create_hashed_string(as_function),
- create_hashed_string(as_hashed_dictionary),
- create_hashed_string(as_hashed_set),
create_hashed_string(as_integer_general),
create_hashed_string(as_integer_8),
create_hashed_string(as_integer_16),
Modified: trunk/tools/smart_eiffel.e
===================================================================
--- trunk/tools/smart_eiffel.e 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/tools/smart_eiffel.e 2005-12-20 10:50:47 UTC (rev 6721)
@@ -246,51 +246,6 @@
free_inline_memo.add_last(im)
end
-feature {CREATE_INSTRUCTION, CREATE_EXPRESSION}
- deferred_dictionary_or_set_creation_check (p: POSITION; tm: TYPE_MARK): TYPE_MARK is
- -- Temporary check to help user to switch from DICTIONARY to HASHED_DICTIONARY / AVL_DICTIONARY. Here `p' is supposed to
- -- be the creation statement's position for the `tm' to check/replace. The non Void `Result' indicates a warning and is a
- -- replacement of `tm' from DICTIONARY to HASHED_DICTIONARY. (This code has been added in August 2003.) Ditto for SET.
- require
- not p.is_unknown
- tm.is_static
- local
- cn: CLASS_NAME; s: STRING
- do
- s := tm.class_text_name.to_string
- if s = as_dictionary then
- error_handler.add_position(p)
- error_handler.append("Class DICTIONARY is now a deferred class with two different implementations: %
- %HASHED_DICTIONARY and AVL_DICTIONARY. The HASHED_DICTIONARY implementation corresponds to %
- %the good old DICTIONARY class (i.e. hash_code based implementation). The new AVL_DICTIONARY %
- %implementation is a tree based implementation with a different generic constraint. Please, %
- %also note that it is not necessary to change the corresponding declaration of the target %
- %entity and that you can select the best implementation by changing only this create %
- %statement.")
- error_handler.print_as_warning
- create cn.make(string_aliaser.hashed_string(as_hashed_dictionary), tm.start_position)
- create {USER_GENERIC_TYPE_MARK} Result.make(cn, tm.generic_list)
- error_handler.add_position(p)
- error_handler.append("Automatic replacement of DICTIONARY with HASHED_DICTIONARY here (please update your code).")
- error_handler.print_as_warning
- elseif s = as_set then
- error_handler.add_position(p)
- error_handler.append("Class SET is now a deferred class with two different implementations: %
- %HASHED_SET and AVL_SET. The HASHED_SET implementation corresponds to %
- %the good old SET class (i.e. hash_code based implementation). The new AVL_SET %
- %implementation is a tree based implementation with a different generic constraint. Please, %
- %also note that it is not necessary to change the corresponding declaration of the target %
- %entity and that you can select the best implementation by changing only this create %
- %statement.")
- error_handler.print_as_warning
- create cn.make(string_aliaser.hashed_string(as_hashed_set), tm.start_position)
- create {USER_GENERIC_TYPE_MARK} Result.make(cn, tm.generic_list)
- error_handler.add_position(p)
- error_handler.append("Automatic replacement of SET with HASHED_SET here (please update your code).")
- error_handler.print_as_warning
- end
- end
-
feature {TYPE}
is_checking_signature: BOOLEAN is
-- When `True', we are checking a signature conformance. In that case, we must not be hindered by "conforming" or
Modified: trunk/tools/utils/aliased_string_list.e
===================================================================
--- trunk/tools/utils/aliased_string_list.e 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/tools/utils/aliased_string_list.e 2005-12-20 10:50:47 UTC (rev 6721)
@@ -15,8 +15,6 @@
as_character: STRING is "CHARACTER"
- as_dictionary: STRING is "DICTIONARY"
-
as_disposable: STRING is "DISPOSABLE"
as_double: STRING is "DOUBLE"
@@ -37,10 +35,6 @@
as_function: STRING is "FUNCTION"
- as_hashed_dictionary: STRING is "HASHED_DICTIONARY"
-
- as_hashed_set: STRING is "HASHED_SET"
-
as_integer_general: STRING is "INTEGER_GENERAL"
as_integer_8: STRING is "INTEGER_8"
Modified: trunk/work/lib_test3/bad_create_dictionary1.msg
===================================================================
--- trunk/work/lib_test3/bad_create_dictionary1.msg 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/work/lib_test3/bad_create_dictionary1.msg 2005-12-20 10:50:47 UTC (rev 6721)
@@ -1,20 +1,8 @@
-****** Warning: Class DICTIONARY is now a deferred class with
-two different implementations: HASHED_DICTIONARY and AVL_DICTIONARY.
-The HASHED_DICTIONARY implementation corresponds to the good old
-DICTIONARY class (i.e. hash_code based implementation). The new
-AVL_DICTIONARY implementation is a tree based implementation with
-a different generic constraint. Please, also note that it is not
-necessary to change the corresponding declaration of the target
-entity and that you can select the best implementation by changing
-only this create statement.
-Line 11 column 19 in BAD_CREATE_DICTIONARY1 (/home/colnet/SmartEiffel/work/lib_test3/bad_create_dictionary1.e):
- dico := create {DICTIONARY[INTEGER, INTEGER]}.make
- ^
+****** Fatal Error: Type DICTIONARY[INTEGER,INTEGER] is deferred.
+(Cannot create object.)
+
+Line 11 column 11 in BAD_CREATE_DICTIONARY1 (/home/colnet/SmartEiffel/work/lib_test3/bad_create_dictionary1.e):
+ dico := create {DICTIONARY[INTEGER, INTEGER]}.make
+ ^
------
-****** Warning: Automatic replacement of DICTIONARY with HASHED_DICTIONARY
-here (please update your code).
-Line 11 column 19 in BAD_CREATE_DICTIONARY1 (/home/colnet/SmartEiffel/work/lib_test3/bad_create_dictionary1.e):
- dico := create {DICTIONARY[INTEGER, INTEGER]}.make
- ^
-------
-****** 2 warnings.
+Error occurs while compiling. Compilation process aborted.
Modified: trunk/work/lib_test3/bad_create_dictionary2.msg
===================================================================
--- trunk/work/lib_test3/bad_create_dictionary2.msg 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/work/lib_test3/bad_create_dictionary2.msg 2005-12-20 10:50:47 UTC (rev 6721)
@@ -1,20 +1,8 @@
-****** Warning: Class DICTIONARY is now a deferred class with
-two different implementations: HASHED_DICTIONARY and AVL_DICTIONARY.
-The HASHED_DICTIONARY implementation corresponds to the good old
-DICTIONARY class (i.e. hash_code based implementation). The new
-AVL_DICTIONARY implementation is a tree based implementation with
-a different generic constraint. Please, also note that it is not
-necessary to change the corresponding declaration of the target
-entity and that you can select the best implementation by changing
-only this create statement.
+****** Fatal Error: Type DICTIONARY[INTEGER,INTEGER] is deferred.
+(Cannot create object.)
+
Line 11 column 3 in BAD_CREATE_DICTIONARY2 (/home/colnet/SmartEiffel/work/lib_test3/bad_create_dictionary2.e):
- create dico.make
- ^
+ create dico.make
+ ^
------
-****** Warning: Automatic replacement of DICTIONARY with HASHED_DICTIONARY
-here (please update your code).
-Line 11 column 3 in BAD_CREATE_DICTIONARY2 (/home/colnet/SmartEiffel/work/lib_test3/bad_create_dictionary2.e):
- create dico.make
- ^
-------
-****** 2 warnings.
+Error occurs while compiling. Compilation process aborted.
Modified: trunk/work/lib_test3/c_self_test.ok
===================================================================
--- trunk/work/lib_test3/c_self_test.ok 2005-12-20 10:12:52 UTC (rev 6720)
+++ trunk/work/lib_test3/c_self_test.ok 2005-12-20 10:50:47 UTC (rev 6721)
@@ -90,8 +90,8 @@
bad_create6.e...1..
bad_create7.e...1..
bad_create8.e...1..
-bad_create_dictionary1.e...0..
-bad_create_dictionary2.e...0..
+bad_create_dictionary1.e...1..
+bad_create_dictionary2.e...1..
bad_creation1.e...0..
bad_creation2.e...1..
bad_creation3.e...1..
From colnet at users.gforge.inria.fr Tue Dec 20 15:46:42 2005
From: colnet at users.gforge.inria.fr (colnet at users.gforge.inria.fr)
Date: Tue, 20 Dec 2005 14:46:42 +0000
Subject: [Smarteiffel-commits] r6722 - in trunk
Message-ID: <20051220_144642_059375. colnet@users.gforge.inria.fr>
Author: colnet
Date: 2005-12-20 14:46:40 +0000 (Tue, 20 Dec 2005)
New Revision: 6722
Modified:
trunk/lib/abilities/observable.e
trunk/lib/design_patterns/chain_of_responsibility.e
trunk/lib/kernel/hierarchic_graph_node.e
trunk/lib/kernel/loaded_hierarchic_graph_node.e
trunk/lib/net/low_level/socket_server.e
trunk/lib/sequencer/loop_item.e
trunk/lib/signal/signal_0.e
trunk/lib/signal/signal_1.e
trunk/lib/signal/signal_2.e
trunk/lib/signal/signal_4.e
trunk/lib/storage/collection.e
trunk/lib/storage/collection/array.e
trunk/lib/storage/collection/fast_array.e
trunk/lib/storage/collection/linked_list.e
trunk/lib/storage/collection/ring_array.e
trunk/lib/storage/collection/two_way_linked_list.e
trunk/lib/storage/internal/linked_collection.e
trunk/lib/string/unicode_string.e
trunk/lib/vision/container.e
trunk/lib/vision/decoration/decorator.e
trunk/tools/commands/install.e
trunk/tools/commands/se.e
trunk/tools/generation/code_printer.e
trunk/tools/install/c_mode.e
trunk/tools/kernel/helpers/agent_creation_helper.e
trunk/tools/kernel/live_type.e
trunk/tools/kernel/pools/agent_pool.e
trunk/tools/kernel/system_tools.e
trunk/tools/smart_eiffel.e
trunk/work/html/site/source/misc/_HISTORY.html
trunk/work/lib_test1/aux_generic6ll.e
trunk/work/lib_test1/aux_generic7ll.e
trunk/work/lib_test1/test_array.e
trunk/work/lib_test1/test_array_expanded.e
trunk/work/lib_test1/test_dictionary1.e
trunk/work/lib_test1/test_dictionary2.e
trunk/work/lib_test1/test_index_of1.e
trunk/work/lib_test1/test_index_of2.e
trunk/work/lib_test1/test_manifest_array.e
trunk/work/lib_test_dpsrc/code/behavior/command/composite.e
trunk/work/lib_test_dpsrc/code/behavior/observer/autonomous_subject.e
trunk/work/lib_test_dpsrc/code/behavior/state2/network.e
trunk/work/lib_test_dpsrc/code/behavior/visitor/composite.e
trunk/work/lib_test_dpsrc/code/struct/composite/composite.e
Log:
In class COLLECTION, features `index_of' and `fast_index_of'
now have an extra argument to indicate where the search must start (as
in class STRING).
Modified: trunk/lib/abilities/observable.e
===================================================================
--- trunk/lib/abilities/observable.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/abilities/observable.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -22,7 +22,7 @@
local
i: INTEGER
do
- i := observers.index_of(o)
+ i := observers.first_index_of(o)
observers.remove(i)
end
Modified: trunk/lib/design_patterns/chain_of_responsibility.e
===================================================================
--- trunk/lib/design_patterns/chain_of_responsibility.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/design_patterns/chain_of_responsibility.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -29,7 +29,7 @@
local
i: INTEGER
do
- i := chain.index_of(c)
+ i := chain.first_index_of(c)
chain.remove(i)
end
Modified: trunk/lib/kernel/hierarchic_graph_node.e
===================================================================
--- trunk/lib/kernel/hierarchic_graph_node.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/kernel/hierarchic_graph_node.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -89,11 +89,11 @@
local
i: INTEGER; tmp: like children_edge
do
- i := node.children.fast_index_of(Current)
+ i := node.children.fast_first_index_of(Current)
tmp := node.children_edge
node.children.remove(i)
tmp.remove(i)
- i := parents.fast_index_of(node)
+ i := parents.fast_first_index_of(node)
parents.remove(i)
parents_edge.remove(i)
end
@@ -114,11 +114,11 @@
local
i: INTEGER; tmp: like parents_edge
do
- i := node.parents.fast_index_of(Current)
+ i := node.parents.fast_first_index_of(Current)
tmp := node.parents_edge
node.parents.remove(i)
tmp.remove(i)
- i := children.index_of(node)
+ i := children.first_index_of(node)
children.remove(i)
children_edge.remove(i)
end
@@ -130,10 +130,10 @@
local
i: INTEGER; tmp: like children_edge
do
- i := parents_edge.fast_index_of(id)
+ i := parents_edge.fast_first_index_of(id)
Result := parents.item(i)
tmp := Result.children_edge
- tmp.put(-1, tmp.fast_index_of(id))
+ tmp.put(-1, tmp.fast_first_index_of(id))
parents_edge.put(-1, i)
ensure
not has_parent_edge(id)
@@ -177,10 +177,10 @@
local
i: INTEGER; tmp: like parents_edge
do
- i := children_edge.fast_index_of(id)
+ i := children_edge.fast_first_index_of(id)
Result := children.item(i)
tmp := Result.parents_edge
- tmp.put(-1, tmp.fast_index_of(id))
+ tmp.put(-1, tmp.fast_first_index_of(id))
children_edge.put(-1, i)
ensure
not has_child_edge(id)
Modified: trunk/lib/kernel/loaded_hierarchic_graph_node.e
===================================================================
--- trunk/lib/kernel/loaded_hierarchic_graph_node.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/kernel/loaded_hierarchic_graph_node.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -56,7 +56,7 @@
i: INTEGER
do
-- possible improvement
- i := node.children.fast_index_of(Current)
+ i := node.children.fast_first_index_of(Current)
Precursor(node)
parents_edge_load.remove(i)
end
@@ -66,7 +66,7 @@
i: INTEGER
do
-- possible improvement
- i := node.parents.fast_index_of(Current)
+ i := node.parents.fast_first_index_of(Current)
Precursor(node)
children_edge_load.remove(i)
end
Modified: trunk/lib/net/low_level/socket_server.e
===================================================================
--- trunk/lib/net/low_level/socket_server.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/net/low_level/socket_server.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -126,7 +126,7 @@
local
i: INTEGER
do
- i := connected_sockets.index_of(socket)
+ i := connected_sockets.first_index_of(socket)
connected_sockets.remove(i)
put_disconnected_socket(socket)
ensure
Modified: trunk/lib/sequencer/loop_item.e
===================================================================
--- trunk/lib/sequencer/loop_item.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/sequencer/loop_item.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -92,7 +92,7 @@
loop
ready_jobs.item(i).continue
if ready_jobs.item(i).done then
- job_list.remove(job_list.fast_index_of(ready_jobs.item(i)))
+ job_list.remove(job_list.fast_first_index_of(ready_jobs.item(i)))
finished_jobs.add_last(ready_jobs.item(i))
end
i := i - 1
Modified: trunk/lib/signal/signal_0.e
===================================================================
--- trunk/lib/signal/signal_0.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/signal/signal_0.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -67,7 +67,7 @@
local
i: INTEGER
do
- i := callbacks.fast_index_of(connect_identifier)
+ i := callbacks.fast_first_index_of(connect_identifier)
if callbacks.valid_index(i) then
callbacks.remove(i)
last := last - 1
Modified: trunk/lib/signal/signal_1.e
===================================================================
--- trunk/lib/signal/signal_1.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/signal/signal_1.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -69,7 +69,7 @@
local
i: INTEGER
do
- i := callbacks.fast_index_of(connect_identifier)
+ i := callbacks.fast_first_index_of(connect_identifier)
if callbacks.valid_index(i) then
callbacks.remove(i)
last := last - 1
Modified: trunk/lib/signal/signal_2.e
===================================================================
--- trunk/lib/signal/signal_2.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/signal/signal_2.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -70,7 +70,7 @@
local
i: INTEGER
do
- i := callbacks.fast_index_of(connect_identifier)
+ i := callbacks.fast_first_index_of(connect_identifier)
if callbacks.valid_index(i) then
callbacks.remove(i)
last := last - 1
Modified: trunk/lib/signal/signal_4.e
===================================================================
--- trunk/lib/signal/signal_4.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/signal/signal_4.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -72,7 +72,7 @@
local
i: INTEGER
do
- i := callbacks.fast_index_of(connect_identifier)
+ i := callbacks.fast_first_index_of(connect_identifier)
if callbacks.valid_index(i) then
callbacks.remove(i)
last := last - 1
Modified: trunk/lib/storage/collection/array.e
===================================================================
--- trunk/lib/storage/collection/array.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/collection/array.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -312,7 +312,7 @@
Result := storage.fast_occurrences(element, upper - lower)
end
- index_of (element: like item): INTEGER is
+ first_index_of (element: like item): INTEGER is
do
if upper >= lower then
Result := lower + storage.first_index_of(element, upper - lower)
@@ -321,6 +321,15 @@
end
end
+ index_of (element: like item; start_index: INTEGER): INTEGER is
+ do
+ if upper >= lower then
+ Result := lower + storage.index_of(element, start_index - lower, upper - lower)
+ else
+ Result := lower
+ end
+ end
+
reverse_index_of (element: like item; start_index: INTEGER): INTEGER is
do
if upper >= lower then
@@ -330,7 +339,7 @@
end
end
- fast_index_of (element: like item): INTEGER is
+ fast_first_index_of (element: like item): INTEGER is
do
if upper >= lower then
Result := lower + storage.fast_first_index_of(element, upper - lower)
@@ -339,6 +348,15 @@
end
end
+ fast_index_of (element: like item; start_index: INTEGER): INTEGER is
+ do
+ if upper >= lower then
+ Result := lower + storage.fast_index_of(element, start_index - lower, upper - lower)
+ else
+ Result := lower
+ end
+ end
+
fast_reverse_index_of (element: like item; start_index: INTEGER): INTEGER is
do
if upper >= lower then
Modified: trunk/lib/storage/collection/fast_array.e
===================================================================
--- trunk/lib/storage/collection/fast_array.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/collection/fast_array.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -17,8 +17,6 @@
inherit
ARRAYED_COLLECTION[E_]
- redefine first_index_of
- end
creation {ANY}
make, with_capacity, from_collection, manifest_creation
@@ -241,7 +239,7 @@
Result := storage.fast_occurrences(element, upper)
end
- index_of (element: like item): INTEGER is
+ first_index_of (element: like item): INTEGER is
do
if upper >= 0 then
Result := storage.first_index_of(element, upper)
@@ -252,15 +250,26 @@
end
end
+ index_of (element: like item; start_index: INTEGER): INTEGER is
+ do
+ if upper >= 0 then
+ Result := storage.index_of(element, start_index, upper)
+ else
+ check
+ Result = 0
+ end
+ end
+ end
+
reverse_index_of (element: like item; start_index: INTEGER): INTEGER is
do
Result := storage.reverse_index_of(element, start_index)
end
- first_index_of (element: like item): INTEGER is
+ fast_first_index_of (element: like item): INTEGER is
do
if upper >= 0 then
- Result := storage.first_index_of(element, upper)
+ Result := storage.fast_index_of(element, lower, upper)
else
check
Result = 0
@@ -268,10 +277,14 @@
end
end
- fast_index_of (element: like item): INTEGER is
+ fast_index_of (element: like item; start_index: INTEGER): INTEGER is
do
if upper >= 0 then
- Result := storage.fast_first_index_of(element, upper)
+ Result := storage.fast_index_of(element, start_index, upper)
+ else
+ check
+ Result = 0
+ end
end
end
Modified: trunk/lib/storage/collection/linked_list.e
===================================================================
--- trunk/lib/storage/collection/linked_list.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/collection/linked_list.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -232,12 +232,12 @@
end
end
- index_of (x: like item): INTEGER is
+ index_of (x: like item; start_index: INTEGER): INTEGER is
local
safe_equal: SAFE_EQUAL[E_]
do
from
- Result := lower
+ Result := start_index
until
Result > upper or else safe_equal.test(x, item(Result))
loop
@@ -272,12 +272,12 @@
end
end
- fast_index_of (x: like item): INTEGER is
+ fast_index_of (x: like item; start_index: INTEGER): INTEGER is
local
u: like upper
do
from
- Result := lower
+ Result := start_index
u := upper
until
Result > u or else x = item(Result)
Modified: trunk/lib/storage/collection/ring_array.e
===================================================================
--- trunk/lib/storage/collection/ring_array.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/collection/ring_array.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -387,7 +387,7 @@
end
end
- index_of (element: like item): INTEGER is
+ first_index_of (element: like item): INTEGER is
local
s_u: INTEGER
do
@@ -408,6 +408,28 @@
end
end
+ index_of (element: like item; start_index: INTEGER): INTEGER is
+ local
+ s_start_index, s_u: INTEGER
+ do
+ if is_empty then
+ Result := upper + 1
+ else
+ s_u := storage_upper
+ s_start_index := storage_index(start_index)
+ if s_start_index <= s_u then
+ Result := storage.index_of(element, s_start_index, s_u) + lower - storage_lower
+ else
+ Result := storage.index_of(element, s_start_index, capacity - 1)
+ if Result = capacity then
+ Result := storage.first_index_of(element, s_u) + upper - s_u
+ else
+ Result := Result + lower - storage_lower
+ end
+ end
+ end
+ end
+
reverse_index_of (element: like item; start_index: INTEGER): INTEGER is
local
safe_equal: SAFE_EQUAL[E_]
@@ -421,7 +443,7 @@
end
end
- fast_index_of (element: like item): INTEGER is
+ fast_first_index_of (element: like item): INTEGER is
local
s_u: INTEGER
do
@@ -442,6 +464,28 @@
end
end
+ fast_index_of (element: like item; start_index: INTEGER): INTEGER is
+ local
+ s_start_index, s_u: INTEGER
+ do
+ if is_empty then
+ Result := upper + 1
+ else
+ s_u := storage_upper
+ s_start_index := storage_index(start_index)
+ if s_start_index <= s_u then
+ Result := storage.fast_index_of(element, s_start_index, s_u) + lower - storage_lower
+ else
+ Result := storage.fast_index_of(element, s_start_index, capacity - 1)
+ if Result = capacity then
+ Result := storage.fast_first_index_of(element, s_u) + upper - s_u
+ else
+ Result := Result + lower - storage_lower
+ end
+ end
+ end
+ end
+
fast_reverse_index_of (element: like item; start_index: INTEGER): INTEGER is
do
from
Modified: trunk/lib/storage/collection/two_way_linked_list.e
===================================================================
--- trunk/lib/storage/collection/two_way_linked_list.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/collection/two_way_linked_list.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -234,12 +234,12 @@
end
end
- index_of (x: like item): INTEGER is
+ index_of (x: like item; start_index: INTEGER): INTEGER is
local
safe_equal: SAFE_EQUAL[E_]
do
from
- Result := lower
+ Result := start_index
until
Result > upper or else safe_equal.test(x, item(Result))
loop
@@ -270,12 +270,12 @@
end
end
- fast_index_of (x: like item): INTEGER is
+ fast_index_of (x: like item; start_index: INTEGER): INTEGER is
local
u: like upper
do
from
- Result := lower
+ Result := start_index
u := upper
until
Result > u or else x = item(Result)
Modified: trunk/lib/storage/collection.e
===================================================================
--- trunk/lib/storage/collection.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/collection.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -310,7 +310,7 @@
--
-- See also `fast_has', `index_of', `fast_index_of'.
do
- Result := valid_index(index_of(x))
+ Result := valid_index(first_index_of(x))
end
fast_has (x: like item): BOOLEAN is
@@ -318,7 +318,7 @@
--
-- See also `has', `fast_index_of', `index_of'.
do
- Result := valid_index(fast_index_of(x))
+ Result := valid_index(fast_first_index_of(x))
end
first_index_of (element: like item): INTEGER is
@@ -326,20 +326,19 @@
-- Answer `upper + 1' when `element' is not inside.
--
-- See also `fast_first_index_of', `index_of', `last_index_of', `reverse_index_of'.
- do
- Result := index_of(element)
+ deferred
ensure
- definition: -- Result = index_of(c, lower)
+ definition: Result = index_of(element, lower)
end
- index_of (element: like item): INTEGER is
- -- Warning, this feature will change in the near future.
- -- Warning: this feature will have soon one extra argument as the one in class STRING.
+ index_of (element: like item; start_index: INTEGER): INTEGER is
+ -- Using `is_equal' for comparison, gives the index of the first occurrence of `element' at or after
+ -- `start_index'. Answer `upper + 1' when `element' when the search fail.
--
- -- It is better to use `first_index_of' right now (Oct 6th 2005).
+ -- See also `fast_index_of', `reverse_index_of', `first_index_of'.
deferred
ensure
- Result.in_range(lower, upper + 1)
+ Result.in_range(start_index, upper + 1)
valid_index(Result) implies (create {SAFE_EQUAL[E_]}).test(element, item(Result))
end
@@ -374,21 +373,19 @@
-- Answer `upper + 1' when `element' is not inside.
--
-- See also `first_index_of', `last_index_of', `fast_last_index_of'.
- do
- Result := fast_index_of(element)
+ deferred
ensure
- Result.in_range(lower, upper + 1)
- valid_index(Result) implies element = item(Result)
+ definition: Result = fast_index_of(element, lower)
end
- fast_index_of (element: like item): INTEGER is
- -- Warning, this feature will change in the near future.
- -- Warning: this feature will have soon one extra argument as the one in class STRING.
+ fast_index_of (element: like item; start_index: INTEGER): INTEGER is
+ -- Using basic `=' for comparison, gives the index of the first occurrence of `element' at or after
+ -- `start_index'. Answer `upper + 1' when `element' when the search fail.
--
- -- It is better to use `fast_first_index_of' right now (Oct 6th 2005).
+ -- See also `index_of', `fast_reverse_index_of', `fast_first_index_of'.
deferred
ensure
- Result.in_range(lower, upper + 1)
+ Result.in_range(start_index, upper + 1)
valid_index(Result) implies element = item(Result)
end
Modified: trunk/lib/storage/internal/linked_collection.e
===================================================================
--- trunk/lib/storage/internal/linked_collection.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/storage/internal/linked_collection.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -48,6 +48,16 @@
end
end
+ first_index_of (element: like item): INTEGER is
+ do
+ Result := index_of(element, lower)
+ end
+
+ fast_first_index_of (element: like item): INTEGER is
+ do
+ Result := fast_index_of(element, lower)
+ end
+
feature {} -- Implement manifest generic creation.
manifest_make (needed_capacity: INTEGER) is
-- Manifest creation of a list of items of type E_.
Modified: trunk/lib/string/unicode_string.e
===================================================================
--- trunk/lib/string/unicode_string.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/string/unicode_string.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -1642,7 +1642,7 @@
low_surrogate_indexes.has(index)
do
--|*** Should use dichotomic search
- Result := low_surrogate_indexes.fast_index_of(index)
+ Result := low_surrogate_indexes.fast_first_index_of(index)
ensure
low_surrogate_values.valid_index(Result)
end
Modified: trunk/lib/vision/container.e
===================================================================
--- trunk/lib/vision/container.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/vision/container.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -143,7 +143,7 @@
has_child(w)
do
w.set_parent(Void)
- child.remove(child.fast_index_of(w))
+ child.remove(child.fast_first_index_of(w))
child_requisition_changed
ensure
child.count = old child.count - 1
Modified: trunk/lib/vision/decoration/decorator.e
===================================================================
--- trunk/lib/vision/decoration/decorator.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/lib/vision/decoration/decorator.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -243,13 +243,13 @@
found2 := True
seg.add_first(p)
join(seg, seg2, True, True)
- idx := list.index_of(seg2)
+ idx := list.first_index_of(seg2)
list.remove(idx)
elseif p.is_equal(seg2.last) then
found2 := True
seg.add_first(p)
join(seg, seg2, True, False)
- idx := list.index_of(seg2)
+ idx := list.first_index_of(seg2)
list.remove(idx)
end
end
@@ -284,13 +284,13 @@
found2 := True
seg.add_last(p)
join(seg, seg2, False, False)
- idx := list.index_of(seg2)
+ idx := list.first_index_of(seg2)
list.remove(idx)
elseif p.is_equal(seg2.last) then
found2 := True
seg.add_last(p)
join(seg, seg2, False, True)
- idx := list.index_of(seg2)
+ idx := list.first_index_of(seg2)
list.remove(idx)
end
end
Modified: trunk/tools/commands/install.e
===================================================================
--- trunk/tools/commands/install.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/commands/install.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -176,7 +176,7 @@
if inifile.has(fz_conf_compiler_type) then
c := inifile.item(fz_conf_compiler_type)
if c /= Void and then not c.is_equal(fz_none) and then system_tools.compiler_list.has(c) then
- c := system_tools.compiler_list.item(system_tools.compiler_list.index_of(c))
+ c := system_tools.compiler_list.item(system_tools.compiler_list.first_index_of(c))
c_compiler_rc_map.add(c, key)
debug
io.put_string(once "C: ")
@@ -207,7 +207,7 @@
c := inifile.item(fz_conf_cpp_compiler_type)
if c /= Void and then not c.is_equal(fz_none) then
if system_tools.c_plus_plus_compiler_list.has(c) then
- c := system_tools.c_plus_plus_compiler_list.item(system_tools.c_plus_plus_compiler_list.index_of(c))
+ c := system_tools.c_plus_plus_compiler_list.item(system_tools.c_plus_plus_compiler_list.first_index_of(c))
cpp_compiler_rc_map.add(c, key)
debug
io.put_string(once "C++: ")
@@ -1255,7 +1255,7 @@
io.put_string(once "%N? ")
read_line
if entry_buffer.is_empty then
- Result := names.item(names.index_of(default_choice))
+ Result := names.item(names.first_index_of(default_choice))
else
from
n := once " "
@@ -3253,7 +3253,7 @@
do
sysname := name
if not system_tools.system_list.fast_has(sysname) then
- i := system_tools.system_list.index_of(name)
+ i := system_tools.system_list.first_index_of(name)
if system_tools.system_list.valid_index(i) then
sysname := system_tools.system_list.item(i)
else
Modified: trunk/tools/commands/se.e
===================================================================
--- trunk/tools/commands/se.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/commands/se.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -48,7 +48,7 @@
if plugins.has(plugin) then
call_plugin(plugin)
elseif plugin_commands.has(plugin) then
- call_plugin(plugins.item(plugin_commands.index_of(plugin)))
+ call_plugin(plugins.item(plugin_commands.first_index_of(plugin)))
elseif is_version_flag_no_exit(plugin) then
print_all_version_numbers
elseif is_help_flag(plugin) then
@@ -79,7 +79,7 @@
local
i, status: INTEGER; cmd: STRING; arg: FAST_ARRAY[STRING]
do
- i := plugins.index_of(plugin)
+ i := plugins.first_index_of(plugin)
cmd := plugin_commands.item(i)
create arg.with_capacity(argument_count - 1)
from
Modified: trunk/tools/generation/code_printer.e
===================================================================
--- trunk/tools/generation/code_printer.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/generation/code_printer.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -113,7 +113,7 @@
end
ctx := reserve_context(code)
check
- context_stack.fast_has(ctx) implies context_stack.fast_index_of(ctx) >= top
+ context_stack.fast_has(ctx) implies context_stack.fast_first_index_of(ctx) >= top
end
context_stack.put(ctx, top)
ensure
@@ -186,7 +186,7 @@
check_top (st: like stack_top): BOOLEAN is
-- To make checks coherent, the stack must be cleaned
do
- Result := context_stack.fast_index_of(st) = top
+ Result := context_stack.fast_first_index_of(st) = top
context_stack.put(Void, top)
Result := Result and then not context_stack.fast_has(st)
end
Modified: trunk/tools/install/c_mode.e
===================================================================
--- trunk/tools/install/c_mode.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/install/c_mode.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -219,13 +219,13 @@
name.copy(a_name)
- i := system_tools.compiler_list.index_of(a_c_compiler_type)
+ i := system_tools.compiler_list.first_index_of(a_c_compiler_type)
c_compiler_type := system_tools.compiler_list.item(i)
if a_cpp_compiler_type = fz_conf_undefined then
cpp_compiler_type := Void
else
- i := system_tools.c_plus_plus_compiler_list.index_of(a_cpp_compiler_type)
+ i := system_tools.c_plus_plus_compiler_list.first_index_of(a_cpp_compiler_type)
cpp_compiler_type := system_tools.c_plus_plus_compiler_list.item(i)
end
end
@@ -267,7 +267,7 @@
cpp_same := False
rc := c_file
- c_compiler_type := system_tools.compiler_list.item(system_tools.compiler_list.index_of(rc.item(fz_conf_compiler_type)))
+ c_compiler_type := system_tools.compiler_list.item(system_tools.compiler_list.first_index_of(rc.item(fz_conf_compiler_type)))
if rc.section_has(name, fz_conf_compiler_path) then
tmp := rc.section_item(name, fz_conf_compiler_path)
set_c_compiler_path(tmp)
@@ -297,7 +297,7 @@
if rc = Void then
cpp_compiler_type := Void
else
- cpp_compiler_type := system_tools.c_plus_plus_compiler_list.item(system_tools.c_plus_plus_compiler_list.index_of(rc.item(fz_conf_cpp_compiler_type)))
+ cpp_compiler_type := system_tools.c_plus_plus_compiler_list.item(system_tools.c_plus_plus_compiler_list.first_index_of(rc.item(fz_conf_cpp_compiler_type)))
if rc.section_has(name, fz_conf_cpp_compiler_path) then
tmp := rc.section_item(name, fz_conf_cpp_compiler_path)
set_cpp_compiler_path(tmp)
Modified: trunk/tools/kernel/helpers/agent_creation_helper.e
===================================================================
--- trunk/tools/kernel/helpers/agent_creation_helper.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/kernel/helpers/agent_creation_helper.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -721,7 +721,7 @@
cl /= Void
expression /= Void
do
- last_rank := capture_list.index_of(expression)
+ last_rank := capture_list.first_index_of(expression)
if capture_list.valid_index(last_rank) then
status := Numbered_capture_status
numbered_capture := Void
Modified: trunk/tools/kernel/live_type.e
===================================================================
--- trunk/tools/kernel/live_type.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/kernel/live_type.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -2310,7 +2310,7 @@
local
i: INTEGER
do
- i := actual_clients.fast_index_of(lt)
+ i := actual_clients.fast_first_index_of(lt)
if i > actual_clients.upper then
actual_clients.add_last(lt)
end
Modified: trunk/tools/kernel/pools/agent_pool.e
===================================================================
--- trunk/tools/kernel/pools/agent_pool.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/kernel/pools/agent_pool.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -298,7 +298,7 @@
if agent_creation_type.can_be_assigned_to(launcher_type) then
mold_id.clear_count
agent_creation.mold_id_in(type, mold_id)
- idx := defined_agent_creation.index_of(mold_id)
+ idx := defined_agent_creation.first_index_of(mold_id)
if defined_agent_creation.valid_index(idx) then
buffer.append(once "case ")
idx.append_in(buffer)
Modified: trunk/tools/kernel/system_tools.e
===================================================================
--- trunk/tools/kernel/system_tools.e 2005-12-20 10:50:47 UTC (rev 6721)
+++ trunk/tools/kernel/system_tools.e 2005-12-20 14:46:40 UTC (rev 6722)
@@ -409,7 +409,7 @@
local
i: INTEGER
do
- i := system_list.index_of(system_name)
+ i := system_list.first_index_of(system_name)
if i > system_list.upper then
echo.w_put_string(once "Unknown system name in file%N%"")
echo.w_put_string(tmp_file_read.path)
@@ -479,7 +479,7 @@
error_handler.append("%S: config file corrupted!")
From colnet at users.gforge.inria.fr Tue Dec 20 16:43:19 2005
From: colnet at users.gforge.inria.fr (colnet at users.gforge.inria.fr)
Date: Tue, 20 Dec 2005 15:43:19 +0000
Subject: [Smarteiffel-commits] r6723 - in trunk/work/html/site/source
Message-ID: <20051220_154319_060351. colnet@users.gforge.inria.fr>
Author: colnet
Date: 2005-12-20 15:43:18 +0000 (Tue, 20 Dec 2005)
New Revision: 6723
Modified:
trunk/work/html/site/source/_index.html
trunk/work/html/site/source/_menu_level1.html
trunk/work/html/site/source/_menu_level2.html
trunk/work/html/site/source/general/_download.html
trunk/work/html/site/source/general/_whatsnew.html
trunk/work/html/site/source/misc/_HISTORY.html
Log:
Updated the web site to take in account gforge.inria.fr.
Modified: trunk/work/html/site/source/_index.html
===================================================================
--- trunk/work/html/site/source/_index.html 2005-12-20 14:46:40 UTC (rev 6722)
+++ trunk/work/html/site/source/_index.html 2005-12-20 15:43:18 UTC (rev 6723)
@@ -17,7 +17,10 @@
the latest release available from our
download page.
-Our Wiki is available since Wednesday July 6th 2005!
+Together with the whole source code of SmartEiffel, the whole test suite of SmartEiffel
+is now available at
+gforge.inria.fr.
+All development tools are now public too.
Modified: trunk/work/html/site/source/_menu_level1.html
===================================================================
--- trunk/work/html/site/source/_menu_level1.html 2005-12-20 14:46:40 UTC (rev 6722)
+++ trunk/work/html/site/source/_menu_level1.html 2005-12-20 15:43:18 UTC (rev 6723)
@@ -42,6 +42,9 @@
| Snapshot Version -With Source Code Only | -
-This gives you access to the most bleeding-edge version of SmartEiffel. You can see how SmartEiffel evolves, -and more actively participate to its development. See the changelog of the snapshot. -
--
| HTTP access: | -download smarteiffel.tgz file - | -
| Source Controlled Repository | -
-Along to the snapshot you can also use our source controlled repository, based on git.
-See the wiki for details.
-
-Submitted patches should be sent according to this repository.
-
-
| HTTP access: | -download smarteiffel.tgz file - | -
| Old SmartEiffel versions |
| Source Controlled Repository | +
+The SCM tool (Software Configuration Management tool) used by the SmartEiffel team +is hosted at gforge.inria.fr. +This gives you access to the most bleeding-edge version of SmartEiffel. +You can see how SmartEiffel evolves, and, for some of you, more +actively participate to its development. +
+ + + +| Snapshot Version +With Source Code Only | +
+Better than the old snapshot, just use directly the +SCM development +repository of the SmartEiffel team. +This gives you access to the most bleeding-edge version of SmartEiffel. +
+ +
Copyright © The SmartEiffel Team -
Modified: trunk/work/html/site/source/general/_whatsnew.html
===================================================================
--- trunk/work/html/site/source/general/_whatsnew.html 2005-12-20 14:46:40 UTC (rev 6722)
+++ trunk/work/html/site/source/general/_whatsnew.html 2005-12-20 15:43:18 UTC (rev 6723)
@@ -21,6 +21,14 @@