/[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 63371 by manus, Thu Sep 7 22:37:35 2006 UTC revision 64191 by manus, Thu Oct 5 21:04:08 2006 UTC
# Line 160  feature -- Access Line 160  feature -- Access
160                          l_class_c: like base_class                          l_class_c: like base_class
161                          l_is_precompiled: BOOLEAN                          l_is_precompiled: BOOLEAN
162                          l_cl_type: like associated_class_type                          l_cl_type: like associated_class_type
163                            l_alias_name: STRING
164                            l_dot_pos: INTEGER
165                  do                  do
166                          l_class_c := base_class                          l_class_c := base_class
167                          if is_external then                          if is_external then
# Line 167  feature -- Access Line 169  feature -- Access
169                          else                          else
170                                  l_is_precompiled := l_class_c.is_precompiled                                  l_is_precompiled := l_class_c.is_precompiled
171                                  if l_is_precompiled then                                  if l_is_precompiled then
172                                                    -- Reuse the name that was computed at precompilation time.
173                                          l_cl_type := associated_class_type                                          l_cl_type := associated_class_type
174                                          l_is_precompiled := l_cl_type.is_precompiled                                          l_is_precompiled := l_cl_type.is_precompiled
175                                          if l_is_precompiled then                                          if l_is_precompiled then
# Line 177  feature -- Access Line 180  feature -- Access
180                                          if l_class_c.external_class_name.is_equal (l_class_c.name) then                                          if l_class_c.external_class_name.is_equal (l_class_c.name) then
181                                                  Result := internal_il_type_name (l_class_c.name.twin, a_prefix)                                                  Result := internal_il_type_name (l_class_c.name.twin, a_prefix)
182                                          else                                          else
183                                                            -- Special case when an external name has been specified.
184                                                  Result := l_class_c.external_class_name.twin                                                  Result := l_class_c.external_class_name.twin
185                                                  if a_prefix /= Void then                                                  Result.left_adjust
186                                                          if Result.item (Result.count) /= '.' then                                                  Result.right_adjust
187                                                                  Result.append_character ('.')                                                          -- Remove leading `.' since it is not a valid .NET name.
188                                                    from
189                                                    until
190                                                            Result.is_empty or else Result.item (1) /= '.'
191                                                    loop
192                                                            Result.remove_head (1)
193                                                    end
194                                                            -- Remove trailing `.' since it is not a valid .NET name.
195                                                    from
196                                                    until
197                                                            Result.is_empty or else Result.item (Result.count) /= '.'
198                                                    loop
199                                                            Result.remove_tail (1)
200                                                    end
201                                                    if Result.is_empty then
202                                                                    -- External name is invalid since empty, we use the normal
203                                                                    -- way of generating the .Net name
204                                                            Result := internal_il_type_name (l_class_c.name.twin, a_prefix)
205                                                    else
206                                                            if a_prefix /= Void then
207                                                                    l_dot_pos := Result.last_index_of ('.', Result.count)
208                                                                    if l_dot_pos = 0 then
209                                                                            Result.prepend_character ('.')
210                                                                            Result.prepend (a_prefix)
211                                                                    else
212                                                                            check
213                                                                                            -- Because there are no more leading or trailing `.'.
214                                                                                    valid_l_dot_pos: l_dot_pos > 1 and l_dot_pos < Result.count
215                                                                            end
216                                                                            l_alias_name := Result.substring (l_dot_pos + 1, Result.count)
217                                                                            check
218                                                                                    l_alias_name_not_empty: not l_alias_name.is_empty
219                                                                            end
220                                                                            Result.keep_head (l_dot_pos)
221                                                                            l_alias_name := internal_il_base_type_name (l_alias_name)
222                                                                            Result.append (a_prefix)
223                                                                            Result.append_character ('.')
224                                                                            Result.append (l_alias_name)
225                                                                    end
226                                                          end                                                          end
                                                         Result.append (a_prefix)  
227                                                  end                                                  end
228                                          end                                          end
229                                  end                                  end
# Line 622  feature {NONE} -- Implementation Line 663  feature {NONE} -- Implementation
663                          -- with namespace specification                          -- with namespace specification
664                  require                  require
665                          a_base_name_not_void: a_base_name /= Void                          a_base_name_not_void: a_base_name /= Void
666                  local                          a_base_name_not_empty: not a_base_name.is_empty
                         l_base_class: like base_class  
667                  do                  do
668                          l_base_class := base_class                          Result := internal_il_base_type_name (a_base_name)
669                                  -- Result needs to be in lower case because that's                                  -- Result needs to be in lower case because that's
670                                  -- what our casing conversion routines require to perform                                  -- what our casing conversion routines require to perform
671                                  -- a good job.                                  -- a good job.
672                            Result.to_lower
673                            Result := il_casing.type_name (base_class.original_class.actual_namespace, a_prefix, Result, System.dotnet_naming_convention)
674                    ensure
675                            internal_il_type_name_not_void: Result /= Void
676                            internal_il_type_name_not_empty: not Result.is_empty
677                    end
678    
679            frozen internal_il_base_type_name (a_base_name: STRING): STRING is
680                            -- Given `a_base_name' provides its updated name depending on its usage.
681                    require
682                            a_base_name_not_void: a_base_name /= Void
683                            a_base_name_not_empty: not a_base_name.is_empty
684                    local
685                            l_base_class: like base_class
686                    do
687                            l_base_class := base_class
688                          if is_expanded and then not l_base_class.is_expanded then                          if is_expanded and then not l_base_class.is_expanded then
689                                  create Result.make (6 + a_base_name.count)                                  create Result.make (6 + a_base_name.count)
690                                  Result.append ("value_")                                  Result.append ("value_")
# Line 639  feature {NONE} -- Implementation Line 695  feature {NONE} -- Implementation
695                                  create Result.make (a_base_name.count)                                  create Result.make (a_base_name.count)
696                          end                          end
697                          Result.append (a_base_name)                          Result.append (a_base_name)
                         Result.to_lower  
                         Result := il_casing.type_name (l_base_class.original_class.actual_namespace, a_prefix, Result, System.dotnet_naming_convention)  
698                  ensure                  ensure
699                          internal_il_type_name_not_void: Result /= Void                          internal_il_base_type_name_not_void: Result /= Void
700                          internal_il_type_name_not_empty: not Result.is_empty                          internal_il_base_type_name_not_empty: not Result.is_empty
701                  end                  end
702    
703  feature {CL_TYPE_A, TUPLE_CLASS_B} -- Implementation: class type declaration marks  feature {CL_TYPE_A, TUPLE_CLASS_B} -- Implementation: class type declaration marks

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

  ViewVC Help
Powered by ViewVC 1.1.23