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

Annotation of /branches/eth/eve/Src/Eiffel/API/evaluated_type/none_a.e

Parent Directory Parent Directory | Revision Log Revision Log


Revision 83524 - (hide annotations)
Fri Jun 11 08:12:14 2010 UTC (9 years, 7 months ago) by jasonw
File size: 3766 byte(s)
<<Merged from trunk#83523.>>
1 manus 76432 note
2 manus 27398 description: "Actual type for NONE."
3 manus 56535 legal: "See notice at end of class."
4     status: "See notice at end of class."
5 manus 9656 date: "$Date$"
6 manus 27398 revision: "$Revision$"
7 dinov 3375
8 manus 9656 class
9     NONE_A
10 grator 18
11     inherit
12 manus 9656 TYPE_A
13 grator 18 redefine
14 manus 72419 is_none, dump, c_type, same_as, is_full_named_type, generated_id,
15 manus 74866 generate_gen_type_il
16 grator 18 end
17    
18 manus 57234 feature -- Visitor
19    
20 manus 76432 process (v: TYPE_A_VISITOR)
21 manus 57234 -- Process current element.
22     do
23     v.process_none_a (Current)
24     end
25    
26 manus 9656 feature -- Comparison
27    
28 manus 76432 is_equivalent (other: like Current): BOOLEAN
29 manus 9656 -- Is `other' equivalent to the current object ?
30     do
31     Result := True
32     end
33    
34 dinov 3078 feature -- Properties
35 grator 18
36 manus 76432 is_none: BOOLEAN = True
37 grator 18 -- Is the current type a none type ?
38    
39 manus 76432 is_full_named_type: BOOLEAN = True
40 manus 44539 -- Current is a full named type.
41    
42 dinov 3180 feature -- Access
43    
44 manus 76432 hash_code: INTEGER
45 manus 72419 -- Hash code for current type
46     do
47     Result := {SHARED_HASH_CODE}.none_code
48     end
49    
50 manus 76432 same_as (other: TYPE_A): BOOLEAN
51 dinov 3180 -- Is the current type the same as `other' ?
52     do
53 jasonw 83524 if other.is_valid then
54     Result := other.is_none
55     end
56 manus 9656 end
57 dinov 3180
58 manus 76432 associated_class: CLASS_C
59 manus 11302 do
60     -- No associated class
61     end
62    
63 dinov 3078 feature -- Output
64    
65 manus 76432 dump: STRING = "NONE"
66 grator 18 -- Dumped trace
67    
68 manus 76432 ext_append_to (st: TEXT_FORMATTER; c: CLASS_C)
69 grator 296 do
70 manus 72419 st.add ({SHARED_TEXT_ITEMS}.ti_none_class)
71 manus 9656 end
72 grator 296
73 manus 72419 feature -- Generic conformance
74    
75 manus 76432 generated_id (final_mode: BOOLEAN; a_context_type: TYPE_A): NATURAL_16
76 manus 72419 -- Id of a `like xxx'.
77     do
78     Result := {SHARED_GEN_CONF_LEVEL}.none_type
79     end
80    
81     feature -- IL code generation
82    
83 manus 76432 generate_gen_type_il (il_generator: IL_CODE_GENERATOR; use_info: BOOLEAN)
84 manus 72419 -- `use_info' is true iff we generate code for a
85     -- creation instruction.
86     do
87     il_generator.generate_none_type_instance
88     end
89    
90 dinov 3180 feature {COMPILER_EXPORTER}
91 dinov 3078
92 manus 76432 create_info: CREATE_TYPE
93 manus 9656 -- Byte code information for entity type creation
94     do
95 manus 75567 create Result.make (as_attachment_mark_free)
96 manus 9656 end
97    
98 manus 76432 c_type: REFERENCE_I
99 grator 18 -- Void C type
100 manus 72419 do
101     Result := reference_c_type
102 manus 9656 end
103 grator 18
104 manus 76432 conform_to (a_context_class: CLASS_C; other: TYPE_A): BOOLEAN
105 manus 41740 -- Does Current conform to `other'?
106 manus 48130 local
107     l_type: TYPE_A
108 grator 18 do
109 alexk 70996 -- If `other' is attached, then NONE does not conform to it.
110 manus 48130 -- But it should not be `VOID_A' since VOID_A is only used as
111     -- return type for procedure
112 alexk 55786 l_type := other.conformance_type
113 alexk 75945 Result := not l_type.is_expanded and not l_type.is_void and then not l_type.is_attached and then
114     (l_type.is_formal implies l_type.is_reference)
115 manus 9656 end
116 grator 18
117 manus 76432 note
118 jasonw 83524 copyright: "Copyright (c) 1984-2010, Eiffel Software"
119 manus 58027 license: "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"
120 manus 56535 licensing_options: "http://www.eiffel.com/licensing"
121     copying: "[
122     This file is part of Eiffel Software's Eiffel Development Environment.
123 manus 58027
124 manus 56535 Eiffel Software's Eiffel Development Environment is free
125     software; you can redistribute it and/or modify it under
126     the terms of the GNU General Public License as published
127     by the Free Software Foundation, version 2 of the License
128     (available at the URL listed under "license" above).
129 manus 58027
130 manus 56535 Eiffel Software's Eiffel Development Environment is
131 jasonw 83524 distributed in the hope that it will be useful, but
132 manus 56535 WITHOUT ANY WARRANTY; without even the implied warranty
133     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
134 jasonw 83524 See the GNU General Public License for more details.
135 manus 58027
136 manus 56535 You should have received a copy of the GNU General Public
137     License along with Eiffel Software's Eiffel Development
138     Environment; if not, write to the Free Software Foundation,
139 jasonw 83524 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
140 manus 56535 ]"
141     source: "[
142 jasonw 83524 Eiffel Software
143     5949 Hollister Ave., Goleta, CA 93117 USA
144     Telephone 805-685-1006, Fax 805-685-6869
145     Website http://www.eiffel.com
146     Customer support http://support.eiffel.com
147 manus 56535 ]"
148    
149 dinov 3375 end -- class NONE_A

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.23