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

Diff of /branches/CAT_mono/Src/Eiffel/eiffel/genericity/cl_type_i.e

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

revision 64191 by manus, Thu Oct 5 21:04:08 2006 UTC revision 64465 by alexk, Fri Oct 20 12:53:49 2006 UTC
# Line 14  inherit Line 14  inherit
14                          c_type,                          c_type,
15                          conforms_to_array,                          conforms_to_array,
16                          created_in,                          created_in,
17                            external_id,
18                          full_type_byte_code_type_id,                          full_type_byte_code_type_id,
19                          generate_cid,                          generate_cid,
20                          generate_cid_array,                          generate_cid_array,
# Line 100  feature -- Access Line 101  feature -- Access
101                          -- Precise generic derivation of current type.                          -- Precise generic derivation of current type.
102                          -- That is to say given a type, it gives the associated TYPE_I                          -- That is to say given a type, it gives the associated TYPE_I
103                          -- which can be used to search its associated CLASS_TYPE.                          -- which can be used to search its associated CLASS_TYPE.
104                    local
105                            c: like cr_info
106                  do                  do
107                          Result := Current                          c := cr_info
108                            if c = Void then
109                                    Result := Current
110                            else
111                                            -- Remove creation information.
112                                    cr_info := Void
113                                    Result := twin
114                                    cr_info := c
115                            end
116                  end                  end
117    
118          type_a: CL_TYPE_A is          type_a: CL_TYPE_A is
# Line 158  feature -- Access Line 169  feature -- Access
169                          -- Class name of current type.                          -- Class name of current type.
170                  local                  local
171                          l_class_c: like base_class                          l_class_c: like base_class
                         l_is_precompiled: BOOLEAN  
172                          l_cl_type: like associated_class_type                          l_cl_type: like associated_class_type
173                          l_alias_name: STRING                          l_alias_name: STRING
174                          l_dot_pos: INTEGER                          l_dot_pos: INTEGER
# Line 167  feature -- Access Line 177  feature -- Access
177                          if is_external then                          if is_external then
178                                  Result := l_class_c.external_class_name.twin                                  Result := l_class_c.external_class_name.twin
179                          else                          else
180                                  l_is_precompiled := l_class_c.is_precompiled                                  if l_class_c.is_precompiled then
                                 if l_is_precompiled then  
181                                                  -- Reuse the name that was computed at precompilation time.                                                  -- Reuse the name that was computed at precompilation time.
182                                          l_cl_type := associated_class_type                                          l_cl_type := associated_class_type
183                                          l_is_precompiled := l_cl_type.is_precompiled                                          if l_cl_type.is_precompiled then
                                         if l_is_precompiled then  
184                                                  Result := l_cl_type.il_type_name (a_prefix)                                                  Result := l_cl_type.il_type_name (a_prefix)
185                                          end                                          end
186                                  end                                  end
187                                  if not l_is_precompiled then                                  if Result = Void then
188                                          if l_class_c.external_class_name.is_equal (l_class_c.name) then                                          if not has_no_mark or else is_basic or else l_class_c.external_class_name.is_equal (l_class_c.name) then
189                                                  Result := internal_il_type_name (l_class_c.name.twin, a_prefix)                                                  Result := internal_il_type_name (l_class_c.name.twin, a_prefix)
190                                          else                                          else
191                                                          -- Special case when an external name has been specified.                                                          -- Special case when an external name has been specified.
# Line 280  feature -- Access Line 288  feature -- Access
288                          Result := associated_class_type.static_type_id                          Result := associated_class_type.static_type_id
289                  end                  end
290    
291            external_id: INTEGER is
292                            -- External type id of `Current' (or `static_type_id' for pure Eiffel type).
293                    do
294                            Result := associated_class_type.external_id
295                    end
296    
297          sk_value: INTEGER is          sk_value: INTEGER is
298                          -- Generate SK value associated to the current type.                          -- Generate SK value associated to the current type.
299                  do                  do
# Line 392  feature -- Status Line 406  feature -- Status
406                                  -- All Eiffel basic types are externals, and only basic types used                                  -- All Eiffel basic types are externals, and only basic types used
407                                  -- as reference are not external.                                  -- as reference are not external.
408                          l_base_class := base_class                          l_base_class := base_class
409                          Result := is_basic or (not l_base_class.is_basic and l_base_class.is_external)                          Result := l_base_class.is_external and then not l_base_class.is_basic
410                  end                  end
411    
412          is_frozen: BOOLEAN is          is_frozen: BOOLEAN is

Legend:
Removed from v.64191  
changed lines
  Added in v.64465

  ViewVC Help
Powered by ViewVC 1.1.23