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

Diff of /branches/eth/eve/Src/Eiffel/API/evaluated_type/real_a.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/Src/Eiffel/API/evaluated_type/real_32_a.e revision 76432 by manus, Mon Dec 29 23:41:59 2008 UTC trunk/Src/Eiffel/API/evaluated_type/real_a.e revision 82735 by manus, Thu Apr 1 05:13:43 2010 UTC
# Line 1  Line 1 
1  note  note
2          description: "Actual type for real 32 bits type."          description: "Actual type for real type."
3          legal: "See notice at end of class."          legal: "See notice at end of class."
4          status: "See notice at end of class."          status: "See notice at end of class."
5          date: "$Date$"          date: "$Date$"
6          revision: "$Revision $"          revision: "$Revision$"
7    
8  class REAL_32_A  class REAL_A
9    
10  inherit  inherit
11          BASIC_A          BASIC_A
12                    rename
13                            make as cl_make
14                  redefine                  redefine
15                          is_real_32, associated_class, same_as, is_numeric,                          is_real_32, is_real_64, associated_class, same_as, is_numeric,
16                          default_create, process, heaviest                          process, heaviest
17                  end                  end
18    
19  create  create
20          default_create          make
21    
22  feature {NONE} -- Initialization  feature {NONE} -- Initialization
23    
24          default_create          make (n: INTEGER)
25                          -- Initialize new instance of REAL_32_A.                          -- Create instance of INTEGER_A represented by `n' bits.
26                    require
27                            valid_n: n = 32 or n = 64
28                  do                  do
29                          make (associated_class.class_id)                          size := n.to_integer_8
30                            cl_make (associated_class.class_id)
31                    ensure
32                            size_set: size = n
33                  end                  end
34    
35  feature -- Visitor  feature -- Visitor
# Line 30  feature -- Visitor Line 37  feature -- Visitor
37          process (v: TYPE_A_VISITOR)          process (v: TYPE_A_VISITOR)
38                          -- Process current element.                          -- Process current element.
39                  do                  do
40                          v.process_real_32_a (Current)                          v.process_real_a (Current)
41                  end                  end
42    
43  feature -- Property  feature -- Property
44    
45          is_real_32: BOOLEAN = True          is_real_32: BOOLEAN
46                          -- Is the current type a real 32 bits type ?                          -- Is the current type a real 32-bit type?
47                    do
48                            Result := size = 32
49                    end
50    
51            is_real_64: BOOLEAN
52                            -- Is the current type a real 64-bit type?
53                    do
54                            Result := size = 64
55                    end
56    
57  feature -- Access  feature -- Access
58    
59          associated_class: CLASS_C          associated_class: CLASS_C
60                          -- Class REAL                          -- Class REAL
61                  once                  do
62                          Result := System.real_32_class.compiled_class                          if size = 32 then
63                                    Result := System.real_32_class.compiled_class
64                            else
65                                    Result := System.real_64_class.compiled_class
66                            end
67                  end                  end
68    
69            size: INTEGER_8
70                            -- Current is stored on `size' bits.
71    
72  feature -- IL code generation  feature -- IL code generation
73    
74          heaviest (other: TYPE_A): TYPE_A          heaviest (other: TYPE_A): TYPE_A
# Line 64  feature {COMPILER_EXPORTER} Line 87  feature {COMPILER_EXPORTER}
87          is_numeric: BOOLEAN = True          is_numeric: BOOLEAN = True
88                          -- Is the current type a numeric type ?                          -- Is the current type a numeric type ?
89    
90          c_type: REAL_32_I          c_type: TYPE_C
91                          -- C type                          -- C type
92                  do                  do
93                          Result := real32_c_type                          if size = 32 then
94                                    Result := real32_c_type
95                            else
96                                    Result := real64_c_type
97                            end
98                  end                  end
99    
100          same_as (other: TYPE_A): BOOLEAN          same_as (other: TYPE_A): BOOLEAN
101                          -- Is the current type the same as `other' ?                          -- Is the current type the same as `other' ?
102                  do                  do
103                          Result := same_type (other)                          Result := attached {REAL_A} other as r and then size = r.size
104                  end                  end
105    
106    invariant
107            correct_size: size = 32 or size = 64
108    
109  note  note
110          copyright:      "Copyright (c) 1984-2007, Eiffel Software"          copyright:      "Copyright (c) 1984-2010, Eiffel Software"
111          license:        "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"          license:        "GPL version 2 (see http://www.eiffel.com/licensing/gpl.txt)"
112          licensing_options:      "http://www.eiffel.com/licensing"          licensing_options:      "http://www.eiffel.com/licensing"
113          copying: "[          copying: "[
# Line 90  note Line 120  note
120                          (available at the URL listed under "license" above).                          (available at the URL listed under "license" above).
121                                                    
122                          Eiffel Software's Eiffel Development Environment is                          Eiffel Software's Eiffel Development Environment is
123                          distributed in the hope that it will be useful, but                          distributed in the hope that it will be useful, but
124                          WITHOUT ANY WARRANTY; without even the implied warranty                          WITHOUT ANY WARRANTY; without even the implied warranty
125                          of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                          of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
126                          See the GNU General Public License for more details.                          See the GNU General Public License for more details.
127                                                    
128                          You should have received a copy of the GNU General Public                          You should have received a copy of the GNU General Public
129                          License along with Eiffel Software's Eiffel Development                          License along with Eiffel Software's Eiffel Development
130                          Environment; if not, write to the Free Software Foundation,                          Environment; if not, write to the Free Software Foundation,
131                          Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA                          Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
132                  ]"                  ]"
133          source: "[          source: "[
134                           Eiffel Software                          Eiffel Software
135                           356 Storke Road, Goleta, CA 93117 USA                          5949 Hollister Ave., Goleta, CA 93117 USA
136                           Telephone 805-685-1006, Fax 805-685-6869                          Telephone 805-685-1006, Fax 805-685-6869
137                           Website http://www.eiffel.com                          Website http://www.eiffel.com
138                           Customer support http://support.eiffel.com                          Customer support http://support.eiffel.com
139                  ]"                  ]"
140    
141  end -- class REAL_32_A  end -- class REAL_32_A

Legend:
Removed from v.76432  
changed lines
  Added in v.82735

  ViewVC Help
Powered by ViewVC 1.1.23