Class: BOAST::CStruct
Instance Attribute Summary collapse
-
#members ⇒ Object
readonly
Returns the value of attribute members.
-
#members_array ⇒ Object
readonly
Returns the value of attribute members_array.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #decl ⇒ Object
- #finalize ⇒ Object
- #header ⇒ Object
- #header_c(final = true) ⇒ Object
- #header_fortran(final = true) ⇒ Object
- #indent ⇒ Object
-
#initialize(hash = {}) ⇒ CStruct
constructor
A new instance of CStruct.
Constructor Details
#initialize(hash = {}) ⇒ CStruct
Returns a new instance of CStruct.
238 239 240 241 242 243 244 245 246 247 |
# File 'lib/BOAST/DataTypes.rb', line 238 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 |
Instance Attribute Details
#members ⇒ Object (readonly)
Returns the value of attribute members.
233 234 235 |
# File 'lib/BOAST/DataTypes.rb', line 233 def members @members end |
#members_array ⇒ Object (readonly)
Returns the value of attribute members_array.
233 234 235 |
# File 'lib/BOAST/DataTypes.rb', line 233 def members_array @members_array end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
233 234 235 |
# File 'lib/BOAST/DataTypes.rb', line 233 def name @name end |
Class Method Details
Instance Method Details
#decl ⇒ Object
249 250 251 252 |
# File 'lib/BOAST/DataTypes.rb', line 249 def decl return "struct #{@name}" if [C, CL, CUDA].include?( BOAST::get_lang ) return "TYPE(#{@name})" if BOAST::get_lang == FORTRAN end |
#finalize ⇒ Object
254 255 256 257 258 259 |
# File 'lib/BOAST/DataTypes.rb', line 254 def finalize s = "" s += ";" if [C, CL, CUDA].include?( BOAST::get_lang ) s+="\n" return s end |
#header ⇒ Object
265 266 267 268 269 |
# File 'lib/BOAST/DataTypes.rb', line 265 def header return header_c if [C, CL, CUDA].include?( BOAST::get_lang ) return header_fortran if BOAST::get_lang == FORTRAN raise "Unsupported language!" end |
#header_c(final = true) ⇒ Object
271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
# File 'lib/BOAST/DataTypes.rb', line 271 def header_c(final = true) s = "" s += self.indent if final s += self.decl + " {\n" @members_array.each { |value| s+= self.indent if final s+= " "*BOAST::get_indent_increment + value.decl(false)+";\n" } s += self.indent if final s += "}" s += self.finalize if final BOAST::get_output.print s if final return s end |
#header_fortran(final = true) ⇒ Object
286 287 288 289 290 291 292 293 294 295 296 297 298 299 |
# File 'lib/BOAST/DataTypes.rb', line 286 def header_fortran(final = true) s = "" s += self.indent if final s += "TYPE :: #{@name}\n" members_array.each { |value| s+= self.indent if final s+= " "*BOAST::get_indent_increment + value.decl(false)+"\n" } s += self.indent if final s += "END TYPE #{@name}" s += self.finalize if final BOAST::get_output.print s if final return s end |
#indent ⇒ Object
261 262 263 |
# File 'lib/BOAST/DataTypes.rb', line 261 def indent return " "*BOAST::get_indent_level end |