/[eiffelstudio]/branches/eth/eve/Src/Eiffel/API/evaluated_type/like_current.e
ViewVC logotype

Diff of /branches/eth/eve/Src/Eiffel/API/evaluated_type/like_current.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 87219 by jasonw, Fri Jun 10 11:12:57 2011 UTC revision 87220 by jasonw, Thu Sep 15 08:09:35 2011 UTC
# Line 19  inherit Line 19  inherit
19                          meta_type, set_actual_type, evaluated_type_in_descendant, is_tuple,                          meta_type, set_actual_type, evaluated_type_in_descendant, is_tuple,
20                          set_attached_mark, set_detachable_mark, set_is_implicitly_attached,                          set_attached_mark, set_detachable_mark, set_is_implicitly_attached,
21                          unset_is_implicitly_attached, description, description_with_detachable_type,                          unset_is_implicitly_attached, description, description_with_detachable_type,
22                          c_type, is_explicit, formal_instantiation_in,                          c_type, is_explicit, formal_instantiation_in, is_implicitly_attached, is_attached,
23                          generated_id, generate_cid, generate_cid_array, generate_cid_init,                          generated_id, generate_cid, generate_cid_array, generate_cid_init,
24                          make_type_byte_code, generate_gen_type_il, internal_is_valid_for_class,                          make_type_byte_code, generate_gen_type_il, internal_is_valid_for_class,
25                          maximum_interval_value, minimum_interval_value, is_optimized_as_frozen,                          maximum_interval_value, minimum_interval_value, is_optimized_as_frozen,
# Line 145  feature -- Properties Line 145  feature -- Properties
145                          end                          end
146                  end                  end
147    
148            is_attached: BOOLEAN
149                            -- Is type attached?
150                    do
151                            if is_directly_attached then
152                                    Result := True
153                            elseif not has_detachable_mark and then attached conformance_type as t then
154                                    Result := t.is_attached
155                            end
156                    end
157    
158            is_implicitly_attached: BOOLEAN
159                            -- <Precursor>
160                    do
161                            if is_directly_implicitly_attached then
162                                    Result := True
163                            elseif not has_detachable_mark and then attached conformance_type as t then
164                                    Result := t.is_implicitly_attached
165                            end
166                    end
167    
168          same_as (other: TYPE_A): BOOLEAN          same_as (other: TYPE_A): BOOLEAN
169                          -- Is the current type the same as `other' ?                          -- Is the current type the same as `other' ?
170                  local                  local
# Line 216  feature -- Comparison Line 236  feature -- Comparison
236          is_equivalent (other: like Current): BOOLEAN          is_equivalent (other: like Current): BOOLEAN
237                          -- Is `other' equivalent to the current object ?                          -- Is `other' equivalent to the current object ?
238                  do                  do
239                          Result := same_as (other)                                  -- Do not compare `has_attached_mark' because "like Current" is attached by default.
240                            Result :=
241                                    other.has_detachable_mark = has_detachable_mark and then
242                                    other.has_separate_mark = has_separate_mark
243                  end                  end
244    
245  feature -- Output  feature -- Output
# Line 387  feature {COMPILER_EXPORTER} -- Modificat Line 410  feature {COMPILER_EXPORTER} -- Modificat
410          set_actual_type (a: TYPE_A)          set_actual_type (a: TYPE_A)
411                          -- Assign `a' to `conformance_type'.                          -- Assign `a' to `conformance_type'.
412                  do                  do
413                                    -- Remove any previously recorded actual type first
414                                    -- since it can be used to compute attachment properties
415                                    -- and give wrong results.
416                            conformance_type := Void
417                            actual_type := Void
418                                  -- Promote separateness status if present.                                  -- Promote separateness status if present.
419                          if has_separate_mark then                          if has_separate_mark then
420                                  conformance_type := a.to_other_immediate_attachment (Current).to_other_separateness (Current)                                  conformance_type := a.to_other_immediate_attachment (Current).to_other_separateness (Current)
# Line 412  feature {COMPILER_EXPORTER} -- Modificat Line 440  feature {COMPILER_EXPORTER} -- Modificat
440    
441          set_is_implicitly_attached          set_is_implicitly_attached
442                  local                  local
443                          a: like conformance_type                          t: TYPE_A
444                  do                  do
445                                    -- Make sure `conformance_type' does not affect attachment status.
446                            t := conformance_type
447                            conformance_type := Void
448                          Precursor                          Precursor
449                          a := conformance_type                          if attached t then
450                          if a /= Void then                                  conformance_type := t.to_other_immediate_attachment (Current)
                                 conformance_type := a.to_other_immediate_attachment (Current)  
451                          end                          end
452                  end                  end
453    
454          unset_is_implicitly_attached          unset_is_implicitly_attached
455                  local                  local
456                          a: like conformance_type                          t: TYPE_A
457                  do                  do
458                                    -- Make sure `conformance_type' does not affect attachment status.
459                            t := conformance_type
460                            conformance_type := Void
461                          Precursor                          Precursor
462                          a := conformance_type                          if attached t then
463                          if a /= Void then                                  conformance_type := t.to_other_immediate_attachment (Current)
                                 conformance_type := a.to_other_immediate_attachment (Current)  
464                          end                          end
465                  end                  end
466    
# Line 579  feature {COMPILER_EXPORTER} -- Primitive Line 611  feature {COMPILER_EXPORTER} -- Primitive
611          conform_to (a_context_class: CLASS_C; other: TYPE_A): BOOLEAN          conform_to (a_context_class: CLASS_C; other: TYPE_A): BOOLEAN
612                          -- Does `Current' conform to `other'?                          -- Does `Current' conform to `other'?
613                  do                  do
614                          Result := other.is_like_current or else conformance_type.conform_to (a_context_class, other.conformance_type)                          Result :=
615                                    (attached {LIKE_CURRENT} other as a and then
616                                            (a_context_class.lace_class.is_void_safe_conformance implies is_attachable_to (a)) and then
617                                            is_processor_attachable_to (a)) or else
618                                    conformance_type.conform_to (a_context_class, other.conformance_type)
619                  end                  end
620    
621          convert_to (a_context_class: CLASS_C; a_target_type: TYPE_A): BOOLEAN          convert_to (a_context_class: CLASS_C; a_target_type: TYPE_A): BOOLEAN

Legend:
Removed from v.87219  
changed lines
  Added in v.87220

  ViewVC Help
Powered by ViewVC 1.1.23