/[eiffelstudio]/branches/CAT_mono/Src/Eiffel/eiffel/genericity/type_i.e
ViewVC logotype

Log of /branches/CAT_mono/Src/Eiffel/eiffel/genericity/type_i.e

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Revision:

Revision 69868 - (view) (annotate) - [select for diffs]
Modified Fri Aug 3 22:28:26 2007 UTC (12 years, 6 months ago) by martins
File length: 14855 byte(s)
Diff to previous 69629
enabled more types to store monomorph information

Revision 69629 - (view) (annotate) - [select for diffs]
Modified Mon Jul 23 21:36:18 2007 UTC (12 years, 6 months ago) by manus
File length: 14725 byte(s)
Diff to previous 68030
Creation of CAT_mono branch to implement variant/invariant proposal

Revision 68030 - (view) (annotate) - [select for diffs]
Modified Mon Apr 30 18:38:45 2007 UTC (12 years, 9 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 14725 byte(s)
Diff to previous 67856
Main change: I merged many occurences of "constrained_type" like features into `FORMAL_A'
Renamed `is_multi_constrained_formal' into `is_multi_constrained'
type_a.e: I moved some features into FORMAL_A because the usage pattern suggests that they are not needed in TYPE_A (to improve speed).
renamed_type_a.e: added implementation for `conformance_type', this was a bug (not reported)
formal_dec_as.e: fixed a bug in `is_multi_constrained' (not reported)

Revision 67856 - (view) (annotate) - [select for diffs]
Modified Mon Apr 16 19:22:30 2007 UTC (12 years, 10 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 14732 byte(s)
Diff to previous 67227
Cosmetics: I replaced double (or more) lines in the source code by single lines automatically. So you might hit anomalies. But I hope they are just a few exceptions.

Revision 67227 - (view) (annotate) - [select for diffs]
Modified Tue Mar 13 01:32:16 2007 UTC (12 years, 11 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 14733 byte(s)
Diff to previous 66980
Support for multi constraint generics:
- Central new class is TYPE_SET_A: It provides features for type checking and feature lookup.
  (the TYPE_A interface is not perfectly complete until now)
- Added EXTENDED_TYPE_A: It basically encapsulates a type and a feature renaming.
- Changed parser to accept the new syntax.
- Adapted validity checks for generics to reflect the new rules.
- Changed AST_FEATURE_CHECKER_GENERATOR in particular `process_call' and its siblings
  to select the so called `multi_constrained_static'. This is the actual static type
  of the target. It is done for each access on a multi constraint generic.
- Added error classes VTGC*, VTGD* and VTMC*.
- Changed code which called `constrained_type' feature to make it capable
  of handling multi constraints. This is in most cases achieved through handling these cases
  explicitly: Autocompletion, query language and debugger are not yet adapted and don't work
  properly in the presence of multi constraint formals.
- Changed AST_DECORATED_OUTPUT_STRATEGY and the like to pretty print the multi constraints correctly.

Support for recursive formals:
- I added a second pass AST_FORMAL_GENERICS_PASS2 which handles the registration of suppliers
  and transformation of the types into the right class (formal or class type).

The rest of the changes are targeted to either one of these.


Revision 66980 - (view) (annotate) - [select for diffs]
Modified Wed Feb 28 19:29:36 2007 UTC (12 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 14629 byte(s)
Diff to previous 66895
Fixed eweasel test#valid190 on .NET because we were inline the call to `out' instead of
  taking the more correct Eiffel version, like we do in classic mode.
Added queries `is_character_8' and `is_character_32' to make it easier to know the current type
  we are handling.


Revision 66895 - (view) (annotate) - [select for diffs]
Modified Sun Feb 25 17:11:57 2007 UTC (12 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 14470 byte(s)
Diff to previous 64465
Support for FreeELKS:
- Added byte code for `floor' and `ceiling' operation on real types.
- Made `c_tagged_out' take an EIF_REFERENCE rather than an EIF_OBJECT, updated
  all C code using it accordingly and ANY/ISE_RUNTIME.
- Added `eif_built_in.h' to keep all macros used for external "built_in' features
  not implemented with Eiffel code.
- Added BUILT_IN_AS node for representing external "built_in' features:
  * when a built_in routine is found, we look in $ISE_EIFFEL/studio/built_ins to
    see if it has a corresponding implementation and the FEATURE_I/STD_BYTE_CODE
	is generated from the implementation. Otherwise we consider it as a special
	C routines.
  * In the formatters, we show the actual code of the implementation and not the
    external body, the same for debugging.
- Partial fix for Precursor call when call is made in an expanded class, the ancestor
  version might have non-expanded arguments and return type (e.g. like Current).
- Changed CLASS_TYPE for basic types so that `type_i' is a CL_TYPE_I and not
  a BASIC_I. It solves issues when you have code defined in basic types which
  would not be properly generated. Since it would be generated as if it was a
  normal expanded type but the types where still EIF_XXX instead of EIF_REFERENCE.
  This was needed for FreeELKS since now we have implementation in the basic types.
  Added some queries to CLASS_TYPE to avoid accessing `type' to get the information
  since sometime we still want to know that we are in basic types. Added `basic_type'
  to be used when it is a basic type. It has mostly an implication with .NET code
  generation.
- Updated debugger so that one can debug all features but attributes, deferred and
  constants.


Revision 64465 - (view) (annotate) - [select for diffs]
Modified Fri Oct 20 12:53:49 2006 UTC (13 years, 4 months ago) by alexk
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 14086 byte(s)
Diff to previous 63371
Supported code generation for basic types, so that they can be attached to
variables of an Eiffel type (e.g., INTEGER_64 to COMPARABLE) preserving
their expanded semantics.
Ensured that a creation information that might come from the code is not
stored in objects for class types that are used for code generation to
avoid problems with using it when not it should not be used.
Corrected code generation for inline agents so that the corresponding
methods are declared before use (it can be important when the agents are
nested, for example).
Added code to store information about local variables that might be
introduced for performing reattachment of an expanded object to a reference
entity in the methods that are generated to support interface of an
inherited class.


Revision 63371 - (view) (annotate) - [select for diffs]
Modified Thu Sep 7 22:37:35 2006 UTC (13 years, 5 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 13819 byte(s)
Diff to previous 62917
Fixed test#incr068 by first:
- renaming `is_valid' into `is_consistent' since it only checks the validity of TYPE_I objects.
- adding `is_valid' to TYPE_I which takes a CLASS_C as argument. Now is_valid will check that if
  you have a formal, then the CLASS_C has generics. Otherwise it is not valid.
- updating the pattern code to use `is_valid' instead of `is_consistent'.


Revision 62917 - (view) (annotate) - [select for diffs]
Modified Thu Aug 24 14:17:50 2006 UTC (13 years, 5 months ago) by alexk
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 13756 byte(s)
Diff to previous 62805
Removed unused local.

Revision 62805 - (view) (annotate) - [select for diffs]
Modified Mon Aug 21 12:50:52 2006 UTC (13 years, 6 months ago) by alexk
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 13780 byte(s)
Diff to previous 58325
Factored out code that records type information about generic types in byte code.
Changed implementation of {TYPED_POINTER_I}.type_a to follow the
implementation of {GEN_TYPE_I}.type_a where "meta_generic" is used instead
of "true_generics" (this fixes test#term133).


Revision 58325 - (view) (annotate) - [select for diffs]
Modified Thu Apr 20 16:05:16 2006 UTC (13 years, 10 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/genericity/type_i.e
File length: 12940 byte(s)
Diff to previous 58027
Moved trunk/Src/bench/Eiffel to trunk/Src/Eiffel.

Revision 58027 - (view) (annotate) - [select for diffs]
Modified Wed Apr 5 07:08:57 2006 UTC (13 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 12940 byte(s)
Diff to previous 57629
Fixed mixing paranthesis in indexing clause for the licensing.
Added missing license reference in newly created Eiffel classes.


Revision 57629 - (view) (annotate) - [select for diffs]
Modified Thu Mar 23 04:55:00 2006 UTC (13 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 12930 byte(s)
Diff to previous 56735
Added optimization of `to_character_8', `to_character_32' and `natural_32_code'.
Added support for WIDE_CHARACTER in .NET. Because .NET only has one character type
  we artifically map WIDE_CHARACTER into a System.UInt32.
  Because the .NET name is the same for WIDE_CHARACTER and NATURAL_32, I've changed
  the generic parameter naming convention in a generic derivation to use the Eiffel
  name instead of the .NET name.


Revision 56735 - (view) (annotate) - [select for diffs]
Modified Thu Jan 26 13:08:50 2006 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 12644 byte(s)
Diff to previous 56708
Added a query to indicate if a type is based on a frozen class.

Revision 56708 - (view) (annotate) - [select for diffs]
Modified Wed Jan 25 10:54:16 2006 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 12545 byte(s)
Diff to previous 56564
Added a query to distinguish standalone types.

Revision 56564 - (view) (annotate) - [select for diffs]
Modified Tue Jan 17 15:00:56 2006 UTC (14 years, 1 month ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 12414 byte(s)
Diff to previous 56535
Added a feature to replace "like Current" with the supplied context class
type.
Added a feature to determine if a generic type has a given class type as an
actual parameter.


Revision 56535 - (view) (annotate) - [select for diffs]
Modified Tue Jan 17 01:37:10 2006 UTC (14 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 12086 byte(s)
Diff to previous 56356
Added text of the GPL license to all classes of the compiler.


Revision 56356 - (view) (annotate) - [select for diffs]
Modified Fri Dec 23 11:15:48 2005 UTC (14 years, 1 month ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10681 byte(s)
Diff to previous 55897
Added a feature to evaluate the type of an expression in a given class
assuming that the context type is fixed. This is used to evaluate types in
the code of inherited features generated for expanded types.
Changed code generation for creation to take expandedness status of the
creation type into account.
Added a feature that loads a current object as a reference one regardless
of its actual expandedness status.
Added features to evaluate context type of a call as well as a type from a
possibly inherited code in the context type for which the code generation
is performed.
Taken expandedness status of a root class into account.


Revision 55897 - (view) (annotate) - [select for diffs]
Modified Sat Nov 26 18:55:32 2005 UTC (14 years, 2 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10382 byte(s)
Diff to previous 55708
Introduced a feature that ensures that attribute description is completely resolved in a sense that it does not depend on class type properties such as formal generics. This can also be used when resolving attributes of type "like Current".

Revision 55708 - (view) (annotate) - [select for diffs]
Modified Fri Nov 11 19:05:36 2005 UTC (14 years, 3 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10145 byte(s)
Diff to previous 52191
Relaxed assertions of the feature "instantiation_in" to allow calling it for
non-generic types.
Added feature "is_anchored".


Revision 52191 - (view) (annotate) - [select for diffs]
Modified Wed Jun 15 23:13:32 2005 UTC (14 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10051 byte(s)
Diff to previous 51245
Removed useless inheritance to SHARED_CODE_FILES.


Revision 51245 - (view) (annotate) - [select for diffs]
Modified Fri May 20 12:58:56 2005 UTC (14 years, 9 months ago) by jfiat
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10070 byte(s)
Diff to previous 47853
included is_natural in precondition for minum_interval_value and maximum_interval_value


Revision 47853 - (view) (annotate) - [select for diffs]
Modified Tue Jan 25 02:52:22 2005 UTC (15 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10032 byte(s)
Diff to previous 47234
Renamed `is_long' into `is_integer'.
Added support for NATURAL_XX types: added `is_natural'.
Removed `il_convert_from' since not needed as conversion is handled at compile time.


Revision 47234 - (view) (annotate) - [select for diffs]
Modified Sat Dec 25 00:19:09 2004 UTC (15 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10119 byte(s)
Diff to previous 46070
Provided new class names, new feature names to entities representing
  basic types so that they are close to the new basic type names:
    real -> real_32
	double -> double_32
	float -> real_32
	long -> integer
	....


Revision 46070 - (view) (annotate) - [select for diffs]
Modified Mon Oct 18 15:03:35 2004 UTC (15 years, 4 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 10174 byte(s)
Diff to previous 44056
Added queries for minimum and maximum values of objects of integer or character type.


Revision 44056 - (view) (annotate) - [select for diffs]
Modified Wed Jun 30 22:59:41 2004 UTC (15 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9620 byte(s)
Diff to previous 44031
Updated `implementation_id' for IL code generation so that when Current is not
a CL_TYPE_I then we make sure to return the static type id of SYSTEM_OBJECT
since now our ANY and System.Object maps to System.Object in the generated
code. It was forgotten at previous integration.


Revision 44031 - (view) (annotate) - [select for diffs]
Modified Wed Jun 30 04:15:51 2004 UTC (15 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9610 byte(s)
Diff to previous 43828
Updated `static_type_id' for IL code generation so that when Current is not
a CL_TYPE_I then we make sure to return the static type id of SYSTEM_OBJECT
since now our ANY and System.Object maps to System.Object in the generated
code.


Revision 43828 - (view) (annotate) - [select for diffs]
Modified Tue Jun 15 18:15:36 2004 UTC (15 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9600 byte(s)
Diff to previous 43364
Redefined `dump' in GEN_TYPE_I to be correct, that is to say it will display
  the actual generic derivation, i.e. type of `associated_class_type'.
Changed signature of `instantiation_in' and `complete_instantiation_in' to
  take a CLASS_TYPE rather than a GEN_TYPE_I. This made a huge simplification
  in the code and made it clearer to understand that it was only used to find
  out the type in a given generic derivation and not in any kind of `GEN_TYPE_I'.
  By doing this work, we were able to easily fix eweasel test `exec181'.
In FORMAL_I, it showed that `complete_instantiation_in' did not have
  to do any special work, it just needed to take the information directly
  from the CLASS_TYPE_.
It enabled us to have a proper implementation of `generic_derivation' for
  generic types where `meta_generic' and `true_generics' are properly initialized.
New creation procedure for GEN_TYPE_I and descendants to help us add some
  invariants about `meta_generic' and `true_generics'.


Revision 43364 - (view) (annotate) - [select for diffs]
Modified Sat May 29 22:49:07 2004 UTC (15 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9493 byte(s)
Diff to previous 43156
Revisited `generate_expanded_creation' and added `generate_expanded_initialization'.
Removed code from CL_TYPE_I and replaced by a call to feature of CLASS_TYPE
  which does the same job, but avoids code duplication.


Revision 43156 - (view) (annotate) - [select for diffs]
Modified Fri May 21 23:45:44 2004 UTC (15 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9232 byte(s)
Diff to previous 43084
Cosmetic in code generation, now spaces after the comma in generation of type arrays
  used for generic conformance.


Revision 43084 - (view) (annotate) - [select for diffs]
Modified Tue May 18 04:14:09 2004 UTC (15 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9230 byte(s)
Diff to previous 42865
Used two words names instead of just one for `put_xx', `read_xx' and `last_xxx' routines.
Used specific `put_xxx_id' routines to generate runtime IDs. This removes those
  very annoying `- 1' in the code because the runtime and the compiler are not
  indexed the same way.


Revision 42865 - (view) (annotate) - [select for diffs]
Modified Thu Apr 29 18:58:24 2004 UTC (15 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9223 byte(s)
Diff to previous 41823
Reduced code duplication between `cecil_value' and `sk_value', and between
`generate_cecil_value' and `generate_sk_value' as they are very similar.
Ensured that we do not generate `SK_DTYPE' anymore, but `SK_REF' instead.


Revision 41823 - (view) (annotate) - [select for diffs]
Modified Sat Mar 6 01:46:12 2004 UTC (15 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9167 byte(s)
Diff to previous 39713
Now inherit from DEBUG_OUTPUT to ease debugging.
Changed contract for `instantiation_in' and `comlete_instantiation_in' so that
  result is not Void, it can still have formal.
Removed `creation_instantiation_in' and use `complete_instantiation_in' instead.
Introduced `generic_derivation' which given a generic type give us the type
  used for the actual generic derivation in generated code.
Added `name' which is used by `dump'.
Added `is_generated_as_single_type' for IL code generation to see if a CLASS_TYPE
  should be generated as just a .NET class or as a collection of interface/implementation.
Switch meaning of `is_expanded' and `is_true_expanded'. Now base types are also `is_expanded'
  and only expanded types that are not basic are `is_true_expanded'.
Removed `append_signature' which was not used.
Added `tuple_code' that gives the code stored in TUPLE at runtime for a corresponding type.
Use `terminator_type' instead of `internal_type' as default implementation of
  `generated_id'.


Revision 39713 - (view) (annotate) - [select for diffs]
Modified Fri Oct 17 19:27:17 2003 UTC (16 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8946 byte(s)
Diff to previous 39412
Fixed eweasel bug `freez026'. By previously fixing the way we handle
creation of generic type using anchored in their specification (e.g. A [like f])
we introduced a bug of type result caching. Indeed before when a `typarr'
had an anchor it contained either LIKE_ARG_TYPE, LIKE_CURRENT_TYPE,
LIKE_PFEATURE_TYPE or LIKE_FEATURE_TYPE. In such cases the C runtime
was preventing the caching of the information.
Now since we do not generate the LIKE_XX constants, but force a computation
of the value in the generated code the caching mechanism was not prevented
therefore in such cases it was giving the proper result the first time around
but not the second time around if the `anchors' were different.

To prevent this we tell the runtime if it can cache it by providing a non NULL
buffer, it cannot if we pass NULL.
To find out if we can pass a non-NULL or NULL, we simply find out if the
generic type is `is_explicit'. When it is `is_explicit, it is known for not
changing during the whole life of the application and we pass a non NULL buffer.
When it is not `is_explicit' then the value would have to be recomputed
each time it is queried, therefore we pass a NULL buffer.

To improve performance in non multithreaded mode we always mark the `typarr'
a static structure. As only one thread at the time can modify it if the
generic type is not explicit. In multithreaded mode, this is not the case
and therefore it is not `static'.

FIXME: we might be better off using `uint16' as on some platforms unsigned
operation are much faster than signed one. The second advantage will be to
increase the number of possible dynamic types from ~32000 to ~65000.


Revision 39412 - (view) (annotate) - [select for diffs]
Modified Sat Oct 4 22:08:21 2003 UTC (16 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8930 byte(s)
Diff to previous 38932
Fixed eweasel bug exec176. The change is quite dramatic. Instead of generating
special marker in `typarr' for anchored type, we generate just 0. Then the associated
entry is computed later on by applying RTID to the result since `typarr' needs
the `static_type_id', not the `type_id' when in workbench mode.
Moreover when a type has a `cr_info' then we generate the info for this only,
we do not repeat code generation for the type we think we have. I don't understand
why it was done before, I think this was just a mistake to do both, so now
they are separated by a `else'.


Revision 38932 - (view) (annotate) - [select for diffs]
Modified Sat Sep 6 06:24:48 2003 UTC (16 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8929 byte(s)
Diff to previous 37131
Updated to new signature of `escape_char' and `escape_string' in GENERATION_BUFFER.
New way to save GENERATION_BUFFER to a file as it does not inherit STRING anymore.


Revision 37131 - (view) (annotate) - [select for diffs]
Modified Mon May 5 18:08:48 2003 UTC (16 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8919 byte(s)
Diff to previous 35665
Removed `is_out' related code since we are now using TYPED_POINTER [XX] to
  represent them.


Revision 35665 - (view) (annotate) - [select for diffs]
Modified Fri Jan 31 00:53:19 2003 UTC (17 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 9029 byte(s)
Diff to previous 35178
Renamed `generate_basic_creation' into `generate_default_value'.
Renamed `make_basic_creation_byte_code' into `make_default_byte_code'.
Fixed implementation of above two renamed features to do a proper job. The
  reason why it was not updated before was because this code was done in
  SPECIAL_FEATURES, but I felt that it should be defined in the TYPE_I classes
  and not outside (makes source code management easier in the future).
Added `generate_expanded_creation' which is implemented in BIT_I and CL_TYPE_I
  to create in a given register a new instance of an object which is expanded.
Removed `expanded_type_id' in CL_TYPE_I since it was strictly equivalent to
  `type_id'.


Revision 35178 - (view) (annotate) - [select for diffs]
Modified Mon Dec 23 20:08:09 2002 UTC (17 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8755 byte(s)
Diff to previous 33952
Added `is_out' which is used to mark a parameter type has been a `out' parameter.
Only used for interfaces with languages that support out parameters.


Revision 33952 - (view) (annotate) - [select for diffs]
Modified Fri Aug 23 16:49:17 2002 UTC (17 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8645 byte(s)
Diff to previous 33448
Changed signature of `il_type_name' so that it can take a prefix, the purpose
was to move code from CLASS_TYPE into CL_TYPE_I. That way we can generate
a correct `il_type_name' for native arrays. Not doing it was basically
generating a class name that does not match what we were getting from CLASS_TYPE.


Revision 33448 - (view) (annotate) - [select for diffs]
Modified Tue Aug 6 22:32:57 2002 UTC (17 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8529 byte(s)
Diff to previous 31891
Added export to NONE of all inherited features of SHARED_TYPE_I.


Revision 31891 - (view) (annotate) - [select for diffs]
Modified Tue May 7 02:14:22 2002 UTC (17 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8499 byte(s)
Diff to previous 31539
New feature `il_convert_from' that is usually used to convert from one
basic type to another in IL code generation.


Revision 31539 - (view) (annotate) - [select for diffs]
Modified Tue Apr 16 00:28:55 2002 UTC (17 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 8312 byte(s)
Diff to previous 30169
Added `static_type_id' and `implementation_id' that were previously defined in IL_CODE_GENERATOR.
Added abstract feature `element_type' used to defined a type specification
 used to generation an IL metadata signature in MD_SIGNATURE. Possible values
 are defined in MD_SIGNATURE_CONSTANTS.


Revision 30169 - (view) (annotate) - [select for diffs]
Modified Fri Jan 11 01:28:57 2002 UTC (18 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 7243 byte(s)
Diff to previous 29940
Addeg `generate_gen_type_il' in TYPE_I and redefined it in descendants. This is
  used for generic conformance in IL code generation where we generate in IL
  stream the data about the type being analyzed. This data is then used for creation
  of objects or reverse assignment.
In CL_TYPE_I added inheritance to `DEBUG_OUTPUT' so that we can see the associated
  class name in debugger.
Cosmetics.


Revision 29940 - (view) (annotate) - [select for diffs]
Modified Thu Dec 27 01:51:57 2001 UTC (18 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 6971 byte(s)
Diff to previous 28382
Cosmetics and rearrangement of feature clauses with additions of some assertions
to make code more readable.


Revision 28382 - (view) (annotate) - [select for diffs]
Modified Wed Oct 24 22:06:01 2001 UTC (18 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 6657 byte(s)
Diff to previous 26913
Added `is_external' to find out if the associated class of a type is an external
class or not.


Revision 26913 - (view) (annotate) - [select for diffs]
Modified Sun Aug 12 23:50:20 2001 UTC (18 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 6579 byte(s)
Diff to previous 14013
Merged branch `dev46_manu' to the trunc.


Revision 14013 - (view) (annotate) - [select for diffs]
Modified Wed Apr 14 19:02:53 1999 UTC (20 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 5701 byte(s)
Diff to previous 12176
Fixed a C-ANSI generation problem with generic conformance.
Previously we were generating something like:
	int16 typearr[] ={4,5,Dtype(l[0]),5,-1};
However, this is not accepted by most of the C ANSI compiler (mostly on
Unix platforms). Now, we fix this problem and are generating the following
code:
	int16 typearr[] ={4,5,0,5,-1};
	typearr[2]=Dtype(l[0]);
which is C ANSI.


Revision 12176 - (view) (annotate) - [select for diffs]
Modified Sat Dec 5 19:51:46 1998 UTC (21 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 4669 byte(s)
Diff to previous 11843
First implementation of TUPLE and ROUTINE OBJECT.
Now we can have in the Eiffel Code:
	~r
	~{A}r


Revision 11843 - (view) (annotate) - [select for diffs]
Modified Sat Nov 7 02:14:45 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 4536 byte(s)
Diff to previous 11599
Fixed a bug when an attribute with a generic type is being redefined into
an attribute with less generic parameters. Because of this redefinition we introduced
`is_identical' which compares the `true_generics' field.


Revision 11599 - (view) (annotate) - [select for diffs]
Modified Tue Oct 13 01:21:14 1998 UTC (21 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 4329 byte(s)
Diff to previous 11298
Changed the way how to generate a C file. We are now using a string buffer
to bufferize all the IO transfers.


Revision 11298 - (view) (annotate) - [select for diffs]
Modified Sun Sep 13 20:40:22 1998 UTC (21 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 4168 byte(s)
Diff to previous 11218
Improved the conformance of generic by writing in a file instead of creating a STRING.
Fixed one bug related to the use of `has_associated_class_type' in CL_TYPE_I.
Fixed one bug related to a bad generation of C code and the GC


Revision 11218 - (view) (annotate) - [select for diffs]
Modified Fri Sep 4 02:24:57 1998 UTC (21 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 4189 byte(s)
Diff to previous 10890
Improved the speed of generic conformance by adding some static structure in
the C generated code.


Revision 10890 - (view) (annotate) - [select for diffs]
Modified Tue Aug 11 00:12:19 1998 UTC (21 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 4086 byte(s)
Diff to previous 10818
Updated version of generic conformance


Revision 10818 - (view) (annotate) - [select for diffs]
Modified Thu Jul 30 20:33:23 1998 UTC (21 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 3892 byte(s)
Diff to previous 9655
Add the generic conformance to the compiler


Revision 9655 - (view) (annotate) - [select for diffs]
Modified Sun Mar 15 02:15:49 1998 UTC (21 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 3024 byte(s)
Diff to previous 7877
Cosmetics
Changed somehow the interface of basic types *_I


Revision 7877 - (view) (annotate) - [select for diffs]
Modified Fri May 9 12:34:52 1997 UTC (22 years, 9 months ago) by zorans
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 3062 byte(s)
Diff to previous 4623
FIXME added for crash when compiling expanded generics with assertions on


Revision 4623 - (view) (annotate) - [select for diffs]
Modified Thu Apr 11 10:44:28 1996 UTC (23 years, 10 months ago) by xavierl
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2960 byte(s)
Diff to previous 3636
implementation of `is_separate'


Revision 3636 - (view) (annotate) - [select for diffs]
Modified Mon Jan 15 12:06:48 1996 UTC (24 years, 1 month ago) by guusl
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2870 byte(s)
Diff to previous 3187
output done through STRUCTURED_TEXT instead of OUTPUT_WINDOW


Revision 3187 - (view) (annotate) - [select for diffs]
Modified Tue Nov 21 16:55:47 1995 UTC (24 years, 3 months ago) by dinov
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2877 byte(s)
Diff to previous 1204
different output routines
inherits from COMPILER_EXPORTER (export status)


Revision 1204 - (view) (annotate) - [select for diffs]
Modified Wed Oct 5 00:16:03 1994 UTC (25 years, 4 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2867 byte(s)
Diff to previous 930
array optimization


Revision 930 - (view) (annotate) - [select for diffs]
Modified Sat Aug 27 00:59:35 1994 UTC (25 years, 5 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2830 byte(s)
Diff to previous 621
array optimization


Revision 621 - (view) (annotate) - [select for diffs]
Modified Thu Jul 14 21:37:03 1994 UTC (25 years, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2755 byte(s)
Diff to previous 605
*** empty log message ***


Revision 605 - (view) (annotate) - [select for diffs]
Modified Tue Jun 28 16:58:24 1994 UTC (25 years, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2753 byte(s)
Diff to previous 552
*** empty log message ***


Revision 552 - (view) (annotate) - [select for diffs]
Modified Wed May 11 11:14:08 1994 UTC (25 years, 9 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2758 byte(s)
Diff to previous 508
*** empty log message ***


Revision 508 - (view) (annotate) - [select for diffs]
Modified Mon Mar 28 11:18:45 1994 UTC (25 years, 10 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2680 byte(s)
Diff to previous 236
*** empty log message ***


Revision 236 - (view) (annotate) - [select for diffs]
Modified Tue Jun 8 12:09:28 1993 UTC (26 years, 8 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2588 byte(s)
Diff to previous 18
*** empty log message ***


Revision 18 - (view) (annotate) - [select for diffs]
Added Fri Mar 12 17:44:01 1993 UTC (26 years, 11 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/genericity/type_i.e
File length: 2482 byte(s)
Initial revision


This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC 1.1.23