class AdLint::Cc1::QualifiedType

Attributes

base_type[R]

Public Class Methods

new(type_tbl, base_type, *cvr_quals) click to toggle source
Calls superclass method AdLint::Cc1::Type::new
# File lib/adlint/cc1/type.rb, line 1687
def initialize(type_tbl, base_type, *cvr_quals)
  super(type_tbl, create_name(base_type, cvr_quals))
  @base_type = base_type
  @cvr_qualifiers = cvr_quals
end

Public Instance Methods

brief_image() click to toggle source
# File lib/adlint/cc1/type.rb, line 1703
def brief_image
  @brief_image ||= create_brief_image(@base_type, @cvr_qualifiers)
end
const?() click to toggle source
# File lib/adlint/cc1/type.rb, line 1770
def const?
  @cvr_qualifiers.include?(:const)
end
convertible?(to_type) click to toggle source
# File lib/adlint/cc1/type.rb, line 1724
def convertible?(to_type)
  real_type.unqualify.convertible?(to_type.real_type.unqualify)
end
dup() click to toggle source
# File lib/adlint/cc1/type.rb, line 1854
def dup
  QualifiedType.new(type_table, @base_type.dup, *@cvr_qualifiers)
end
id() click to toggle source
# File lib/adlint/cc1/type.rb, line 1695
def id
  @id ||= QualifiedTypeId.new(@base_type, @cvr_qualifiers)
end
image() click to toggle source
# File lib/adlint/cc1/type.rb, line 1699
def image
  @image ||= create_image(@base_type, @cvr_qualifiers)
end
more_cv_qualified?(than_type) click to toggle source
# File lib/adlint/cc1/type.rb, line 1728
def more_cv_qualified?(than_type)
  # NOTE: The term `more cv-qualified' means:
  #         const          > none
  #         volatile       > none
  #         const volatile > none
  #         const volatile > const
  #         const volatile > volatile
  if than_type.qualified?
    if than_type.const? && than_type.volatile?
      false
    else
      if self.const? && self.volatile?
        true
      else
        false
      end
    end
  else
    true
  end
end
qualified?() click to toggle source
# File lib/adlint/cc1/type.rb, line 1758
def qualified?
  true
end
real_type() click to toggle source
# File lib/adlint/cc1/type.rb, line 1715
def real_type
  type_table.qualified_type(@base_type.real_type, *@cvr_qualifiers)
end
restrict?() click to toggle source
# File lib/adlint/cc1/type.rb, line 1778
def restrict?
  @cvr_qualifiers.include?(:restrict)
end
volatile?() click to toggle source
# File lib/adlint/cc1/type.rb, line 1774
def volatile?
  @cvr_qualifiers.include?(:volatile)
end

Private Instance Methods

append_cvr_qualifiers(type_str, cvr_quals) click to toggle source
# File lib/adlint/cc1/type.rb, line 1871
def append_cvr_qualifiers(type_str, cvr_quals)
  qualed_str = type_str
  qualed_str = "#{qualed_str} const" if cvr_quals.include?(:const)
  qualed_str = "#{qualed_str} volatile" if cvr_quals.include?(:volatile)
  qualed_str = "#{qualed_str} restrict" if cvr_quals.include?(:restrict)
  qualed_str
end
create_brief_image(base_type, cvr_quals) click to toggle source
# File lib/adlint/cc1/type.rb, line 1867
def create_brief_image(base_type, cvr_quals)
  append_cvr_qualifiers(base_type.brief_image, cvr_quals)
end
create_image(base_type, cvr_quals) click to toggle source
# File lib/adlint/cc1/type.rb, line 1863
def create_image(base_type, cvr_quals)
  append_cvr_qualifiers(base_type.image, cvr_quals)
end
create_name(base_type, cvr_quals) click to toggle source
# File lib/adlint/cc1/type.rb, line 1859
def create_name(base_type, cvr_quals)
  append_cvr_qualifiers(base_type.name, cvr_quals)
end