/[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 55897 by alexk, Sat Nov 26 18:55:32 2005 UTC revision 56011 by alexk, Mon Dec 5 17:36:00 2005 UTC
# Line 58  feature {NONE} -- Initialization Line 58  feature {NONE} -- Initialization
58                          valid_id: id > 0                          valid_id: id > 0
59                  do                  do
60                          class_id := id                          class_id := id
                         if is_basic then  
                                         -- We know for sure that it is expanded then.  
                                 is_expanded := True  
                         end  
61                  ensure                  ensure
62                          class_id_set: class_id = id                          class_id_set: class_id = id
63                  end                  end
# Line 104  feature -- Access Line 100  feature -- Access
100          type_a: CL_TYPE_A is          type_a: CL_TYPE_A is
101                  do                  do
102                          create Result.make (class_id)                          create Result.make (class_id)
103                          Result.set_is_expanded (is_expanded)                          Result.set_mark (declaration_mark)
                         Result.set_is_separate (is_separate)  
104                  end                  end
105    
106          name: STRING is          name: STRING is
# Line 114  feature -- Access Line 109  feature -- Access
109                          Result := base_name                          Result := base_name
110                  end                  end
111    
112            duplicate: like Current is
113                            -- Duplication
114                    do
115                            Result := twin
116                    end
117    
118          instantiation_in (other: CLASS_TYPE): CL_TYPE_I is          instantiation_in (other: CLASS_TYPE): CL_TYPE_I is
119                          -- Instantation of Current in `other'                          -- Instantation of Current in `other'
120                  do                  do
# Line 239  feature -- Status Line 240  feature -- Status
240                          Result := {SHARED_GEN_CONF_LEVEL}.reference_tuple_code                          Result := {SHARED_GEN_CONF_LEVEL}.reference_tuple_code
241                  end                  end
242    
243          is_expanded: BOOLEAN          has_no_mark: BOOLEAN is
244                            -- Has class type no explicit mark?
245                    do
246                            Result := declaration_mark = {CL_TYPE_A}.no_mark
247                    ensure
248                            definition: Result = (declaration_mark = {CL_TYPE_A}.no_mark)
249                    end
250    
251            has_expanded_mark: BOOLEAN is
252                            -- Is class type explicitly marked as expanded?
253                    do
254                            Result := declaration_mark = {CL_TYPE_A}.expanded_mark
255                    ensure
256                            definition: Result = (declaration_mark = {CL_TYPE_A}.expanded_mark)
257                    end
258    
259            has_reference_mark: BOOLEAN is
260                            -- Is class type explicitly marked as reference?
261                    do
262                            Result := declaration_mark = {CL_TYPE_A}.reference_mark
263                    ensure
264                            definition: Result = (declaration_mark = {CL_TYPE_A}.reference_mark)
265                    end
266    
267            has_separate_mark: BOOLEAN is
268                            -- Is class type explicitly marked as reference?
269                    do
270                            Result := declaration_mark = {CL_TYPE_A}.separate_mark
271                    ensure
272                            definition: Result = (declaration_mark = {CL_TYPE_A}.separate_mark)
273                    end
274    
275            is_expanded: BOOLEAN is
276                          -- Is the type expanded?                          -- Is the type expanded?
277                    do
278                            Result := has_expanded_mark or else has_no_mark and then base_class.is_expanded
279                    end
280    
281          is_separate: BOOLEAN          is_reference: BOOLEAN is
282                            -- Is the type a reference type?
283                    do
284                            Result := has_reference_mark or else has_no_mark and then not base_class.is_expanded
285                    end
286    
287            is_separate: BOOLEAN is
288                          -- Is the type separate?                          -- Is the type separate?
289                    do
290                            Result := has_separate_mark
291                    end
292    
293          is_enum: BOOLEAN is          is_enum: BOOLEAN is
294                          -- Is current type an IL enum type?                          -- Is current type an IL enum type?
# Line 288  feature -- Status Line 333  feature -- Status
333                          Result := l_base_class /= Void and then (l_base_class.generics = Void)                          Result := l_base_class /= Void and then (l_base_class.generics = Void)
334                  end                  end
335    
         is_reference: BOOLEAN is  
                         -- Is the type a reference type?  
                 do  
                         Result := not is_expanded  
                 end  
   
336          is_explicit: BOOLEAN is          is_explicit: BOOLEAN is
337                          -- Is Current type fixed at compile time?                          -- Is Current type fixed at compile time?
338                  do                  do
# Line 326  feature -- Status Line 365  feature -- Status
365    
366  feature -- Setting  feature -- Setting
367    
368          set_is_expanded (b: BOOLEAN) is          set_expanded_mark is
369                          -- Assign `b' to `is_expanded'.                          -- Set class type declaration as expanded.
370                  do                  do
371                          is_expanded := b                          declaration_mark := {CL_TYPE_A}.expanded_mark
372                  ensure                  ensure
373                          is_expanded_set: is_expanded = b                          has_expanded_mark: has_expanded_mark
374                  end                  end
375    
376          set_is_separate (b: BOOLEAN) is          set_reference_mark is
377                          -- Assign `b' to `is_separate'.                          -- Set class type declaration as reference.
378                  do                  do
379                          is_separate := b                          declaration_mark := {CL_TYPE_A}.reference_mark
380                  ensure                  ensure
381                          is_separate_set: is_separate = b                          has_reference_mark: has_reference_mark
382                    end
383    
384            set_separate_mark is
385                            -- Set class type declaration as separate.
386                    do
387                            declaration_mark := {CL_TYPE_A}.separate_mark
388                    ensure
389                            has_separate_mark: has_separate_mark
390                  end                  end
391    
392          set_cr_info (cinfo : CREATE_INFO) is          set_cr_info (cinfo : CREATE_INFO) is
# Line 495  feature {NONE} -- Implementation Line 542  feature {NONE} -- Implementation
542                          l_base_class := base_class                          l_base_class := base_class
543                          if is_expanded and not l_base_class.is_expanded then                          if is_expanded and not l_base_class.is_expanded then
544                                  Result.append ("expanded ")                                  Result.append ("expanded ")
545                            elseif is_reference and l_base_class.is_expanded then
546                                    Result.append ("reference ")
547                          elseif is_separate then                          elseif is_separate then
548                                  Result.append ("separate ")                                  Result.append ("separate ")
549                          end                          end
# Line 530  feature {NONE} -- Implementation Line 579  feature {NONE} -- Implementation
579                          internal_il_type_name_not_empty: not Result.is_empty                          internal_il_type_name_not_empty: not Result.is_empty
580                  end                  end
581    
582    feature {CL_TYPE_A} -- Implementation: class type declaration marks
583    
584            declaration_mark: NATURAL_8
585                            -- Declaration mark associated with a class type (if any)
586    
587            set_mark (mark: like declaration_mark) is
588                            -- Set `declaration_mark' to the given value `mark'.
589                    require
590                            valid_declaration_mark:
591                                    mark = {CL_TYPE_A}.no_mark or mark = {CL_TYPE_A}.expanded_mark or
592                                    mark = {CL_TYPE_A}.reference_mark or mark = {CL_TYPE_A}.separate_mark
593                    do
594                            declaration_mark := mark
595                    ensure
596                            declaration_mark_set: declaration_mark = mark
597                    end
598    
599  invariant  invariant
600          class_id_positive: class_id > 0          class_id_positive: class_id > 0
601            valid_declaration_mark:
602                    declaration_mark = {CL_TYPE_A}.no_mark or
603                    declaration_mark = {CL_TYPE_A}.expanded_mark or
604                    declaration_mark = {CL_TYPE_A}.reference_mark or
605                    declaration_mark = {CL_TYPE_A}.separate_mark
606    
607  end  end

Legend:
Removed from v.55897  
changed lines
  Added in v.56011

  ViewVC Help
Powered by ViewVC 1.1.23