/[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 94740 - (show annotations)
Fri Mar 28 09:42:08 2014 UTC (5 years, 9 months ago) by jasonw
File size: 4242 byte(s)
<<Merged from trunk#94739.>>
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) or else
116 is_attached)
117 then
118 Result := True
119 if a_context_class.lace_class.is_void_safe_conformance then
120 Result :=
121 is_attachable_to (other_attachable_type) and then
122 (other_attachable_type.is_formal implies
123 (other_attachable_type.has_detachable_mark or else is_implicitly_attached))
124 end
125 if Result then
126 Result := is_processor_attachable_to (other)
127 end
128 end
129 end
130
131 note
132 copyright: "Copyright (c) 1984-2014, Eiffel Software"
133 license: "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"
134 licensing_options: "http://www.eiffel.com/licensing"
135 copying: "[
136 This file is part of Eiffel Software's Eiffel Development Environment.
137
138 Eiffel Software's Eiffel Development Environment is free
139 software; you can redistribute it and/or modify it under
140 the terms of the GNU General Public License as published
141 by the Free Software Foundation, version 2 of the License
142 (available at the URL listed under "license" above).
143
144 Eiffel Software's Eiffel Development Environment is
145 distributed in the hope that it will be useful, but
146 WITHOUT ANY WARRANTY; without even the implied warranty
147 of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
148 See the GNU General Public License for more details.
149
150 You should have received a copy of the GNU General Public
151 License along with Eiffel Software's Eiffel Development
152 Environment; if not, write to the Free Software Foundation,
153 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
154 ]"
155 source: "[
156 Eiffel Software
157 5949 Hollister Ave., Goleta, CA 93117 USA
158 Telephone 805-685-1006, Fax 805-685-6869
159 Website http://www.eiffel.com
160 Customer support http://support.eiffel.com
161 ]"
162
163 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