class AdLint::Cc1::ScanfFormat::Directive

DESCRIPTION

Directive class hierarchy

Directive
  <-- Whitespace
  <-- Ordinary
  <-- ConversionSpecifier
        <-- CompleteConversionSpecifier
              <-- Conversion_d
                    <-- Conversion_i
                    <-- Conversion_o
                          <-- Conversion_u
                          <-- Conversion_x
                          <-- Conversion_X
              <-- Conversion_a
                    <-- Conversion_A
                    <-- Conversion_e
                    <-- Conversion_E
                    <-- Conversion_f
                    <-- Conversion_F
                    <-- Conversion_g
                    <-- Conversion_G
              <-- Conversion_c
                    <-- Conversion_s
                    <-- Conversion_bracket
              <-- Conversion_p
              <-- Conversion_n
              <-- Conversion_percent
              <-- UndefinedConversionSpecifier
        <-- IncompleteConversionSpecifier

Attributes

format[R]

Public Class Methods

guess(fmt_str, trailing_args, env) click to toggle source
# File lib/adlint/cc1/format.rb, line 1764
def self.guess(fmt_str, trailing_args, env)
  try_to_create_whitespace(fmt_str) or
  try_to_create_ordinary(fmt_str) or
  try_to_create_conversion_specifier(fmt_str, trailing_args, env)
end
new(fmt) click to toggle source
# File lib/adlint/cc1/format.rb, line 1770
def initialize(fmt)
  @format = fmt
end

Private Class Methods

try_to_create_conversion_specifier(fmt_str, trailing_args, env) click to toggle source
# File lib/adlint/cc1/format.rb, line 1877
def self.try_to_create_conversion_specifier(fmt_str, trailing_args, env)
  fmt, as_char, field_width, len_mod, cs_char, scanset =
    ConversionSpecifier.scan(fmt_str)

  case
  when cs_char.nil?
    IncompleteConversionSpecifier.new(fmt, as_char, field_width, len_mod,
                                      nil)
  when cs_char == "[" && scanset.nil?
    IncompleteConversionSpecifier.new(fmt, as_char, field_width, len_mod,
                                      cs_char)
  when cs_class = CONVERSION_SPECIFIER_TBL[cs_char]
    cs_class.new(fmt, trailing_args, env, as_char, field_width, len_mod,
                 cs_char, scanset)
  else
    UndefinedConversionSpecifier.new(fmt, as_char, field_width, len_mod,
                                     cs_char)
  end
end
try_to_create_ordinary(fmt_str) click to toggle source
# File lib/adlint/cc1/format.rb, line 1872
def self.try_to_create_ordinary(fmt_str)
  (fmt = Ordinary.scan(fmt_str)) ? Ordinary.new(fmt) : nil
end
try_to_create_whitespace(fmt_str) click to toggle source
# File lib/adlint/cc1/format.rb, line 1867
def self.try_to_create_whitespace(fmt_str)
  (fmt = Whitespace.scan(fmt_str)) ? Whitespace.new(fmt) : nil
end

Public Instance Methods

acceptable?() click to toggle source

DESCRIPTION

Checks whether types of arguments match this directive.

RETURN VALUE

Boolean – True if types of arguments match this directive.

# File lib/adlint/cc1/format.rb, line 1797
def acceptable?
  subclass_responsibility
end
assignment_suppressing_character() click to toggle source
# File lib/adlint/cc1/format.rb, line 1847
def assignment_suppressing_character
  subclass_responsibility
end
complete?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1815
def complete?
  subclass_responsibility
end
consume_arguments?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1788
def consume_arguments?
  subclass_responsibility
end
conversion_specifier?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1784
def conversion_specifier?
  subclass_responsibility
end
conversion_specifier_character() click to toggle source
# File lib/adlint/cc1/format.rb, line 1859
def conversion_specifier_character
  subclass_responsibility
end
field_width() click to toggle source
# File lib/adlint/cc1/format.rb, line 1851
def field_width
  subclass_responsibility
end
illformed?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1811
def illformed?
  !wellformed?
end
incomplete?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1819
def incomplete?
  !complete?
end
length_modifier() click to toggle source
# File lib/adlint/cc1/format.rb, line 1855
def length_modifier
  subclass_responsibility
end
ordinary?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1780
def ordinary?
  subclass_responsibility
end
scanset() click to toggle source
# File lib/adlint/cc1/format.rb, line 1863
def scanset
  subclass_responsibility
end
undefined?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1823
def undefined?
  subclass_responsibility
end
valid_assignment_suppressing_character?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1827
def valid_assignment_suppressing_character?
  subclass_responsibility
end
valid_conversion_specifier_character?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1839
def valid_conversion_specifier_character?
  subclass_responsibility
end
valid_field_width?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1831
def valid_field_width?
  subclass_responsibility
end
valid_length_modifier?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1835
def valid_length_modifier?
  subclass_responsibility
end
valid_scanset?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1843
def valid_scanset?
  subclass_responsibility
end
wellformed?() click to toggle source

DESCRIPTION

Checks whether the format string of this directive is the ISO C99 compliant.

RETURN VALUE

Boolean – True if the format string is wellformed.

# File lib/adlint/cc1/format.rb, line 1807
def wellformed?
  subclass_responsibility
end
whitespace?() click to toggle source
# File lib/adlint/cc1/format.rb, line 1776
def whitespace?
  subclass_responsibility
end