class AdLint::Cc1::CompositeDataType
DESCRIPTION¶ ↑
Type
of the ‘struct’ or ‘union’ data type.
The ISO C99 standard specifies that the ‘struct’ and array data type is an aggregate type. But the CompositeDataType
is not an array type.
Attributes
members[R]
Public Class Methods
new(type_tbl, name, type_dcls, membs)
click to toggle source
Calls superclass method
AdLint::Cc1::Type::new
# File lib/adlint/cc1/type.rb, line 6139 def initialize(type_tbl, name, type_dcls, membs) super(type_tbl, name, type_dcls) @members = membs end
Public Instance Methods
_arithmetic_type_with_array(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6657 def _arithmetic_type_with_array(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end
_arithmetic_type_with_bitfield(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6633 def _arithmetic_type_with_bitfield(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with BitfieldType and CompositeDataType makes # integer-promoted type of BitfieldType. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_char(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6403 def _arithmetic_type_with_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `char' and CompositeDataType makes # integer-promoted type of `char'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_double(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6617 def _arithmetic_type_with_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `double' and CompositeDataType makes # `double'. lhs_type # NOTREACHED end
_arithmetic_type_with_enum(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6641 def _arithmetic_type_with_enum(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with EnumType and CompositeDataType makes # EnumType. lhs_type # NOTREACHED end
_arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6673 def _arithmetic_type_with_extended_big_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with ExtendedBigIntType and CompositeDataType # makes ExtendedBigIntType. lhs_type # NOTREACHED end
_arithmetic_type_with_float(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6609 def _arithmetic_type_with_float(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `float' and CompositeDataType makes # `float'. lhs_type # NOTREACHED end
_arithmetic_type_with_function(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6399 def _arithmetic_type_with_function(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end
_arithmetic_type_with_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6475 def _arithmetic_type_with_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `int' and CompositeDataType makes `int'. lhs_type # NOTREACHED end
_arithmetic_type_with_long(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6514 def _arithmetic_type_with_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long' and CompositeDataType makes `long'. lhs_type # NOTREACHED end
_arithmetic_type_with_long_double(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6625 def _arithmetic_type_with_long_double(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long double' and CompositeDataType makes # `long double'. lhs_type # NOTREACHED end
_arithmetic_type_with_long_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6537 def _arithmetic_type_with_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long int' and CompositeDataType makes # `long int'. lhs_type # NOTREACHED end
_arithmetic_type_with_long_long(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6561 def _arithmetic_type_with_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long long' and CompositeDataType makes # `long long'. lhs_type # NOTREACHED end
_arithmetic_type_with_long_long_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6585 def _arithmetic_type_with_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `long long int' and CompositeDataType makes # `long long int'. lhs_type # NOTREACHED end
_arithmetic_type_with_pointer(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6649 def _arithmetic_type_with_pointer(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with PointerType and CompositeDataType makes # PointerType. lhs_type # NOTREACHED end
_arithmetic_type_with_short(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6427 def _arithmetic_type_with_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `short' and CompositeDataType makes # integer-promoted type of `short'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_short_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6451 def _arithmetic_type_with_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `short int' and CompositeDataType makes # integer-promoted type of `short int'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_signed(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6482 def _arithmetic_type_with_signed(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed' and CompositeDataType makes # `signed'. lhs_type # NOTREACHED end
_arithmetic_type_with_signed_char(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6411 def _arithmetic_type_with_signed_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed char' and CompositeDataType makes # integer-promoted type of `signed char'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_signed_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6490 def _arithmetic_type_with_signed_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed int' and CompositeDataType makes # `signed int'. lhs_type # NOTREACHED end
_arithmetic_type_with_signed_long(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6521 def _arithmetic_type_with_signed_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long' and CompositeDataType makes # `signed long'. lhs_type # NOTREACHED end
_arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6545 def _arithmetic_type_with_signed_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long int' and CompositeDataType # makes `signed long int'. lhs_type # NOTREACHED end
_arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6569 def _arithmetic_type_with_signed_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long long' and CompositeDataType # makes `signed long long'. lhs_type # NOTREACHED end
_arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6593 def _arithmetic_type_with_signed_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed long long int' and # CompositeDataType makes `signed long long int'. lhs_type # NOTREACHED end
_arithmetic_type_with_signed_short(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6435 def _arithmetic_type_with_signed_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed short' and CompositeDataType makes # integer-promoted type of `signed short'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6459 def _arithmetic_type_with_signed_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `signed short int' and CompositeDataType # makes integer-promoted type of `signed short int'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_struct(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6661 def _arithmetic_type_with_struct(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! lhs_type # NOTREACHED end
_arithmetic_type_with_undeclared(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6387 def _arithmetic_type_with_undeclared(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end
_arithmetic_type_with_union(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6667 def _arithmetic_type_with_union(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! lhs_type # NOTREACHED end
_arithmetic_type_with_unresolved(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6391 def _arithmetic_type_with_unresolved(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end
_arithmetic_type_with_unsigned(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6498 def _arithmetic_type_with_unsigned(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned' and CompositeDataType makes # `unsigned'. lhs_type # NOTREACHED end
_arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6419 def _arithmetic_type_with_unsigned_char(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned char' and CompositeDataType makes # integer-promoted type of `unsigned char'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6506 def _arithmetic_type_with_unsigned_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned int' and CompositeDataType makes # `unsigned int'. lhs_type # NOTREACHED end
_arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6529 def _arithmetic_type_with_unsigned_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long' and CompositeDataType makes # `unsigned long'. lhs_type # NOTREACHED end
_arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6553 def _arithmetic_type_with_unsigned_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long int' and CompositeDataType # makes `unsigned long int'. lhs_type # NOTREACHED end
_arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6577 def _arithmetic_type_with_unsigned_long_long(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long long' and CompositeDataType # makes `unsigned long long'. lhs_type # NOTREACHED end
_arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6601 def _arithmetic_type_with_unsigned_long_long_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned long long int' and # CompositeDataType makes `unsigned long long int'. lhs_type # NOTREACHED end
_arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6443 def _arithmetic_type_with_unsigned_short(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned short' and CompositeDataType # makes integer-promoted type of `unsigned short'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6467 def _arithmetic_type_with_unsigned_short_int(lhs_type, rhs_type = self) # NOTE: An arithmetic operation with CompositeDataType must not be # executed! # NOTE: Binary operation with `unsigned short int' and CompositeDataType # makes integer-promoted type of `unsigned short int'. lhs_type.integer_promoted_type # NOTREACHED end
_arithmetic_type_with_void(lhs_type, rhs_type = self)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6395 def _arithmetic_type_with_void(lhs_type, rhs_type = self) rhs_type.arithmetic_type_with(lhs_type) end
aligned_bit_size()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6174 def aligned_bit_size @members.reduce(0) { |sum, memb| sum + memb.type.aligned_bit_size } end
arbitrary_value()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6338 def arbitrary_value CompositeValue.new(@members.map { |memb| memb.type.arbitrary_value }) end
argument_promoted_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6379 def argument_promoted_type self end
arithmetic_type_with(type)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6383 def arithmetic_type_with(type) subclass_responsibility end
array?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6219 def array? false end
base_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6182 def base_type nil end
bit_alignment()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6170 def bit_alignment bit_size end
bit_size()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6166 def bit_size @members.reduce(0) { |sum, memb| sum + memb.type.bit_size } end
bitfield?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6271 def bitfield? false end
brief_image()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6154 def brief_image subclass_responsibility end
coerce_array_value(val)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6359 def coerce_array_value(val) # NOTE: Cannot coerce array value into composite in C language. undefined_value # NOTREACHED end
coerce_composite_value(val)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6364 def coerce_composite_value(val) vals = @members.zip(val.values).map { |memb, v| v ? v.coerce_to(memb.type) : memb.type.undefined_value } CompositeValue.new(vals) end
coerce_scalar_value(val)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6354 def coerce_scalar_value(val) # NOTE: Cannot coerce scalar value into composite in C language. undefined_value # NOTREACHED end
coercible?(to_type)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6200 def coercible?(to_type) to_type.composite? && @members.zip(to_type.members).all? { |lhs_memb, rhs_memb| rhs_memb && lhs_memb.type.coercible?(rhs_memb.type) } end
compatible?(to_type)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6194 def compatible?(to_type) to_type.composite? && @members.size == to_type.members.size && @members.zip(to_type.members).all? { |lhs, rhs| lhs.compatible?(rhs) } end
const?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6259 def const? false end
corresponding_signed_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6681 def corresponding_signed_type self # NOTREACHED end
corresponding_unsigned_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6685 def corresponding_unsigned_type self # NOTREACHED end
dup()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6689 def dup self.class.new(type_table, declarations.first, @members.map { |memb| memb.dup }) end
enum?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6235 def enum? false end
enumerators()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6295 def enumerators [] end
explicitly_signed?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6279 def explicitly_signed? false end
floating?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6215 def floating? false end
function?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6231 def function? false end
have_va_list?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6283 def have_va_list? false end
id()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6146 def id subclass_responsibility end
image()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6150 def image subclass_responsibility end
impl_length()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6303 def impl_length 0 end
incomplete?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6190 def incomplete? declarations.all? { |dcl| dcl.struct_declarations.nil? } end
integer?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6211 def integer? false end
integer_conversion_rank()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6371 def integer_conversion_rank 0 # NOTREACHED end
integer_promoted_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6375 def integer_promoted_type self # NOTREACHED end
length()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6299 def length 0 end
location()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6158 def location subclass_responsibility end
max()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6326 def max 0 end
member_named(name)
click to toggle source
# File lib/adlint/cc1/type.rb, line 6307 def member_named(name) # FIXME: Should use the member name index. @members.each do |memb| case when memb.name.nil? && memb.type.composite? if inner_memb = memb.type.member_named(name) return inner_memb end when memb.name == name return memb end end nil end
min()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6322 def min 0 end
named?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6162 def named? subclass_responsibility end
nil_value()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6330 def nil_value CompositeValue.new(@members.map { |memb| memb.type.nil_value }) end
parameter_types()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6291 def parameter_types [] end
parameter_value()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6346 def parameter_value CompositeValue.new(@members.map { |memb| memb.type.parameter_value }) end
pointer?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6223 def pointer? false end
qualified?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6227 def qualified? false end
real_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6178 def real_type self end
restrict?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6267 def restrict? false end
return_type()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6287 def return_type nil end
return_value()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6350 def return_value CompositeValue.new(@members.map { |memb| memb.type.return_value }) end
scalar?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6207 def scalar? false end
signed?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6275 def signed? false end
standard?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6247 def standard? false end
undeclared?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6251 def undeclared? @members.any? { |memb| memb.type.undeclared? } end
undefined_value()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6342 def undefined_value CompositeValue.new(@members.map { |memb| memb.type.undefined_value }) end
unqualify()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6186 def unqualify self end
unresolved?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6255 def unresolved? @members.any? { |memb| memb.type.unresolved? } end
user?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6239 def user? false end
void?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6243 def void? false end
volatile?()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6263 def volatile? false end
zero_value()
click to toggle source
# File lib/adlint/cc1/type.rb, line 6334 def zero_value CompositeValue.new(@members.map { |memb| memb.type.zero_value }) end