Method: BOAST::Int#decl

Defined in:
lib/BOAST/DataTypes.rb

#declObject



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/BOAST/DataTypes.rb', line 166

def decl
  return "integer(kind=#{@size})" if BOAST::get_lang == FORTRAN
  if BOAST::get_lang == C then
    if @vector_length == 1 then
      s = ""
      s += "u" if not @signed
      return s+"int#{8*@size}_t"
    elsif @vector_length > 1 then
      if BOAST::get_architecture == BOAST::X86 then
        return "__m#{@total_size*8}#{@total_size*8>64 ? "i" : ""}"
      elsif BOAST::get_architecture == BOAST::ARM then
        raise "Unsupported vector length in NEON: #{@total_size*8} (#{@size} x 8 x #{@vector_length})!" if @total_size * 8 != 64 and @total_size * 8 != 128
        return "#{ @signed ? "" : "u"}int#{@size*8}x#{@vector_length}_t"
      else
        raise "Unsupported architecture!"
      end
    end
  elsif BOAST::get_lang == CL then
    #char="cl_"
    char=""
    char += "u" if not @signed
    case @size
    when 1
      char += "char"
    when 2
      char += "short"
    when 4
      char += "int"
    when 8
      char += "long"
    else
      raise "Unsupported integer size!"
    end
    if @vector_length > 1 then
      char += "#{@vector_length}"
    end
    return char
  elsif BOAST::get_lang == CUDA then
    if @vector_length > 1 then
      char=""
      char += "u" if not @signed
      case @size
      when 1
        char += "char"
      when 2
        char += "short"
      when 4
        char += "int"
      when 8
        char += "longlong"
      else
        raise "Unsupported integer size!"
      end
      return char + "#{@vector_length}"
    else
      char = ""
      char += "unsigned " if not @signed
      return char += "char" if @size==1
      return char += "short" if @size==2
      return char += "int" if @size==4
      return char += "long long" if @size==8
    end
  end
end