class BOAST::CStruct
@!parse module VarFunctors
; var_functorize CStruct
; end
Attributes
members[R]
members_array[R]
name[R]
Public Class Methods
new(hash={})
click to toggle source
Creates a new structured type. @param [Hash] hash named options @option hash [#to_s] :type_name @option hash [Array<Variable>] :members list of Variable
that create the type
# File lib/BOAST/Language/DataTypes.rb, line 279 def initialize(hash={}) @name = hash[:type_name] @members = {} @members_array = [] hash[:members].each { |m| mc = m.copy @members_array.push(mc) @members[mc.name] = mc } end
Public Instance Methods
decl()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 290 def decl return decl_c if [C, CL, CUDA].include?( lang ) return decl_fortran if lang == FORTRAN end
define()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 295 def define return define_c if [C, CL, CUDA].include?( lang ) return define_fortran if lang == FORTRAN end
Private Instance Methods
decl_c()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 302 def decl_c return "struct #{@name}" if [C, CL, CUDA].include?( lang ) end
decl_fortran()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 306 def decl_fortran return "TYPE(#{@name})" if lang == FORTRAN end
define_c()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 310 def define_c s = indent s << decl_c + " {" output.puts s increment_indent_level @members_array.each { |value| value.decl } decrement_indent_level s = indent s << "}" s << finalize output.print s return self end
define_fortran()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 326 def define_fortran s = indent s << "TYPE :: #{@name}\n" output.puts s increment_indent_level @members_array.each { |value| value.decl } decrement_indent_level s = indent s << "END TYPE #{@name}" s << finalize output.print s return self end
finalize()
click to toggle source
# File lib/BOAST/Language/DataTypes.rb, line 342 def finalize s = "" s << ";" if [C, CL, CUDA].include?( lang ) s << "\n" return s end