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

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

Parent Directory Parent Directory | Revision Log Revision Log


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