File: base_type_constant.e

package info (click to toggle)
smarteiffel 1.1-11
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 12,288 kB
  • ctags: 40,785
  • sloc: ansic: 35,791; lisp: 4,036; sh: 1,783; java: 895; ruby: 613; python: 209; makefile: 115; csh: 78; cpp: 50
file content (156 lines) | stat: -rw-r--r-- 3,727 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
-- This file is part of SmartEiffel The GNU Eiffel Compiler Tools and Libraries
--
-- SmartEiffel is  free software;  you can redistribute it and/or  modify it
-- under  the terms of the  GNU General Public License, as published by  the
-- Free Software Foundation; either version 2, or (at your option) any later
-- version.
-- SmartEiffel is distributed in the hope that it will be useful but WITHOUT 
-- ANY WARRANTY;  without  even the implied warranty  of MERCHANTABILITY  or
-- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-- more details.  You should have received a copy of  the GNU General Public
-- License along with SmartEiffel;  see the file COPYING.  If not,  write to
-- the Free Software Foundation,  Inc., 59 Temple Place - Suite 330,  Boston, 
-- MA 02111-1307, USA.
--
-- Copyright(C) 1994-2002: INRIA - LORIA (INRIA Lorraine) - ESIAL U.H.P.
--			   - University of Nancy 1 - FRANCE
-- Copyright(C) 2003:      INRIA - LORIA (INRIA Lorraine) - I.U.T. Charlemagne
--			   - University of Nancy 2 - FRANCE
--
--		 Dominique COLNET, Suzanne COLLIN, Olivier ZENDRA,
--			   Philippe RIBET, Cyril ADRIAN
--
-- http://SmartEiffel.loria.fr - SmartEiffel@loria.fr
--
deferred class BASE_TYPE_CONSTANT
   --
   -- Common root of : BOOLEAN_CONSTANT, CHARACTER_CONSTANT,
   -- INTEGER_CONSTANT and REAL_CONSTANT.
   --

inherit EXPRESSION

feature

   is_writable,
   is_current,
   is_manifest_string,
   is_result,
   is_void,
   use_current
   : BOOLEAN is False

   side_effect_free,
   extra_bracket_flag
   : BOOLEAN is True

   start_position: POSITION

   result_type: E_TYPE

   frozen start_lookup_class: BASE_CLASS is
      do
	 if result_type /= Void then
	    Result := result_type.base_class
	 end
      end

   frozen afd_check is do end

   frozen safety_check is do end

   once_pre_computable: BOOLEAN is True

   frozen c_frame_descriptor(format, locals: STRING) is do end

   frozen collect_c_tmp is do end

   to_runnable(ct: E_TYPE): like Current is
      deferred
      ensure then
         Result = Current
         result_type = result_type.to_runnable(ct)
      end

   frozen stupid_switch(run_time_set: RUN_TIME_SET): BOOLEAN is
      do
         Result := true
      end

   frozen assertion_check(tag: CHARACTER) is do end

   frozen isa_dca_inline_argument: INTEGER is
      do
         if is_static then
            Result := -1
         end
      end

   frozen dca_inline_argument(formal_arg_type: E_TYPE) is
      do
         mapping_c_arg(formal_arg_type)
      end

   frozen mapping_c_target(target_type: E_TYPE) is
      do
         compile_to_c
      end

   frozen mapping_c_arg(formal_arg_type: E_TYPE) is
      do
         compile_to_c
      end

   frozen bracketed_pretty_print, frozen pretty_print is
      do
         pretty_printer.put_string(to_string)
      end

   frozen print_as_target is
      do
         pretty_printer.put_character('(')
         pretty_print
         pretty_printer.put_character(')')
         pretty_printer.put_character('.')
      end

   frozen short is
      do
         short_print.a_base_type_constant(to_string)
      end

   frozen short_target is
      do
         bracketed_short
         short_print.a_dot
      end

   frozen precedence: INTEGER is
      do
         Result := atomic_precedence
      end

   frozen base_class_name: CLASS_NAME is
      do
         Result := result_type.base_class_name
      end

   frozen jvm_assign_creation, jvm_assign is
      do
	 check false end
      end

feature {BASE_TYPE_CONSTANT_VISITOR}

   accept(visitor: BASE_TYPE_CONSTANT_VISITOR) is
      deferred
      end

feature {NONE}

   to_string: STRING is
      deferred
      end

end -- BASE_TYPE_CONSTANT