# File metasm/parse_c.rb, line 157 def initialize(name, *specs) @name = name specs.each { |s| case s when :const, :volatile; (@qualifier ||= []) << s when :signed, :unsigned; @specifier = s when nil else raise "internal error, got #{name.inspect} #{specs.inspect}" end } end
# File metasm/parse_c.rb, line 169 def ==(o) o.object_id == self.object_id or (o.class == self.class and o.name == self.name and o.specifier == self.specifier and o.attributes == self.attributes) end
# File metasm/parse_c.rb, line 155 def align(parser) @name == :double ? 4 : parser.typesize[@name] end
# File metasm/parse_c.rb, line 149 def arithmetic? ; @name != :void end
# File metasm/parse_c.rb, line 3597 def dump(scope, r=[''], dep=[]) r.last << @qualifier.map { |q| q.to_s << ' ' }.join if qualifier r.last << @specifier.to_s << ' ' if specifier and @name != :ptr r.last << case @name when :longlong; 'long long' when :longdouble; 'long double' when :ptr; specifier == :unsigned ? 'uintptr_t' : 'intptr_t' else @name.to_s end [r, dep] end
# File metasm/parse_c.rb, line 153 def float? ; [:float, :double, :longdouble].include? @name end
# File metasm/parse_c.rb, line 150 def integral? ; [:char, :short, :int, :long, :longlong, :ptr, :__int8, :__int16, :__int32, :__int64].include? @name end
# File metasm/parse_c.rb, line 152 def signed? ; specifier != :unsigned end
# File metasm/parse_c.rb, line 154 def void? ; @name == :void end